Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(229)

Unified Diff: components/content_settings/core/browser/host_content_settings_map.cc

Issue 2318223002: Remove EmptyRuleIterators with nullptrs. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>();

Powered by Google App Engine
This is Rietveld 408576698