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() {
if (this.isSafari || !chrome.contextMenus || this.buildingContextMenu) {
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) {
case 'loggedIn':
case 'unlocked':

View File

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