diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 3e490fe8ba4..eccaeabde5e 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -997,6 +997,18 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { Ok(Attr::new(window.r(), name, value, l_name, ns!(""), None, None)) } + // http://dom.spec.whatwg.org/#dom-document-createattributens + fn CreateAttributeNS(self, namespace: Option, qualified_name: DOMString) + -> Fallible> { + let (namespace, prefix, local_name) = + try!(validate_and_extract(namespace, &qualified_name)); + let window = self.window.root(); + let value = AttrValue::String("".to_owned()); + let qualified_name = Atom::from_slice(&qualified_name); + Ok(Attr::new(window.r(), local_name, value, qualified_name, + namespace, prefix, None)) + } + // http://dom.spec.whatwg.org/#dom-document-createdocumentfragment fn CreateDocumentFragment(self) -> Temporary { DocumentFragment::new(self) diff --git a/components/script/dom/webidls/Document.webidl b/components/script/dom/webidls/Document.webidl index dea9b9c38f6..c57b09fff1b 100644 --- a/components/script/dom/webidls/Document.webidl +++ b/components/script/dom/webidls/Document.webidl @@ -40,14 +40,16 @@ interface Document : Node { [NewObject, Throws] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data); - [NewObject, Throws] - Attr createAttribute(DOMString localName); - [NewObject, Throws] Node importNode(Node node, optional boolean deep = false); [Throws] Node adoptNode(Node node); + [NewObject, Throws] + Attr createAttribute(DOMString localName); + [NewObject, Throws] + Attr createAttributeNS(DOMString? namespace, DOMString localName); + [NewObject, Throws] Event createEvent(DOMString interface_); diff --git a/tests/wpt/metadata/dom/interfaces.html.ini b/tests/wpt/metadata/dom/interfaces.html.ini index c3913ed9046..2c1b57f5f92 100644 --- a/tests/wpt/metadata/dom/interfaces.html.ini +++ b/tests/wpt/metadata/dom/interfaces.html.ini @@ -90,9 +90,6 @@ [Document interface: operation importNode(Node,boolean)] expected: FAIL - [Document interface: operation createAttributeNS(DOMString,DOMString)] - expected: FAIL - [Document interface: operation createNodeIterator(Node,unsigned long,NodeFilter)] expected: FAIL @@ -141,9 +138,6 @@ [Document interface: xmlDoc must inherit property "origin" with the proper type (3)] expected: FAIL - [Document interface: calling createAttributeNS(DOMString,DOMString) on xmlDoc with too few arguments must throw TypeError] - expected: FAIL - [Document interface: calling createNodeIterator(Node,unsigned long,NodeFilter) on xmlDoc with too few arguments must throw TypeError] expected: FAIL @@ -1020,9 +1014,6 @@ [DOMTokenList interface object length] expected: FAIL - [Document interface: xmlDoc must inherit property "createAttributeNS" with the proper type (22)] - expected: FAIL - [Document interface: xmlDoc must inherit property "createNodeIterator" with the proper type (25)] expected: FAIL diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 6bb217f0051..f91c0e52aeb 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -1035,12 +1035,6 @@ [Document interface: document.implementation.createDocument(null, "", null) must inherit property "origin" with the proper type (3)] expected: FAIL - [Document interface: document.implementation.createDocument(null, "", null) must inherit property "createAttributeNS" with the proper type (22)] - expected: FAIL - - [Document interface: calling createAttributeNS(DOMString,DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError] - expected: FAIL - [Document interface: document.implementation.createDocument(null, "", null) must inherit property "createNodeIterator" with the proper type (25)] expected: FAIL