summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/longtask-timing/idlharness.window.js
blob: af2e622197148291d3efd9aa3f32802afd65f3aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// 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);
  })
);