| 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..6ad70fc7a70f078a4eede64ff7363fe81f5ee9ed 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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::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,
|
| + WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
|
| }
|
|
|
| void ContentSettingsRegistry::Register(
|
| @@ -268,7 +289,8 @@ 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,
|
| + WebsiteSettingsInfo::IncognitoBehavior incognito_behavior) {
|
| // Ensure that nothing has been registered yet for the given type.
|
| DCHECK(!website_settings_registry_->Get(type));
|
| scoped_ptr<base::Value> default_value(
|
| @@ -276,7 +298,7 @@ void ContentSettingsRegistry::Register(
|
| const WebsiteSettingsInfo* website_settings_info =
|
| website_settings_registry_->Register(
|
| type, name, default_value.Pass(), sync_status,
|
| - WebsiteSettingsInfo::NOT_LOSSY, scoping_type);
|
| + WebsiteSettingsInfo::NOT_LOSSY, scoping_type, incognito_behavior);
|
| DCHECK(!ContainsKey(content_settings_info_, type));
|
| content_settings_info_.set(
|
| type, make_scoped_ptr(new ContentSettingsInfo(
|
|
|