tor-browser

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

pointerevent_mouse_pointercapture_inactivate_pointer.html (2716B)


      1 <!doctype html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <script src="/resources/testdriver.js"></script>
      5 <script src="/resources/testdriver-vendor.js"></script>
      6 <script src="/resources/testdriver-actions.js"></script>
      7 <style>
      8    iframe {
      9      width: 300px;
     10      height: 300px;
     11      top: 100px;
     12      left: 100px;
     13      border: 0;
     14      position: absolute;
     15      background: green;
     16    }
     17    #outerFrame {
     18      width: 500px;
     19      height: 500px;
     20      background: blue;
     21    }
     22 </style>
     23 <body onload="run()">
     24    <div id='outerFrame'>
     25        <iframe id='iframe' src="resources/pointerevent_mouse_pointercapture_inactivate_pointer-iframe.html"></iframe>
     26    </div>
     27 </body>
     28 
     29 <script type="text/javascript">
     30    function run() {
     31    capture_count = 0;
     32 
     33    document.addEventListener("gotpointercapture", function(){
     34        capture_count ++;
     35    })
     36 
     37    iframe.contentDocument.addEventListener("gotpointercapture", function(){
     38        capture_count ++;
     39    })
     40 
     41    document.addEventListener("pointerdown", function(event){
     42        // Outer frame got pointer down, set capture to inner frame.
     43        iframe.contentDocument.getElementById("target").setPointerCapture(event.pointerId);
     44    });
     45 
     46 
     47    iframe.contentDocument.addEventListener("pointerdown", function(event){
     48        // Inner frame got pointer down, set capture to outer frame.
     49        outerFrame.setPointerCapture(event.pointerId);
     50    });
     51 
     52 
     53    promise_test(async(test) => {
     54      let eventWatcher = new EventWatcher(test, document, ["pointerup"]);
     55      let donePromise = eventWatcher.wait_for(["pointerup"], { record: 'all' });
     56      await injectEvent(50, 50);
     57      // wait for pointerUp before running the test
     58      await donePromise;
     59      assert_equals(capture_count, 0, "Inner frame can not capture when pointer is activate in outer frame")
     60    }, "setPointerCapture: pointer active in outer frame, set capture to inner frame");
     61 
     62 
     63    promise_test(async(test) => {
     64      let eventWatcher = new EventWatcher(test, iframe.contentDocument, ["pointerup"]);
     65      let donePromise = eventWatcher.wait_for(["pointerup"], { record: 'all' });
     66      await injectEvent(250, 250);
     67      // wait for pointerUp before running the test
     68      await donePromise;
     69      assert_equals(capture_count, 0, "Outer frame can not capture when pointer is activate in inner frame")
     70    }, "setPointerCapture: pointer active in inner frame, set capture to outer frame");
     71 
     72    function injectEvent(x, y) {
     73        return new test_driver.Actions()
     74            .pointerMove(x, y)
     75            .pointerDown()
     76            .pointerMove(x, y)
     77            .pointerUp()
     78            .send();
     79    }
     80 }
     81 </script>
     82 </html>