1'use strict'; 2 3/* Whether the browser is Chromium-based with MojoJS enabled */ 4const isChromiumBased = 'MojoInterfaceInterceptor' in self; 5/* Whether the browser is WebKit-based with internal test-only API enabled */ 6const isWebKitBased = !isChromiumBased && 'internals' in self; 7 8/** 9 * Loads a script in a window or worker. 10 * 11 * @param {string} path - A script path 12 * @returns {Promise} 13 */ 14function loadScript(path) { 15 if (typeof document === 'undefined') { 16 // Workers (importScripts is synchronous and may throw.) 17 importScripts(path); 18 return Promise.resolve(); 19 } else { 20 // Window 21 const script = document.createElement('script'); 22 script.src = path; 23 script.async = false; 24 const p = new Promise((resolve, reject) => { 25 script.onload = () => { resolve(); }; 26 script.onerror = e => { reject(`Error loading ${path}`); }; 27 }) 28 document.head.appendChild(script); 29 return p; 30 } 31} 32