summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/longtask-timing/idlharness.window.js
blob: fd9a3f042f6c9fc3ac605fc0dd4e23edfa5d683b (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
34
35
36
// 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 => {
      const entries = Array.from(entryList.getEntries());
      const attribution = entries.reduce(
          (sum, e) => sum.concat(e.attribution || []), []);
      idl_array.add_objects({
        PerformanceLongTaskTiming: entries,
        TaskAttributionTiming: attribution,
      });
      resolve();
    });
    observer.observe({entryTypes: ['longtask']});

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