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>