diff options
Diffstat (limited to 'testing/web-platform/tests/longtask-timing/supported-longtask-types.window.js')
-rw-r--r-- | testing/web-platform/tests/longtask-timing/supported-longtask-types.window.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/testing/web-platform/tests/longtask-timing/supported-longtask-types.window.js b/testing/web-platform/tests/longtask-timing/supported-longtask-types.window.js new file mode 100644 index 0000000000..efb393ad84 --- /dev/null +++ b/testing/web-platform/tests/longtask-timing/supported-longtask-types.window.js @@ -0,0 +1,35 @@ +test(() => { + assert_implements(typeof PerformanceObserver.supportedEntryTypes !== "undefined", 'supportedEntryTypes is not supported'); + const types = PerformanceObserver.supportedEntryTypes; + assert_true(types.includes("longtask"), + "There should be 'longtask' in PerformanceObserver.supportedEntryTypes"); + assert_false(types.includes("taskattribution"), + "There should NOT be 'taskattribution' in PerformanceObserver.supportedEntryTypes"); +}, "supportedEntryTypes contains 'longtask' but not 'taskattribution'."); + +function syncWait(waitDuration) { + if (waitDuration <= 0) + return; + + const startTime = performance.now(); + let unused = ''; + for (let i = 0; i < 10000; i++) + unused += '' + Math.random(); + + return syncWait(waitDuration - (performance.now() - startTime)); +} + +const entryType = "longtask"; +promise_test(async () => { + assert_implements(typeof PerformanceObserver.supportedEntryTypes !== "undefined", 'supportedEntryTypes is not supported'); + assert_implements(typeof PerformanceObserver.supportedEntryTypes.includes(entryType), `supportedEntryTypes does not include '${entryType}'`); + await new Promise((resolve) => { + new PerformanceObserver(function (list, observer) { + observer.disconnect(); + resolve(); + }).observe({entryTypes: [entryType]}); + + // Force the PerformanceEntry. + syncWait(50); + }) +}, `'${entryType}' entries should be observable.`) |