tor-browser

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

collapseToStartEnd.html (5486B)


      1 <!doctype html>
      2 <title>Selection.collapseTo(Start|End)() tests</title>
      3 <div id=log></div>
      4 <script src=/resources/testharness.js></script>
      5 <script src=/resources/testharnessreport.js></script>
      6 <script src=common.js></script>
      7 <script>
      8 "use strict";
      9 
     10 test(function() {
     11   selection.removeAllRanges();
     12   assert_throws_dom("INVALID_STATE_ERR", function() {
     13       selection.collapseToStart();
     14   });
     15 }, "Must throw InvalidStateErr if the selection's range is null");
     16 
     17 for (var i = 0; i < testRanges.length; i++) {
     18    var endpoints = eval(testRanges[i]);
     19    if (!isSelectableNode(endpoints[0]) || !isSelectableNode(endpoints[2]))
     20        continue;
     21    test(function() {
     22        selection.removeAllRanges();
     23 
     24        var addedRange = ownerDocument(endpoints[0]).createRange();
     25        addedRange.setStart(endpoints[0], endpoints[1]);
     26        addedRange.setEnd(endpoints[2], endpoints[3]);
     27        selection.addRange(addedRange);
     28 
     29        // We don't penalize browsers here for mishandling addRange() and
     30        // adding a different range than we specified.  They fail addRange()
     31        // tests for that, and don't have to fail collapseToStart/End() tests
     32        // too.  They do fail if they throw unexpectedly, though.  I also fail
     33        // them if there's no range at all, because otherwise they could pass
     34        // all tests if addRange() always does nothing and collapseToStart()
     35        // always throws.
     36        assert_equals(selection.rangeCount, 1,
     37            "Sanity check: rangeCount must equal 1 after addRange()");
     38 
     39        var expectedEndpoint = [
     40            selection.getRangeAt(0).startContainer,
     41            selection.getRangeAt(0).startOffset
     42        ];
     43 
     44        selection.collapseToStart();
     45 
     46        assert_equals(selection.rangeCount, 1,
     47            "selection.rangeCount must equal 1");
     48        assert_equals(selection.focusNode, expectedEndpoint[0],
     49            "focusNode must equal the original start node");
     50        assert_equals(selection.focusOffset, expectedEndpoint[1],
     51            "focusOffset must equal the original start offset");
     52        assert_equals(selection.anchorNode, expectedEndpoint[0],
     53            "anchorNode must equal the original start node");
     54        assert_equals(selection.anchorOffset, expectedEndpoint[1],
     55            "anchorOffset must equal the original start offset");
     56        assert_equals(addedRange.startContainer, endpoints[0],
     57            "collapseToStart() must not change the startContainer of the selection's original range");
     58        assert_equals(addedRange.startOffset, endpoints[1],
     59            "collapseToStart() must not change the startOffset of the selection's original range");
     60        assert_equals(addedRange.endContainer, endpoints[2],
     61            "collapseToStart() must not change the endContainer of the selection's original range");
     62        assert_equals(addedRange.endOffset, endpoints[3],
     63            "collapseToStart() must not change the endOffset of the selection's original range");
     64    }, "Range " + i + " " + testRanges[i] + " collapseToStart()");
     65 
     66    // Copy-paste of above
     67    test(function() {
     68        selection.removeAllRanges();
     69 
     70        var addedRange = ownerDocument(endpoints[0]).createRange();
     71        addedRange.setStart(endpoints[0], endpoints[1]);
     72        addedRange.setEnd(endpoints[2], endpoints[3]);
     73        selection.addRange(addedRange);
     74 
     75        // We don't penalize browsers here for mishandling addRange() and
     76        // adding a different range than we specified.  They fail addRange()
     77        // tests for that, and don't have to fail collapseToStart/End() tests
     78        // too.  They do fail if they throw unexpectedly, though.  I also fail
     79        // them if there's no range at all, because otherwise they could pass
     80        // all tests if addRange() always does nothing and collapseToStart()
     81        // always throws.
     82        assert_equals(selection.rangeCount, 1,
     83            "Sanity check: rangeCount must equal 1 after addRange()");
     84 
     85        var expectedEndpoint = [
     86            selection.getRangeAt(0).endContainer,
     87            selection.getRangeAt(0).endOffset
     88        ];
     89 
     90        selection.collapseToEnd();
     91 
     92        assert_equals(selection.rangeCount, 1,
     93            "selection.rangeCount must equal 1");
     94        assert_equals(selection.focusNode, expectedEndpoint[0],
     95            "focusNode must equal the original end node");
     96        assert_equals(selection.focusOffset, expectedEndpoint[1],
     97            "focusOffset must equal the original end offset");
     98        assert_equals(selection.anchorNode, expectedEndpoint[0],
     99            "anchorNode must equal the original end node");
    100        assert_equals(selection.anchorOffset, expectedEndpoint[1],
    101            "anchorOffset must equal the original end offset");
    102        assert_equals(addedRange.startContainer, endpoints[0],
    103            "collapseToEnd() must not change the startContainer of the selection's original range");
    104        assert_equals(addedRange.startOffset, endpoints[1],
    105            "collapseToEnd() must not change the startOffset of the selection's original range");
    106        assert_equals(addedRange.endContainer, endpoints[2],
    107            "collapseToEnd() must not change the endContainer of the selection's original range");
    108        assert_equals(addedRange.endOffset, endpoints[3],
    109            "collapseToEnd() must not change the endOffset of the selection's original range");
    110    }, "Range " + i + " " + testRanges[i] + " collapseToEnd()");
    111 }
    112 
    113 testDiv.style.display = "none";
    114 </script>