diff --git a/browser/components/preferences/cookies.js b/browser/components/preferences/cookies.js
index d70faf332577..c8d144d68d6a 100644
--- a/browser/components/preferences/cookies.js
+++ b/browser/components/preferences/cookies.js
@@ -6,6 +6,7 @@
const nsICookie = Components.interfaces.nsICookie;
Components.utils.import("resource://gre/modules/PluralForm.jsm");
+Components.utils.import("resource://gre/modules/Services.jsm")
var gCookiesWindow = {
_cm : Components.classes["@mozilla.org/cookiemanager;1"]
@@ -16,6 +17,7 @@ var gCookiesWindow = {
_hostOrder : [],
_tree : null,
_bundle : null,
+ _bundleBrowser : null,
init: function () {
var os = Components.classes["@mozilla.org/observer-service;1"]
@@ -24,11 +26,16 @@ var gCookiesWindow = {
os.addObserver(this, "perm-changed", false);
this._bundle = document.getElementById("bundlePreferences");
+ this._bundleBrowser = document.getElementById("bundleBrowser");
this._tree = document.getElementById("cookiesList");
this._populateList(true);
document.getElementById("filter").focus();
+
+ if (!Services.prefs.getBoolPref("privacy.userContext.enabled")) {
+ document.getElementById("userContextRow").hidden = true;
+ }
},
uninit: function () {
@@ -453,16 +460,17 @@ var gCookiesWindow = {
_makeCookieObject: function (aStrippedHost, aCookie) {
var host = aCookie.host;
var formattedHost = host.charAt(0) == "." ? host.substring(1, host.length) : host;
- var c = { name : aCookie.name,
- value : aCookie.value,
- isDomain : aCookie.isDomain,
- host : aCookie.host,
- rawHost : aStrippedHost,
- path : aCookie.path,
- isSecure : aCookie.isSecure,
- expires : aCookie.expires,
- level : 1,
- container : false };
+ var c = { name : aCookie.name,
+ value : aCookie.value,
+ isDomain : aCookie.isDomain,
+ host : aCookie.host,
+ rawHost : aStrippedHost,
+ path : aCookie.path,
+ isSecure : aCookie.isSecure,
+ expires : aCookie.expires,
+ level : 1,
+ container : false,
+ originAttributes: aCookie.originAttributes };
return c;
},
@@ -500,7 +508,7 @@ var gCookiesWindow = {
_updateCookieData: function (aItem) {
var seln = this._view.selection;
- var ids = ["name", "value", "host", "path", "isSecure", "expires"];
+ var ids = ["name", "value", "host", "path", "isSecure", "expires", "userContext"];
var properties;
if (aItem && !aItem.container && seln.count > 0) {
@@ -509,22 +517,41 @@ var gCookiesWindow = {
isDomain: aItem.isDomain ? this._bundle.getString("domainColon")
: this._bundle.getString("hostColon"),
isSecure: aItem.isSecure ? this._bundle.getString("forSecureOnly")
- : this._bundle.getString("forAnyConnection") };
- for (var i = 0; i < ids.length; ++i)
+ : this._bundle.getString("forAnyConnection"),
+ userContext: this._convertUserContextIdToContainerName(aItem.originAttributes.userContextId) };
+ for (var i = 0; i < ids.length; ++i) {
document.getElementById(ids[i]).disabled = false;
+ }
}
else {
var noneSelected = this._bundle.getString("noCookieSelected");
properties = { name: noneSelected, value: noneSelected, host: noneSelected,
path: noneSelected, expires: noneSelected,
- isSecure: noneSelected };
- for (i = 0; i < ids.length; ++i)
+ isSecure: noneSelected, userContext: noneSelected };
+ for (i = 0; i < ids.length; ++i) {
document.getElementById(ids[i]).disabled = true;
+ }
}
for (var property in properties)
document.getElementById(property).value = properties[property];
},
+ _convertUserContextIdToContainerName: function(aUserContextId) {
+ // TODO: this code should be moved in a separate module - bug 1239606
+ switch (aUserContextId) {
+ // No UserContext:
+ case 0: return "";
+
+ case 1: return this._bundleBrowser.getString("usercontext.personal.label");
+ case 2: return this._bundleBrowser.getString("usercontext.work.label");
+ case 3: return this._bundleBrowser.getString("usercontext.shopping.label");
+ case 4: return this._bundleBrowser.getString("usercontext.banking.label");
+
+ // This should not happen.
+ default: return "Context " + aUserContextId;
+ }
+ },
+
onCookieSelected: function () {
var item;
var seln = this._tree.view.selection;
diff --git a/browser/components/preferences/cookies.xul b/browser/components/preferences/cookies.xul
index 89a05918aae1..af67e6a17bee 100644
--- a/browser/components/preferences/cookies.xul
+++ b/browser/components/preferences/cookies.xul
@@ -24,6 +24,9 @@
+
+
@@ -85,6 +88,10 @@
+
+
+
+
diff --git a/browser/locales/en-US/chrome/browser/preferences/cookies.dtd b/browser/locales/en-US/chrome/browser/preferences/cookies.dtd
index 6dc08d567f70..9dfafffa53f0 100644
--- a/browser/locales/en-US/chrome/browser/preferences/cookies.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/cookies.dtd
@@ -21,6 +21,7 @@
+