chromium/third_party/blink/web_tests/external/wpt/longtask-timing/idlharness.window.js

// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js

// https://w3c.github.io/longtasks/

'use strict';

idl_test(
  ['longtasks'],
  ['performance-timeline', 'hr-time'],
  (idl_array, t) => new Promise((resolve, reject) => {
    const longTask = () => {
      const begin = self.performance.now();
      while (self.performance.now() < begin + 100);
    }
    t.step_timeout(longTask, 0);

    const observer = new PerformanceObserver((entryList, observer) => {
      const entries = Array.from(entryList.getEntries());
      idl_array.add_objects({
        PerformanceLongTaskTiming: entries.slice(0, 1),
        TaskAttributionTiming: entries[0].attribution,
      });
      observer.disconnect();
      resolve();
    });
    observer.observe({entryTypes: ['longtask']});

    t.step_timeout(() => {
      reject('longtask entry was not observed');
    }, 1000);
  })
);