selection-autoscroll.html (3610B)
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 <p>Test test test test test test...</p> 21 <p>Test test test test test test...</p> 22 <p>Test test test test test test...</p> 23 <p>Test test test test test test...</p> 24 <p>Test test test test test test...</p> 25 <p>Test test test test test test...</p> 26 <p>Test test test test test test...</p> 27 <p>Test test test test test test...</p> 28 <p>Test test test test test test...</p> 29 <p>Test test test test test test...</p> 30 <p>Test test test test test test...</p> 31 <p>Test test test test test test...</p> 32 <p>Test test test test test test...</p> 33 <p>Test test test test test test...</p> 34 <p>Test test test test test test...</p> 35 <p>Test test test test test test...</p> 36 <p>Test test test test test test...</p> 37 <p>Test test test test test test...</p> 38 <p>Test test test test test test...</p> 39 <p>Test test test test test test...</p> 40 <p>Test test test test test test...</p> 41 <p>Test test test test test test...</p> 42 <p>Test test test test test test...</p> 43 <p>Test test test test test test...</p> 44 <p>Test test test test test test...</p> 45 </div> 46 </div> 47 <script src=/resources/testharness.js></script> 48 <script src=/resources/testharnessreport.js></script> 49 <script src=/resources/testdriver.js></script> 50 <script src=/resources/testdriver-actions.js></script> 51 <script src=/resources/testdriver-vendor.js></script> 52 <script src=resources/event-timing-test-utils.js></script> 53 <script> 54 55 function validateEntries(entries) { 56 assert_equals(entries.length, 2, "two pointerdown entries should be received"); 57 let entry = entries[0]; 58 assert_equals(entry.name, 'pointerdown'); 59 assert_equals(entry.interactionId, 0); 60 entry = entries[1]; 61 assert_equals(entry.name, 'pointerup'); 62 assert_equals(entry.interactionId, 0); 63 } 64 65 promise_test(async t => { 66 assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.'); 67 // Skip the test on a Mac as they do not support touch screens. 68 const isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0; 69 if (isMac) 70 return; 71 72 // Wait for load event so we can interact on the page. 73 await new Promise(resolve => { 74 window.addEventListener('load', resolve); 75 }); 76 77 let observedEntries = []; 78 const observerPromise = new Promise(resolve => { 79 let pointerdown_count = 0; 80 new PerformanceObserver(entryList => { 81 entryList.getEntries().forEach(e => { 82 if(e.name.includes('pointerdown')) { 83 pointerdown_count += 1; 84 observedEntries.push(e); 85 } 86 if(e.name.includes('pointerup')) { 87 pointerdown_count += 1; 88 observedEntries.push(e); 89 } 90 if(pointerdown_count == 2){ 91 resolve(observedEntries); 92 } 93 }); 94 }).observe({type: 'event', 95 durationThreshold: 0, 96 buffered: true}); 97 }) 98 99 const target = document.getElementById('targetDiv'); 100 await interactAndObserve('selection-scroll', target, observerPromise); 101 validateEntries(observedEntries); 102 }, "Event Timing: test that the events received in PerformanceObserver during an active text selection autoscroll does not have interaction id."); 103 </script> 104 </body> 105 </html>