tor-browser

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

Selection-getComposedRanges-collapsed.html (2995B)


      1 <!DOCTYPE html>
      2 <html>
      3 <body>
      4 <meta name="author" href="mailto:dizhangg@chromium.org">
      5 <meta name="assert" content="Selection's getComposedRanges should return a sequence of static ranges">
      6 <link rel="help" href="https://w3c.github.io/selection-api/#dom-selection-getcomposedranges">
      7 <script src="/resources/testharness.js"></script>
      8 <script src="/resources/testharnessreport.js"></script>
      9 
     10 <div id="container">
     11  <div id="host1">
     12    <template shadowrootmode=open>C</template>
     13    A - not slotted
     14  </div>
     15  <div id="host2">
     16    <template shadowrootmode=open>D</template>
     17    B - not slotted
     18  </div>
     19 </div>
     20 
     21 <script>
     22 
     23 const c = host1.shadowRoot;
     24 const d = host2.shadowRoot;
     25 
     26 test(() => {
     27  const sel = getSelection();
     28  sel.setBaseAndExtent(c, 0, d, 0);
     29 
     30  assert_equals(sel.getRangeAt(0).startContainer, d);
     31  assert_equals(sel.getRangeAt(0).startOffset, 0);
     32  assert_equals(sel.getRangeAt(0).endContainer, d);
     33  assert_equals(sel.getRangeAt(0).endOffset, 0);
     34 
     35  assert_equals(sel.getComposedRanges()[0].startContainer, container);
     36  assert_equals(sel.getComposedRanges()[0].startOffset, 1);
     37  assert_equals(sel.getComposedRanges()[0].endContainer, container);
     38  assert_equals(sel.getComposedRanges()[0].endOffset, 4);
     39 
     40  assert_equals(sel.getComposedRanges({ shadowRoots: [c] })[0].startContainer, c);
     41  assert_equals(sel.getComposedRanges({ shadowRoots: [c] })[0].startOffset, 0);
     42  assert_equals(sel.getComposedRanges({ shadowRoots: [c] })[0].endContainer, container);
     43  assert_equals(sel.getComposedRanges({ shadowRoots: [c] })[0].endOffset, 4);
     44 
     45  assert_equals(sel.getComposedRanges({ shadowRoots: [d] })[0].startContainer, container);
     46  assert_equals(sel.getComposedRanges({ shadowRoots: [d] })[0].startOffset, 1);
     47  assert_equals(sel.getComposedRanges({ shadowRoots: [d] })[0].endContainer, d);
     48  assert_equals(sel.getComposedRanges({ shadowRoots: [d] })[0].endOffset, 0);
     49 
     50  assert_equals(sel.getComposedRanges({ shadowRoots: [c, d] })[0].startContainer, c);
     51  assert_equals(sel.getComposedRanges({ shadowRoots: [c, d] })[0].startOffset, 0);
     52  assert_equals(sel.getComposedRanges({ shadowRoots: [c, d] })[0].endContainer, d);
     53  assert_equals(sel.getComposedRanges({ shadowRoots: [c, d] })[0].endOffset, 0);
     54 
     55  // Re-setting the same range should never change the output
     56  sel.setBaseAndExtent(c, 0, d, 0);
     57  assert_equals(sel.getRangeAt(0).startContainer, d);
     58  assert_equals(sel.getRangeAt(0).startOffset, 0);
     59  assert_equals(sel.getRangeAt(0).endContainer, d);
     60  assert_equals(sel.getRangeAt(0).endOffset, 0);
     61 
     62  assert_equals(sel.getComposedRanges({ shadowRoots: [c, d] })[0].startContainer, c);
     63  assert_equals(sel.getComposedRanges({ shadowRoots: [c, d] })[0].startOffset, 0);
     64  assert_equals(sel.getComposedRanges({ shadowRoots: [c, d] })[0].endContainer, d);
     65  assert_equals(sel.getComposedRanges({ shadowRoots: [c, d] })[0].endOffset, 0);
     66 }, 'Setting the range to nodes in different shadow trees collapses ordinary ranges, but does not collapse composed ranges.');
     67 </script>