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.`)