script: Clean up attribute access a little bit in Element (#43064)

- Use modern Rust conveniences such as `unwrap_or_default`
 - Unabbreviate `attr`
- Unify the lowercase ASCII name assertion and make it a debug assertion
 - Use `unreachable!` instead of panic
- Expose two attribute getters that follow the behavior of two
specification concepts and what we expect internally in Servo:
- One that takes a namespace, but does not require lowercase attribute
names. ([specification
concept](https://dom.spec.whatwg.org/#concept-element-attributes-get-by-namespace>))
- One that does not take a namespace, but does require lowercase
attribute names. ([specification
concept](https://dom.spec.whatwg.org/#concept-element-attributes-get-by-name))
Testing: This should not really change behavior so should be covered by
existing tests.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
Martin Robinson
2026-03-06 21:02:37 +01:00
committed by GitHub
parent 291e9e57cb
commit 401d327b96
23 changed files with 134 additions and 164 deletions

View File

@@ -5,7 +5,7 @@
use std::default::Default;
use dom_struct::dom_struct;
use html5ever::{LocalName, Prefix, local_name, ns};
use html5ever::{LocalName, Prefix, local_name};
use js::context::JSContext;
use js::rust::HandleObject;
use pixels::RasterImage;
@@ -81,8 +81,8 @@ impl ProcessDataURL for &HTMLObjectElement {
// TODO: support other values
if let (None, Some(_uri)) = (
element.get_attribute(&ns!(), &local_name!("type")),
element.get_attribute(&ns!(), &local_name!("data")),
element.get_attribute(&local_name!("type")),
element.get_attribute(&local_name!("data")),
) {
// TODO(gw): Prefetch the image here.
}