mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Merge pull request #3032 from saneyuki/id
Document.getElementById() should return null if the passed argument is empty
This commit is contained in:
commit
ddb2de4c4d
3 changed files with 11 additions and 7 deletions
|
@ -153,6 +153,7 @@ impl<'a> DocumentHelpers for JSRef<'a, Document> {
|
||||||
let node: &JSRef<Node> = NodeCast::from_ref(element);
|
let node: &JSRef<Node> = NodeCast::from_ref(element);
|
||||||
node.is_in_doc()
|
node.is_in_doc()
|
||||||
});
|
});
|
||||||
|
assert!(!id.is_empty());
|
||||||
|
|
||||||
let mut idmap = self.idmap.deref().borrow_mut();
|
let mut idmap = self.idmap.deref().borrow_mut();
|
||||||
|
|
||||||
|
|
|
@ -832,7 +832,7 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
|
||||||
}
|
}
|
||||||
"id" => {
|
"id" => {
|
||||||
let node: &JSRef<Node> = NodeCast::from_ref(self);
|
let node: &JSRef<Node> = NodeCast::from_ref(self);
|
||||||
if node.is_in_doc() {
|
if node.is_in_doc() && !value.is_empty() {
|
||||||
let doc = document_from_node(self).root();
|
let doc = document_from_node(self).root();
|
||||||
doc.register_named_element(self, value.clone());
|
doc.register_named_element(self, value.clone());
|
||||||
}
|
}
|
||||||
|
@ -855,7 +855,7 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
|
||||||
}
|
}
|
||||||
"id" => {
|
"id" => {
|
||||||
let node: &JSRef<Node> = NodeCast::from_ref(self);
|
let node: &JSRef<Node> = NodeCast::from_ref(self);
|
||||||
if node.is_in_doc() {
|
if node.is_in_doc() && !value.is_empty() {
|
||||||
let doc = document_from_node(self).root();
|
let doc = document_from_node(self).root();
|
||||||
doc.unregister_named_element(self, value);
|
doc.unregister_named_element(self, value);
|
||||||
}
|
}
|
||||||
|
@ -885,7 +885,10 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
|
||||||
match self.get_attribute(Null, "id").root() {
|
match self.get_attribute(Null, "id").root() {
|
||||||
Some(attr) => {
|
Some(attr) => {
|
||||||
let doc = document_from_node(self).root();
|
let doc = document_from_node(self).root();
|
||||||
doc.deref().register_named_element(self, attr.deref().Value());
|
let value = attr.deref().Value();
|
||||||
|
if !value.is_empty() {
|
||||||
|
doc.deref().register_named_element(self, value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_ => ()
|
_ => ()
|
||||||
}
|
}
|
||||||
|
@ -902,7 +905,10 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
|
||||||
match self.get_attribute(Null, "id").root() {
|
match self.get_attribute(Null, "id").root() {
|
||||||
Some(attr) => {
|
Some(attr) => {
|
||||||
let doc = document_from_node(self).root();
|
let doc = document_from_node(self).root();
|
||||||
doc.deref().unregister_named_element(self, attr.deref().Value());
|
let value = attr.deref().Value();
|
||||||
|
if !value.is_empty() {
|
||||||
|
doc.deref().unregister_named_element(self, value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_ => ()
|
_ => ()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
[Document-getElementById.html]
|
[Document-getElementById.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
[Calling document.getElementById with an empty string argument.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[add id attribute via innerHTML]
|
[add id attribute via innerHTML]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue