summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/resource-timing/resources/observe-entry.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/resource-timing/resources/observe-entry.js')
-rw-r--r--testing/web-platform/tests/resource-timing/resources/observe-entry.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/testing/web-platform/tests/resource-timing/resources/observe-entry.js b/testing/web-platform/tests/resource-timing/resources/observe-entry.js
new file mode 100644
index 0000000000..260b5929a5
--- /dev/null
+++ b/testing/web-platform/tests/resource-timing/resources/observe-entry.js
@@ -0,0 +1,25 @@
+// Given a resource name, returns a promise that will resolve to the
+// corresponding PerformanceResourceTiming entry. The promise will reject,
+// however, if the PerformanceResourceTiming entry isn't observed within ~2
+// seconds (scaled according to WPT timeout scaling).
+const observe_entry = entry_name => {
+ const entry = new Promise(resolve => {
+ new PerformanceObserver((entry_list, observer) => {
+ for (const entry of entry_list.getEntries()) {
+ if (entry.name.endsWith(entry_name)) {
+ resolve(entry);
+ observer.disconnect();
+ return;
+ }
+ }
+ }).observe({"type": "resource", "buffered": true});
+ });
+ const timeout = new Promise((resolve, reject) => {
+ step_timeout(() => {
+ reject(new Error("observe_entry: timeout"));
+ }, 2000);
+ });
+ // If the entry isn't observed within 2 seconds, assume it will never show
+ // up.
+ return Promise.race([entry, timeout]);
+};