diff --git a/src/browser/browserApi.ts b/src/browser/browserApi.ts index eebfb80857..39daacf781 100644 --- a/src/browser/browserApi.ts +++ b/src/browser/browserApi.ts @@ -5,6 +5,8 @@ export class BrowserApi { static isChromeApi: boolean = !BrowserApi.isSafariApi && (typeof chrome !== 'undefined'); static isFirefoxOnAndroid: boolean = navigator.userAgent.indexOf('Firefox/') !== -1 && navigator.userAgent.indexOf('Android') !== -1; + static isEdge18: boolean = navigator.userAgent.indexOf(' Edge/18.') !== -1; + static backgroundPageCache: any = null; static async getTabFromCurrentWindowId(): Promise { if (BrowserApi.isChromeApi) { @@ -133,7 +135,12 @@ export class BrowserApi { } static getBackgroundPage(): any { - if (BrowserApi.isChromeApi) { + if (BrowserApi.isEdge18) { + if (BrowserApi.backgroundPageCache == null) { + BrowserApi.backgroundPageCache = browser.extension.getBackgroundPage(); + } + return BrowserApi.backgroundPageCache; + } else if (BrowserApi.isChromeApi) { return chrome.extension.getBackgroundPage(); } else if (BrowserApi.isSafariApi) { return safari.extension.globalPage.contentWindow; diff --git a/src/popup/main.ts b/src/popup/main.ts index 2ca9ae2125..31a37f1dea 100644 --- a/src/popup/main.ts +++ b/src/popup/main.ts @@ -17,7 +17,7 @@ function bootstrapModule() { } // Bug in Edge 18 has null getBackgroundPage() result initially. Can be removed in future. -if (BrowserApi.getBackgroundPage() == null && window.navigator.userAgent.indexOf(' Edge/18.') !== -1) { +if (BrowserApi.getBackgroundPage() == null && BrowserApi.isEdge18) { const sleep = (time: number) => new Promise((resolve) => window.setTimeout(resolve, time)); const bootstrapForEdge18 = async () => { let bgAttempts = 1; @@ -40,5 +40,9 @@ if (BrowserApi.getBackgroundPage() == null && window.navigator.userAgent.indexOf }; bootstrapForEdge18(); } else { + if (BrowserApi.isEdge18) { + // tslint:disable-next-line + console.log('Normal bootstrap.'); + } bootstrapModule(); } diff --git a/src/popup/services/launch-guard.service.ts b/src/popup/services/launch-guard.service.ts index 64db076337..f58e335910 100644 --- a/src/popup/services/launch-guard.service.ts +++ b/src/popup/services/launch-guard.service.ts @@ -15,6 +15,10 @@ export class LaunchGuardService implements CanActivate { async canActivate() { if (BrowserApi.getBackgroundPage() == null) { + if (BrowserApi.isEdge18) { + // tslint:disable-next-line + console.log('getBackgroundPage is null from launch guard.'); + } this.router.navigate(['private-mode']); return false; }