Finish implementation of ChildNode and ParentNode

This commit is contained in:
Anthony Ramine 2015-04-16 10:28:09 +02:00
parent e2b43bd3a9
commit 45e1b9628e
11 changed files with 205 additions and 143 deletions

View file

@ -8,6 +8,7 @@ use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::CharacterDataBinding::CharacterDataMethods;
use dom::bindings::codegen::InheritTypes::{CharacterDataDerived, ElementCast};
use dom::bindings::codegen::InheritTypes::NodeCast;
use dom::bindings::codegen::UnionTypes::NodeOrString;
use dom::bindings::error::{Fallible, ErrorResult};
use dom::bindings::error::Error::IndexSize;
use dom::bindings::js::{JSRef, LayoutJS, Temporary};
@ -117,6 +118,21 @@ impl<'a> CharacterDataMethods for JSRef<'a, CharacterData> {
Ok(())
}
// https://dom.spec.whatwg.org/#dom-childnode-before
fn Before(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).before(nodes)
}
// https://dom.spec.whatwg.org/#dom-childnode-after
fn After(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).after(nodes)
}
// https://dom.spec.whatwg.org/#dom-childnode-replacewith
fn ReplaceWith(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).replace_with(nodes)
}
// https://dom.spec.whatwg.org/#dom-childnode-remove
fn Remove(self) {
let node: JSRef<Node> = NodeCast::from_ref(self);

View file

@ -19,6 +19,7 @@ use dom::bindings::codegen::InheritTypes::{HTMLAnchorElementDerived, HTMLAppletE
use dom::bindings::codegen::InheritTypes::{HTMLAreaElementDerived, HTMLEmbedElementDerived};
use dom::bindings::codegen::InheritTypes::{HTMLFormElementDerived, HTMLImageElementDerived};
use dom::bindings::codegen::InheritTypes::{HTMLScriptElementDerived, CharacterDataCast};
use dom::bindings::codegen::UnionTypes::NodeOrString;
use dom::bindings::error::{ErrorResult, Fallible};
use dom::bindings::error::Error::{NotSupported, InvalidCharacter, Security};
use dom::bindings::error::Error::HierarchyRequest;
@ -222,6 +223,8 @@ pub trait DocumentHelpers<'a> {
button: MouseButton, point: Point2D<f32>);
fn dispatch_key_event(self, key: Key, state: KeyState,
modifiers: KeyModifiers, compositor: &mut Box<ScriptListener+'static>);
fn node_from_nodes_and_strings(self, nodes: Vec<NodeOrString>)
-> Fallible<Temporary<Node>>;
/// Handles a mouse-move event coming from the compositor.
fn handle_mouse_move_event(self,
@ -701,6 +704,34 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
window.r().reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, ReflowReason::KeyEvent);
}
fn node_from_nodes_and_strings(self, nodes: Vec<NodeOrString>)
-> Fallible<Temporary<Node>> {
if nodes.len() == 1 {
match nodes.into_iter().next().unwrap() {
NodeOrString::eNode(node) => Ok(Temporary::from_unrooted(node)),
NodeOrString::eString(string) => {
Ok(NodeCast::from_temporary(self.CreateTextNode(string)))
},
}
} else {
let fragment = NodeCast::from_temporary(self.CreateDocumentFragment()).root();
for node in nodes.into_iter() {
match node {
NodeOrString::eNode(node) => {
try!(fragment.r().AppendChild(node.root().r()));
},
NodeOrString::eString(string) => {
let node = NodeCast::from_temporary(self.CreateTextNode(string)).root();
// No try!() here because appending a text node
// should not fail.
fragment.r().AppendChild(node.r()).unwrap();
}
}
}
Ok(Temporary::from_rooted(fragment.r()))
}
}
fn set_current_script(self, script: Option<JSRef<HTMLScriptElement>>) {
self.current_script.assign(script);
}
@ -1376,6 +1407,16 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
NodeCast::from_ref(self).child_elements().count() as u32
}
// https://dom.spec.whatwg.org/#dom-parentnode-prepend
fn Prepend(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).prepend(nodes)
}
// https://dom.spec.whatwg.org/#dom-parentnode-append
fn Append(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).append(nodes)
}
// https://dom.spec.whatwg.org/#dom-parentnode-queryselector
fn QuerySelector(self, selectors: DOMString) -> Fallible<Option<Temporary<Element>>> {
let root: JSRef<Node> = NodeCast::from_ref(self);

View file

@ -7,8 +7,9 @@ use dom::bindings::codegen::Bindings::DocumentFragmentBinding::DocumentFragmentM
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::codegen::InheritTypes::DocumentFragmentDerived;
use dom::bindings::codegen::InheritTypes::{ElementCast, NodeCast};
use dom::bindings::codegen::UnionTypes::NodeOrString;
use dom::bindings::js::{JSRef, Temporary};
use dom::bindings::error::Fallible;
use dom::bindings::error::{ErrorResult, Fallible};
use dom::bindings::global::GlobalRef;
use dom::document::Document;
use dom::element::Element;
@ -72,6 +73,16 @@ impl<'a> DocumentFragmentMethods for JSRef<'a, DocumentFragment> {
NodeCast::from_ref(self).child_elements().count() as u32
}
// https://dom.spec.whatwg.org/#dom-parentnode-prepend
fn Prepend(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).prepend(nodes)
}
// https://dom.spec.whatwg.org/#dom-parentnode-append
fn Append(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).append(nodes)
}
// https://dom.spec.whatwg.org/#dom-parentnode-queryselector
fn QuerySelector(self, selectors: DOMString) -> Fallible<Option<Temporary<Element>>> {
let root: JSRef<Node> = NodeCast::from_ref(self);

View file

@ -5,6 +5,8 @@
use dom::bindings::codegen::Bindings::DocumentTypeBinding;
use dom::bindings::codegen::Bindings::DocumentTypeBinding::DocumentTypeMethods;
use dom::bindings::codegen::InheritTypes::{DocumentTypeDerived, NodeCast};
use dom::bindings::codegen::UnionTypes::NodeOrString;
use dom::bindings::error::ErrorResult;
use dom::bindings::js::{JSRef, Temporary};
use dom::document::Document;
use dom::eventtarget::{EventTarget, EventTargetTypeId};
@ -83,6 +85,21 @@ impl<'a> DocumentTypeMethods for JSRef<'a, DocumentType> {
self.system_id.clone()
}
// https://dom.spec.whatwg.org/#dom-childnode-before
fn Before(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).before(nodes)
}
// https://dom.spec.whatwg.org/#dom-childnode-after
fn After(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).after(nodes)
}
// https://dom.spec.whatwg.org/#dom-childnode-replacewith
fn ReplaceWith(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).replace_with(nodes)
}
// https://dom.spec.whatwg.org/#dom-childnode-remove
fn Remove(self) {
let node: JSRef<Node> = NodeCast::from_ref(self);

View file

@ -23,6 +23,7 @@ use dom::bindings::codegen::InheritTypes::{HTMLTableElementDerived, HTMLTableCel
use dom::bindings::codegen::InheritTypes::{HTMLTableRowElementDerived, HTMLTextAreaElementDerived};
use dom::bindings::codegen::InheritTypes::{HTMLTableSectionElementDerived, NodeCast};
use dom::bindings::codegen::InheritTypes::HTMLAnchorElementCast;
use dom::bindings::codegen::UnionTypes::NodeOrString;
use dom::bindings::error::{ErrorResult, Fallible};
use dom::bindings::error::Error::{InvalidCharacter, Syntax};
use dom::bindings::error::Error::NoModificationAllowed;
@ -1265,6 +1266,16 @@ impl<'a> ElementMethods for JSRef<'a, Element> {
NodeCast::from_ref(self).child_elements().count() as u32
}
// https://dom.spec.whatwg.org/#dom-parentnode-prepend
fn Prepend(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).prepend(nodes)
}
// https://dom.spec.whatwg.org/#dom-parentnode-append
fn Append(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).append(nodes)
}
// https://dom.spec.whatwg.org/#dom-parentnode-queryselector
fn QuerySelector(self, selectors: DOMString) -> Fallible<Option<Temporary<Element>>> {
let root: JSRef<Node> = NodeCast::from_ref(self);
@ -1277,6 +1288,21 @@ impl<'a> ElementMethods for JSRef<'a, Element> {
root.query_selector_all(selectors)
}
// https://dom.spec.whatwg.org/#dom-childnode-before
fn Before(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).before(nodes)
}
// https://dom.spec.whatwg.org/#dom-childnode-after
fn After(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).after(nodes)
}
// https://dom.spec.whatwg.org/#dom-childnode-replacewith
fn ReplaceWith(self, nodes: Vec<NodeOrString>) -> ErrorResult {
NodeCast::from_ref(self).replace_with(nodes)
}
// https://dom.spec.whatwg.org/#dom-childnode-remove
fn Remove(self) {
let node: JSRef<Node> = NodeCast::from_ref(self);

View file

@ -18,8 +18,9 @@ use dom::bindings::codegen::InheritTypes::{ElementCast, NodeCast, ElementDerived
use dom::bindings::codegen::InheritTypes::{HTMLLegendElementDerived, HTMLFieldSetElementDerived};
use dom::bindings::codegen::InheritTypes::{HTMLOptGroupElementDerived, NodeBase, NodeDerived};
use dom::bindings::codegen::InheritTypes::{ProcessingInstructionCast, TextCast};
use dom::bindings::codegen::UnionTypes::NodeOrString;
use dom::bindings::conversions;
use dom::bindings::error::Fallible;
use dom::bindings::error::{ErrorResult, Fallible};
use dom::bindings::error::Error::{NotFound, HierarchyRequest, Syntax};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, JSRef, LayoutJS, RootedReference, Temporary, Root, Unrooted};
@ -499,6 +500,12 @@ pub trait NodeHelpers {
fn get_bounding_content_box(self) -> Rect<Au>;
fn get_content_boxes(self) -> Vec<Rect<Au>>;
fn before(self, nodes: Vec<NodeOrString>) -> ErrorResult;
fn after(self, nodes: Vec<NodeOrString>) -> ErrorResult;
fn replace_with(self, nodes: Vec<NodeOrString>) -> ErrorResult;
fn prepend(self, nodes: Vec<NodeOrString>) -> ErrorResult;
fn append(self, nodes: Vec<NodeOrString>) -> ErrorResult;
fn query_selector(self, selectors: DOMString) -> Fallible<Option<Temporary<Element>>>;
#[allow(unsafe_code)]
unsafe fn query_selector_iter(self, selectors: DOMString) -> Fallible<QuerySelectorIterator>;
@ -512,6 +519,7 @@ pub trait NodeHelpers {
fn teardown(self);
fn parse_fragment(self, markup: DOMString) -> Fallible<Temporary<DocumentFragment>>;
}
impl<'a> NodeHelpers for JSRef<'a, Node> {
@ -802,6 +810,80 @@ impl<'a> NodeHelpers for JSRef<'a, Node> {
window_from_node(self).root().r().content_boxes_query(self.to_trusted_node_address())
}
// https://dom.spec.whatwg.org/#dom-childnode-before
fn before(self, nodes: Vec<NodeOrString>) -> ErrorResult {
match self.parent_node().root() {
None => {
// Step 1.
Ok(())
},
Some(ref parent_node) => {
// Step 2.
let doc = self.owner_doc().root();
let node = try!(doc.r().node_from_nodes_and_strings(nodes)).root();
// Step 3.
Node::pre_insert(node.r(), parent_node.r(),
Some(self)).map(|_| ())
},
}
}
// https://dom.spec.whatwg.org/#dom-childnode-after
fn after(self, nodes: Vec<NodeOrString>) -> ErrorResult {
match self.parent_node().root() {
None => {
// Step 1.
Ok(())
},
Some(ref parent_node) => {
// Step 2.
let doc = self.owner_doc().root();
let node = try!(doc.r().node_from_nodes_and_strings(nodes)).root();
// Step 3.
// FIXME(https://github.com/servo/servo/issues/5720)
let next_sibling = self.next_sibling().root();
Node::pre_insert(node.r(), parent_node.r(),
next_sibling.r()).map(|_| ())
},
}
}
// https://dom.spec.whatwg.org/#dom-childnode-replacewith
fn replace_with(self, nodes: Vec<NodeOrString>) -> ErrorResult {
match self.parent_node().root() {
None => {
// Step 1.
Ok(())
},
Some(ref parent_node) => {
// Step 2.
let doc = self.owner_doc().root();
let node = try!(doc.r().node_from_nodes_and_strings(nodes)).root();
// Step 3.
parent_node.r().ReplaceChild(node.r(), self).map(|_| ())
},
}
}
// https://dom.spec.whatwg.org/#dom-parentnode-prepend
fn prepend(self, nodes: Vec<NodeOrString>) -> ErrorResult {
// Step 1.
let doc = self.owner_doc().root();
let node = try!(doc.r().node_from_nodes_and_strings(nodes)).root();
// Step 2.
let first_child = self.first_child().root();
Node::pre_insert(node.r(), self, first_child.r()).map(|_| ())
}
// https://dom.spec.whatwg.org/#dom-parentnode-append
fn append(self, nodes: Vec<NodeOrString>) -> ErrorResult {
// Step 1.
let doc = self.owner_doc().root();
let node = try!(doc.r().node_from_nodes_and_strings(nodes)).root();
// Step 2.
self.AppendChild(node.r()).map(|_| ())
}
// https://dom.spec.whatwg.org/#dom-parentnode-queryselector
fn query_selector(self, selectors: DOMString) -> Fallible<Option<Temporary<Element>>> {
// Step 1.

View file

@ -9,10 +9,12 @@
[NoInterfaceObject]
interface ChildNode {
// Not implemented yet:
// void before((Node or DOMString)... nodes);
// void after((Node or DOMString)... nodes);
// void replace((Node or DOMString)... nodes);
[Throws]
void before((Node or DOMString)... nodes);
[Throws]
void after((Node or DOMString)... nodes);
[Throws]
void replaceWith((Node or DOMString)... nodes);
void remove();
};

View file

@ -18,9 +18,10 @@ interface ParentNode {
[Pure]
readonly attribute unsigned long childElementCount;
// Not implemented yet
// void prepend((Node or DOMString)... nodes);
// void append((Node or DOMString)... nodes);
[Throws]
void prepend((Node or DOMString)... nodes);
[Throws]
void append((Node or DOMString)... nodes);
//Element? query(DOMString relativeSelectors);
//[NewObject]

View file

@ -96,12 +96,6 @@
[Document interface: operation createTreeWalker(Node,unsigned long,NodeFilter)]
expected: FAIL
[Document interface: operation prepend([object Object\],[object Object\])]
expected: FAIL
[Document interface: operation append([object Object\],[object Object\])]
expected: FAIL
[Document interface: operation query(DOMString)]
expected: FAIL
@ -156,12 +150,6 @@
[DocumentFragment interface: operation getElementById(DOMString)]
expected: FAIL
[DocumentFragment interface: operation prepend([object Object\],[object Object\])]
expected: FAIL
[DocumentFragment interface: operation append([object Object\],[object Object\])]
expected: FAIL
[DocumentFragment interface: operation query(DOMString)]
expected: FAIL
@ -174,15 +162,9 @@
[DocumentFragment interface: calling getElementById(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError]
expected: FAIL
[DocumentFragment interface: document.createDocumentFragment() must inherit property "prepend" with the proper type (5)]
expected: FAIL
[DocumentFragment interface: calling prepend([object Object\],[object Object\]) on document.createDocumentFragment() with too few arguments must throw TypeError]
expected: FAIL
[DocumentFragment interface: document.createDocumentFragment() must inherit property "append" with the proper type (6)]
expected: FAIL
[DocumentFragment interface: calling append([object Object\],[object Object\]) on document.createDocumentFragment() with too few arguments must throw TypeError]
expected: FAIL
@ -198,21 +180,9 @@
[DocumentFragment interface: calling queryAll(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError]
expected: FAIL
[DocumentType interface: operation before([object Object\],[object Object\])]
expected: FAIL
[DocumentType interface: operation after([object Object\],[object Object\])]
expected: FAIL
[DocumentType interface: document.doctype must inherit property "before" with the proper type (3)]
expected: FAIL
[DocumentType interface: calling before([object Object\],[object Object\]) on document.doctype with too few arguments must throw TypeError]
expected: FAIL
[DocumentType interface: document.doctype must inherit property "after" with the proper type (4)]
expected: FAIL
[DocumentType interface: calling after([object Object\],[object Object\]) on document.doctype with too few arguments must throw TypeError]
expected: FAIL
@ -234,24 +204,12 @@
[Element interface: operation removeAttributeNode(Attr)]
expected: FAIL
[Element interface: operation prepend([object Object\],[object Object\])]
expected: FAIL
[Element interface: operation append([object Object\],[object Object\])]
expected: FAIL
[Element interface: operation query(DOMString)]
expected: FAIL
[Element interface: operation queryAll(DOMString)]
expected: FAIL
[Element interface: operation before([object Object\],[object Object\])]
expected: FAIL
[Element interface: operation after([object Object\],[object Object\])]
expected: FAIL
[Element interface: element must inherit property "hasAttributes" with the proper type (7)]
expected: FAIL
@ -285,15 +243,9 @@
[Element interface: calling removeAttributeNode(Attr) on element with too few arguments must throw TypeError]
expected: FAIL
[Element interface: element must inherit property "prepend" with the proper type (31)]
expected: FAIL
[Element interface: calling prepend([object Object\],[object Object\]) on element with too few arguments must throw TypeError]
expected: FAIL
[Element interface: element must inherit property "append" with the proper type (32)]
expected: FAIL
[Element interface: calling append([object Object\],[object Object\]) on element with too few arguments must throw TypeError]
expected: FAIL
@ -309,15 +261,9 @@
[Element interface: calling queryAll(DOMString) on element with too few arguments must throw TypeError]
expected: FAIL
[Element interface: element must inherit property "before" with the proper type (39)]
expected: FAIL
[Element interface: calling before([object Object\],[object Object\]) on element with too few arguments must throw TypeError]
expected: FAIL
[Element interface: element must inherit property "after" with the proper type (40)]
expected: FAIL
[Element interface: calling after([object Object\],[object Object\]) on element with too few arguments must throw TypeError]
expected: FAIL
@ -327,12 +273,6 @@
[NamedNodeMap interface: operation setNamedItemNS(Attr)]
expected: FAIL
[CharacterData interface: operation before([object Object\],[object Object\])]
expected: FAIL
[CharacterData interface: operation after([object Object\],[object Object\])]
expected: FAIL
[Text interface object length]
expected: FAIL
@ -345,42 +285,24 @@
[Text interface: calling splitText(unsigned long) on document.createTextNode("abc") with too few arguments must throw TypeError]
expected: FAIL
[CharacterData interface: document.createTextNode("abc") must inherit property "before" with the proper type (9)]
expected: FAIL
[CharacterData interface: calling before([object Object\],[object Object\]) on document.createTextNode("abc") with too few arguments must throw TypeError]
expected: FAIL
[CharacterData interface: document.createTextNode("abc") must inherit property "after" with the proper type (10)]
expected: FAIL
[CharacterData interface: calling after([object Object\],[object Object\]) on document.createTextNode("abc") with too few arguments must throw TypeError]
expected: FAIL
[CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "before" with the proper type (9)]
expected: FAIL
[CharacterData interface: calling before([object Object\],[object Object\]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError]
expected: FAIL
[CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "after" with the proper type (10)]
expected: FAIL
[CharacterData interface: calling after([object Object\],[object Object\]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError]
expected: FAIL
[Comment interface object length]
expected: FAIL
[CharacterData interface: document.createComment("abc") must inherit property "before" with the proper type (9)]
expected: FAIL
[CharacterData interface: calling before([object Object\],[object Object\]) on document.createComment("abc") with too few arguments must throw TypeError]
expected: FAIL
[CharacterData interface: document.createComment("abc") must inherit property "after" with the proper type (10)]
expected: FAIL
[CharacterData interface: calling after([object Object\],[object Object\]) on document.createComment("abc") with too few arguments must throw TypeError]
expected: FAIL
@ -885,12 +807,6 @@
[Document interface: xmlDoc must inherit property "createNodeIterator" with the proper type (25)]
expected: FAIL
[Document interface: xmlDoc must inherit property "prepend" with the proper type (32)]
expected: FAIL
[Document interface: xmlDoc must inherit property "append" with the proper type (33)]
expected: FAIL
[Document interface: xmlDoc must inherit property "query" with the proper type (34)]
expected: FAIL
@ -927,42 +843,18 @@
[Comment interface: existence and properties of interface object]
expected: FAIL
[DocumentType interface: operation replaceWith([object Object\],[object Object\])]
expected: FAIL
[DocumentType interface: document.doctype must inherit property "replaceWith" with the proper type (5)]
expected: FAIL
[DocumentType interface: calling replaceWith([object Object\],[object Object\]) on document.doctype with too few arguments must throw TypeError]
expected: FAIL
[Element interface: operation replaceWith([object Object\],[object Object\])]
expected: FAIL
[Element interface: element must inherit property "replaceWith" with the proper type (41)]
expected: FAIL
[Element interface: calling replaceWith([object Object\],[object Object\]) on element with too few arguments must throw TypeError]
expected: FAIL
[CharacterData interface: operation replaceWith([object Object\],[object Object\])]
expected: FAIL
[CharacterData interface: document.createTextNode("abc") must inherit property "replaceWith" with the proper type (11)]
expected: FAIL
[CharacterData interface: calling replaceWith([object Object\],[object Object\]) on document.createTextNode("abc") with too few arguments must throw TypeError]
expected: FAIL
[CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "replaceWith" with the proper type (11)]
expected: FAIL
[CharacterData interface: calling replaceWith([object Object\],[object Object\]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError]
expected: FAIL
[CharacterData interface: document.createComment("abc") must inherit property "replaceWith" with the proper type (11)]
expected: FAIL
[CharacterData interface: calling replaceWith([object Object\],[object Object\]) on document.createComment("abc") with too few arguments must throw TypeError]
expected: FAIL

View file

@ -1,5 +0,0 @@
[getElementsByClassName-31.htm]
type: testharness
[getElementsByClassName across documents]
expected: PASS

View file

@ -1185,15 +1185,9 @@
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "all" with the proper type (81)]
expected: FAIL
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "prepend" with the proper type (87)]
expected: FAIL
[Document interface: calling prepend([object Object\],[object Object\]) 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 "append" with the proper type (88)]
expected: FAIL
[Document interface: calling append([object Object\],[object Object\]) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
expected: FAIL
@ -2190,15 +2184,9 @@
[Element interface: calling removeAttributeNode(Attr) on document.createElement("noscript") with too few arguments must throw TypeError]
expected: FAIL
[Element interface: document.createElement("noscript") must inherit property "prepend" with the proper type (31)]
expected: FAIL
[Element interface: calling prepend([object Object\],[object Object\]) on document.createElement("noscript") with too few arguments must throw TypeError]
expected: FAIL
[Element interface: document.createElement("noscript") must inherit property "append" with the proper type (32)]
expected: FAIL
[Element interface: calling append([object Object\],[object Object\]) on document.createElement("noscript") with too few arguments must throw TypeError]
expected: FAIL
@ -2214,15 +2202,9 @@
[Element interface: calling queryAll(DOMString) on document.createElement("noscript") with too few arguments must throw TypeError]
expected: FAIL
[Element interface: document.createElement("noscript") must inherit property "before" with the proper type (39)]
expected: FAIL
[Element interface: calling before([object Object\],[object Object\]) on document.createElement("noscript") with too few arguments must throw TypeError]
expected: FAIL
[Element interface: document.createElement("noscript") must inherit property "after" with the proper type (40)]
expected: FAIL
[Element interface: calling after([object Object\],[object Object\]) on document.createElement("noscript") with too few arguments must throw TypeError]
expected: FAIL
@ -9531,9 +9513,6 @@
[HTMLFontElement interface: document.createElement("font") must inherit property "size" with the proper type (2)]
expected: FAIL
[Element interface: document.createElement("noscript") must inherit property "replaceWith" with the proper type (41)]
expected: FAIL
[Element interface: calling replaceWith([object Object\],[object Object\]) on document.createElement("noscript") with too few arguments must throw TypeError]
expected: FAIL