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