summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/browsers/browsing-the-web/back-forward-cache/resources/worker-helper.js
blob: d5f3a0c81484ebd85e0711dc13e24704cb72edd3 (plain)
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
// Worker-related helper file to be used from executor.html.

// The class `WorkerHelper` is exposed to `globalThis` because this should be
// used via `eval()`.
globalThis.WorkerHelper = class {
  static pingWorker(worker) {
    return new Promise((resolve, reject) => {
      const message = 'message ' + Math.random();
      const onmessage = e => {
        if (e.data === message) {
          resolve('PASS');
        } else {
          reject('pingWorker: expected ' + message + ' but got ' + e.data);
        }
      };
      worker.onerror = reject;
      if (worker instanceof Worker) {
        worker.addEventListener('message', onmessage, {once: true});
        worker.postMessage(message);
      } else if (worker instanceof SharedWorker) {
        worker.port.onmessage = onmessage;
        worker.port.postMessage(message);
      } else {
        reject('Unexpected worker type');
      }
    });
  }
};