mirror of
https://github.com/servo/servo.git
synced 2025-08-09 07:25:35 +01:00
Auto merge of #29641 - CYBAI:fix-attr-checking, r=jdm
Throw HierarchyRequest error for attr node in pre-insertion Based on Step 4 of https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity, we should throw `HierarchyRequest` error when the node is not a [DocumentFragment](https://dom.spec.whatwg.org/#documentfragment), [DocumentType](https://dom.spec.whatwg.org/#documenttype), [Element](https://dom.spec.whatwg.org/#element), or [CharacterData](https://dom.spec.whatwg.org/#characterdata) [node](https://dom.spec.whatwg.org/#concept-node). Thus, Attr is not one of them; we should throw an error in this case. (I'm guessing it was a kind of typo in https://github.com/servo/servo/pull/25310 because we need to handle Attr with `unreachable` in line 1946) So, with doing so, we can fix the CRASH in `/dom/attributes-are-nodes.html`. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [ ] These changes fix #___ (GitHub issue number if applicable) - [x] There are tests for these changes
This commit is contained in:
commit
bf29f59adf
3 changed files with 7 additions and 9 deletions
|
@ -1872,8 +1872,7 @@ impl Node {
|
||||||
NodeTypeId::Element(_) |
|
NodeTypeId::Element(_) |
|
||||||
NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction) |
|
NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction) |
|
||||||
NodeTypeId::CharacterData(CharacterDataTypeId::Comment) => (),
|
NodeTypeId::CharacterData(CharacterDataTypeId::Comment) => (),
|
||||||
NodeTypeId::Document(_) => return Err(Error::HierarchyRequest),
|
NodeTypeId::Document(_) | NodeTypeId::Attr => return Err(Error::HierarchyRequest),
|
||||||
NodeTypeId::Attr => unreachable!(),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 6.
|
// Step 6.
|
||||||
|
@ -1942,8 +1941,9 @@ impl Node {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
NodeTypeId::CharacterData(_) => (),
|
NodeTypeId::CharacterData(_) => (),
|
||||||
NodeTypeId::Document(_) => unreachable!(),
|
// Because Document and Attr should already throw `HierarchyRequest`
|
||||||
NodeTypeId::Attr => unreachable!(),
|
// error, both of them are unreachable here.
|
||||||
|
NodeTypeId::Document(_) | NodeTypeId::Attr => unreachable!(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -2628,7 +2628,7 @@ impl NodeMethods for Node {
|
||||||
NodeTypeId::DocumentType if !self.is::<Document>() => {
|
NodeTypeId::DocumentType if !self.is::<Document>() => {
|
||||||
return Err(Error::HierarchyRequest);
|
return Err(Error::HierarchyRequest);
|
||||||
},
|
},
|
||||||
NodeTypeId::Document(_) => return Err(Error::HierarchyRequest),
|
NodeTypeId::Document(_) | NodeTypeId::Attr => return Err(Error::HierarchyRequest),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2679,6 +2679,8 @@ impl NodeMethods for Node {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
NodeTypeId::CharacterData(..) => (),
|
NodeTypeId::CharacterData(..) => (),
|
||||||
|
// Because Document and Attr should already throw `HierarchyRequest`
|
||||||
|
// error, both of them are unreachable here.
|
||||||
NodeTypeId::Document(_) => unreachable!(),
|
NodeTypeId::Document(_) => unreachable!(),
|
||||||
NodeTypeId::Attr => unreachable!(),
|
NodeTypeId::Attr => unreachable!(),
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[attributes-are-nodes.html]
|
|
||||||
expected: CRASH
|
|
|
@ -1,2 +0,0 @@
|
||||||
[attributes-are-nodes.html]
|
|
||||||
expected: CRASH
|
|
Loading…
Add table
Add a link
Reference in a new issue