tor-browser

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

test_bug369306.html (3581B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=369306
      5 -->
      6 <head>
      7  <title>Test for Bug 369306</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=369306">Mozilla Bug 369306</a>
     14 <p id="display"></p>
     15 <div id='content'>
     16 </div>
     17 <pre id="test">
     18 <script type="application/javascript">
     19 
     20 /** Test for Bug 369306 */
     21 
     22 var originatingWindow = self;
     23 
     24 function focusShouldNotChange(aAction, nextTest)
     25 {
     26  var w = window.open('about:blank', '', 'foo');
     27  var fail = false;
     28 
     29  SimpleTest.waitForFocus(function () {
     30    function failHandler() { fail = true; }
     31 
     32    originatingWindow.addEventListener("focus", failHandler);
     33    w.addEventListener("blur", failHandler);
     34 
     35    aAction(w);
     36 
     37    SimpleTest.executeSoon(function () {
     38      originatingWindow.removeEventListener("focus", failHandler);
     39      w.removeEventListener("blur", failHandler);
     40 
     41      ok(!fail, "The focus should not have been changed!");
     42 
     43      // Cleaning and running next test.
     44      w.close();
     45      SimpleTest.waitForFocus(nextTest, originatingWindow);
     46    });
     47  }, w, true);
     48 }
     49 
     50 function focusShouldNotChange2(aURL, nextTest)
     51 {
     52  var w = window.open(aURL, '', 'foo');
     53  var fail = false;
     54 
     55  SimpleTest.waitForFocus(function () {
     56    function failHandler() { fail = true; }
     57 
     58    originatingWindow.addEventListener("focus", failHandler);
     59    w.addEventListener("blur", failHandler);
     60 
     61    /**
     62     * NOTE: This setTimeout can cause a random green.
     63     * onload handler + executeSoon doesn't work too so we have to use setTimeout.
     64     * The check may be call before w script being executed but that would make
     65     * this check green even if it should be orange.
     66     */
     67    setTimeout(function () {
     68      originatingWindow.removeEventListener("focus", failHandler);
     69      w.removeEventListener("blur", failHandler);
     70 
     71      ok(!fail, "The focus should not have been changed with URL=" + aURL);
     72 
     73      // Cleaning and running next test.
     74      w.close();
     75      SimpleTest.waitForFocus(nextTest, originatingWindow);
     76    }, 1000);
     77  }, w);
     78 }
     79 
     80 function test1()
     81 {
     82  focusShouldNotChange(function (aW) { aW.blur(); }, test2);
     83 }
     84 
     85 function test2()
     86 {
     87  focusShouldNotChange(function () { originatingWindow.focus(); }, test3);
     88 }
     89 
     90 function test3()
     91 {
     92  focusShouldNotChange2("test1_bug369306.html", test4);
     93 }
     94 
     95 function test4()
     96 {
     97  focusShouldNotChange2("test2_bug369306.html", test5);
     98 }
     99 
    100 function test5()
    101 {
    102  var w = window.open('about:blank', '', 'foo');
    103 
    104  SimpleTest.waitForFocus(function () {
    105    SimpleTest.waitForFocus(function () {
    106      SimpleTest.waitForFocus(function () {
    107        ok(true, "The last opened window should be able to get focus");
    108        w.close();
    109        SimpleTest.executeSoon(SimpleTest.finish);
    110      }, w, true);
    111 
    112      w.focus();
    113    }, originatingWindow);
    114 
    115    SimpleTest.executeSoon(function() {
    116      // We have to focus back the originating window but we can't do that with
    117      // .focus() or .blur() anymore.
    118      SpecialPowers.focus(window);
    119    });
    120  }, w, true);
    121 }
    122 
    123 SimpleTest.waitForExplicitFinish();
    124 SimpleTest.requestFlakyTimeout("untriaged");
    125 
    126 function startTest() {
    127  // dom.disable_window_flip has to be set to true for this test.
    128  SpecialPowers.pushPrefEnv({"set": [["dom.disable_window_flip", true]]}, test1);
    129 }
    130 
    131 // startTest is going to call the next tests.
    132 SimpleTest.waitForFocus(startTest);
    133 
    134 </script>
    135 </pre>
    136 </body>
    137 </html>