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