internal runtime messages in safari

This commit is contained in:
Kyle Spearrin 2018-01-13 18:16:19 -05:00
parent 2156916f0b
commit b6a8594d08
3 changed files with 15 additions and 3 deletions

View File

@ -273,6 +273,14 @@ export default class MainBackground {
} }
} }
sendInternalRuntimeMessage(message: any) {
if (!this.isSafari) {
throw new Error('Only safari can send internal runtime messages.');
}
this.runtimeBackground.processMessage(message, { tab: null }, () => { /* No response needed. */ });
}
private async buildContextMenu() { private async buildContextMenu() {
if (this.isSafari || !chrome.contextMenus || this.buildingContextMenu) { if (this.isSafari || !chrome.contextMenus || this.buildingContextMenu) {
return; return;

View File

@ -68,7 +68,7 @@ export default class RuntimeBackground {
}); });
} }
private async processMessage(msg: any, sender: any, sendResponse: any) { async processMessage(msg: any, sender: any, sendResponse: any) {
switch (msg.command) { switch (msg.command) {
case 'loggedIn': case 'loggedIn':
case 'unlocked': case 'unlocked':

View File

@ -1,3 +1,5 @@
import { BrowserApi } from '../browser/browserApi';
import { import {
MessagingService, MessagingService,
PlatformUtilsService, PlatformUtilsService,
@ -8,10 +10,12 @@ export default class BrowserMessagingService implements MessagingService {
} }
send(subscriber: string, arg: any = {}) { send(subscriber: string, arg: any = {}) {
const message = Object.assign({}, { command: subscriber }, arg);
if (this.platformUtilsService.isSafari()) { if (this.platformUtilsService.isSafari()) {
// send message const bgPage = BrowserApi.getBackgroundPage();
bgPage.bitwardenMain.sendInternalRuntimeMessage(message);
} else { } else {
const message = Object.assign({}, { command: subscriber }, arg);
chrome.runtime.sendMessage(message); chrome.runtime.sendMessage(message);
} }
} }