convert pages to use browser api message functions

This commit is contained in:
Kyle Spearrin 2018-01-12 11:32:42 -05:00
parent 8f438d818b
commit 2f107ea0c2
5 changed files with 47 additions and 25 deletions

View File

@ -468,7 +468,7 @@ export default class MainBackground {
continue;
}
BrowserApi.tabSendMessage(tab, 'openNotificationBar', {
BrowserApi.tabSendMessageData(tab, 'openNotificationBar', {
type: 'add',
});
break;

View File

@ -58,13 +58,13 @@ export default class RuntimeBackground {
}
break;
case 'bgOpenNotificationBar':
await BrowserApi.tabSendMessage(sender.tab, 'openNotificationBar', msg.data);
await BrowserApi.tabSendMessageData(sender.tab, 'openNotificationBar', msg.data);
break;
case 'bgCloseNotificationBar':
await BrowserApi.tabSendMessage(sender.tab, 'closeNotificationBar');
await BrowserApi.tabSendMessageData(sender.tab, 'closeNotificationBar');
break;
case 'bgAdjustNotificationBar':
await BrowserApi.tabSendMessage(sender.tab, 'adjustNotificationBar', msg.data);
await BrowserApi.tabSendMessageData(sender.tab, 'adjustNotificationBar', msg.data);
break;
case 'bgCollectPageDetails':
this.main.collectPageDetailsForContentScript(sender.tab, msg.sender, sender.frameId);
@ -88,7 +88,7 @@ export default class RuntimeBackground {
switch (msg.sender) {
case 'notificationBar':
const forms = this.autofillService.getFormsWithPasswordFields(msg.details);
await BrowserApi.tabSendMessage(msg.tab, 'notificationBarPageDetails', {
await BrowserApi.tabSendMessageData(msg.tab, 'notificationBarPageDetails', {
details: msg.details,
forms: forms,
});
@ -166,7 +166,7 @@ export default class RuntimeBackground {
eventAction: 'Added Login from Notification Bar',
});
BrowserApi.tabSendMessage(tab, 'closeNotificationBar');
BrowserApi.tabSendMessageData(tab, 'closeNotificationBar');
}
}
@ -185,7 +185,7 @@ export default class RuntimeBackground {
this.main.loginsToAdd.splice(i, 1);
const hostname = UtilsService.getHostname(tab.url);
await this.cipherService.saveNeverDomain(hostname);
BrowserApi.tabSendMessage(tab, 'closeNotificationBar');
BrowserApi.tabSendMessageData(tab, 'closeNotificationBar');
}
}
@ -231,12 +231,12 @@ export default class RuntimeBackground {
}
}
private async currentTabSendMessage(command: string, data: any = null) {
private async currenttabSendMessageData(command: string, data: any = null) {
const tab = await BrowserApi.getTabFromCurrentWindow();
if (tab == null) {
return;
}
await BrowserApi.tabSendMessage(tab, command, data);
await BrowserApi.tabSendMessageData(tab, command, data);
}
}

View File

@ -33,11 +33,7 @@ class BrowserApi {
return null;
}
static tabSendMessage(tab: any, command: string, data: any = null): Promise<any[]> {
if (!tab || !tab.id) {
return;
}
static tabSendMessageData(tab: any, command: string, data: any = null): Promise<any[]> {
const obj: any = {
command: command,
};
@ -46,11 +42,23 @@ class BrowserApi {
obj.data = data;
}
return new Promise((resolve) => {
chrome.tabs.sendMessage(tab.id, obj, () => {
resolve();
return BrowserApi.tabSendMessage(tab, obj);
}
static tabSendMessage(tab: any, obj: any): Promise<any[]> {
if (!tab || !tab.id) {
return;
}
if (BrowserApi.isChromeApi) {
return new Promise((resolve) => {
chrome.tabs.sendMessage(tab.id, obj, () => {
resolve();
});
});
});
} else if (BrowserApi.isSafariApi) {
// TODO
}
}
static getBackgroundPage(): any {
@ -102,6 +110,16 @@ class BrowserApi {
return null;
}
}
static messageListener(callback: (message: any, sender: any, response: any) => void) {
if (BrowserApi.isChromeApi) {
chrome.runtime.onMessage.addListener((msg: any, sender: any, response: any) => {
callback(msg, sender, response);
});
} else if (BrowserApi.isSafariApi) {
// TODO
}
}
}
export { BrowserApi };

View File

@ -1,5 +1,7 @@
import * as template from './current.component.html';
import { BrowserApi } from '../../../browser/browserApi';
import { CipherType } from 'jslib/enums/cipherType';
import { CipherService } from 'jslib/abstractions/cipher.service';
@ -103,9 +105,9 @@ export class CurrentController {
}
private loadVault() {
chrome.tabs.query({ active: true, currentWindow: true }, (tabs: any) => {
if (tabs.length > 0) {
this.url = tabs[0].url;
BrowserApi.getTabFromCurrentWindow().then((tab: any) => {
if (tab) {
this.url = tab.url;
} else {
this.$timeout(() => {
this.loaded = true;
@ -115,11 +117,11 @@ export class CurrentController {
this.domain = this.platformUtilsService.getDomain(this.url);
chrome.tabs.sendMessage(tabs[0].id, {
BrowserApi.tabSendMessage(tab, {
command: 'collectPageDetails',
tab: tabs[0],
tab: tab,
sender: 'currentController',
}, () => {
}).then(() => {
this.canAutofill = true;
});

View File

@ -1,3 +1,5 @@
import { BrowserApi } from '../../../browser/browserApi';
import AuthService from '../services/auth.service';
import { UtilsService } from 'jslib/abstractions/utils.service';
@ -23,7 +25,7 @@ export class MainController implements ng.IController {
}
});
chrome.runtime.onMessage.addListener((msg: any, sender: any, sendResponse: any) => {
BrowserApi.messageListener((msg: any, sender: any, sendResponse: any) => {
if (msg.command === 'syncCompleted') {
$scope.$broadcast('syncCompleted', msg.successfully);
} else if (msg.command === 'syncStarted') {