pointerevent_pointerleave_after_pointercancel_touch.html (3650B)
1 <!doctype html> 2 <html> 3 <head> 4 <title>pointerleave after pointercancel</title> 5 <meta name="viewport" content="width=device-width"> 6 <link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="/resources/testdriver.js"></script> 10 <script src="/resources/testdriver-actions.js"></script> 11 <script src="/resources/testdriver-vendor.js"></script> 12 <!-- Additional helper script for common checks across event types --> 13 <script type="text/javascript" src="pointerevent_support.js"></script> 14 </head> 15 <body class="scrollable" onload="run()"> 16 <h2>pointerleave after pointercancel</h2> 17 <h4>Test Description: This test checks if pointerleave event triggers after pointercancel. Start touch on the black rectangle and move your touch to scroll in any direction. </h4> 18 <p>Note: this test is for touch devices only</p> 19 <div id="target0"></div> 20 <script> 21 var test_pointerleave = async_test("pointerleave event received"); 22 // showPointerTypes is defined in pointerevent_support.js 23 // Requirements: the callback function will reference the test_pointerEvent object and 24 // will fail unless the async_test is created with the var name "test_pointerEvent". 25 add_completion_callback(showPointerTypes); 26 27 var pointercancel_event = null; 28 var detected_pointertypes = {}; 29 30 function run() { 31 var target0 = document.getElementById("target0"); 32 var actions_promise; 33 34 on_event(target0, "pointercancel", function (event) { 35 detected_pointertypes[event.pointerType] = true; 36 pointercancel_event = event; 37 }); 38 39 // After firing the pointercancel event the pointerleave event must be dispatched. 40 // TA: 4.3.1 41 on_event(target0, "pointerleave", function (event) { 42 if(event.pointerType == 'touch') { 43 if(pointercancel_event != null) { 44 test_pointerleave.step(function() { 45 assert_equals(event.pointerType, pointercancel_event.pointerType, "pointerType is same for pointercancel and pointerleave"); 46 assert_equals(event.isPrimary, pointercancel_event.isPrimary, "isPrimary is same for pointercancel and pointerleave"); 47 }); 48 // Make sure the test finishes after all the input actions are completed. 49 actions_promise.then( () => { 50 test_pointerleave.done(); 51 }); 52 } 53 else { 54 test_pointerleave.step(function() { 55 assert_unreached("pointerleave received before pointercancel"); 56 }, "pointerleave received before pointercancel"); 57 } 58 } 59 }); 60 61 // Inject touch inputs. 62 actions_promise = touchScrollInTarget(target0, 'down'); 63 } 64 65 </script> 66 <h1>Pointer Events pointerleave tests</h1> 67 <div id="complete-notice"> 68 <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p> 69 </div> 70 <div id="log"></div> 71 </body> 72 </html>