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 4ca3eb5d1d2a9ec74d1fe705b14e45490bca5ff5..3d0c7f183d8a3c793f8be9a1f62a0dd4ba87aea9 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, |
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 = |
@@ -280,7 +307,8 @@ void ContentSettingsRegistry::Register( |
DCHECK(!ContainsKey(content_settings_info_, type)); |
content_settings_info_.set( |
type, make_scoped_ptr(new ContentSettingsInfo( |
- website_settings_info, whitelisted_schemes, valid_settings))); |
+ website_settings_info, whitelisted_schemes, valid_settings, |
+ incognito_behavior))); |
} |
} // namespace content_settings |