tor-browser

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

bug1078327_inner.html (4500B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=1078327
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test for Bug 1078327</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    #target, #listener { background: yellow; padding: 10px; }
     15    #mediator { background: red; padding: 20px; }
     16  </style>
     17  <script type="application/javascript">
     18    var target = undefined;
     19    var mediator = undefined;
     20    var listener = undefined;
     21    var test_target = false;
     22    var test_capture = false;
     23    var test_mediator_over = false;
     24    var test_mediator_move = false;
     25    var test_mediator_out = false;
     26    var test_listener = false;
     27    var test_lost_capture = false;
     28 
     29    function TargetHandler(event) {
     30      logger("Target receive event: " + event.type + ". Mediator.setPointerCapture()");
     31      mediator.setPointerCapture(event.pointerId);
     32      test_target = true;
     33      test_capture = true;
     34    }
     35    function MediatorHandler(event) {
     36      logger("Mediator receive event: " + event.type);
     37      if(!test_capture)
     38        return;
     39      if(event.type == "pointermove")
     40        test_mediator_move++;
     41      if(event.type == "pointerover")
     42        test_mediator_over++;
     43      if(event.type == "pointerout")
     44        test_mediator_out++;
     45      if(event.type == "lostpointercapture")
     46        test_lost_capture = true;
     47    }
     48    function ListenerHandler(event) {
     49      logger("Listener receive event: " + event.type);
     50      test_listener = true;
     51    }
     52    function logger(message) {
     53      console.log(message);
     54      var log = document.getElementById('log');
     55      log.innerHTML = message + "<br>" + log.innerHTML;
     56    }
     57 
     58    function prepareTest() {
     59      SimpleTest.executeSoon(executeTest);
     60    }
     61    function executeTest()
     62    {
     63      logger("executeTest");
     64      target = document.getElementById("target");
     65      mediator = document.getElementById("mediator");
     66      listener = document.getElementById("listener");
     67      target.addEventListener("pointerdown",          TargetHandler);
     68      mediator.addEventListener("gotpointercapture",  MediatorHandler);
     69      mediator.addEventListener("pointerover",        MediatorHandler);
     70      mediator.addEventListener("pointermove",        MediatorHandler);
     71      mediator.addEventListener("pointerout",         MediatorHandler);
     72      mediator.addEventListener("lostpointercapture", MediatorHandler);
     73      listener.addEventListener("pointermove",        ListenerHandler);
     74      var rect_t = target.getBoundingClientRect();
     75      var rect_m = mediator.getBoundingClientRect();
     76      var rect_l = listener.getBoundingClientRect();
     77      synthesizeMouse(target,   rect_t.width/2, rect_t.height/20, {type: "mousedown"});
     78      synthesizeMouse(target,   rect_t.width/2, rect_t.height/20, {type: "mousemove"});
     79      synthesizeMouse(mediator, rect_m.width/2, rect_m.height/20, {type: "mousemove"});
     80      synthesizeMouse(listener, rect_l.width/2, rect_l.height/20, {type: "mousemove"});
     81      synthesizeMouse(mediator, rect_m.width/2, rect_m.height/20, {type: "mousemove"});
     82      synthesizeMouse(target,   rect_t.width/2, rect_t.height/20, {type: "mousemove"});
     83      synthesizeMouse(target,   rect_t.width/2, rect_t.height/20, {type: "mouseup"});
     84      synthesizeMouse(target,   rect_t.width/2, rect_t.height/20, {type: "mousemove"});
     85      finishTest();
     86    }
     87    function finishTest() {
     88      parent.is(test_target,        true,   "pointerdown event should be received by target");
     89      parent.is(test_lost_capture,  true,   "mediator should receive lostpointercapture");
     90      parent.is(test_mediator_over, 1,      "mediator should receive pointerover event only once");
     91      parent.is(test_mediator_move, 5,      "mediator should receive pointermove event five times");
     92      parent.is(test_mediator_out,  1,      "mediator should receive pointerout event only once");
     93      parent.is(test_listener,      false,  "listener should not receive any events");
     94      logger("finishTest");
     95      parent.finishTest();
     96    }
     97  </script>
     98 </head>
     99 <body onload="prepareTest()">
    100  <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1078327">Mozilla Bug 1078327</a>
    101  <div id="mediator">
    102    <div id="listener">div id=listener</div>
    103  </div>
    104  <div id="target">div id=target</div>
    105  <pre id="log"></pre>
    106 </body>
    107 </html>