File: test-initiator.js

package info (click to toggle)
firefox 144.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,637,504 kB
  • sloc: cpp: 7,576,692; javascript: 6,430,831; ansic: 3,748,119; python: 1,398,978; xml: 628,810; asm: 438,679; java: 186,194; sh: 63,212; makefile: 19,159; objc: 13,086; perl: 12,986; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 53; csh: 10
file content (38 lines) | stat: -rw-r--r-- 1,247 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

const with_timeout_message = async (promise, message, timeout = 1000) => {
  return Promise.race([
    promise,
    new Promise((resolve, reject) => {
      step_timeout(() => {
        reject(new Error(message));
      }, timeout);
    }),
  ]);
}

const observe_entry_no_timeout = 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});
  });
  return entry;
};

// Asserts that, for the given name, there is/will-be a
// PerformanceResourceTiming entry that has the given 'initiatorUrl'. The test
// is labeled according to the given descriptor.
const initiator_url_test = (entry_name, expected_url, descriptor, timeout_msg) => {
  promise_test(async () => {
    const promise = observe_entry_no_timeout(entry_name);
    const entry = await with_timeout_message(promise, timeout_msg, /* timeout = */ 2000);
    assert_equals(entry.initiatorUrl, expected_url);
  }, `The initiator Url for ${descriptor} must be '${expected_url}'`);
};