tor-browser

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

bug1162990_inner_2.html (5196B)


      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_targetDown = 0;
     43    var test_targetGotCapture = 0;
     44    var test_targetLostCapture = 0;
     45    var test_targetLeave = 0;
     46    var test_childLeave = 0;
     47    var test_listenerLeave = 0;
     48 
     49    function basketLeaveHandler(event) {
     50      logger("basket: " + event.type);
     51      test_basketLeave++;
     52    }
     53    function targetDownHandler(event) {
     54      logger("target: " + event.type);
     55      target.setPointerCapture(event.pointerId);
     56      test_targetDown++;
     57    }
     58    function targetGotHandler(event) {
     59      logger("target: " + event.type);
     60      test_targetGotCapture++;
     61    }
     62    function targetLostHandler(event) {
     63      logger("target: " + event.type);
     64      test_targetLostCapture++;
     65    }
     66    function targetLeaveHandler(event) {
     67      logger("target: " + event.type);
     68      test_targetLeave++;
     69    }
     70    function childLeaveHandler(event) {
     71      logger("child: " + event.type);
     72      test_childLeave++;
     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("pointerdown",        targetDownHandler);
     91      target.addEventListener("gotpointercapture",  targetGotHandler);
     92      target.addEventListener("lostpointercapture", targetLostHandler);
     93      target.addEventListener("pointerleave",       targetLeaveHandler);
     94      child.addEventListener("pointerleave",        childLeaveHandler);
     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 rectTg = target.getBoundingClientRect();
    104      var rectCd = child.getBoundingClientRect();
    105      var rectLr = listener.getBoundingClientRect();
    106      synthesizeMouse(target,   rectTg.width/3, rectTg.height/7,  {type: "mousedown"});
    107      synthesizeMouse(child,    rectCd.width/3, rectCd.height/2,  {type: "mousemove"});
    108      synthesizeMouse(listener, rectLr.width/3, rectLr.height/2,  {type: "mousemove"});
    109      synthesizeMouse(child,    rectCd.width/3, rectCd.height/2,  {type: "mousemove"});
    110      synthesizeMouse(target,   rectTg.width/3, rectTg.height/7,  {type: "mousemove"});
    111      synthesizeMouse(target,   rectTg.width/3, rectTg.height/7,  {type: "mouseup"});
    112      synthesizeMouse(target,   rectTg.width/3, rectTg.height/9,  {type: "mousemove"});
    113      finishTest();
    114    }
    115 
    116    function finishTest() {
    117      parent.is(test_basketLeave,       0, "Part2: basket should not receive pointerleave event after pointer capturing");
    118      parent.is(test_targetDown,        1, "Part2: target should receive pointerdown event");
    119      parent.is(test_targetGotCapture,  1, "Part2: target should receive gotpointercapture event");
    120      parent.is(test_targetLostCapture, 1, "Part2: target should receive lostpointercapture event");
    121      parent.is(test_targetLeave,       0, "Part2: target should not receive pointerleave event");
    122      parent.is(test_childLeave,        0, "Part2: child should not receive pointerleave event after pointer capturing");
    123      parent.is(test_listenerLeave,     0, "Part2: listener should not receive pointerleave event after pointer capturing");
    124      logger("finishTest");
    125      parent.finishTest();
    126    }
    127 
    128    function logger(message) {
    129      var log = document.getElementById('log');
    130      log.innerHTML = message + "<br>" + log.innerHTML;
    131    }
    132  </script>
    133 </head>
    134 <body onload="prepareTest()">
    135  <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1162990">Mozilla Bug 1162990 Test 2</a>
    136  <p id="display"></p>
    137  <div id="content" style="display: none">
    138  </div>
    139  <div id="basket">div id=basket
    140    <div id="target">div id=target
    141      <div id="child">div id=child</div>
    142    </div>
    143  </div>
    144  <div id="listener">div id=listener</div>
    145  <pre id="log">
    146  </pre>
    147 </body>
    148 </html>