tor-browser

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

Selection_addRange_into_iframe.html (3501B)


      1 <!doctype html>
      2 <meta charset=utf-8>
      3 <title>focus move tests caused by a call of Selection.addRange() into iframe</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <body onload="doTest()">
      7 <div style="height: 3000px;">Spacer to check whether or not page was scrolled down to focused editor</div>
      8 <p>Here is an iframe:</p>
      9 <iframe src="Selection_addRange_into_iframe_iframe.html"></iframe>
     10 <script>
     11 "use strict";
     12 
     13 setup({explicit_done:true});
     14 
     15 function doTest() {
     16    var selection = document.getSelection();
     17    var childDocument = document.getElementsByTagName("iframe")[0].contentDocument;
     18    var childSelection = childDocument.getSelection();
     19    test(function() {
     20        selection.collapse(document.body.firstChild, 0);
     21        childSelection.collapse(childDocument.body.firstChild, 0);
     22 
     23        document.documentElement.scrollTop = 0;
     24        childDocument.documentElement.scrollTop = 0;
     25        childSelection.removeAllRanges();
     26        var range = childDocument.createRange();
     27        range.selectNodeContents(childDocument.getElementById("editor1"));
     28        childSelection.addRange(range);
     29        assert_equals(document.activeElement, document.body);
     30        assert_equals(childDocument.activeElement, childDocument.getElementById("editor1"));
     31        assert_equals(document.documentElement.scrollTop, 0);
     32        assert_equals(childDocument.documentElement.scrollTop, 0);
     33    }, "Active element should be 'editor1' in the <iframe> after Selection.addRange() but parent's active document should be the <body>");
     34    test(function() {
     35        selection.collapse(document.body.firstChild, 0);
     36        childSelection.collapse(childDocument.getElementById("editor1").firstChild, 0);
     37 
     38        document.documentElement.scrollTop = 0;
     39        childDocument.documentElement.scrollTop = 0;
     40        childSelection.removeAllRanges();
     41        var range = childDocument.createRange();
     42        range.selectNodeContents(childDocument.getElementById("editor2"));
     43        childSelection.addRange(range);
     44        assert_equals(document.activeElement, document.body);
     45        assert_equals(childDocument.activeElement, childDocument.getElementById("editor2"));
     46        assert_equals(document.documentElement.scrollTop, 0);
     47        assert_equals(childDocument.documentElement.scrollTop, 0);
     48    }, "Active element should be 'editor2' in the <iframe> after Selection.addRange() but parent's active document should be the <body>");
     49    test(function() {
     50        selection.collapse(document.body.firstChild, 0);
     51        childSelection.collapse(childDocument.getElementById("editor2").firstChild, 0);
     52 
     53        document.documentElement.scrollTop = 0;
     54        childDocument.documentElement.scrollTop = 0;
     55        childSelection.removeAllRanges();
     56        var range = childDocument.createRange();
     57        range.selectNodeContents(childDocument.getElementById("non-editor"));
     58        childSelection.addRange(range);
     59        assert_equals(document.activeElement, document.body);
     60        assert_equals(childDocument.activeElement, childDocument.getElementById("editor2"));
     61        assert_equals(document.documentElement.scrollTop, 0);
     62        assert_equals(childDocument.documentElement.scrollTop, 0);
     63    }, "Active element should be 'editor2' in the <iframe> after Selection.addRange() to non-editable <div> and parent's active document should be the <body>");
     64 
     65    done();
     66 }
     67 </script>