Commit afd97ff8 authored by lshang's avatar lshang Committed by Commit bot

Only Register() platform specific content settings types on different platforms

Content settings are not used on all platforms. Some content settings are only
used on desktop platforms, or desktop and android. We shouldn't register these
types on other platforms that aren't using them, so that we don't create unused
prefs for them and more importantly so that we don't sync settings to these
platforms which would go unused but be a potential privacy concern.

In this CL, an enum WebsiteSettingsInfo::Platform is added and used when
registering content settings to indicate which platform set it is applied to.

BUG=604632

Review-Url: https://codereview.chromium.org/1991623005
Cr-Commit-Position: refs/heads/master@{#398174}
parent 3a7c8270
...@@ -121,6 +121,12 @@ DefaultProvider::DefaultProvider(PrefService* prefs, bool incognito) ...@@ -121,6 +121,12 @@ DefaultProvider::DefaultProvider(PrefService* prefs, bool incognito)
IntToContentSetting(prefs_->GetInteger( IntToContentSetting(prefs_->GetInteger(
GetPrefName(CONTENT_SETTINGS_TYPE_COOKIES))), GetPrefName(CONTENT_SETTINGS_TYPE_COOKIES))),
CONTENT_SETTING_NUM_SETTINGS); CONTENT_SETTING_NUM_SETTINGS);
UMA_HISTOGRAM_ENUMERATION(
"ContentSettings.DefaultPopupsSetting",
IntToContentSetting(prefs_->GetInteger(
GetPrefName(CONTENT_SETTINGS_TYPE_POPUPS))),
CONTENT_SETTING_NUM_SETTINGS);
#if !defined(OS_IOS)
UMA_HISTOGRAM_ENUMERATION( UMA_HISTOGRAM_ENUMERATION(
"ContentSettings.DefaultImagesSetting", "ContentSettings.DefaultImagesSetting",
IntToContentSetting(prefs_->GetInteger( IntToContentSetting(prefs_->GetInteger(
...@@ -136,11 +142,6 @@ DefaultProvider::DefaultProvider(PrefService* prefs, bool incognito) ...@@ -136,11 +142,6 @@ DefaultProvider::DefaultProvider(PrefService* prefs, bool incognito)
IntToContentSetting(prefs_->GetInteger( IntToContentSetting(prefs_->GetInteger(
GetPrefName(CONTENT_SETTINGS_TYPE_PLUGINS))), GetPrefName(CONTENT_SETTINGS_TYPE_PLUGINS))),
CONTENT_SETTING_NUM_SETTINGS); CONTENT_SETTING_NUM_SETTINGS);
UMA_HISTOGRAM_ENUMERATION(
"ContentSettings.DefaultPopupsSetting",
IntToContentSetting(prefs_->GetInteger(
GetPrefName(CONTENT_SETTINGS_TYPE_POPUPS))),
CONTENT_SETTING_NUM_SETTINGS);
UMA_HISTOGRAM_ENUMERATION( UMA_HISTOGRAM_ENUMERATION(
"ContentSettings.DefaultLocationSetting", "ContentSettings.DefaultLocationSetting",
IntToContentSetting(prefs_->GetInteger( IntToContentSetting(prefs_->GetInteger(
...@@ -186,7 +187,7 @@ DefaultProvider::DefaultProvider(PrefService* prefs, bool incognito) ...@@ -186,7 +187,7 @@ DefaultProvider::DefaultProvider(PrefService* prefs, bool incognito)
IntToContentSetting(prefs_->GetInteger( IntToContentSetting(prefs_->GetInteger(
GetPrefName(CONTENT_SETTINGS_TYPE_BLUETOOTH_GUARD))), GetPrefName(CONTENT_SETTINGS_TYPE_BLUETOOTH_GUARD))),
CONTENT_SETTING_NUM_SETTINGS); CONTENT_SETTING_NUM_SETTINGS);
#endif
pref_change_registrar_.Init(prefs_); pref_change_registrar_.Init(prefs_);
PrefChangeRegistrar::NamedChangeCallback callback = base::Bind( PrefChangeRegistrar::NamedChangeCallback callback = base::Bind(
&DefaultProvider::OnPreferenceChanged, base::Unretained(this)); &DefaultProvider::OnPreferenceChanged, base::Unretained(this));
......
...@@ -124,6 +124,7 @@ void ContentSettingsRegistry::Init() { ...@@ -124,6 +124,7 @@ void ContentSettingsRegistry::Init() {
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_SESSION_ONLY), CONTENT_SETTING_SESSION_ONLY),
WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE,
WebsiteSettingsRegistry::ALL_PLATFORMS,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_IMAGES, "images", CONTENT_SETTING_ALLOW, Register(CONTENT_SETTINGS_TYPE_IMAGES, "images", CONTENT_SETTING_ALLOW,
...@@ -132,6 +133,8 @@ void ContentSettingsRegistry::Init() { ...@@ -132,6 +133,8 @@ void ContentSettingsRegistry::Init() {
kExtensionScheme), kExtensionScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_JAVASCRIPT, "javascript", Register(CONTENT_SETTINGS_TYPE_JAVASCRIPT, "javascript",
...@@ -140,6 +143,8 @@ void ContentSettingsRegistry::Init() { ...@@ -140,6 +143,8 @@ void ContentSettingsRegistry::Init() {
kExtensionScheme), kExtensionScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_PLUGINS, "plugins", Register(CONTENT_SETTINGS_TYPE_PLUGINS, "plugins",
...@@ -150,6 +155,8 @@ void ContentSettingsRegistry::Init() { ...@@ -150,6 +155,8 @@ void ContentSettingsRegistry::Init() {
CONTENT_SETTING_ASK, CONTENT_SETTING_ASK,
CONTENT_SETTING_DETECT_IMPORTANT_CONTENT), CONTENT_SETTING_DETECT_IMPORTANT_CONTENT),
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_POPUPS, "popups", CONTENT_SETTING_BLOCK, Register(CONTENT_SETTINGS_TYPE_POPUPS, "popups", CONTENT_SETTING_BLOCK,
...@@ -158,6 +165,7 @@ void ContentSettingsRegistry::Init() { ...@@ -158,6 +165,7 @@ void ContentSettingsRegistry::Init() {
kExtensionScheme), kExtensionScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
WebsiteSettingsRegistry::ALL_PLATFORMS,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_GEOLOCATION, "geolocation", Register(CONTENT_SETTINGS_TYPE_GEOLOCATION, "geolocation",
...@@ -166,6 +174,8 @@ void ContentSettingsRegistry::Init() { ...@@ -166,6 +174,8 @@ void ContentSettingsRegistry::Init() {
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK), CONTENT_SETTING_ASK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, "notifications", Register(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, "notifications",
...@@ -174,6 +184,8 @@ void ContentSettingsRegistry::Init() { ...@@ -174,6 +184,8 @@ void ContentSettingsRegistry::Init() {
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK), CONTENT_SETTING_ASK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
// See also NotificationPermissionContext::DecidePermission which // See also NotificationPermissionContext::DecidePermission which
// implements additional incognito exceptions. // implements additional incognito exceptions.
ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW); ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW);
...@@ -183,6 +195,8 @@ void ContentSettingsRegistry::Init() { ...@@ -183,6 +195,8 @@ void ContentSettingsRegistry::Init() {
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_ASK), ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_ASK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_MOUSELOCK, "mouselock", CONTENT_SETTING_ASK, Register(CONTENT_SETTINGS_TYPE_MOUSELOCK, "mouselock", CONTENT_SETTING_ASK,
...@@ -191,6 +205,8 @@ void ContentSettingsRegistry::Init() { ...@@ -191,6 +205,8 @@ void ContentSettingsRegistry::Init() {
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK), CONTENT_SETTING_ASK),
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, "media-stream-mic", Register(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, "media-stream-mic",
...@@ -199,6 +215,8 @@ void ContentSettingsRegistry::Init() { ...@@ -199,6 +215,8 @@ void ContentSettingsRegistry::Init() {
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK), CONTENT_SETTING_ASK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, "media-stream-camera", Register(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, "media-stream-camera",
...@@ -207,6 +225,8 @@ void ContentSettingsRegistry::Init() { ...@@ -207,6 +225,8 @@ void ContentSettingsRegistry::Init() {
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK), CONTENT_SETTING_ASK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_PPAPI_BROKER, "ppapi-broker", Register(CONTENT_SETTINGS_TYPE_PPAPI_BROKER, "ppapi-broker",
...@@ -215,6 +235,7 @@ void ContentSettingsRegistry::Init() { ...@@ -215,6 +235,7 @@ void ContentSettingsRegistry::Init() {
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK), CONTENT_SETTING_ASK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, "automatic-downloads", Register(CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, "automatic-downloads",
...@@ -224,6 +245,8 @@ void ContentSettingsRegistry::Init() { ...@@ -224,6 +245,8 @@ void ContentSettingsRegistry::Init() {
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK), CONTENT_SETTING_ASK),
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, "midi-sysex", CONTENT_SETTING_ASK, Register(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, "midi-sysex", CONTENT_SETTING_ASK,
...@@ -231,6 +254,8 @@ void ContentSettingsRegistry::Init() { ...@@ -231,6 +254,8 @@ void ContentSettingsRegistry::Init() {
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK), CONTENT_SETTING_ASK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, "push-messaging", Register(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, "push-messaging",
...@@ -239,30 +264,35 @@ void ContentSettingsRegistry::Init() { ...@@ -239,30 +264,35 @@ void ContentSettingsRegistry::Init() {
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK), CONTENT_SETTING_ASK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW); ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW);
#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
Register(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, Register(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
"protected-media-identifier", CONTENT_SETTING_ASK, "protected-media-identifier", CONTENT_SETTING_ASK,
WebsiteSettingsInfo::UNSYNCABLE, WhitelistedSchemes(), WebsiteSettingsInfo::UNSYNCABLE, WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK), CONTENT_SETTING_ASK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
WebsiteSettingsRegistry::PLATFORM_ANDROID |
WebsiteSettingsRegistry::PLATFORM_CHROMEOS,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
#endif
Register(CONTENT_SETTINGS_TYPE_DURABLE_STORAGE, "durable-storage", Register(CONTENT_SETTINGS_TYPE_DURABLE_STORAGE, "durable-storage",
CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(), WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_KEYGEN, "keygen", Register(CONTENT_SETTINGS_TYPE_KEYGEN, "keygen", CONTENT_SETTING_BLOCK,
CONTENT_SETTING_BLOCK, WebsiteSettingsInfo::SYNCABLE, WebsiteSettingsInfo::SYNCABLE, WhitelistedSchemes(),
WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, "background-sync", Register(CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, "background-sync",
...@@ -270,13 +300,16 @@ void ContentSettingsRegistry::Init() { ...@@ -270,13 +300,16 @@ void ContentSettingsRegistry::Init() {
WhitelistedSchemes(), WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_AUTOPLAY, "autoplay", Register(CONTENT_SETTINGS_TYPE_AUTOPLAY, "autoplay", CONTENT_SETTING_ALLOW,
CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::UNSYNCABLE, WebsiteSettingsInfo::UNSYNCABLE, WhitelistedSchemes(),
WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
// Content settings that aren't used to store any data. TODO(raymes): use a // Content settings that aren't used to store any data. TODO(raymes): use a
...@@ -287,12 +320,14 @@ void ContentSettingsRegistry::Init() { ...@@ -287,12 +320,14 @@ void ContentSettingsRegistry::Init() {
CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE, CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(), ValidSettings(), WhitelistedSchemes(), ValidSettings(),
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, "mixed-script", Register(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, "mixed-script",
CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE, CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(), ValidSettings(), WhitelistedSchemes(), ValidSettings(),
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_BLUETOOTH_GUARD, "bluetooth-guard", Register(CONTENT_SETTINGS_TYPE_BLUETOOTH_GUARD, "bluetooth-guard",
...@@ -300,6 +335,8 @@ void ContentSettingsRegistry::Init() { ...@@ -300,6 +335,8 @@ void ContentSettingsRegistry::Init() {
WhitelistedSchemes(), WhitelistedSchemes(),
ValidSettings(CONTENT_SETTING_ASK, CONTENT_SETTING_BLOCK), ValidSettings(CONTENT_SETTING_ASK, CONTENT_SETTING_BLOCK),
WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO); ContentSettingsInfo::INHERIT_IN_INCOGNITO);
} }
...@@ -311,6 +348,7 @@ void ContentSettingsRegistry::Register( ...@@ -311,6 +348,7 @@ void ContentSettingsRegistry::Register(
const std::vector<std::string>& whitelisted_schemes, const std::vector<std::string>& whitelisted_schemes,
const std::set<ContentSetting>& valid_settings, const std::set<ContentSetting>& valid_settings,
WebsiteSettingsInfo::ScopingType scoping_type, WebsiteSettingsInfo::ScopingType scoping_type,
Platforms platforms,
ContentSettingsInfo::IncognitoBehavior incognito_behavior) { ContentSettingsInfo::IncognitoBehavior incognito_behavior) {
// Ensure that nothing has been registered yet for the given type. // Ensure that nothing has been registered yet for the given type.
DCHECK(!website_settings_registry_->Get(type)); DCHECK(!website_settings_registry_->Get(type));
...@@ -324,8 +362,14 @@ void ContentSettingsRegistry::Register( ...@@ -324,8 +362,14 @@ void ContentSettingsRegistry::Register(
const WebsiteSettingsInfo* website_settings_info = const WebsiteSettingsInfo* website_settings_info =
website_settings_registry_->Register( website_settings_registry_->Register(
type, name, std::move(default_value), sync_status, type, name, std::move(default_value), sync_status,
WebsiteSettingsInfo::NOT_LOSSY, scoping_type, WebsiteSettingsInfo::NOT_LOSSY, scoping_type, platforms,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO); WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
// WebsiteSettingsInfo::Register() will return nullptr if content setting type
// is not used on the current platform and doesn't need to be registered.
if (!website_settings_info)
return;
DCHECK(!ContainsKey(content_settings_info_, type)); DCHECK(!ContainsKey(content_settings_info_, type));
content_settings_info_[type] = base::WrapUnique( content_settings_info_[type] = base::WrapUnique(
new ContentSettingsInfo(website_settings_info, whitelisted_schemes, new ContentSettingsInfo(website_settings_info, whitelisted_schemes,
......
...@@ -54,6 +54,8 @@ class ContentSettingsRegistry { ...@@ -54,6 +54,8 @@ class ContentSettingsRegistry {
void Init(); void Init();
typedef uint32_t Platforms;
// Register a new content setting. This maps an origin to an ALLOW/ASK/BLOCK // Register a new content setting. This maps an origin to an ALLOW/ASK/BLOCK
// value (see the ContentSetting enum). // value (see the ContentSetting enum).
void Register(ContentSettingsType type, void Register(ContentSettingsType type,
...@@ -63,6 +65,7 @@ class ContentSettingsRegistry { ...@@ -63,6 +65,7 @@ class ContentSettingsRegistry {
const std::vector<std::string>& whitelisted_schemes, const std::vector<std::string>& whitelisted_schemes,
const std::set<ContentSetting>& valid_settings, const std::set<ContentSetting>& valid_settings,
WebsiteSettingsInfo::ScopingType scoping_type, WebsiteSettingsInfo::ScopingType scoping_type,
Platforms platforms,
ContentSettingsInfo::IncognitoBehavior incognito_behavior); ContentSettingsInfo::IncognitoBehavior incognito_behavior);
Map content_settings_info_; Map content_settings_info_;
......
...@@ -32,6 +32,25 @@ class ContentSettingsRegistryTest : public testing::Test { ...@@ -32,6 +32,25 @@ class ContentSettingsRegistryTest : public testing::Test {
ContentSettingsRegistry registry_; ContentSettingsRegistry registry_;
}; };
TEST_F(ContentSettingsRegistryTest, GetPlatformDependent) {
#if defined(OS_IOS)
// Javascript shouldn't be registered on iOS.
EXPECT_FALSE(registry()->Get(CONTENT_SETTINGS_TYPE_JAVASCRIPT));
#endif
// Protected media identifier only get registered on android and chromeos.
#if defined(ANDROID) | defined(OS_CHROMEOS)
EXPECT_TRUE(
registry()->Get(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER));
#else
EXPECT_FALSE(
registry()->Get(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER));
#endif
// Cookies is registered on all platforms.
EXPECT_TRUE(registry()->Get(CONTENT_SETTINGS_TYPE_COOKIES));
}
TEST_F(ContentSettingsRegistryTest, Properties) { TEST_F(ContentSettingsRegistryTest, Properties) {
// The cookies type should be registered. // The cookies type should be registered.
const ContentSettingsInfo* info = const ContentSettingsInfo* info =
...@@ -62,8 +81,13 @@ TEST_F(ContentSettingsRegistryTest, Properties) { ...@@ -62,8 +81,13 @@ TEST_F(ContentSettingsRegistryTest, Properties) {
ASSERT_TRUE( ASSERT_TRUE(
website_settings_info->initial_default_value()->GetAsInteger(&setting)); website_settings_info->initial_default_value()->GetAsInteger(&setting));
EXPECT_EQ(CONTENT_SETTING_ALLOW, setting); EXPECT_EQ(CONTENT_SETTING_ALLOW, setting);
#if defined(OS_IOS)
EXPECT_EQ(PrefRegistry::NO_REGISTRATION_FLAGS,
website_settings_info->GetPrefRegistrationFlags());
#else
EXPECT_EQ(user_prefs::PrefRegistrySyncable::SYNCABLE_PREF, EXPECT_EQ(user_prefs::PrefRegistrySyncable::SYNCABLE_PREF,
website_settings_info->GetPrefRegistrationFlags()); website_settings_info->GetPrefRegistrationFlags());
#endif
// Check the WebsiteSettingsInfo is registered correctly. // Check the WebsiteSettingsInfo is registered correctly.
EXPECT_EQ(website_settings_registry()->Get(CONTENT_SETTINGS_TYPE_COOKIES), EXPECT_EQ(website_settings_registry()->Get(CONTENT_SETTINGS_TYPE_COOKIES),
...@@ -86,7 +110,12 @@ TEST_F(ContentSettingsRegistryTest, Iteration) { ...@@ -86,7 +110,12 @@ TEST_F(ContentSettingsRegistryTest, Iteration) {
} }
} }
#if defined(OS_IOS)
EXPECT_FALSE(plugins_found);
#else
EXPECT_TRUE(plugins_found); EXPECT_TRUE(plugins_found);
#endif
EXPECT_TRUE(cookies_found); EXPECT_TRUE(cookies_found);
} }
......
...@@ -459,15 +459,21 @@ void HostContentSettingsMap::SetContentSettingDefaultScope( ...@@ -459,15 +459,21 @@ void HostContentSettingsMap::SetContentSettingDefaultScope(
} }
void HostContentSettingsMap::MigrateKeygenSettings() { void HostContentSettingsMap::MigrateKeygenSettings() {
const content_settings::ContentSettingsInfo* info =
content_settings::ContentSettingsRegistry::GetInstance()->Get(
CONTENT_SETTINGS_TYPE_KEYGEN);
if (info) {
ContentSettingsForOneType settings; ContentSettingsForOneType settings;
GetSettingsForOneType(CONTENT_SETTINGS_TYPE_KEYGEN, std::string(), &settings); GetSettingsForOneType(CONTENT_SETTINGS_TYPE_KEYGEN, std::string(),
&settings);
for (const ContentSettingPatternSource& setting_entry : settings) { for (const ContentSettingPatternSource& setting_entry : settings) {
// Migrate user preference settings only. // Migrate user preference settings only.
if (setting_entry.source != "preference") if (setting_entry.source != "preference")
continue; continue;
// Migrate old-format settings only. // Migrate old-format settings only.
if (setting_entry.secondary_pattern != ContentSettingsPattern::Wildcard()) { if (setting_entry.secondary_pattern !=
ContentSettingsPattern::Wildcard()) {
GURL url(setting_entry.primary_pattern.ToString()); GURL url(setting_entry.primary_pattern.ToString());
// Pull out the value of the old-format setting. Only do this if the // Pull out the value of the old-format setting. Only do this if the
// patterns are as we expect them to be, otherwise the setting will just // patterns are as we expect them to be, otherwise the setting will just
...@@ -479,14 +485,16 @@ void HostContentSettingsMap::MigrateKeygenSettings() { ...@@ -479,14 +485,16 @@ void HostContentSettingsMap::MigrateKeygenSettings() {
url, url, CONTENT_SETTINGS_TYPE_KEYGEN, std::string()); url, url, CONTENT_SETTINGS_TYPE_KEYGEN, std::string());
} }
// Remove the old pattern. // Remove the old pattern.
SetContentSettingCustomScope( SetContentSettingCustomScope(setting_entry.primary_pattern,
setting_entry.primary_pattern, setting_entry.secondary_pattern, setting_entry.secondary_pattern,
CONTENT_SETTINGS_TYPE_KEYGEN, std::string(), CONTENT_SETTING_DEFAULT); CONTENT_SETTINGS_TYPE_KEYGEN,
std::string(), CONTENT_SETTING_DEFAULT);
// Set the new pattern. // Set the new pattern.
SetContentSettingDefaultScope(url, GURL(), CONTENT_SETTINGS_TYPE_KEYGEN, SetContentSettingDefaultScope(url, GURL(), CONTENT_SETTINGS_TYPE_KEYGEN,
std::string(), content_setting); std::string(), content_setting);
} }
} }
}
} }
void HostContentSettingsMap::RecordNumberOfExceptions() { void HostContentSettingsMap::RecordNumberOfExceptions() {
......
...@@ -59,7 +59,36 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Register( ...@@ -59,7 +59,36 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Register(
WebsiteSettingsInfo::SyncStatus sync_status, WebsiteSettingsInfo::SyncStatus sync_status,
WebsiteSettingsInfo::LossyStatus lossy_status, WebsiteSettingsInfo::LossyStatus lossy_status,
WebsiteSettingsInfo::ScopingType scoping_type, WebsiteSettingsInfo::ScopingType scoping_type,
Platforms platform,
WebsiteSettingsInfo::IncognitoBehavior incognito_behavior) { WebsiteSettingsInfo::IncognitoBehavior incognito_behavior) {
#if defined(OS_WIN)
if (!(platform & PLATFORM_WINDOWS))
return nullptr;
#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
if (!(platform & PLATFORM_LINUX))
return nullptr;
#elif defined(OS_MACOSX) && !defined(OS_IOS)
if (!(platform & PLATFORM_MAC))
return nullptr;
#elif defined(OS_CHROMEOS)
if (!(platform & PLATFORM_CHROMEOS))
return nullptr;
#elif defined(OS_ANDROID)
if (!(platform & PLATFORM_ANDROID))
return nullptr;
#elif defined(OS_IOS)
if (!(platform & PLATFORM_IOS))
return nullptr;
// Only default settings for Cookies and Popups are used in iOS. Exceptions
// and all the other content setting types are not used in iOS currently. So
// make content settings unsyncable on iOS for now.
// TODO(lshang): address this once we have proper content settings on iOS.
sync_status = WebsiteSettingsInfo::UNSYNCABLE;
#else
#error "Unsupported platform"
#endif
WebsiteSettingsInfo* info = new WebsiteSettingsInfo( WebsiteSettingsInfo* info = new WebsiteSettingsInfo(
type, name, std::move(initial_default_value), sync_status, lossy_status, type, name, std::move(initial_default_value), sync_status, lossy_status,
scoping_type, incognito_behavior); scoping_type, incognito_behavior);
...@@ -87,24 +116,28 @@ void WebsiteSettingsRegistry::Init() { ...@@ -87,24 +116,28 @@ void WebsiteSettingsRegistry::Init() {
Register(CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, Register(CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE,
"auto-select-certificate", nullptr, WebsiteSettingsInfo::UNSYNCABLE, "auto-select-certificate", nullptr, WebsiteSettingsInfo::UNSYNCABLE,
WebsiteSettingsInfo::NOT_LOSSY, WebsiteSettingsInfo::NOT_LOSSY,
WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE, ALL_PLATFORMS,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO); WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS, "ssl-cert-decisions", Register(CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS,
nullptr, WebsiteSettingsInfo::UNSYNCABLE, "ssl-cert-decisions", nullptr, WebsiteSettingsInfo::UNSYNCABLE,
WebsiteSettingsInfo::NOT_LOSSY, WebsiteSettingsInfo::NOT_LOSSY,
WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
DESKTOP | PLATFORM_ANDROID,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO); WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_APP_BANNER, "app-banner", nullptr, Register(CONTENT_SETTINGS_TYPE_APP_BANNER, "app-banner", nullptr,
WebsiteSettingsInfo::UNSYNCABLE, WebsiteSettingsInfo::LOSSY, WebsiteSettingsInfo::UNSYNCABLE, WebsiteSettingsInfo::LOSSY,
WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE,
DESKTOP | PLATFORM_ANDROID,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO); WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, "site-engagement", nullptr, Register(CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, "site-engagement", nullptr,
WebsiteSettingsInfo::UNSYNCABLE, WebsiteSettingsInfo::LOSSY, WebsiteSettingsInfo::UNSYNCABLE, WebsiteSettingsInfo::LOSSY,
WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
DESKTOP | PLATFORM_ANDROID,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO); WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_USB_CHOOSER_DATA, "usb-chooser-data", nullptr, Register(CONTENT_SETTINGS_TYPE_USB_CHOOSER_DATA, "usb-chooser-data", nullptr,
WebsiteSettingsInfo::UNSYNCABLE, WebsiteSettingsInfo::NOT_LOSSY, WebsiteSettingsInfo::UNSYNCABLE, WebsiteSettingsInfo::NOT_LOSSY,
WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE, WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
DESKTOP | PLATFORM_ANDROID,
WebsiteSettingsInfo::DONT_INHERIT_IN_INCOGNITO); WebsiteSettingsInfo::DONT_INHERIT_IN_INCOGNITO);
} }
......
...@@ -25,6 +25,27 @@ namespace content_settings { ...@@ -25,6 +25,27 @@ namespace content_settings {
// const. // const.
class WebsiteSettingsRegistry { class WebsiteSettingsRegistry {
public: public:
typedef uint32_t Platforms;
// TODO(lshang): Remove this enum when content settings can be registered from
// within the component in which they are used. When this is possible then
// ifdefs can be contained within each component.
enum Platform : Platforms {
PLATFORM_WINDOWS = 1 << 0,
PLATFORM_LINUX = 1 << 1,
PLATFORM_CHROMEOS = 1 << 2,
PLATFORM_MAC = 1 << 3,
PLATFORM_ANDROID = 1 << 4,
PLATFORM_IOS = 1 << 5,
// Settings only applied to win, mac, linux and chromeos.
DESKTOP =
PLATFORM_WINDOWS | PLATFORM_LINUX | PLATFORM_CHROMEOS | PLATFORM_MAC,
// Settings applied to all platforms, including win, mac, linux, chromeos,
// android, ios.
ALL_PLATFORMS = DESKTOP | PLATFORM_ANDROID | PLATFORM_IOS,
};
using Map = using Map =
std::map<ContentSettingsType, std::unique_ptr<WebsiteSettingsInfo>>; std::map<ContentSettingsType, std::unique_ptr<WebsiteSettingsInfo>>;
using const_iterator = MapValueIterator<typename Map::const_iterator, using const_iterator = MapValueIterator<typename Map::const_iterator,
...@@ -41,6 +62,8 @@ class WebsiteSettingsRegistry { ...@@ -41,6 +62,8 @@ class WebsiteSettingsRegistry {
// Register a new website setting. This maps an origin to an arbitrary // Register a new website setting. This maps an origin to an arbitrary
// base::Value. Returns a pointer to the registered WebsiteSettingsInfo which // base::Value. Returns a pointer to the registered WebsiteSettingsInfo which
// is owned by the registry. // is owned by the registry.
// A nullptr will be returned if registration fails (for example if
// |platforms| doesn't match the current platform).
const WebsiteSettingsInfo* Register( const WebsiteSettingsInfo* Register(
ContentSettingsType type, ContentSettingsType type,
const std::string& name, const std::string& name,
...@@ -48,6 +71,7 @@ class WebsiteSettingsRegistry { ...@@ -48,6 +71,7 @@ class WebsiteSettingsRegistry {
WebsiteSettingsInfo::SyncStatus sync_status, WebsiteSettingsInfo::SyncStatus sync_status,
WebsiteSettingsInfo::LossyStatus lossy_status, WebsiteSettingsInfo::LossyStatus lossy_status,
WebsiteSettingsInfo::ScopingType scoping_type, WebsiteSettingsInfo::ScopingType scoping_type,
Platforms platforms,
WebsiteSettingsInfo::IncognitoBehavior incognito_behavior); WebsiteSettingsInfo::IncognitoBehavior incognito_behavior);
const_iterator begin() const; const_iterator begin() const;
......
...@@ -25,30 +25,33 @@ class WebsiteSettingsRegistryTest : public testing::Test { ...@@ -25,30 +25,33 @@ class WebsiteSettingsRegistryTest : public testing::Test {
}; };
TEST_F(WebsiteSettingsRegistryTest, Get) { TEST_F(WebsiteSettingsRegistryTest, Get) {
// CONTENT_SETTINGS_TYPE_APP_BANNER should be registered. // CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE should be registered.
const WebsiteSettingsInfo* info = const WebsiteSettingsInfo* info =
registry()->Get(CONTENT_SETTINGS_TYPE_APP_BANNER); registry()->Get(CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE);
ASSERT_TRUE(info); ASSERT_TRUE(info);
EXPECT_EQ(CONTENT_SETTINGS_TYPE_APP_BANNER, info->type()); EXPECT_EQ(CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, info->type());
EXPECT_EQ("app-banner", info->name()); EXPECT_EQ("auto-select-certificate", info->name());
} }
TEST_F(WebsiteSettingsRegistryTest, GetByName) { TEST_F(WebsiteSettingsRegistryTest, GetByName) {
// Random string shouldn't be registered. // Random string shouldn't be registered.
EXPECT_FALSE(registry()->GetByName("abc")); EXPECT_FALSE(registry()->GetByName("abc"));
// "app-banner" should be registered. // "auto-select-certificate" should be registered.
const WebsiteSettingsInfo* info = registry()->GetByName("app-banner"); const WebsiteSettingsInfo* info =
registry()->GetByName("auto-select-certificate");
ASSERT_TRUE(info); ASSERT_TRUE(info);
EXPECT_EQ(CONTENT_SETTINGS_TYPE_APP_BANNER, info->type()); EXPECT_EQ(CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, info->type());
EXPECT_EQ("app-banner", info->name()); EXPECT_EQ("auto-select-certificate", info->name());
EXPECT_EQ(registry()->Get(CONTENT_SETTINGS_TYPE_APP_BANNER), info); EXPECT_EQ(registry()->Get(CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE),
info);
// Register a new setting. // Register a new setting.
registry()->Register(static_cast<ContentSettingsType>(10), "test", nullptr, registry()->Register(static_cast<ContentSettingsType>(10), "test", nullptr,
WebsiteSettingsInfo::UNSYNCABLE, WebsiteSettingsInfo::UNSYNCABLE,
WebsiteSettingsInfo::LOSSY, WebsiteSettingsInfo::LOSSY,
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
WebsiteSettingsRegistry::ALL_PLATFORMS,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO); WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
info = registry()->GetByName("test"); info = registry()->GetByName("test");
ASSERT_TRUE(info); ASSERT_TRUE(info);
...@@ -57,17 +60,31 @@ TEST_F(WebsiteSettingsRegistryTest, GetByName) { ...@@ -57,17 +60,31 @@ TEST_F(WebsiteSettingsRegistryTest, GetByName) {
EXPECT_EQ(registry()->Get(static_cast<ContentSettingsType>(10)), info); EXPECT_EQ(registry()->Get(static_cast<ContentSettingsType>(10)), info);
} }
TEST_F(WebsiteSettingsRegistryTest, GetPlatformDependent) {
#if defined(OS_IOS)
// App banner shouldn't be registered on iOS.
EXPECT_FALSE(registry()->Get(CONTENT_SETTINGS_TYPE_APP_BANNER));
#else
// App banner should be registered on other platforms.
EXPECT_TRUE(registry()->Get(CONTENT_SETTINGS_TYPE_APP_BANNER));
#endif
// Auto select certificate is registered on all platforms.
EXPECT_TRUE(registry()->Get(CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE));
}
TEST_F(WebsiteSettingsRegistryTest, Properties) { TEST_F(WebsiteSettingsRegistryTest, Properties) {
// "app-banner" should be registered. // "auto-select-certificate" should be registered.
const WebsiteSettingsInfo* info = const WebsiteSettingsInfo* info =
registry()->Get(CONTENT_SETTINGS_TYPE_APP_BANNER); registry()->Get(CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE);
ASSERT_TRUE(info); ASSERT_TRUE(info);
EXPECT_EQ("profile.content_settings.exceptions.app_banner", EXPECT_EQ("profile.content_settings.exceptions.auto_select_certificate",
info->pref_name()); info->pref_name());
EXPECT_EQ("profile.default_content_setting_values.app_banner", EXPECT_EQ("profile.default_content_setting_values.auto_select_certificate",
info->default_value_pref_name()); info->default_value_pref_name());
ASSERT_FALSE(info->initial_default_value()); ASSERT_FALSE(info->initial_default_value());
EXPECT_EQ(PrefRegistry::LOSSY_PREF, info->GetPrefRegistrationFlags()); EXPECT_EQ(PrefRegistry::NO_REGISTRATION_FLAGS,
info->GetPrefRegistrationFlags());
// Register a new setting. // Register a new setting.
registry()->Register(static_cast<ContentSettingsType>(10), "test", registry()->Register(static_cast<ContentSettingsType>(10), "test",
...@@ -75,6 +92,7 @@ TEST_F(WebsiteSettingsRegistryTest, Properties) { ...@@ -75,6 +92,7 @@ TEST_F(WebsiteSettingsRegistryTest, Properties) {
WebsiteSettingsInfo::SYNCABLE, WebsiteSettingsInfo::SYNCABLE,
WebsiteSettingsInfo::LOSSY, WebsiteSettingsInfo::LOSSY,
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
WebsiteSettingsRegistry::ALL_PLATFORMS,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO); WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
info = registry()->Get(static_cast<ContentSettingsType>(10)); info = registry()->Get(static_cast<ContentSettingsType>(10));
ASSERT_TRUE(info); ASSERT_TRUE(info);
...@@ -84,9 +102,13 @@ TEST_F(WebsiteSettingsRegistryTest, Properties) { ...@@ -84,9 +102,13 @@ TEST_F(WebsiteSettingsRegistryTest, Properties) {
int setting; int setting;
ASSERT_TRUE(info->initial_default_value()->GetAsInteger(&setting)); ASSERT_TRUE(info->initial_default_value()->GetAsInteger(&setting));
EXPECT_EQ(999, setting); EXPECT_EQ(999, setting);
#if defined(OS_IOS)
EXPECT_EQ(PrefRegistry::LOSSY_PREF, info->GetPrefRegistrationFlags());
#else
EXPECT_EQ(PrefRegistry::LOSSY_PREF | EXPECT_EQ(PrefRegistry::LOSSY_PREF |
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF,
info->GetPrefRegistrationFlags()); info->GetPrefRegistrationFlags());
#endif
EXPECT_EQ(WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, EXPECT_EQ(WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
info->scoping_type()); info->scoping_type());
EXPECT_EQ(WebsiteSettingsInfo::INHERIT_IN_INCOGNITO, EXPECT_EQ(WebsiteSettingsInfo::INHERIT_IN_INCOGNITO,
...@@ -99,6 +121,7 @@ TEST_F(WebsiteSettingsRegistryTest, Iteration) { ...@@ -99,6 +121,7 @@ TEST_F(WebsiteSettingsRegistryTest, Iteration) {
WebsiteSettingsInfo::SYNCABLE, WebsiteSettingsInfo::SYNCABLE,
WebsiteSettingsInfo::LOSSY, WebsiteSettingsInfo::LOSSY,
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE, WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
WebsiteSettingsRegistry::ALL_PLATFORMS,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO); WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
bool found = false; bool found = false;
......
...@@ -37,9 +37,7 @@ enum ContentSettingsType { ...@@ -37,9 +37,7 @@ enum ContentSettingsType {
CONTENT_SETTINGS_TYPE_MIDI_SYSEX, CONTENT_SETTINGS_TYPE_MIDI_SYSEX,
CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS, CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS,
#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
#endif
CONTENT_SETTINGS_TYPE_APP_BANNER, CONTENT_SETTINGS_TYPE_APP_BANNER,
CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT,
CONTENT_SETTINGS_TYPE_DURABLE_STORAGE, CONTENT_SETTINGS_TYPE_DURABLE_STORAGE,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment