mirror of
https://github.com/servo/servo
synced 2026-04-28 10:27:40 +02:00
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:
@@ -2,7 +2,7 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use html5ever::{local_name, ns};
|
||||
use html5ever::local_name;
|
||||
use servo_url::ServoUrl;
|
||||
|
||||
use crate::dom::bindings::cell::DomRefCell;
|
||||
@@ -185,10 +185,7 @@ impl<T: HyperlinkElement + DerivedFrom<Element> + Castable + NodeTraits> Hyperli
|
||||
// Step 2. Let url be this's url.
|
||||
USVString(match *self.get_url().borrow() {
|
||||
None => {
|
||||
match self
|
||||
.upcast::<Element>()
|
||||
.get_attribute(&ns!(), &local_name!("href"))
|
||||
{
|
||||
match self.upcast::<Element>().get_attribute(&local_name!("href")) {
|
||||
// Step 3. If url is null and this has no href content attribute, return the
|
||||
// empty string.
|
||||
None => String::new(),
|
||||
@@ -428,9 +425,7 @@ impl<T: HyperlinkElement + DerivedFrom<Element> + Castable + NodeTraits> Hyperli
|
||||
// Step 1. Set this element's url to null.
|
||||
*self.get_url().borrow_mut() = None;
|
||||
|
||||
let attribute = self
|
||||
.upcast::<Element>()
|
||||
.get_attribute(&ns!(), &local_name!("href"));
|
||||
let attribute = self.upcast::<Element>().get_attribute(&local_name!("href"));
|
||||
|
||||
// Step 2. If this element's href content attribute is absent, then return.
|
||||
let Some(attribute) = attribute else {
|
||||
|
||||
Reference in New Issue
Block a user