diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs index 25768e938cc..e6f0a15fb23 100644 --- a/src/components/script/dom/document.rs +++ b/src/components/script/dom/document.rs @@ -153,6 +153,7 @@ impl<'a> DocumentHelpers for JSRef<'a, Document> { let node: &JSRef = NodeCast::from_ref(element); node.is_in_doc() }); + assert!(!id.is_empty()); let mut idmap = self.idmap.deref().borrow_mut(); diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 354d6a66a1b..5bf72216d96 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -832,7 +832,7 @@ impl<'a> VirtualMethods for JSRef<'a, Element> { } "id" => { let node: &JSRef = NodeCast::from_ref(self); - if node.is_in_doc() { + if node.is_in_doc() && !value.is_empty() { let doc = document_from_node(self).root(); doc.register_named_element(self, value.clone()); } @@ -855,7 +855,7 @@ impl<'a> VirtualMethods for JSRef<'a, Element> { } "id" => { let node: &JSRef = NodeCast::from_ref(self); - if node.is_in_doc() { + if node.is_in_doc() && !value.is_empty() { let doc = document_from_node(self).root(); doc.unregister_named_element(self, value); } @@ -885,7 +885,10 @@ impl<'a> VirtualMethods for JSRef<'a, Element> { match self.get_attribute(Null, "id").root() { Some(attr) => { 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() { Some(attr) => { 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); + } } _ => () } diff --git a/src/test/wpt/metadata/dom/nodes/Document-getElementById.html.ini b/src/test/wpt/metadata/dom/nodes/Document-getElementById.html.ini index 86756aed37c..48c78eda0d5 100644 --- a/src/test/wpt/metadata/dom/nodes/Document-getElementById.html.ini +++ b/src/test/wpt/metadata/dom/nodes/Document-getElementById.html.ini @@ -1,8 +1,5 @@ [Document-getElementById.html] type: testharness - [Calling document.getElementById with an empty string argument.] - expected: FAIL - [add id attribute via innerHTML] expected: FAIL