tor-browser

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

bug1162990_inner_1.html (5149B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=1162990
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test for Bug 1162990</title>
      9  <meta name="author" content="Maksim Lebedev" />
     10  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     11  <script src="/tests/SimpleTest/EventUtils.js"></script>
     12  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     13  <style>
     14    div#basket {
     15      background: red;
     16      padding: 10px;
     17      margin: 10px;
     18    }
     19    div#target {
     20      background: lightgreen;
     21      padding: 10px;
     22      margin: 10px;
     23    }
     24    div#child {
     25      background: lightblue;
     26      padding: 10px;
     27      margin: 10px;
     28    }
     29    div#listener {
     30      background: yellow;
     31      padding: 10px;
     32      margin: 10px;
     33    }
     34  </style>
     35  <script type="application/javascript">
     36    var basket;
     37    var target;
     38    var child;
     39    var listener;
     40 
     41    var test_basketLeave = 0;
     42    var test_targetGotCapture = 0;
     43    var test_targetLostCapture = 0;
     44    var test_targetLeave = 0;
     45    var test_childLeave = 0;
     46    var test_listenerDown = 0;
     47    var test_listenerLeave = 0;
     48 
     49    function basketLeaveHandler(event) {
     50      logger("basket: " + event.type);
     51      test_basketLeave++;
     52    }
     53    function targetGotHandler(event) {
     54      logger("target: " + event.type);
     55      test_targetGotCapture++;
     56    }
     57    function targetLostHandler(event) {
     58      logger("target: " + event.type);
     59      test_targetLostCapture++;
     60    }
     61    function targetLeaveHandler(event) {
     62      logger("target: " + event.type);
     63      test_targetLeave++;
     64    }
     65    function childLeaveHandler(event) {
     66      logger("child: " + event.type);
     67      test_childLeave++;
     68    }
     69    function listenerDownHandler(event) {
     70      logger("listener: " + event.type);
     71      target.setPointerCapture(event.pointerId);
     72      test_listenerDown++;
     73    }
     74    function listenerLeaveHandler(event) {
     75      logger("listener: " + event.type);
     76      test_listenerLeave++;
     77    }
     78 
     79    function prepareTest() {
     80      SimpleTest.executeSoon(executeTest);
     81    }
     82 
     83    function setEventHandlers() {
     84      basket = document.getElementById("basket");
     85      target = document.getElementById("target");
     86      child = document.getElementById("child");
     87      listener = document.getElementById("listener");
     88 
     89      basket.addEventListener("pointerleave",       basketLeaveHandler);
     90      target.addEventListener("gotpointercapture",  targetGotHandler);
     91      target.addEventListener("lostpointercapture", targetLostHandler);
     92      target.addEventListener("pointerleave",       targetLeaveHandler);
     93      child.addEventListener("pointerleave",        childLeaveHandler);
     94      listener.addEventListener("pointerdown",      listenerDownHandler);
     95      listener.addEventListener("pointerleave",     listenerLeaveHandler);
     96    }
     97 
     98    function executeTest()
     99    {
    100      synthesizeMouse(document.querySelector("a"), 0, 0, {type : "mousemove"});
    101      logger("executeTest");
    102      setEventHandlers();
    103      var rectCd = child.getBoundingClientRect();
    104      var rectLr = listener.getBoundingClientRect();
    105      synthesizeMouse(listener, rectLr.width/3, rectLr.height/2,  {type: "mousedown"});
    106      synthesizeMouse(child,    rectCd.width/3, rectCd.height/2,  {type: "mousemove"});
    107      synthesizeMouse(listener, rectLr.width/3, rectLr.height/2,  {type: "mousemove"});
    108      synthesizeMouse(child,    rectCd.width/3, rectCd.height/2,  {type: "mousemove"});
    109      synthesizeMouse(listener, rectLr.width/3, rectLr.height/2,  {type: "mousemove"});
    110      synthesizeMouse(listener, rectLr.width/3, rectLr.height/2,  {type: "mouseup"});
    111      synthesizeMouse(listener, rectLr.width/3, rectLr.height/3,  {type: "mousemove"});
    112      finishTest();
    113    }
    114 
    115    function finishTest() {
    116      parent.is(test_basketLeave,       1, "Part1: basket should receive pointerleave event after pointer capturing");
    117      parent.is(test_targetGotCapture,  1, "Part1: target should receive gotpointercapture event");
    118      parent.is(test_targetLostCapture, 1, "Part1: target should receive lostpointercapture event");
    119      parent.is(test_targetLeave,       1, "Part1: target should receive pointerleave event only one time");
    120      parent.is(test_childLeave,        0, "Part1: child should not receive pointerleave event after pointer capturing");
    121      parent.is(test_listenerDown,      1, "Part1: listener should receive pointerdown event");
    122      parent.is(test_listenerLeave,     1, "Part1: listener should receive pointerleave event only one time");
    123      logger("finishTest");
    124      parent.finishTest();
    125    }
    126 
    127    function logger(message) {
    128      var log = document.getElementById('log');
    129      log.innerHTML = message + "<br>" + log.innerHTML;
    130    }
    131  </script>
    132 </head>
    133 <body onload="prepareTest()">
    134  <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1162990">Mozilla Bug 1162990 Test 1</a>
    135  <p id="display"></p>
    136  <div id="content" style="display: none">
    137  </div>
    138  <div id="basket">div id=basket
    139    <div id="target">div id=target
    140      <div id="child">div id=child</div>
    141    </div>
    142  </div>
    143  <div id="listener">div id=listener</div>
    144  <pre id="log">
    145  </pre>
    146 </body>
    147 </html>