tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>