pointerevent_releasepointercapture_release_right_after_capture.html (3811B)
1 <!doctype html> 2 <html> 3 <head> 4 <title>Release pointer capture right after setpointercapture</title> 5 <meta name="viewport" content="width=device-width"> 6 <meta name="variant" content="?mouse"> 7 <meta name="variant" content="?pen"> 8 <meta name="variant" content="?touch"> 9 <link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> 10 <script src="/resources/testharness.js"></script> 11 <script src="/resources/testharnessreport.js"></script> 12 <script src="/resources/testdriver.js"></script> 13 <script src="/resources/testdriver-actions.js"></script> 14 <script src="/resources/testdriver-vendor.js"></script> 15 <script src="pointerevent_support.js"></script> 16 <script type="text/javascript"> 17 const pointer_type = location.search.substring(1); 18 19 var actions_promise; 20 var detected_pointertypes = {}; 21 add_completion_callback(showPointerTypes); 22 var test_setPointerCapture = async_test("Release pointer capture right after setpointercapture"); 23 24 function run() { 25 var target0 = document.getElementById("target0"); 26 var target1 = document.getElementById("target1"); 27 28 on_event(target0, "pointerdown", function (event) { 29 detected_pointertypes[event.pointerType] = true; 30 target0.setPointerCapture(event.pointerId); 31 target0.releasePointerCapture(event.pointerId); 32 assert_equals(target0.hasPointerCapture(event.pointerId), false, "After target0.releasePointerCapture, target0.hasPointerCapture should be false"); 33 }); 34 35 on_event(target0, "gotpointercapture", function (event) { 36 test_setPointerCapture.step(function () { 37 assert_true(false, "target0 shouldn't receive gotpointercapture"); 38 }); 39 }); 40 41 on_event(target0, "lostpointercapture", function (event) { 42 test_setPointerCapture.step(function () { 43 assert_true(false, "target0 shouldn't receive lostpointercapture"); 44 }); 45 }); 46 47 on_event(target0, "pointerup", function (event) { 48 // Make sure the test finishes after all the input actions are completed. 49 actions_promise.then( () => { 50 test_setPointerCapture.done(); 51 }); 52 }); 53 54 // Inject mouse inputs. 55 actions_promise = new test_driver.Actions() 56 .addPointer("TestPointer", pointer_type) 57 .pointerMove(0, 0, {origin: target0}) 58 .pointerDown() 59 .pointerMove(10, 10, {origin: target0}) 60 .pointerUp() 61 .send(); 62 } 63 </script> 64 </head> 65 <body onload="run()"> 66 <h1>Release pointer capture right after setpointercapture</h1> 67 <h4>Test Description: 68 When calling releasePointer right after setPointerCapture method is invoked, the pending pointer capture should be cleared and no element should receive gotpointercapture and lostpointercapture events 69 <ol> 70 <li>Press and hold left mouse button over black box 71 <li>Move mouse and release mouse button 72 </ol> 73 </h4> 74 <br> 75 <div id="target0" style="touch-action:none"></div> 76 <div id="target1"></div> 77 <div id="complete-notice"> 78 <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p> 79 </div> 80 <div id="log"></div> 81 </body> 82 </html>