blob: d2e34cdac2e89ef067d5ec8d97c961692252e36f [file] [log] [blame]
<!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>