Selection-isCollapsed.html (2776B)
1 <!DOCTYPE html> 2 <html> 3 <body> 4 <meta name="author" href="mailto:dizhangg@chromium.org"> 5 <meta name="assert" content="Selection isCollapsed in shadow tree"> 6 <link rel="help" href="https://w3c.github.io/selection-api/#dom-selection-iscollapsed"> 7 <link rel="help" href="https://issues.chromium.org/issues/40400558"> 8 <script src="/resources/testharness.js"></script> 9 <script src="/resources/testharnessreport.js"></script> 10 11 <div id="container"> 12 <div id="host"> 13 <template shadowrootmode=open> 14 <p id="inText">Inside shadow tree 1.</p> 15 </template> 16 </div> 17 <p id="outText">Outside shadow tree.</p> 18 <div id="host2"> 19 <template shadowrootmode=open> 20 <p id="inText2">Inside shadow tree 2.</p> 21 </template> 22 </div> 23 </div> 24 25 <script> 26 27 const root = host.shadowRoot; 28 const inText = root.getElementById('inText'); 29 const root2 = host2.shadowRoot; 30 const inText2 = root2.getElementById('inText2'); 31 32 test(() => { 33 const sel = window.getSelection(); 34 sel.setBaseAndExtent(outText.firstChild, 0, outText.firstChild, 5); 35 assert_false(sel.isCollapsed); 36 assert_false(sel.getComposedRanges()[0].collapsed); 37 assert_equals(sel.anchorNode, outText.firstChild); 38 assert_equals(sel.anchorOffset, 0); 39 assert_equals(sel.focusNode, outText.firstChild); 40 assert_equals(sel.focusOffset, 5); 41 }, "Selection in light tree is not collapsed"); 42 43 test(() => { 44 const sel = window.getSelection(); 45 sel.setBaseAndExtent(inText.firstChild, 0, inText.firstChild, 5); 46 assert_false(sel.isCollapsed); 47 assert_false(sel.getComposedRanges()[0].collapsed); 48 assert_equals(sel.anchorNode, inText.firstChild); 49 assert_equals(sel.anchorOffset, 0); 50 assert_equals(sel.focusNode, inText.firstChild); 51 assert_equals(sel.focusOffset, 5); 52 }, "Selection in shadow tree is not collapsed"); 53 54 test(() => { 55 const sel = window.getSelection(); 56 sel.setBaseAndExtent(inText.firstChild, 0, outText.firstChild, 1); 57 assert_true(sel.isCollapsed); 58 assert_false(sel.getComposedRanges()[0].collapsed); 59 assert_equals(sel.anchorNode, outText.firstChild); 60 assert_equals(sel.anchorOffset, 1); 61 assert_equals(sel.focusNode, outText.firstChild); 62 assert_equals(sel.focusOffset, 1); 63 }, "Selection between light and shadow tree is not valid and is collapsed. Composed range is not collapsed"); 64 65 test(() => { 66 const sel = window.getSelection(); 67 sel.setBaseAndExtent(inText.firstChild, 0, inText2.firstChild, 1); 68 assert_true(sel.isCollapsed); 69 assert_false(sel.getComposedRanges()[0].collapsed); 70 assert_equals(sel.anchorNode, inText2.firstChild); 71 assert_equals(sel.anchorOffset, 1); 72 assert_equals(sel.focusNode, inText2.firstChild); 73 assert_equals(sel.focusOffset, 1); 74 }, "Selection between two shadow trees is not valid and is collapsed. Composed range is not collapsed"); 75 76 </script>