tor-browser

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

file_bug1484371.html (3301B)


      1 <html>
      2  <head>
      3    <script src="/tests/SimpleTest/EventUtils.js"></script>
      4    <script>
      5      var mouseEnterCount = 0;
      6      function mouseEnter() {
      7        ++mouseEnterCount;
      8      }
      9      var mouseLeaveCount = 0;
     10      function mouseLeave() {
     11        ++mouseLeaveCount;
     12      }
     13 
     14      var pointerEnterCount = 0;
     15      function pointerEnter() {
     16        ++pointerEnterCount;
     17      }
     18      var pointerLeaveCount = 0;
     19      function pointerLeave() {
     20        ++pointerLeaveCount;
     21      }
     22 
     23      function pointerEventsEnabled() {
     24        return "onpointerenter" in document.body;
     25      }
     26 
     27      function checkEventCounts(expected, msg) {
     28        parent.is(mouseEnterCount, expected.mouseEnterCount, msg + ": mouseenter event count");
     29        parent.is(mouseLeaveCount, expected.mouseLeaveCount, msg + ": mouseleave event count");
     30        if (pointerEventsEnabled()) {
     31          parent.is(pointerEnterCount, expected.pointerEnterCount, msg + ": pointerenter event count");
     32          parent.is(pointerLeaveCount, expected.pointerLeaveCount, msg + ": pointerleave event count");
     33        }
     34      }
     35 
     36      function test() {
     37        var lightDiv = document.getElementById("lightDiv");
     38        var host = document.getElementById("host");
     39        var sr = host.attachShadow({mode: "closed"});
     40        sr.innerHTML = "<div>shadow DOM<div>";
     41        var shadowDiv = sr.firstChild;
     42 
     43        host.addEventListener("mouseenter", mouseEnter, true);
     44        host.addEventListener("mouseleave", mouseLeave, true);
     45        host.addEventListener("pointerenter", pointerEnter, true);
     46        host.addEventListener("pointerleave", pointerLeave, true);
     47 
     48        shadowDiv.addEventListener("mouseenter", mouseEnter, true);
     49        shadowDiv.addEventListener("mouseleave", mouseLeave, true);
     50        shadowDiv.addEventListener("pointerenter", pointerEnter, true);
     51        shadowDiv.addEventListener("pointerleave", pointerLeave, true);
     52 
     53        synthesizeMouseAtCenter(lightDiv, { type: "mousemove" });
     54        checkEventCounts({ mouseEnterCount: 0,
     55                           mouseLeaveCount: 0,
     56                           pointerEnterCount: 0,
     57                           pointerLeaveCount: 0
     58                         },
     59                         "Entered light DOM"
     60                         );
     61 
     62        synthesizeMouseAtCenter(shadowDiv, { type: "mousemove" })
     63        checkEventCounts({ mouseEnterCount: 2,
     64                           mouseLeaveCount: 0,
     65                           pointerEnterCount: 2,
     66                           pointerLeaveCount: 0
     67                         },
     68                         "Entered shadow DOM");
     69 
     70        synthesizeMouseAtCenter(lightDiv, { type: "mousemove" })
     71        checkEventCounts({ mouseEnterCount: 2,
     72                           mouseLeaveCount: 2,
     73                           pointerEnterCount: 2,
     74                           pointerLeaveCount: 2
     75                         },
     76                         "Left shadow DOM"
     77                         );
     78 
     79        parent.SimpleTest.finish();
     80      }
     81 
     82    function lazyRequestAnimationFrame(fn) {
     83      requestAnimationFrame(
     84        function() {
     85          setTimeout(fn);
     86        });
     87    }
     88    </script>
     89  </head>
     90  <body onload="lazyRequestAnimationFrame(test)">
     91    <div id="lightDiv">light DOM</div>
     92    <div id="host"></div>
     93  </body>
     94 </html>