TapToStopFling.html (2317B)
1 <!DOCTYPE html> 2 <html> 3 <meta charset=utf-8 /> 4 <title></title> 5 <style> 6 #targetDiv { 7 width: 200px; 8 height: 200px; 9 overflow: scroll; 10 } 11 12 #innerDiv { 13 width: 4000px; 14 height: 4000px; 15 } 16 </style> 17 <body style="margin:0"> 18 <div id="targetDiv"> 19 <div id="innerDiv"> 20 </div> 21 </div> 22 <script src=/resources/testharness.js></script> 23 <script src=/resources/testharnessreport.js></script> 24 <script src=/resources/testdriver.js></script> 25 <script src=/resources/testdriver-actions.js></script> 26 <script src=/resources/testdriver-vendor.js></script> 27 <script src=resources/event-timing-test-utils.js></script> 28 <script> 29 let event_count = 0; 30 31 function validateEntries(entries) { 32 assert_equals(entries.length, 2, "two pointerdown entries should be received"); 33 let entry = entries[0]; 34 assert_equals(entry.name, 'pointerdown'); 35 assert_equals(entry.interactionId, 0); 36 entry = entries[1]; 37 assert_equals(entry.name, 'pointerdown'); 38 assert_equals(entry.interactionId, 0); 39 } 40 41 promise_test(async t => { 42 assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.'); 43 // Skip the test on a Mac as they do not support touch screens. 44 const isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0; 45 if (isMac) 46 return; 47 48 // Wait for load event so we can interact on the page. 49 await new Promise(resolve => { 50 window.addEventListener('load', resolve); 51 }); 52 53 let observedEntries = []; 54 const observerPromise = new Promise(resolve => { 55 let pointerdown_count = 0; 56 new PerformanceObserver(entryList => { 57 entryList.getEntries().forEach(e => { 58 if(e.name.includes('pointerdown')) { 59 pointerdown_count += 1; 60 observedEntries.push(e); 61 } 62 if(pointerdown_count == 2){ 63 resolve(observedEntries); 64 } 65 }); 66 }).observe({type: 'event', 67 durationThreshold: 0, 68 buffered: true}); 69 }) 70 71 const target = document.getElementById('targetDiv'); 72 await interactAndObserve('fling-tap', target, observerPromise); 73 validateEntries(observedEntries); 74 }, "Event Timing: test that the second pointerdown event that happens during fling does not have interaction id."); 75 </script> 76 </body> 77 </html>