Mercurial > addons > firefox-addons > open-incognito
view background.js @ 0:3353f3c48b6b
Initial revision
author | Guido Berhoerster <guido+open-incognito@berhoerster.name> |
---|---|
date | Fri, 14 Dec 2018 15:59:37 +0100 |
parents | |
children | 89239e60d9e1 |
line wrap: on
line source
/* * Copyright (C) 2018 Guido Berhoerster <guido+open-incognito@berhoerster.name> * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 'use strict'; function onMenuShown(info, tab) { let enabled = !tab.incognito && typeof info.linkUrl !== 'undefined' && (info.linkUrl.startsWith('http:') || info.linkUrl.startsWith('https:') || info.linkUrl.startsWith('ftp:')); browser.menus.update('open-link-in-private-mode', {enabled}); browser.menus.refresh(); } async function onClicked(info, tab) { let activeTabs = await browser.tabs.query({ active: true, currentWindow: false, windowType: 'normal' }); console.log('active tabs:', activeTabs); let [windowId, ] = activeTabs.reduce((accumulator, currentTab) => (currentTab.incognito && accumulator[1] < currentTab.lastAccessed) ? [currentTab.windowId, currentTab.lastAccessed] : accumulator, [-1, 0]); if (windowId < 0) { browser.windows.create({ incognito: true, url: info.linkUrl }); } else { browser.tabs.create({ url: info.linkUrl, windowId }); } } browser.menus.create({ id: 'open-link-in-private-mode', title: browser.i18n.getMessage('openLinkInPrivateWindow'), enabled: false, contexts: ['link'] }, () => { if (browser.runtime.lastError) { console.error('Failed to create menu item:', browser.runtime.lastError); return; } browser.menus.onShown.addListener(onMenuShown); browser.menus.onClicked.addListener(onClicked); });