forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 1
/
test-only-api.js
31 lines (29 loc) · 932 Bytes
/
test-only-api.js
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;
}
}