diff --git a/src/js/background/backgroundLogic.js b/src/js/background/backgroundLogic.js
index 52d61a2..a27d199 100644
--- a/src/js/background/backgroundLogic.js
+++ b/src/js/background/backgroundLogic.js
@@ -42,6 +42,8 @@ const backgroundLogic = {
this.cookieStoreId(options.userContextId),
options.params
);
+
+ window.proxifiedContainers.set(this.cookieStoreId(options.userContextId), options.proxy);
} else {
donePromise = browser.contextualIdentities.create(options.params);
}
diff --git a/src/js/background/index.html b/src/js/background/index.html
index e167f0b..86bccf1 100644
--- a/src/js/background/index.html
+++ b/src/js/background/index.html
@@ -13,6 +13,7 @@
"js/background/messageHandler.js",
]
-->
+
diff --git a/src/js/popup.js b/src/js/popup.js
index 80986a2..8507cce 100644
--- a/src/js/popup.js
+++ b/src/js/popup.js
@@ -1,13 +1,13 @@
/* 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/. */
-
const CONTAINER_HIDE_SRC = "/img/container-hide.svg";
const CONTAINER_UNHIDE_SRC = "/img/container-unhide.svg";
const DEFAULT_COLOR = "blue";
const DEFAULT_ICON = "circle";
const NEW_CONTAINER_ID = "new";
+const DEFAULT_PROXY = {type: "direct"};
const ONBOARDING_STORAGE_KEY = "onboarding-stage";
@@ -214,27 +214,6 @@ const Logic = {
return false;
},
- async numTabs() {
- const activeTabs = await browser.tabs.query({windowId: browser.windows.WINDOW_ID_CURRENT});
- return activeTabs.length;
- },
-
- _disableMoveTabs(message) {
- const moveTabsEl = document.querySelector("#container-info-movetabs");
- const fragment = document.createDocumentFragment();
- const incompatEl = document.createElement("div");
-
- moveTabsEl.classList.remove("clickable");
- moveTabsEl.setAttribute("title", message);
-
- fragment.appendChild(incompatEl);
- incompatEl.setAttribute("id", "container-info-movetabs-incompat");
- incompatEl.textContent = message;
- incompatEl.classList.add("container-info-tab-row");
-
- moveTabsEl.parentNode.insertBefore(fragment, moveTabsEl.nextSibling);
- },
-
async refreshIdentities() {
const [identities, state] = await Promise.all([
browser.contextualIdentities.query({}),
@@ -321,6 +300,10 @@ const Logic = {
return Logic.userContextId(identity.cookieStoreId);
},
+ cookieStoreId(userContextId) {
+ return `firefox-container-${userContextId}`;
+ },
+
currentCookieStoreId() {
const identity = Logic.currentIdentity();
return identity.cookieStoreId;
@@ -732,14 +715,38 @@ Logic.registerPanel(P_CONTAINER_INFO, {
});
// Check if the user has incompatible add-ons installed
- let incompatible = false;
try {
- incompatible = await browser.runtime.sendMessage({
+ const incompatible = await browser.runtime.sendMessage({
method: "checkIncompatibleAddons"
});
+ const moveTabsEl = document.querySelector("#container-info-movetabs");
+ if (incompatible) {
+ const fragment = document.createDocumentFragment();
+ const incompatEl = document.createElement("div");
+
+ moveTabsEl.classList.remove("clickable");
+ moveTabsEl.setAttribute("title", "Moving container tabs is incompatible with Pulse, PageShot, and SnoozeTabs.");
+
+ fragment.appendChild(incompatEl);
+ incompatEl.setAttribute("id", "container-info-movetabs-incompat");
+ incompatEl.textContent = "Incompatible with other Experiments.";
+ incompatEl.classList.add("container-info-tab-row");
+
+ moveTabsEl.parentNode.insertBefore(fragment, moveTabsEl.nextSibling);
+ } else {
+ Logic.addEnterHandler(moveTabsEl, async function () {
+ await browser.runtime.sendMessage({
+ method: "moveTabsToWindow",
+ windowId: browser.windows.WINDOW_ID_CURRENT,
+ cookieStoreId: Logic.currentIdentity().cookieStoreId,
+ });
+ window.close();
+ });
+ }
} catch (e) {
throw new Error("Could not check for incompatible add-ons.");
}
+<<<<<<< HEAD
const moveTabsEl = document.querySelector("#container-info-movetabs");
const numTabs = await Logic.numTabs();
if (incompatible) {
@@ -757,6 +764,8 @@ Logic.registerPanel(P_CONTAINER_INFO, {
});
window.close();
});
+=======
+>>>>>>> Integrated the proxified-containers.js logic into relevant files without direct proxifying yet
},
// This method is called when the panel is shown.
@@ -944,8 +953,6 @@ Logic.registerPanel(P_CONTAINER_EDIT, {
this._editForm.addEventListener("submit", () => {
this._submitForm();
});
-
-
},
async _submitForm() {
@@ -958,8 +965,9 @@ Logic.registerPanel(P_CONTAINER_EDIT, {
params: {
name: document.getElementById("edit-container-panel-name-input").value || Logic.generateIdentityName(),
icon: formValues.get("container-icon") || DEFAULT_ICON,
- color: formValues.get("container-color") || DEFAULT_COLOR,
- }
+ color: formValues.get("container-color") || DEFAULT_COLOR
+ },
+ proxy: window.proxifiedContainers.parseProxy(document.getElementById("edit-container-panel-proxy").value) || DEFAULT_PROXY
}
});
await Logic.refreshIdentities();
@@ -1054,11 +1062,6 @@ Logic.registerPanel(P_CONTAINER_EDIT, {
document.querySelector("#edit-container-panel-name-input").value = identity.name || "";
document.querySelector("#edit-container-panel-usercontext-input").value = userContextId || NEW_CONTAINER_ID;
- const containerName = document.querySelector("#edit-container-panel-name-input");
- window.requestAnimationFrame(() => {
- containerName.select();
- containerName.focus();
- });
[...document.querySelectorAll("[name='container-color']")].forEach(colorInput => {
colorInput.checked = colorInput.value === identity.color;
});
@@ -1066,6 +1069,28 @@ Logic.registerPanel(P_CONTAINER_EDIT, {
iconInput.checked = iconInput.value === identity.icon;
});
+ var edit_proxy_dom = function(result) {
+ if(result.type == "http")
+ document.querySelector('#edit-container-panel-proxy').value = result.host.toString() + ":" + result.port.toString();
+ else if(result.type == "direct")
+ document.querySelector('#edit-container-panel-proxy').value = "";
+ }
+
+ window.proxifiedContainers.retrieve(identity.cookieStoreId).then((result) => {
+ edit_proxy_dom(result.proxy);
+ }, (error) => {
+ if(error.error == "uninitialized" || error.error == "doesnotexist") {
+ window.proxifiedContainers.set(identity.cookieStoreId, DEFAULT_PROXY, error.error == "uninitialized").then((result) => {
+ edit_proxy_dom(result.proxy);
+ }, (error) => {
+ browser.extension.getBackgroundPage().console.log(error);
+ });
+ }
+ else {
+ browser.extension.getBackgroundPage().console.log(error);
+ }
+ });
+
return Promise.resolve(null);
},
@@ -1154,4 +1179,4 @@ window.addEventListener("resize", function () {
root.style.setProperty("--overflow-size", difference + "px");
root.style.setProperty("--icon-fit", "12");
}
-});
\ No newline at end of file
+});