Index: components/content_settings/core/browser/content_settings_default_provider.cc |
diff --git a/components/content_settings/core/browser/content_settings_default_provider.cc b/components/content_settings/core/browser/content_settings_default_provider.cc |
index 6adccfd8285055f29cd90a3ead5e3ebc166f6915..8b6127c70959eaf23eda015a0310d5f6b8446a54 100644 |
--- a/components/content_settings/core/browser/content_settings_default_provider.cc |
+++ b/components/content_settings/core/browser/content_settings_default_provider.cc |
@@ -18,6 +18,8 @@ |
#include "components/content_settings/core/browser/content_settings_rule.h" |
#include "components/content_settings/core/browser/content_settings_utils.h" |
#include "components/content_settings/core/browser/plugins_field_trial.h" |
+#include "components/content_settings/core/browser/website_settings_info.h" |
+#include "components/content_settings/core/browser/website_settings_registry.h" |
#include "components/content_settings/core/common/content_settings.h" |
#include "components/content_settings/core/common/content_settings_pattern.h" |
#include "components/content_settings/core/common/pref_names.h" |
@@ -35,58 +37,25 @@ const char kObsoleteDefaultContentSettings[] = |
const char kObsoleteMigratedDefaultContentSettings[] = |
"profile.migrated_default_content_settings"; |
-struct DefaultContentSettingInfo { |
- // The profile preference associated with this default setting. |
- const char* pref_name; |
- |
- // The default value of this default setting. |
- const ContentSetting default_value; |
-}; |
- |
-// The corresponding preference and default value for each default content |
-// setting. This array must be kept in sync with the enum |ContentSettingsType|. |
-const DefaultContentSettingInfo kDefaultSettings[] = { |
- {prefs::kDefaultCookiesSetting, CONTENT_SETTING_ALLOW}, |
- {prefs::kDefaultImagesSetting, CONTENT_SETTING_ALLOW}, |
- {prefs::kDefaultJavaScriptSetting, CONTENT_SETTING_ALLOW}, |
- {prefs::kDefaultPluginsSetting, CONTENT_SETTING_DEFAULT}, |
- {prefs::kDefaultPopupsSetting, CONTENT_SETTING_BLOCK}, |
- {prefs::kDefaultGeolocationSetting, CONTENT_SETTING_ASK}, |
- {prefs::kDefaultNotificationsSetting, CONTENT_SETTING_ASK}, |
- {prefs::kDefaultAutoSelectCertificateSetting, CONTENT_SETTING_DEFAULT}, |
- {prefs::kDefaultFullScreenSetting, CONTENT_SETTING_ASK}, |
- {prefs::kDefaultMouseLockSetting, CONTENT_SETTING_ASK}, |
- {prefs::kDefaultMixedScriptSetting, CONTENT_SETTING_DEFAULT}, |
- {prefs::kDefaultMediaStreamSetting, CONTENT_SETTING_ASK}, |
- {prefs::kDefaultMediaStreamMicSetting, CONTENT_SETTING_ASK}, |
- {prefs::kDefaultMediaStreamCameraSetting, CONTENT_SETTING_ASK}, |
- {prefs::kDefaultProtocolHandlersSetting, CONTENT_SETTING_DEFAULT}, |
- {prefs::kDefaultPpapiBrokerSetting, CONTENT_SETTING_ASK}, |
- {prefs::kDefaultAutomaticDownloadsSetting, CONTENT_SETTING_ASK}, |
- {prefs::kDefaultMidiSysexSetting, CONTENT_SETTING_ASK}, |
- {prefs::kDefaultPushMessagingSetting, CONTENT_SETTING_ASK}, |
- {prefs::kDefaultSSLCertDecisionsSetting, CONTENT_SETTING_ALLOW}, |
-#if defined(OS_WIN) |
- {prefs::kDefaultMetroSwitchToDesktopSetting, CONTENT_SETTING_ASK}, |
-#elif defined(OS_ANDROID) || defined(OS_CHROMEOS) |
- {prefs::kDefaultProtectedMediaIdentifierSetting, CONTENT_SETTING_ASK}, |
-#endif |
- {prefs::kDefaultAppBannerSetting, CONTENT_SETTING_DEFAULT}, |
- {prefs::kDefaultSiteEngagementSetting, CONTENT_SETTING_DEFAULT}, |
- {prefs::kDefaultDurableStorageSetting, CONTENT_SETTING_ASK}, |
-}; |
-static_assert(arraysize(kDefaultSettings) == CONTENT_SETTINGS_NUM_TYPES, |
- "kDefaultSettings should have CONTENT_SETTINGS_NUM_TYPES " |
- "elements"); |
- |
ContentSetting GetDefaultValue(ContentSettingsType type) { |
if (type == CONTENT_SETTINGS_TYPE_PLUGINS) |
return PluginsFieldTrial::GetDefaultPluginsContentSetting(); |
- return kDefaultSettings[type].default_value; |
+ |
+ const WebsiteSettingsInfo* info = |
+ WebsiteSettingsRegistry::GetInstance()->Get(type); |
+ const base::Value* initial_default = info->initial_default_value(); |
+ if (!initial_default) |
+ return CONTENT_SETTING_DEFAULT; |
+ int result = 0; |
+ bool success = initial_default->GetAsInteger(&result); |
+ DCHECK(success); |
+ return static_cast<ContentSetting>(result); |
} |
-const char* GetPrefName(ContentSettingsType type) { |
- return kDefaultSettings[type].pref_name; |
+const std::string& GetPrefName(ContentSettingsType type) { |
+ return WebsiteSettingsRegistry::GetInstance() |
+ ->Get(type) |
+ ->default_value_pref_name(); |
} |
class DefaultRuleIterator : public RuleIterator { |