pointer-events.html (1465B)
1 <!DOCTYPE html> 2 <title>Pointer capture should not be released when moving</title> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <script src="/resources/testdriver.js"></script> 6 <script src="/resources/testdriver-vendor.js"></script> 7 <script src="/resources/testdriver-actions.js"></script> 8 <section id="old_parent"> 9 <div id="item"></div> 10 </section> 11 <section id="new_parent"> 12 </section> 13 <style> 14 #item { 15 width: 100px; 16 height: 100px; 17 background: green; 18 } 19 </style> 20 <script> 21 promise_test(async function (t) { 22 const item = document.querySelector("#item"); 23 let pointerId = 0; 24 item.addEventListener("pointerdown", e => { 25 pointerId = e.pointerId; 26 }); 27 await new test_driver.Actions() 28 .pointerMove(1, 1, {origin: item}) 29 .pointerDown() 30 .pointerMove(10, 10, {origin: item}) 31 .send(); 32 33 item.setPointerCapture(pointerId); 34 35 assert_true(item.hasPointerCapture(pointerId), "Item has pointer capture before move"); 36 document.querySelector("#new_parent").moveBefore(item, null); 37 assert_true(item.hasPointerCapture(pointerId), "Item has pointer capture after move"); 38 document.querySelector("#old_parent").insertBefore(item, null); 39 assert_false(item.hasPointerCapture(pointerId), "Item lost pointer capture after insert"); 40 }); 41 </script>