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