From 394c7253d6494ad335527d62f6a1b66c701a54d3 Mon Sep 17 00:00:00 2001 From: lisdude Date: Sun, 25 Mar 2018 02:04:00 -0500 Subject: [PATCH] Allow 'default' as a possible host name to specify the default container that external links open in. --- .../__tests__/ContextualIdentity.spec.js | 2 +- src/ContextualIdentity/index.js | 2 +- src/ui/index.html | 3 ++- src/webRequestListener.js | 23 ++++++++----------- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/ContextualIdentity/__tests__/ContextualIdentity.spec.js b/src/ContextualIdentity/__tests__/ContextualIdentity.spec.js index ce38b40..7c3f3ee 100644 --- a/src/ContextualIdentity/__tests__/ContextualIdentity.spec.js +++ b/src/ContextualIdentity/__tests__/ContextualIdentity.spec.js @@ -48,7 +48,7 @@ describe('ContextualIdentities', () => { iconUrl: 'resource://usercontext-content/circle.svg', color: 'grey', colorCode: '#999', - cookieStoreId: 'no-container', + cookieStoreId: 'firefox-default', }]); }); }); diff --git a/src/ContextualIdentity/index.js b/src/ContextualIdentity/index.js index b129750..6a10e55 100644 --- a/src/ContextualIdentity/index.js +++ b/src/ContextualIdentity/index.js @@ -4,7 +4,7 @@ export const NO_CONTAINER = { iconUrl: 'resource://usercontext-content/circle.svg', color: 'grey', colorCode: '#999', - cookieStoreId: 'no-container', + cookieStoreId: 'firefox-default', }; class ContextualIdentities { diff --git a/src/ui/index.html b/src/ui/index.html index 2070386..26fe5b1 100644 --- a/src/ui/index.html +++ b/src/ui/index.html @@ -38,7 +38,8 @@

Use this add/remove/backup multiple entries.

- e.g. host , container name + e.g. host , container name
+ default , Default Container
diff --git a/src/webRequestListener.js b/src/webRequestListener.js index 3b97ac7..a9cef83 100644 --- a/src/webRequestListener.js +++ b/src/webRequestListener.js @@ -1,5 +1,5 @@ import Storage from './Storage/index'; -import ContextualIdentity, {NO_CONTAINER} from './ContextualIdentity'; +import ContextualIdentity from './ContextualIdentity'; import Tabs from './Tabs'; const createTab = (url, newTabIndex, currentTabId, cookieStoreId) => { @@ -29,28 +29,25 @@ export const webRequestListener = (requestDetails) => { Storage.get(hostname), ContextualIdentity.getAll(), Tabs.get(requestDetails.tabId), - ]).then(([hostMap, identities, currentTab]) => { + Storage.get('default'), + ]).then(([hostMap, identities, currentTab, defaultContainer]) => { if (currentTab.incognito || !hostMap) { return {}; } const hostIdentity = identities.find((identity) => identity.cookieStoreId === hostMap.cookieStoreId); - const tabIdentity = identities.find((identity) => identity.cookieStoreId === currentTab.cookieStoreId); + const defaultIdentity = identities.find((identity) => identity.cookieStoreId === defaultContainer.cookieStoreId); - if (!hostIdentity) { - return {}; - } + let newContainer; - if (hostIdentity.cookieStoreId === NO_CONTAINER.cookieStoreId && tabIdentity) { - return createTab(requestDetails.url, currentTab.index + 1, currentTab.id); + if (!hostIdentity && defaultIdentity && currentTab.cookieStoreId !== defaultContainer.cookieStoreId) { + newContainer = defaultContainer.cookieStoreId; + } else if (hostIdentity && hostIdentity.cookieStoreId !== currentTab.cookieStoreId) { + newContainer = hostIdentity.cookieStoreId; } - if (hostIdentity.cookieStoreId !== currentTab.cookieStoreId && hostIdentity.cookieStoreId !== NO_CONTAINER.cookieStoreId) { - return createTab(requestDetails.url, currentTab.index + 1, currentTab.id, hostIdentity.cookieStoreId); - } - - return {}; + return !newContainer ? {} : createTab(requestDetails.url, currentTab.index + 1, currentTab.id, newContainer); }); };