tor-browser

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

Selection_addRange_in_iframe.html (2724B)


      1 <!doctype html>
      2 <meta charset=utf-8>
      3 <title>focus move and auto scroll tests caused by a call of Selection.addRange() into a contenteditable element in iframe</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <body>
      7 <div style="height: 3000px;">Spacer to check whether or not page was scrolled down to focused editor</div>
      8 <iframe srcdoc="<div style='height: 1000px;'></div><div id='editor' contenteditable>editor</div>" style="height: 500px;"></iframe>
      9 <script>
     10 "use strict";
     11 setup({explicit_done:true});
     12 
     13 window.onload = ()=>{
     14  test(function() {
     15    var subDocument = document.querySelector("iframe").contentDocument;
     16    var editorInFrame = subDocument.getElementById("editor");
     17    var range = subDocument.createRange();
     18    range.setStart(editorInFrame, 0);
     19    var selection = subDocument.getSelection();
     20    selection.removeAllRanges();
     21    document.documentElement.scrollTop = 0;
     22    subDocument.documentElement.scrollTop = 0;
     23    selection.addRange(range);
     24    assert_equals(document.activeElement, document.body);
     25    assert_equals(document.documentElement.scrollTop, 0);
     26    assert_equals(subDocument.activeElement, editorInFrame);
     27    assert_equals(subDocument.documentElement.scrollTop, 0);
     28  }, "Moving selection into inactive contenteditable element in non-focused document shouldn't cause scrolling");
     29 
     30  test(function() {
     31    var iframe = document.querySelector("iframe");
     32    var subDocument = iframe.contentDocument;
     33    var selection = subDocument.getSelection();
     34 
     35    // Reset selection in <iframe>
     36    var editorInFrame = subDocument.getElementById("editor");
     37    editorInFrame.blur();
     38    selection.removeAllRanges();
     39    var range = document.createRange();
     40    range.setStart(subDocument.body, 0);
     41    selection.addRange(range);
     42    subDocument.documentElement.scrollTop = 0;
     43 
     44    // Move focus to the <iframe>
     45    iframe.contentWindow.focus();
     46    document.documentElement.scrollTop = 0;
     47    assert_equals(document.activeElement, iframe);
     48    assert_equals(subDocument.activeElement, subDocument.body);
     49    assert_equals(subDocument.documentElement.scrollTop, 0);
     50 
     51    range = subDocument.createRange();
     52    range.setStart(editorInFrame, 0);
     53    selection.removeAllRanges();
     54    selection.addRange(range);
     55    assert_equals(document.activeElement, iframe);
     56    assert_equals(document.documentElement.scrollTop, 0);
     57    assert_equals(subDocument.activeElement, editorInFrame);
     58    assert_equals(subDocument.documentElement.scrollTop, 0);
     59  }, "Moving selection into inactive contenteditable element in focused document shouldn't cause scrolling");
     60 
     61  done();
     62 };
     63 </script>