Index: chrome/browser/resources/settings/site_settings/site_settings_category.js |
diff --git a/chrome/browser/resources/settings/site_settings/site_settings_category.js b/chrome/browser/resources/settings/site_settings/site_settings_category.js |
index 1ac0e50328a31c6a94dc4ca82b03b4c6e46fba64..b2553e3d24a603ef9af7ef601e4e3379a26f1a78 100644 |
--- a/chrome/browser/resources/settings/site_settings/site_settings_category.js |
+++ b/chrome/browser/resources/settings/site_settings/site_settings_category.js |
@@ -42,7 +42,17 @@ Polymer({ |
flashAskFirst_: { |
type: Boolean, |
value: true, |
- } |
+ }, |
+ |
+ /** |
+ * Used only for Cookies to keep track of the Session Only state. |
+ * Defaults to true, as the checkbox should be checked unless the user |
+ * has explicitly unchecked it or has the ALLOW setting on Cookies. |
+ */ |
+ cookiesSessionOnly_: { |
+ type: Boolean, |
+ value: true, |
+ }, |
}, |
observers: [ |
@@ -71,7 +81,6 @@ Polymer({ |
onChangePermissionControl_: function(event) { |
switch (this.category) { |
case settings.ContentSettingsTypes.BACKGROUND_SYNC: |
- case settings.ContentSettingsTypes.COOKIES: |
case settings.ContentSettingsTypes.IMAGES: |
case settings.ContentSettingsTypes.JAVASCRIPT: |
case settings.ContentSettingsTypes.KEYGEN: |
@@ -97,6 +106,17 @@ Polymer({ |
settings.PermissionValues.ASK : |
settings.PermissionValues.BLOCK); |
break; |
+ case settings.ContentSettingsTypes.COOKIES: |
+ // This category is tri-state: "Allow", "Block", "Keep data until |
+ // browser quits". |
+ var value = settings.PermissionValues.BLOCK; |
+ if (this.categoryEnabled) { |
+ value = this.cookiesSessionOnly_ ? |
+ settings.PermissionValues.SESSION_ONLY : |
+ settings.PermissionValues.ALLOW; |
+ } |
+ this.browserProxy.setDefaultValueForContentType(this.category, value); |
+ break; |
case settings.ContentSettingsTypes.PLUGINS: |
// This category is tri-state: "Allow", "Block", "Ask before running". |
var value = settings.PermissionValues.BLOCK; |
@@ -128,15 +148,27 @@ Polymer({ |
if (this.category == settings.ContentSettingsTypes.PLUGINS && |
setting == settings.PermissionValues.IMPORTANT_CONTENT) { |
sliderSetting = settings.PermissionValues.ALLOW; |
+ } else if ( |
+ this.category == settings.ContentSettingsTypes.COOKIES && |
+ setting == settings.PermissionValues.SESSION_ONLY) { |
+ sliderSetting = settings.PermissionValues.ALLOW; |
} |
this.sliderDescription_ = |
this.computeCategoryDesc(this.category, sliderSetting, true); |
- // The checkbox should only be cleared when the Flash setting |
- // is explicitly set to ALLOW. |
- if (this.category == settings.ContentSettingsTypes.PLUGINS && |
- setting == settings.PermissionValues.ALLOW) { |
- this.flashAskFirst_ = false; |
+ if (this.category == settings.ContentSettingsTypes.PLUGINS) { |
+ // The checkbox should only be cleared when the Flash setting |
+ // is explicitly set to ALLOW. |
+ if (setting == settings.PermissionValues.ALLOW) |
+ this.flashAskFirst_ = false; |
+ if (setting == settings.PermissionValues.IMPORTANT_CONTENT) |
+ this.flashAskFirst_ = true; |
+ } else if ( |
+ this.category == settings.ContentSettingsTypes.COOKIES) { |
+ if (setting == settings.PermissionValues.ALLOW) |
+ this.cookiesSessionOnly_ = false; |
+ else if (setting == settings.PermissionValues.SESSION_ONLY) |
+ this.cookiesSessionOnly_ = true; |
} |
}.bind(this)); |
}, |
@@ -146,6 +178,11 @@ Polymer({ |
return category == settings.ContentSettingsTypes.PLUGINS; |
}, |
+ /** @private */ |
+ isCookiesCategory_: function(category) { |
+ return category == settings.ContentSettingsTypes.COOKIES; |
+ }, |
+ |
/** |
* Returns whether this is the Plugins category. |
* @param {string} category The current category. |