Update browser compatibility and Edge detection (#629)
This commit is contained in:
parent
cdf191336a
commit
7b5dd5c310
@ -82,6 +82,12 @@
|
||||
"no-unsanitized/property": "error"
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"files": ["ext/mixed/js/core.js"],
|
||||
"env": {
|
||||
"webextensions": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": ["ext/**/*.js"],
|
||||
"excludedFiles": ["ext/mixed/js/core.js"],
|
||||
@ -101,8 +107,7 @@
|
||||
"deferPromise": "readonly",
|
||||
"clone": "readonly",
|
||||
"EventDispatcher": "readonly",
|
||||
"EventListenerCollection": "readonly",
|
||||
"EXTENSION_IS_BROWSER_EDGE": "readonly"
|
||||
"EventListenerCollection": "readonly"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -116,7 +121,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": ["ext/mixed/js/core.js"],
|
||||
"files": ["ext/mixed/js/yomichan.js"],
|
||||
"globals": {
|
||||
"chrome": "writable"
|
||||
}
|
||||
|
@ -208,6 +208,7 @@ input[type=checkbox].storage-button-checkbox {
|
||||
}
|
||||
|
||||
html:root[data-browser=edge] [data-show-for-browser~=edge],
|
||||
html:root[data-browser=edge-legacy] [data-show-for-browser~=edge-legacy],
|
||||
html:root[data-browser=chrome] [data-show-for-browser~=chrome],
|
||||
html:root[data-browser=firefox] [data-show-for-browser~=firefox],
|
||||
html:root[data-browser=firefox-mobile] [data-show-for-browser~=firefox-mobile],
|
||||
@ -221,6 +222,7 @@ html:root[data-operating-system=openbsd] [data-show-for-operating-system~=openbs
|
||||
}
|
||||
|
||||
html:root[data-browser=edge] [data-hide-for-browser~=edge],
|
||||
html:root[data-browser=edge-legacy] [data-hide-for-browser~=edge-legacy],
|
||||
html:root[data-browser=chrome] [data-hide-for-browser~=chrome],
|
||||
html:root[data-browser=firefox] [data-hide-for-browser~=firefox],
|
||||
html:root[data-browser=firefox-mobile] [data-hide-for-browser~=firefox-mobile],
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -67,9 +67,16 @@ class Environment {
|
||||
}
|
||||
|
||||
async _getBrowser() {
|
||||
if (EXTENSION_IS_BROWSER_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 {
|
||||
const info = await browser.runtime.getBrowserInfo();
|
||||
|
@ -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() {
|
||||
|
Loading…
Reference in New Issue
Block a user