| // Testing DocumentFragment with host separately as it has a different node document by design |
| test(() => { |
| const df = document.createElement("template").content; |
| const child = df.appendChild(new Text('hi')); |
| assert_not_equals(df.ownerDocument, document); |
| const nodeDocument = df.ownerDocument; |
| document.body.appendChild(df); |
| assert_equals(df.childNodes.length, 0); |
| assert_equals(child.ownerDocument, document); |
| assert_equals(df.ownerDocument, nodeDocument); |
| }, `appendChild() and DocumentFragment with host`); |
| |
| test(() => { |
| const df = document.createElement("template").content; |
| const child = df.appendChild(new Text('hi')); |
| const nodeDocument = df.ownerDocument; |
| document.adoptNode(df); |
| assert_equals(df.childNodes.length, 1); |
| assert_equals(child.ownerDocument, nodeDocument); |
| assert_equals(df.ownerDocument, nodeDocument); |
| }, `adoptNode() and DocumentFragment with host`); |
| |
| [ |
| { |
| "name": "DocumentFragment", |
| "creator": doc => doc.createDocumentFragment() |
| }, |
| { |
| "name": "ShadowRoot", |
| "creator": doc => doc.createElementNS("http://www.w3.org/1999/xhtml", "div").attachShadow({mode: "closed"}) |
| } |
| ].forEach(dfTest => { |
| test(() => { |
| const doc = new Document(); |
| const df = dfTest.creator(doc); |
| const child = df.appendChild(new Text('hi')); |
| assert_equals(df.ownerDocument, doc); |
| |
| document.body.appendChild(df); |
| assert_equals(df.childNodes.length, 0); |
| assert_equals(child.ownerDocument, document); |
| assert_equals(df.ownerDocument, doc); |
| }, `appendChild() and ${dfTest.name}`); |
| |
| test(() => { |
| const doc = new Document(); |
| const df = dfTest.creator(doc); |
| const child = df.appendChild(new Text('hi')); |
| if (dfTest.name === "ShadowRoot") { |
| assert_throws("HierarchyRequestError", () => document.adoptNode(df)); |
| } else { |
| document.adoptNode(df); |
| assert_equals(df.childNodes.length, 1); |
| assert_equals(child.ownerDocument, document); |
| assert_equals(df.ownerDocument, document); |
| } |
| }, `adoptNode() and ${dfTest.name}`); |
| }); |