'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; } }