Skip to content

Commit 7e29b2c

Browse files
committed
Add option to enable/disable Container Tabs
1 parent cb0d9ad commit 7e29b2c

File tree

6 files changed

+42
-26
lines changed

6 files changed

+42
-26
lines changed

src/bg/main.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,7 @@
250250
},
251251

252252
getPolicy(cookieStoreId){
253-
// debug("get policy", cookieStoreId, ns.policy, ns.contextStore);
254-
if (ns.contextStore.policies.hasOwnProperty(cookieStoreId)) {
253+
if (ns.contextStore.enabled && ns.contextStore.policies.hasOwnProperty(cookieStoreId)) {
255254
let currentPolicy = ns.contextStore.policies[cookieStoreId];
256255
debug("id", cookieStoreId, "has cookiestore", currentPolicy);
257256
if (currentPolicy) return currentPolicy;

src/nscl

src/ui/options.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ <h3 class="flextabs__tab"><button class="flextabs__toggle">__MSG_SectionGeneral_
5757
<span id="cascadeRestrictions-opt">
5858
<input type="checkbox" class="enforcement_required" id="opt-cascadeRestrictions"><label for="opt-cascadeRestrictions" id="lbl-cascadeRestrictions">__MSG_CascadeRestrictions__</label>
5959
</span>
60+
<span id="containers-opt">
61+
<input type="checkbox" class="enforcement_required" id="opt-containers"><label for="opt-containers" id="lbl-containers">Enable support for container tabs</label>
62+
</span>
6063
</div>
6164

6265
<fieldset class="enforcement_required">

src/ui/options.js

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,16 @@
5757

5858
opt("cascadeRestrictions");
5959

60+
opt("containers", async o => {
61+
if (o) {
62+
contextStore.enabled = o.checked;
63+
await contextStore.updateContainers(policy);
64+
UI.updateSettings({contextStore});
65+
}
66+
updateContainersEnabled();
67+
return contextStore.enabled;
68+
})
69+
6070
opt("xss");
6171

6272
opt("overrideTorBrowserPolicy");
@@ -175,9 +185,15 @@
175185
var cookieStoreId = containerSelect.value;
176186
var currentPolicy = await UI.getPolicy(cookieStoreId);
177187

178-
containerSelect.hidden = !browser.contextualIdentities;
179-
document.querySelector("#select-container-label").hidden = containerSelect.hidden;
180-
if (!browser.contextualIdentities) document.querySelector("#per-site-buttons").style.display = "none";
188+
function updateContainersEnabled() {
189+
let containersEnabled = Boolean(contextStore.enabled && browser.contextualIdentities);
190+
document.querySelector("#opt-containers").disabled = !browser.contextualIdentities;
191+
document.querySelector("#opt-containers").checked = contextStore.enabled;
192+
document.querySelector("#select-container").hidden = !containersEnabled;
193+
document.querySelector("#select-container-label").hidden = !containersEnabled;
194+
document.querySelector("#per-site-buttons").style.display = containersEnabled? "flex" : "none";
195+
}
196+
updateContainersEnabled();
181197

182198
async function changeContainer() {
183199
cookieStoreId = containerSelect.value;
@@ -205,7 +221,7 @@
205221
containerCopy.onchange = copyContainer;
206222

207223
var containers = [];
208-
async function updateContainers() {
224+
async function updateContainerOptions() {
209225
let newContainers = [{cookieStoreId: "default", name: "Default"},];
210226
let identities = browser.contextualIdentities && await browser.contextualIdentities.query({});
211227
if (identities) {
@@ -223,9 +239,9 @@
223239
containerSelect.value = cookieStoreId;
224240
containerCopy.innerHTML = container_options;
225241
}
226-
containerSelect.onfocus = updateContainers;
227-
containerCopy.onfocus = updateContainers;
228-
await updateContainers();
242+
containerSelect.onfocus = updateContainerOptions;
243+
containerCopy.onfocus = updateContainerOptions;
244+
if (contextStore.enabled) await updateContainerOptions();
229245

230246
UI.onSettings = async () => {
231247
currentPolicy = await UI.getPolicy(cookieStoreId);

src/ui/popup.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -66,19 +66,6 @@ addEventListener("unload", e => {
6666
tabId = tab.id;
6767
}
6868

69-
if (browser.contextualIdentities){
70-
try {
71-
let containerName = (await browser.contextualIdentities.get(cookieStoreId)).name;
72-
document.querySelector("#container-id").textContent = containerName;
73-
debug("found container name", containerName, "for cookieStoreId", cookieStoreId);
74-
} catch(err) {
75-
document.querySelector("#container-id").textContent = "Default";
76-
debug("no container for cookieStoreId", cookieStoreId, "error:", err.message);
77-
}
78-
} else {
79-
document.querySelector("#container-id").style.visibility = 'hidden';
80-
}
81-
8269
addEventListener("keydown", e => {
8370
if (e.code === "Enter") {
8471
let focused = document.activeElement;
@@ -106,6 +93,19 @@ addEventListener("unload", e => {
10693
});
10794
}
10895

96+
if (UI.contextStore && UI.contextStore.enabled && browser.contextualIdentities) {
97+
try {
98+
let containerName = (await browser.contextualIdentities.get(cookieStoreId)).name;
99+
document.querySelector("#container-id").textContent = containerName;
100+
debug("found container name", containerName, "for cookieStoreId", cookieStoreId);
101+
} catch(err) {
102+
document.querySelector("#container-id").textContent = "Default";
103+
debug("no container for cookieStoreId", cookieStoreId, "error:", err.message);
104+
}
105+
} else {
106+
document.querySelector("#container-id").style.visibility = 'hidden';
107+
}
108+
109109
await include("/ui/toolbar.js");
110110
{
111111
let handlers = {

src/ui/ui.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,7 @@ var UI = (() => {
127127

128128
async getPolicy(cookieStoreId) {
129129
await this.contextStore.updateContainers(this.policy);
130-
// debug("get policy", cookieStoreId, this.policy, this.contextStore);
131-
if (this.contextStore.policies.hasOwnProperty(cookieStoreId)) {
130+
if (this.contextStore.enabled && this.contextStore.policies.hasOwnProperty(cookieStoreId)) {
132131
let currentPolicy = this.contextStore.policies[cookieStoreId];
133132
debug("id", cookieStoreId, "has cookiestore", currentPolicy);
134133
return currentPolicy;
@@ -140,7 +139,6 @@ var UI = (() => {
140139

141140
async replacePolicy(cookieStoreId, policy) {
142141
await this.contextStore.updateContainers(this.policy);
143-
// debug("set policy", cookieStoreId, this.policy, this.contextStore);
144142
if (this.contextStore.policies.hasOwnProperty(cookieStoreId)) {
145143
this.contextStore.policies[cookieStoreId] = policy;
146144
debug("replaced id", cookieStoreId, "with policy", policy);

0 commit comments

Comments
 (0)