| <!DOCTYPE html> | 
 | <html> | 
 | <meta charset=utf-8 /> | 
 | <title></title> | 
 | <style> | 
 | #targetDiv { | 
 |  width: 200px; | 
 |  height: 200px; | 
 |  overflow: scroll; | 
 | } | 
 |  | 
 | #innerDiv { | 
 |  width: 4000px; | 
 |  height: 4000px; | 
 | } | 
 | </style> | 
 | <body style="margin:0"> | 
 |  <div id="targetDiv"> | 
 |  <div id="innerDiv"> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  <p>Test test test test test test...</p> | 
 |  </div> | 
 |  </div> | 
 |  <script src=/resources/testharness.js></script> | 
 |  <script src=/resources/testharnessreport.js></script> | 
 |  <script src=/resources/testdriver.js></script> | 
 |  <script src=/resources/testdriver-actions.js></script> | 
 |  <script src=/resources/testdriver-vendor.js></script> | 
 |  <script src=resources/event-timing-test-utils.js></script> | 
 |  <script> | 
 |  | 
 |  function validateEntries(entries) { | 
 |  assert_equals(entries.length, 2, "two pointerdown entries should be received"); | 
 |  let entry = entries[0]; | 
 |  assert_equals(entry.name, 'pointerdown'); | 
 |  assert_equals(entry.interactionId, 0); | 
 |  entry = entries[1]; | 
 |  assert_equals(entry.name, 'pointerup'); | 
 |  assert_equals(entry.interactionId, 0); | 
 |  } | 
 |  | 
 |  promise_test(async t => { | 
 |  assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.'); | 
 |  // Skip the test on a Mac as they do not support touch screens. | 
 |  const isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0; | 
 |  if (isMac) | 
 |  return; | 
 |  | 
 |  // Wait for load event so we can interact on the page. | 
 |  await new Promise(resolve => { | 
 |  window.addEventListener('load', resolve); | 
 |  }); | 
 |  | 
 |  let observedEntries = []; | 
 |  const observerPromise = new Promise(resolve => { | 
 |  let pointerdown_count = 0; | 
 |  new PerformanceObserver(entryList => { | 
 |  entryList.getEntries().forEach(e => { | 
 |  if(e.name.includes('pointerdown')) { | 
 |  pointerdown_count += 1; | 
 |  observedEntries.push(e); | 
 |  } | 
 |  if(e.name.includes('pointerup')) { | 
 |  pointerdown_count += 1; | 
 |  observedEntries.push(e); | 
 |  } | 
 |  if(pointerdown_count == 2){ | 
 |  resolve(observedEntries); | 
 |  } | 
 |  }); | 
 |  }).observe({type: 'event', | 
 |  durationThreshold: 0, | 
 |  buffered: true}); | 
 |  }) | 
 |  | 
 |  const target = document.getElementById('targetDiv'); | 
 |  await interactAndObserve('selection-scroll', target, observerPromise); | 
 |  validateEntries(observedEntries); | 
 |  }, "Event Timing: test that the events received in PerformanceObserver during an active text selection autoscroll does not have interaction id."); | 
 | </script> | 
 | </body> | 
 | </html> |