summaryrefslogtreecommitdiffstats
path: root/application/basilisk/components/preferences/containersPane.js
diff options
context:
space:
mode:
Diffstat (limited to 'application/basilisk/components/preferences/containersPane.js')
-rw-r--r--application/basilisk/components/preferences/containersPane.js96
1 files changed, 96 insertions, 0 deletions
diff --git a/application/basilisk/components/preferences/containersPane.js b/application/basilisk/components/preferences/containersPane.js
new file mode 100644
index 000000000..89549e247
--- /dev/null
+++ b/application/basilisk/components/preferences/containersPane.js
@@ -0,0 +1,96 @@
+/* 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/. */
+
+Components.utils.import("resource://gre/modules/ContextualIdentityService.jsm");
+
+const containersBundle = Services.strings.createBundle("chrome://browser/locale/preferences/containers.properties");
+
+const defaultContainerIcon = "fingerprint";
+const defaultContainerColor = "blue";
+
+let gContainersPane = {
+
+ init() {
+ this._list = document.getElementById("containersView");
+
+ document.getElementById("backContainersLink").addEventListener("click", function() {
+ gotoPref("privacy");
+ });
+
+ this._rebuildView();
+ },
+
+ _rebuildView() {
+ const containers = ContextualIdentityService.getIdentities();
+ while (this._list.firstChild) {
+ this._list.firstChild.remove();
+ }
+ for (let container of containers) {
+ let item = document.createElement("richlistitem");
+ item.setAttribute("containerName", ContextualIdentityService.getUserContextLabel(container.userContextId));
+ item.setAttribute("containerIcon", container.icon);
+ item.setAttribute("containerColor", container.color);
+ item.setAttribute("userContextId", container.userContextId);
+
+ this._list.appendChild(item);
+ }
+ },
+
+ onRemoveClick(button) {
+ let userContextId = parseInt(button.getAttribute("value"), 10);
+
+ let count = ContextualIdentityService.countContainerTabs(userContextId);
+ if (count > 0) {
+ let bundlePreferences = document.getElementById("bundlePreferences");
+
+ let title = bundlePreferences.getString("removeContainerAlertTitle");
+ let message = PluralForm.get(count, bundlePreferences.getString("removeContainerMsg"))
+ .replace("#S", count)
+ let okButton = bundlePreferences.getString("removeContainerOkButton");
+ let cancelButton = bundlePreferences.getString("removeContainerButton2");
+
+ let buttonFlags = (Ci.nsIPrompt.BUTTON_TITLE_IS_STRING * Ci.nsIPrompt.BUTTON_POS_0) +
+ (Ci.nsIPrompt.BUTTON_TITLE_IS_STRING * Ci.nsIPrompt.BUTTON_POS_1);
+
+ let rv = Services.prompt.confirmEx(window, title, message, buttonFlags,
+ okButton, cancelButton, null, null, {});
+ if (rv != 0) {
+ return;
+ }
+
+ ContextualIdentityService.closeContainerTabs(userContextId);
+ }
+
+ ContextualIdentityService.remove(userContextId);
+ this._rebuildView();
+ },
+
+ onPreferenceClick(button) {
+ this.openPreferenceDialog(button.getAttribute("value"));
+ },
+
+ onAddButtonClick(button) {
+ this.openPreferenceDialog(null);
+ },
+
+ openPreferenceDialog(userContextId) {
+ let identity = {
+ name: "",
+ icon: defaultContainerIcon,
+ color: defaultContainerColor
+ };
+ let title;
+ if (userContextId) {
+ identity = ContextualIdentityService.getIdentityFromId(userContextId);
+ // This is required to get the translation string from defaults
+ identity.name = ContextualIdentityService.getUserContextLabel(identity.userContextId);
+ title = containersBundle.formatStringFromName("containers.updateContainerTitle", [identity.name], 1);
+ }
+
+ const params = { userContextId, identity, windowTitle: title };
+ gSubDialog.open("chrome://browser/content/preferences/containersWindow.xul",
+ null, params);
+ }
+
+};