diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2022-05-28 21:57:25 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-28 21:57:25 -0400 | 
| commit | 0d82c52a7624d80ec48dc774fb23db5244bc14f9 (patch) | |
| tree | ce8f7c24250d24c2c4d1eae6c48dfe319de46d57 /ext/js/background | |
| parent | 4e4fa49b0b1fd6ec5a018e742eb9910aa32e7637 (diff) | |
HTML page script refactoring (#2162)
* Move some common functionality
* Move setupEnvironmentInfo into ExtensionContentController
* Move background/environment.js to extension/environment.js
Diffstat (limited to 'ext/js/background')
| -rw-r--r-- | ext/js/background/environment.js | 105 | 
1 files changed, 0 insertions, 105 deletions
| diff --git a/ext/js/background/environment.js b/ext/js/background/environment.js deleted file mode 100644 index d9ca502c..00000000 --- a/ext/js/background/environment.js +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2020-2022  Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program.  If not, see <https://www.gnu.org/licenses/>. - */ - -class Environment { -    constructor() { -        this._cachedEnvironmentInfo = null; -    } - -    async prepare() { -        this._cachedEnvironmentInfo = await this._loadEnvironmentInfo(); -    } - -    getInfo() { -        if (this._cachedEnvironmentInfo === null) { throw new Error('Not prepared'); } -        return this._cachedEnvironmentInfo; -    } - -    async _loadEnvironmentInfo() { -        const browser = await this._getBrowser(); -        const os = await this._getOperatingSystem(); -        return { -            browser, -            platform: {os} -        }; -    } - -    async _getOperatingSystem() { -        try { -            const {os} = await this._getPlatformInfo(); -            if (typeof os === 'string') { -                return os; -            } -        } catch (e) { -            // NOP -        } -        return 'unknown'; -    } - -    _getPlatformInfo() { -        return new Promise((resolve, reject) => { -            chrome.runtime.getPlatformInfo((result) => { -                const error = chrome.runtime.lastError; -                if (error) { -                    reject(error); -                } else { -                    resolve(result); -                } -            }); -        }); -    } - -    async _getBrowser() { -        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 { -                const info = await browser.runtime.getBrowserInfo(); -                if (info.name === 'Fennec') { -                    return 'firefox-mobile'; -                } -            } catch (e) { -                // NOP -            } -            if (this._isSafari()) { -                return 'safari'; -            } -            return 'firefox'; -        } else { -            return 'chrome'; -        } -    } - -    _isSafari() { -        const {vendor, userAgent} = navigator; -        return ( -            typeof vendor === 'string' && -            typeof userAgent === 'string' && -            vendor.includes('Apple') && -            !userAgent.includes('CriOS') && -            !userAgent.includes('FxiOS') -        ); -    } -} |