aboutsummaryrefslogtreecommitdiff
path: root/ext/mixed/js
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-06-28 12:40:02 -0400
committerGitHub <noreply@github.com>2020-06-28 12:40:02 -0400
commit7b5dd5c310f7ec4d7f6e329367d34258cce10e8e (patch)
tree00151155ea5f3dc438c9230e485a72613a41d00f /ext/mixed/js
parentcdf191336aa616a206b977ba3beeb1233cf41c32 (diff)
Update browser compatibility and Edge detection (#629)
Diffstat (limited to 'ext/mixed/js')
-rw-r--r--ext/mixed/js/core.js32
-rw-r--r--ext/mixed/js/environment.js11
-rw-r--r--ext/mixed/js/yomichan.js19
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() {