diff --git a/src/background/main.background.ts b/src/background/main.background.ts index 6a5370bf6a..185ae6170e 100644 --- a/src/background/main.background.ts +++ b/src/background/main.background.ts @@ -162,11 +162,11 @@ export default class MainBackground { await new Analytics(window).init(); this.containerService.attachToWindow(window); + await this.runtimeBackground.init(); if (!this.isSafari) { await this.commandsBackground.init(); await this.contextMenusBackground.init(); await this.idleBackground.init(); - await this.runtimeBackground.init(); await this.tabsBackground.init(); await this.webRequestBackground.init(); await this.windowsBackground.init(); diff --git a/src/background/runtime.background.ts b/src/background/runtime.background.ts index 7541d4d1aa..0eb5890697 100644 --- a/src/background/runtime.background.ts +++ b/src/background/runtime.background.ts @@ -17,10 +17,12 @@ export default class RuntimeBackground { private runtime: any; private autofillTimeout: number; private pageDetailsToAutoFill: any[] = []; + private isSafari: boolean; constructor(private main: MainBackground, private autofillService: AutofillService, private cipherService: CipherService, private platformUtilsService: PlatformUtilsService) { - this.runtime = chrome.runtime; + this.isSafari = this.platformUtilsService.isSafari(); + this.runtime = this.isSafari ? safari.application : chrome.runtime; } async init() { @@ -28,6 +30,22 @@ export default class RuntimeBackground { return; } + if (this.isSafari) { + // Reload the popup when it's opened + this.runtime.addEventListener('popover', (event: any) => { + const win: Window = event.target.contentWindow; + const body = win.document.body; + let child: Node = body.firstChild; + while (child) { + body.removeChild(child); + child = body.firstChild; + } + win.location.reload(); + }, true); + + return; + } + if (this.runtime.onInstalled) { this.runtime.onInstalled.addListener((details: any) => { (window as any).ga('send', {