Index: components/content_settings/core/browser/host_content_settings_map.cc |
diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc |
index 723cd51eb125f49ee13da20c0c2e8e740daecd17..130fc26c8b4d1238aa09d3e0fb428dddc663ad38 100644 |
--- a/components/content_settings/core/browser/host_content_settings_map.cc |
+++ b/components/content_settings/core/browser/host_content_settings_map.cc |
@@ -230,12 +230,14 @@ ContentSetting HostContentSettingsMap::GetDefaultContentSettingFromProvider( |
std::unique_ptr<content_settings::RuleIterator> rule_iterator( |
provider->GetRuleIterator(content_type, std::string(), false)); |
- ContentSettingsPattern wildcard = ContentSettingsPattern::Wildcard(); |
- while (rule_iterator->HasNext()) { |
- content_settings::Rule rule = rule_iterator->Next(); |
- if (rule.primary_pattern == wildcard && |
- rule.secondary_pattern == wildcard) { |
- return content_settings::ValueToContentSetting(rule.value.get()); |
+ if (rule_iterator) { |
+ ContentSettingsPattern wildcard = ContentSettingsPattern::Wildcard(); |
+ while (rule_iterator->HasNext()) { |
+ content_settings::Rule rule = rule_iterator->Next(); |
+ if (rule.primary_pattern == wildcard && |
+ rule.secondary_pattern == wildcard) { |
+ return content_settings::ValueToContentSetting(rule.value.get()); |
+ } |
} |
} |
return CONTENT_SETTING_DEFAULT; |
@@ -790,6 +792,9 @@ void HostContentSettingsMap::AddSettingsForOneType( |
bool incognito) const { |
std::unique_ptr<content_settings::RuleIterator> rule_iterator( |
provider->GetRuleIterator(content_type, resource_identifier, incognito)); |
+ if (!rule_iterator) |
+ return; |
+ |
while (rule_iterator->HasNext()) { |
const content_settings::Rule& rule = rule_iterator->Next(); |
ContentSetting setting_value = CONTENT_SETTING_DEFAULT; |
@@ -954,15 +959,17 @@ HostContentSettingsMap::GetContentSettingValueAndPatterns( |
const GURL& secondary_url, |
ContentSettingsPattern* primary_pattern, |
ContentSettingsPattern* secondary_pattern) { |
- while (rule_iterator->HasNext()) { |
- const content_settings::Rule& rule = rule_iterator->Next(); |
- if (rule.primary_pattern.Matches(primary_url) && |
- rule.secondary_pattern.Matches(secondary_url)) { |
- if (primary_pattern) |
- *primary_pattern = rule.primary_pattern; |
- if (secondary_pattern) |
- *secondary_pattern = rule.secondary_pattern; |
- return base::WrapUnique(rule.value.get()->DeepCopy()); |
+ if (rule_iterator) { |
+ while (rule_iterator->HasNext()) { |
+ const content_settings::Rule& rule = rule_iterator->Next(); |
+ if (rule.primary_pattern.Matches(primary_url) && |
+ rule.secondary_pattern.Matches(secondary_url)) { |
+ if (primary_pattern) |
+ *primary_pattern = rule.primary_pattern; |
+ if (secondary_pattern) |
+ *secondary_pattern = rule.secondary_pattern; |
+ return base::WrapUnique(rule.value.get()->DeepCopy()); |
+ } |
} |
} |
return std::unique_ptr<base::Value>(); |