summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/user-timing/supported-usertiming-types.any.js
blob: ea3b2fe9dc90f70f3998a94a1460460b8b8b5992 (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
37
test(() => {
  if (typeof PerformanceObserver.supportedEntryTypes === "undefined")
    assert_unreached("supportedEntryTypes is not supported.");
  const types = PerformanceObserver.supportedEntryTypes;
  assert_true(types.includes("mark"),
    "There should be 'mark' in PerformanceObserver.supportedEntryTypes");
  assert_true(types.includes("measure"),
    "There should be 'measure' in PerformanceObserver.supportedEntryTypes");
  assert_greater_than(types.indexOf("measure"), types.indexOf('mark'),
    "The 'measure' entry should appear after the 'mark' entry");
}, "supportedEntryTypes contains 'mark' and 'measure'.");

if (typeof PerformanceObserver.supportedEntryTypes !== "undefined") {
  const entryTypes = {
    "mark": () => {
      performance.mark('foo');
    },
    "measure": () => {
      performance.measure('bar');
    }
  }
  for (let entryType in entryTypes) {
    if (PerformanceObserver.supportedEntryTypes.includes(entryType)) {
      promise_test(async() => {
        await new Promise((resolve) => {
          new PerformanceObserver(function (list, observer) {
            observer.disconnect();
            resolve();
          }).observe({entryTypes: [entryType]});

          // Force the PerformanceEntry.
          entryTypes[entryType]();
        })
      }, `'${entryType}' entries should be observable.`)
    }
  }
}