tor-browser

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

test_bug534785.html (3212B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=534785
      5 -->
      6 <head>
      7  <title>Test for Bug 534785</title>
      8  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      9  <script src="/tests/SimpleTest/EventUtils.js"></script>
     10  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     11 </head>
     12 <body>
     13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=534785">Mozilla Bug 534785</a>
     14 <p id="display"></p>
     15 <input type="text" value="test">
     16 <div id="reframe">
     17 <textarea></textarea>
     18 <textarea>test</textarea>
     19 <input type="text">
     20 <input type="text" value="test">
     21 </div>
     22 <pre id="test">
     23 <script type="application/javascript">
     24 
     25 /** Test for Bug 534785 */
     26 
     27 SimpleTest.waitForExplicitFinish();
     28 
     29 SimpleTest.waitForFocus(function() {
     30  var i = document.querySelector("input");
     31  i.addEventListener("focus", function() {
     32    is(i.value, "test", "Sanity check");
     33 
     34    is(document.activeElement, i, "Should be focused before frame reconstruction");
     35    sendString("1");
     36    is(i.value, "1test", "Can accept keyboard events before frame reconstruction");
     37 
     38    // force frame reconstruction
     39    i.style.display = "none";
     40    document.offsetHeight;
     41    i.style.display = "";
     42    document.offsetHeight;
     43 
     44    is(document.activeElement, i, "Should be focused after frame reconstruction");
     45    sendString("2");
     46    is(i.value, "12test", "Can accept keyboard events after frame reconstruction");
     47 
     48    // Make sure reframing happens gracefully
     49    var reframeDiv = document.getElementById("reframe");
     50    var textAreaWithoutValue = reframeDiv.querySelectorAll("textarea")[0];
     51    var textAreaWithValue = reframeDiv.querySelectorAll("textarea")[1];
     52    var inputWithoutValue = reframeDiv.querySelectorAll("input")[0];
     53    var inputWithValue = reframeDiv.querySelectorAll("input")[1];
     54    reframeDiv.style.display = "none";
     55    document.body.offsetWidth;
     56    reframeDiv.style.display = "";
     57    document.body.offsetWidth;
     58    [textAreaWithoutValue, inputWithoutValue].forEach(function (elem) {
     59      is(elem.value, "", "Value should persist correctly");
     60    });
     61    [textAreaWithValue, inputWithValue].forEach(function (elem) {
     62      is(elem.value, "test", "Value should persist correctly");
     63    });
     64    [inputWithoutValue, inputWithValue].forEach(elem => elem.type = "submit");
     65    document.body.offsetWidth;
     66    is(inputWithoutValue.value, "", "Value should persist correctly");
     67    is(inputWithValue.value, "test", "Value should persist correctly");
     68    [inputWithoutValue, inputWithValue].forEach(elem => elem.type = "text");
     69    document.body.offsetWidth;
     70    is(inputWithoutValue.value, "", "Value should persist correctly");
     71    is(inputWithValue.value, "test", "Value should persist correctly");
     72    [inputWithoutValue, inputWithValue].forEach(elem => elem.focus()); // initialze the editor
     73    reframeDiv.style.display = "none";
     74    document.body.offsetWidth;
     75    reframeDiv.style.display = "";
     76    document.body.offsetWidth;
     77    is(inputWithoutValue.value, "", "Value should persist correctly with editor");
     78    is(inputWithValue.value, "test", "Value should persist correctly with editor");
     79 
     80    SimpleTest.finish();
     81  });
     82  i.focus();
     83 });
     84 
     85 </script>
     86 </pre>
     87 </body>
     88 </html>