pointerup_after_pointerdown_target_removed.html (1832B)
1 <!DOCTYPE HTML> 2 <title>pointerup event fired after pointerdown target is removed</title> 3 <meta name="variant" content="?mouse"> 4 <meta name="variant" content="?touch"> 5 <meta name="variant" content="?pen"> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="/resources/testdriver.js"></script> 9 <script src="/resources/testdriver-actions.js"></script> 10 <script src="/resources/testdriver-vendor.js"></script> 11 <script src="pointerevent_support.js"></script> 12 13 <style> 14 div.target { 15 width: 100px; 16 height: 50px; 17 } 18 </style> 19 <div class="target" id="parent"> 20 <div class="target" id="child">child</div> 21 </div> 22 <div id="done">done</div> 23 24 <script> 25 'use strict'; 26 const pointer_type = location.search.substring(1); 27 28 const parent = document.getElementById("parent"); 29 const child = document.getElementById("child"); 30 const done = document.getElementById("done"); 31 32 let event_log = []; 33 34 function logEvent(e) { 35 event_log.push(`${e.type}(${e.eventPhase})`); 36 } 37 38 parent.addEventListener("pointerup", logEvent); 39 parent.addEventListener("mouseup", logEvent); 40 child.addEventListener("pointerdown", e => e.target.remove(), {once:true}); 41 42 promise_test(async () => { 43 let done_click_promise = getEvent("click", done); 44 45 let actions = new test_driver.Actions() 46 .addPointer("TestPointer", pointer_type) 47 .pointerMove(0, 0, {origin: parent}) 48 .pointerDown() 49 .pointerUp() 50 .pointerMove(0, 0, {origin: done}) 51 .pointerDown() 52 .pointerUp(); 53 54 await actions.send(); 55 await done_click_promise; 56 57 assert_equals(event_log.toString(), 58 "pointerup(2),mouseup(2)", 59 "received events"); 60 }, `pointerup event from ${pointer_type} fired after pointerdown target is removed`); 61 </script>