cache bg page and more debug logs for edge 18

This commit is contained in:
Kyle Spearrin 2018-09-30 08:25:56 -04:00
parent 6c222f67b0
commit f70f774bfb
3 changed files with 17 additions and 2 deletions

View File

@ -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<any> {
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;

View File

@ -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();
}

View File

@ -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;
}