From 64e2debb77e2e8401329a49ca5dcd53bc4c6b0c1 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Sat, 13 Jan 2018 20:30:14 -0500 Subject: [PATCH] global message handler for popop --- src/popup/app/global/main.controller.ts | 9 ++++++--- src/services/browserMessaging.service.ts | 10 ++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/popup/app/global/main.controller.ts b/src/popup/app/global/main.controller.ts index 4983ea46228..fb5f73218ed 100644 --- a/src/popup/app/global/main.controller.ts +++ b/src/popup/app/global/main.controller.ts @@ -25,7 +25,7 @@ export class MainController implements ng.IController { } }); - BrowserApi.messageListener((msg: any, sender: any, sendResponse: any) => { + $window.bitwardenPopupMainMessageListener = (msg: any, sender: any, sendResponse: any) => { if (msg.command === 'syncCompleted') { $scope.$broadcast('syncCompleted', msg.successfully); } else if (msg.command === 'syncStarted') { @@ -38,13 +38,16 @@ export class MainController implements ng.IController { } $state.go('home'); }); - } else if (msg.command === 'collectPageDetailsResponse' && msg.sender === 'currentController') { + } else if (msg.command === 'collectPageDetailsResponse' && + msg.sender === 'currentController') { $scope.$broadcast('collectPageDetailsResponse', { frameId: sender.frameId, tab: msg.tab, details: msg.details, }); } - }); + }; + + BrowserApi.messageListener($window.bitwardenPopupMainMessageListener); } } diff --git a/src/services/browserMessaging.service.ts b/src/services/browserMessaging.service.ts index 82f9b651f23..6d21732a0ce 100644 --- a/src/services/browserMessaging.service.ts +++ b/src/services/browserMessaging.service.ts @@ -15,6 +15,16 @@ export default class BrowserMessagingService implements MessagingService { if (this.platformUtilsService.isSafari()) { const bgPage = BrowserApi.getBackgroundPage(); bgPage.bitwardenMain.sendInternalRuntimeMessage(message); + + if (!safari.extension.popovers || !safari.extension.popovers.length) { + return; + } + + const popover = safari.extension.popovers[0]; + const popoverPage = popover.contentWindow; + if (popover.visible && popoverPage.bitwardenPopupMainMessageListener) { + popoverPage.bitwardenPopupMainMessageListener(message); + } } else { chrome.runtime.sendMessage(message); }