| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="resources/shadow-dom.js"></script> |
| |
| <div id="root0"> |
| <div id="host1"> |
| <template id="root1" data-mode="open"> |
| <div id="host2"> |
| <template id="root2" data-mode="open"> |
| <div id="parent"> |
| <div id="child"></div> |
| </div> |
| </template> |
| </div> |
| </template> |
| </div> |
| </div> |
| |
| <script> |
| test(() => { |
| let n = createTestTree(root0); |
| document.body.appendChild(n.host1); |
| assert_equals(n.host1.getRootNode(), document); |
| assert_equals(n.root1.getRootNode(), n.root1); |
| assert_equals(n.host2.getRootNode(), n.root1); |
| assert_equals(n.root2.getRootNode(), n.root2); |
| assert_equals(n.parent.getRootNode(), n.root2); |
| assert_equals(n.child.getRootNode(), n.root2); |
| |
| assert_equals(n.host1.getRootNode({ composed: true }), document); |
| assert_equals(n.root1.getRootNode({ composed: true }), document); |
| assert_equals(n.host2.getRootNode({ composed: true }), document); |
| assert_equals(n.root2.getRootNode({ composed: true }), document); |
| assert_equals(n.parent.getRootNode({ composed: true }), document); |
| assert_equals(n.child.getRootNode({ composed: true }), document); |
| n.host1.remove(); |
| }, 'getRootNode(...) in a connected tree.'); |
| |
| test(() => { |
| let n = createTestTree(root0); |
| assert_equals(n.root0.getRootNode(), n.root0); |
| assert_equals(n.host1.getRootNode(), n.root0); |
| assert_equals(n.root1.getRootNode(), n.root1); |
| assert_equals(n.host2.getRootNode(), n.root1); |
| assert_equals(n.root2.getRootNode(), n.root2); |
| assert_equals(n.parent.getRootNode(), n.root2); |
| assert_equals(n.child.getRootNode(), n.root2); |
| |
| assert_equals(n.root0.getRootNode({ composed: true }), n.root0); |
| assert_equals(n.host1.getRootNode({ composed: true }), n.root0); |
| assert_equals(n.root1.getRootNode({ composed: true }), n.root0); |
| assert_equals(n.host2.getRootNode({ composed: true }), n.root0); |
| assert_equals(n.root2.getRootNode({ composed: true }), n.root0); |
| assert_equals(n.parent.getRootNode({ composed: true }), n.root0); |
| assert_equals(n.child.getRootNode({ composed: true }), n.root0); |
| }, 'getRootNode(...) in a disconnected tree.'); |
| |
| test(() => { |
| let n = createTestTree(root0); |
| assert_equals(n.host2.getRootNode({ composed: false }), n.root1); |
| }, 'getRootNode({ composed: false }) should be the default behavior.'); |
| </script> |