Document.getElementById() should return null if the passed argument is empty.

This commit is contained in:
Tetsuharu OHZEKI 2014-08-06 17:27:30 +09:00
parent e942cd901e
commit 4da0786951
3 changed files with 11 additions and 7 deletions

View file

@ -153,6 +153,7 @@ impl<'a> DocumentHelpers for JSRef<'a, Document> {
let node: &JSRef<Node> = NodeCast::from_ref(element);
node.is_in_doc()
});
assert!(!id.is_empty());
let mut idmap = self.idmap.deref().borrow_mut();

View file

@ -832,7 +832,7 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
}
"id" => {
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();
doc.register_named_element(self, value.clone());
}
@ -855,7 +855,7 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
}
"id" => {
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();
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);
}
}
_ => ()
}

View file

@ -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