diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-06-28 12:40:02 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-28 12:40:02 -0400 | 
| commit | 7b5dd5c310f7ec4d7f6e329367d34258cce10e8e (patch) | |
| tree | 00151155ea5f3dc438c9230e485a72613a41d00f /ext/mixed/js | |
| parent | cdf191336aa616a206b977ba3beeb1233cf41c32 (diff) | |
Update browser compatibility and Edge detection (#629)
Diffstat (limited to 'ext/mixed/js')
| -rw-r--r-- | ext/mixed/js/core.js | 32 | ||||
| -rw-r--r-- | ext/mixed/js/environment.js | 11 | ||||
| -rw-r--r-- | ext/mixed/js/yomichan.js | 19 | 
3 files changed, 28 insertions, 34 deletions
| diff --git a/ext/mixed/js/core.js b/ext/mixed/js/core.js index 9b3ea3e2..e22be33d 100644 --- a/ext/mixed/js/core.js +++ b/ext/mixed/js/core.js @@ -15,38 +15,6 @@   * along with this program.  If not, see <https://www.gnu.org/licenses/>.   */ - -/* - * Extension information - */ - -function _extensionHasChrome() { -    try { -        return typeof chrome === 'object' && chrome !== null; -    } catch (e) { -        return false; -    } -} - -function _extensionHasBrowser() { -    try { -        return typeof browser === 'object' && browser !== null; -    } catch (e) { -        return false; -    } -} - -const EXTENSION_IS_BROWSER_EDGE = ( -    _extensionHasBrowser() && -    (!_extensionHasChrome() || (typeof chrome.runtime === 'undefined' && typeof browser.runtime !== 'undefined')) -); - -if (EXTENSION_IS_BROWSER_EDGE) { -    // Edge does not have chrome defined. -    chrome = browser; -} - -  /*   * Error handling   */ diff --git a/ext/mixed/js/environment.js b/ext/mixed/js/environment.js index 5bd84010..1f4038d2 100644 --- a/ext/mixed/js/environment.js +++ b/ext/mixed/js/environment.js @@ -67,8 +67,15 @@ class Environment {      }      async _getBrowser() { -        if (EXTENSION_IS_BROWSER_EDGE) { -            return 'edge'; +        try { +            if (chrome.runtime.getURL('/').startsWith('ms-browser-extension://')) { +                return 'edge-legacy'; +            } +            if (/\bEdge?\//.test(navigator.userAgent)) { +                return 'edge'; +            } +        } catch (e) { +            // NOP          }          if (typeof browser !== 'undefined') {              try { diff --git a/ext/mixed/js/yomichan.js b/ext/mixed/js/yomichan.js index 5fa504ef..ab1afcd9 100644 --- a/ext/mixed/js/yomichan.js +++ b/ext/mixed/js/yomichan.js @@ -15,6 +15,25 @@   * along with this program.  If not, see <https://www.gnu.org/licenses/>.   */ +// Set up chrome alias if it's not available (Edge Legacy) +if ((() => { +    let hasChrome = false; +    let hasBrowser = false; +    try { +        hasChrome = (typeof chrome === 'object' && chrome !== null && typeof chrome.runtime !== 'undefined'); +    } catch (e) { +        // NOP +    } +    try { +        hasBrowser = (typeof browser === 'object' && browser !== null && typeof browser.runtime !== 'undefined'); +    } catch (e) { +        // NOP +    } +    return (hasBrowser && !hasChrome); +})()) { +    chrome = browser; +} +  const yomichan = (() => {      class Yomichan extends EventDispatcher {          constructor() { |