safari tabs apis

This commit is contained in:
Kyle Spearrin 2018-01-13 14:56:38 -05:00
parent 97d1e0c98a
commit 698632a1df
3 changed files with 28 additions and 4 deletions

View File

@ -148,13 +148,13 @@ export default class MainBackground {
// Background
this.runtimeBackground = new RuntimeBackground(this, this.autofillService, this.cipherService,
this.platformUtilsService, this.storageService);
this.tabsBackground = new TabsBackground(this, this.platformUtilsService);
if (!this.isSafari) {
this.commandsBackground = new CommandsBackground(this, this.passwordGenerationService);
this.contextMenusBackground = new ContextMenusBackground(this, this.cipherService,
this.passwordGenerationService);
this.idleBackground = new IdleBackground(this, this.lockService, this.storageService);
this.tabsBackground = new TabsBackground(this);
this.webRequestBackground = new WebRequestBackground(this.platformUtilsService, this.cipherService);
this.windowsBackground = new WindowsBackground(this);
}
@ -165,11 +165,11 @@ export default class MainBackground {
this.containerService.attachToWindow(window);
await this.runtimeBackground.init();
await this.tabsBackground.init();
if (!this.isSafari) {
await this.commandsBackground.init();
await this.contextMenusBackground.init();
await this.idleBackground.init();
await this.tabsBackground.init();
await this.webRequestBackground.init();
await this.windowsBackground.init();
}

View File

@ -1,10 +1,14 @@
import MainBackground from './main.background';
import { PlatformUtilsService } from 'jslib/abstractions';
export default class TabsBackground {
private tabs: any;
private isSafari: boolean;
constructor(private main: MainBackground) {
this.tabs = chrome.tabs;
constructor(private main: MainBackground, private platformUtilsService: PlatformUtilsService) {
this.isSafari = this.platformUtilsService.isSafari();
this.tabs = this.isSafari ? safari.application : chrome.tabs;
}
async init() {
@ -12,6 +16,19 @@ export default class TabsBackground {
return;
}
if (this.isSafari) {
this.tabs.addEventListener('activate', async (ev: any) => {
await this.main.refreshBadgeAndMenu();
}, true);
this.tabs.addEventListener('navigate', async (ev: any) => {
await this.main.checkLoginsToAdd();
await this.main.refreshBadgeAndMenu();
}, true);
return;
}
this.tabs.onActivated.addListener(async (activeInfo: any) => {
await this.main.refreshBadgeAndMenu();
});

View File

@ -4,6 +4,13 @@ document.addEventListener('DOMContentLoaded', function () {
var i18n = {};
if (typeof safari !== 'undefined') {
// TODO: load when we get i18n strings
i18n.appName = 'bitwarden';
i18n.close = 'close';
i18n.yes = 'Yes';
i18n.never = 'Never';
i18n.notificationAddSave = 'Save Site';;
i18n.notificationNeverSave = 'Never Save';
i18n.notificationAddDesc = 'Want to Save?';
setTimeout(load, 50);
}
else {