Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1407)

Unified Diff: components/content_settings/core/browser/content_settings_registry.cc

Issue 1442083002: Stop inheriting push notification permissions from regular to incognito (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address review nits Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/content_settings/core/browser/content_settings_registry.cc
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
index 16f52d7666f4a24efd392d0bc845ab04ee14203c..db90dc7443a945f5bce13a7c08ff59410837b3e3 100644
--- a/components/content_settings/core/browser/content_settings_registry.cc
+++ b/components/content_settings/core/browser/content_settings_registry.cc
@@ -118,21 +118,24 @@ void ContentSettingsRegistry::Init() {
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_SESSION_ONLY),
- WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_IMAGES, "images", CONTENT_SETTING_ALLOW,
WebsiteSettingsInfo::SYNCABLE,
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme,
kExtensionScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_JAVASCRIPT, "javascript",
CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::SYNCABLE,
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme,
kExtensionScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_PLUGINS, "plugins",
CONTENT_SETTING_DETECT_IMPORTANT_CONTENT,
@@ -141,62 +144,71 @@ void ContentSettingsRegistry::Init() {
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK,
CONTENT_SETTING_DETECT_IMPORTANT_CONTENT),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_POPUPS, "popups", CONTENT_SETTING_BLOCK,
WebsiteSettingsInfo::SYNCABLE,
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme,
kExtensionScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_GEOLOCATION, "geolocation",
CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE);
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, "notifications",
CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW);
Register(CONTENT_SETTINGS_TYPE_FULLSCREEN, "fullscreen", CONTENT_SETTING_ASK,
WebsiteSettingsInfo::SYNCABLE,
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE);
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_MOUSELOCK, "mouselock", CONTENT_SETTING_ASK,
WebsiteSettingsInfo::SYNCABLE,
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, "media-stream-mic",
CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, "media-stream-camera",
CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_PPAPI_BROKER, "ppapi-broker",
CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, "automatic-downloads",
CONTENT_SETTING_ASK, WebsiteSettingsInfo::SYNCABLE,
@@ -204,20 +216,23 @@ void ContentSettingsRegistry::Init() {
kExtensionScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, "midi-sysex", CONTENT_SETTING_ASK,
WebsiteSettingsInfo::SYNCABLE, WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE);
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, "push-messaging",
CONTENT_SETTING_ASK, WebsiteSettingsInfo::SYNCABLE,
Peter Beverloo 2015/12/07 13:51:19 we're syncing push but not notifications? :)
msramek 2015/12/07 15:05:42 Wait, what? :-o When I unsynced notifications, I
msramek 2015/12/07 15:15:45 Answered in https://codereview.chromium.org/150661
WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE);
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW);
#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
Register(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
@@ -225,20 +240,23 @@ void ContentSettingsRegistry::Init() {
WebsiteSettingsInfo::UNSYNCABLE, WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE);
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
#endif
Register(CONTENT_SETTINGS_TYPE_DURABLE_STORAGE, "durable-storage",
CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
- WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_KEYGEN, "keygen",
CONTENT_SETTING_BLOCK, WebsiteSettingsInfo::SYNCABLE,
WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
- WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
// Content settings that aren't used to store any data. TODO(raymes): use a
// different mechanism rather than content settings to represent these.
@@ -247,18 +265,21 @@ void ContentSettingsRegistry::Init() {
Register(CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, "protocol-handler",
CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(), ValidSettings(),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, "mixed-script",
CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(), ValidSettings(),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
// Deprecated.
Register(CONTENT_SETTINGS_TYPE_MEDIASTREAM, "media-stream",
CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(), ValidSettings(),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE);
+ WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO);
}
void ContentSettingsRegistry::Register(
@@ -268,9 +289,15 @@ void ContentSettingsRegistry::Register(
WebsiteSettingsInfo::SyncStatus sync_status,
const std::vector<std::string>& whitelisted_schemes,
const std::set<ContentSetting>& valid_settings,
- WebsiteSettingsInfo::ScopingType scoping_type) {
+ WebsiteSettingsInfo::ScopingType scoping_type,
+ ContentSettingsInfo::IncognitoBehavior incognito_behavior) {
// Ensure that nothing has been registered yet for the given type.
DCHECK(!website_settings_registry_->Get(type));
+ DCHECK(incognito_behavior
+ != ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW
+ || ContainsKey(valid_settings, CONTENT_SETTING_ASK))
+ << "If INHERIT_IN_INCOGNITO_EXCEPT_ALLOW is set, ASK must be listed as a "
+ "valid setting.";
scoped_ptr<base::Value> default_value(
new base::FundamentalValue(static_cast<int>(initial_default_value)));
const WebsiteSettingsInfo* website_settings_info =
@@ -278,8 +305,9 @@ void ContentSettingsRegistry::Register(
type, name, default_value.Pass(), sync_status,
WebsiteSettingsInfo::NOT_LOSSY, scoping_type);
DCHECK(!ContainsKey(content_settings_info_, type));
- content_settings_info_[type] = make_scoped_ptr(new ContentSettingsInfo(
- website_settings_info, whitelisted_schemes, valid_settings));
+ content_settings_info_[type] = make_scoped_ptr(
+ new ContentSettingsInfo(website_settings_info, whitelisted_schemes,
+ valid_settings, incognito_behavior));
}
} // namespace content_settings

Powered by Google App Engine
This is Rietveld 408576698