summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/resources/test-only-api.js
blob: a66eb44ede7c15a37fb1a3c5dd5d2abc17177c8d (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
29
30
31
'use strict';

/* Whether the browser is Chromium-based with MojoJS enabled */
const isChromiumBased = 'MojoInterfaceInterceptor' in self;
/* Whether the browser is WebKit-based with internal test-only API enabled */
const isWebKitBased = !isChromiumBased && 'internals' in self;

/**
 * Loads a script in a window or worker.
 *
 * @param {string} path - A script path
 * @returns {Promise}
 */
function loadScript(path) {
  if (typeof document === 'undefined') {
    // Workers (importScripts is synchronous and may throw.)
    importScripts(path);
    return Promise.resolve();
  } else {
    // Window
    const script = document.createElement('script');
    script.src = path;
    script.async = false;
    const p = new Promise((resolve, reject) => {
      script.onload = () => { resolve(); };
      script.onerror = e => { reject(`Error loading ${path}`); };
    })
    document.head.appendChild(script);
    return p;
  }
}