mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Auto merge of #18358 - servo:change-attr-kind, r=emilio
Properly change the kind of the given attribute in SetAttributeNode Fixes #18357. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18358) <!-- Reviewable:end -->
This commit is contained in:
commit
096912101b
1 changed files with 10 additions and 5 deletions
|
@ -1649,10 +1649,6 @@ impl ElementMethods for Element {
|
|||
|
||||
// https://dom.spec.whatwg.org/#dom-element-setattributenode
|
||||
fn SetAttributeNode(&self, attr: &Attr) -> Fallible<Option<Root<Attr>>> {
|
||||
// Workaround for https://github.com/servo/servo/issues/17366
|
||||
// This ensures that if this is an "id" attr, its value is an Atom
|
||||
attr.swap_value(&mut self.parse_plain_attribute(attr.local_name(), attr.Value()));
|
||||
|
||||
// Step 1.
|
||||
if let Some(owner) = attr.GetOwnerElement() {
|
||||
if &*owner != self {
|
||||
|
@ -1660,6 +1656,15 @@ impl ElementMethods for Element {
|
|||
}
|
||||
}
|
||||
|
||||
let vtable = vtable_for(self.upcast());
|
||||
|
||||
// This ensures that the attribute is of the expected kind for this
|
||||
// specific element. This is inefficient and should probably be done
|
||||
// differently.
|
||||
attr.swap_value(
|
||||
&mut vtable.parse_plain_attribute(attr.local_name(), attr.Value()),
|
||||
);
|
||||
|
||||
// Step 2.
|
||||
let position = self.attrs.borrow().iter().position(|old_attr| {
|
||||
attr.namespace() == old_attr.namespace() && attr.local_name() == old_attr.local_name()
|
||||
|
@ -1688,7 +1693,7 @@ impl ElementMethods for Element {
|
|||
self.attrs.borrow_mut()[position] = JS::from_ref(attr);
|
||||
old_attr.set_owner(None);
|
||||
if attr.namespace() == &ns!() {
|
||||
vtable_for(self.upcast()).attribute_mutated(
|
||||
vtable.attribute_mutated(
|
||||
&attr, AttributeMutation::Set(Some(&old_attr.value())));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue