From 0d82c52a7624d80ec48dc774fb23db5244bc14f9 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Sat, 28 May 2022 21:57:25 -0400 Subject: HTML page script refactoring (#2162) * Move some common functionality * Move setupEnvironmentInfo into ExtensionContentController * Move background/environment.js to extension/environment.js --- ext/js/background/environment.js | 105 --------------------------------------- 1 file changed, 105 deletions(-) delete mode 100644 ext/js/background/environment.js (limited to 'ext/js/background') 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 . - */ - -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') - ); - } -} -- cgit v1.2.3