| Index: components/content_settings/core/browser/content_settings_pref.cc
|
| diff --git a/components/content_settings/core/browser/content_settings_pref.cc b/components/content_settings/core/browser/content_settings_pref.cc
|
| index 95d1cd6c87de6e5ba58ee3e6c791d3140f8ffb98..c79c9733d87126e7a457d5a713872af1be04b00d 100644
|
| --- a/components/content_settings/core/browser/content_settings_pref.cc
|
| +++ b/components/content_settings/core/browser/content_settings_pref.cc
|
| @@ -11,6 +11,8 @@
|
| #include "base/prefs/scoped_user_pref_update.h"
|
| #include "base/strings/string_split.h"
|
| #include "base/time/clock.h"
|
| +#include "components/content_settings/core/browser/content_settings_info.h"
|
| +#include "components/content_settings/core/browser/content_settings_registry.h"
|
| #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/host_content_settings_map.h"
|
| @@ -33,6 +35,23 @@ bool SupportsResourceIdentifiers(ContentSettingsType content_type) {
|
| return content_type == CONTENT_SETTINGS_TYPE_PLUGINS;
|
| }
|
|
|
| +bool IsValueAllowedForType(const base::Value* value, ContentSettingsType type) {
|
| + const content_settings::ContentSettingsInfo* info =
|
| + content_settings::ContentSettingsRegistry::GetInstance()->Get(type);
|
| + if (info) {
|
| + int setting;
|
| + if (!value->GetAsInteger(&setting))
|
| + return false;
|
| + if (setting == CONTENT_SETTING_DEFAULT)
|
| + return false;
|
| + return info->IsSettingValid(IntToContentSetting(setting));
|
| + }
|
| +
|
| + // TODO(raymes): We should permit different types of base::Value for
|
| + // website settings.
|
| + return value->GetType() == base::Value::TYPE_DICTIONARY;
|
| +}
|
| +
|
| } // namespace
|
|
|
| namespace content_settings {
|
| @@ -78,6 +97,7 @@ bool ContentSettingsPref::SetWebsiteSetting(
|
| const ContentSettingsPattern& secondary_pattern,
|
| const ResourceIdentifier& resource_identifier,
|
| base::Value* in_value) {
|
| + DCHECK(!in_value || IsValueAllowedForType(in_value, content_type_));
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| DCHECK(prefs_);
|
| DCHECK(primary_pattern != ContentSettingsPattern::Wildcard() ||
|
| @@ -303,8 +323,7 @@ void ContentSettingsPref::ReadContentSettingsFromPref() {
|
| settings_dictionary->GetWithoutPathExpansion(kSettingPath, &value);
|
|
|
| if (value) {
|
| - DCHECK(
|
| - HostContentSettingsMap::IsValueAllowedForType(value, content_type_));
|
| + DCHECK(IsValueAllowedForType(value, content_type_));
|
| value_map_.SetValue(pattern_pair.first,
|
| pattern_pair.second,
|
| content_type_,
|
|
|