Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /selection/cross-shadow-boundary-slot-isPointInRange.html - WPT Dashboard Interop Dashboard
<!doctype html>
<meta charset=utf-8>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<span id="outer">Outer</span>
<div id="host">
<template shadowrootmode="open">
<slot></slot>
<span id="inner">Inner</span>
</template>
<span id="slotted">Slotted</span>
</div>
<script>
test(function() {
const sel = window.getSelection();
sel.empty();
sel.setBaseAndExtent(outer.firstChild, 3, slotted.firstChild, 4);
assert_equals(sel.anchorNode, outer.firstChild);
assert_equals(sel.anchorOffset, 3);
assert_equals(sel.focusNode, slotted.firstChild);
assert_equals(sel.focusOffset, 4);
// Since the endpoint is at "Slotted", so it should be in the range
assert_true(sel.getRangeAt(0).isPointInRange(slotted.firstChild, 0));
}, "test isPointInRange returns true when the slotted content is in range");
test(function() {
const sel = window.getSelection();
sel.empty();
const inner = host.shadowRoot.getElementById("inner");
sel.setBaseAndExtent(outer.firstChild, 3, inner.firstChild, 4);
const range = sel.getComposedRanges(host.shadowRoot)[0];
assert_equals(range.startContainer, outer.firstChild);
assert_equals(range.startOffset, 3);
assert_equals(range.endContainer, inner.firstChild);
assert_equals(range.endOffset, 4);
// We use shadow including order, so slotted content is not selected, hence
// not in the range..
assert_false(sel.getRangeAt(0).isPointInRange(slotted.firstChild, 0));
}, "test isPointInRange returns false when the slotted content is not in range");
</script>