summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/timing-entrytypes-registry/resources/utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/timing-entrytypes-registry/resources/utils.js')
-rw-r--r--testing/web-platform/tests/timing-entrytypes-registry/resources/utils.js29
1 files changed, 29 insertions, 0 deletions
diff --git a/testing/web-platform/tests/timing-entrytypes-registry/resources/utils.js b/testing/web-platform/tests/timing-entrytypes-registry/resources/utils.js
new file mode 100644
index 0000000000..0ec96057ad
--- /dev/null
+++ b/testing/web-platform/tests/timing-entrytypes-registry/resources/utils.js
@@ -0,0 +1,29 @@
+const STEPS = {};
+
+const types = (self.PerformanceObserver
+ && self.PerformanceObserver.supportedEntryTypes)?
+ self.PerformanceObserver.supportedEntryTypes
+ : undefined;
+
+if (types) {
+ // we observe everything as soon as possible
+ new PerformanceObserver(function (list, observer) {
+ for (const entry of list.getEntries())
+ if (STEPS[entry.entryType]) STEPS[entry.entryType](entry);
+ }).observe({entryTypes: self.PerformanceObserver.supportedEntryTypes});
+}
+
+function test_support(def) {
+ if (!types || !types.includes(def[0])) {
+ return;
+ }
+ const desc = `'${def[0]}' entries should be observable`;
+ const t = async_test(desc);
+
+ STEPS[def[0]] = (entry) => {
+ t.step(() => assert_equals(Object.prototype.toString.call(entry),
+ `[object ${def[1]}]`,
+ `Class name of entry should be ${def[1]}.`));
+ t.done();
+ }
+}