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

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

Issue 2510363003: Only activate radio buttons in ContentSettingsBubble for valid content settings. This prevents fail… (Closed)
Patch Set: rebase Created 4 years, 1 month 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
« no previous file with comments | « components/content_settings/core/browser/host_content_settings_map.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 a4a077080a15847b8798655935175cbf3ebdd24f..0cb4f3941813408ebacff3d96ecfc58432a8e089 100644
--- a/components/content_settings/core/browser/host_content_settings_map.cc
+++ b/components/content_settings/core/browser/host_content_settings_map.cc
@@ -161,6 +161,18 @@ content_settings::PatternPair GetPatternsFromScopingType(
return patterns;
}
+content_settings::PatternPair GetPatternsForContentSettingsType(
+ const GURL& primary_url,
+ const GURL& secondary_url,
+ ContentSettingsType type) {
+ const WebsiteSettingsInfo* website_settings_info =
+ content_settings::WebsiteSettingsRegistry::GetInstance()->Get(type);
+ DCHECK(website_settings_info);
+ content_settings::PatternPair patterns = GetPatternsFromScopingType(
+ website_settings_info->scoping_type(), primary_url, secondary_url);
+ return patterns;
+}
+
} // namespace
HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
@@ -349,11 +361,8 @@ void HostContentSettingsMap::SetWebsiteSettingDefaultScope(
ContentSettingsType content_type,
const std::string& resource_identifier,
std::unique_ptr<base::Value> value) {
- const WebsiteSettingsInfo* info =
- content_settings::WebsiteSettingsRegistry::GetInstance()->Get(
- content_type);
- content_settings::PatternPair patterns = GetPatternsFromScopingType(
- info->scoping_type(), primary_url, secondary_url);
+ content_settings::PatternPair patterns = GetPatternsForContentSettingsType(
+ primary_url, secondary_url, content_type);
ContentSettingsPattern primary_pattern = patterns.first;
ContentSettingsPattern secondary_pattern = patterns.second;
if (!primary_pattern.IsValid() || !secondary_pattern.IsValid())
@@ -385,11 +394,34 @@ void HostContentSettingsMap::SetWebsiteSettingCustomScope(
NOTREACHED();
}
+bool HostContentSettingsMap::CanSetNarrowestContentSetting(
+ const GURL& primary_url,
+ const GURL& secondary_url,
+ ContentSettingsType type) const {
+ content_settings::PatternPair patterns =
+ GetNarrowestPatterns(primary_url, secondary_url, type);
+ return patterns.first.IsValid() && patterns.second.IsValid();
+}
+
void HostContentSettingsMap::SetNarrowestContentSetting(
const GURL& primary_url,
const GURL& secondary_url,
ContentSettingsType type,
ContentSetting setting) {
+ content_settings::PatternPair patterns =
+ GetNarrowestPatterns(primary_url, secondary_url, type);
+
+ if (!patterns.first.IsValid() || !patterns.second.IsValid())
+ return;
+
+ SetContentSettingCustomScope(patterns.first, patterns.second, type,
+ std::string(), setting);
+}
+
+content_settings::PatternPair HostContentSettingsMap::GetNarrowestPatterns (
+ const GURL& primary_url,
+ const GURL& secondary_url,
+ ContentSettingsType type) const {
// Permission settings are specified via rules. There exists always at least
// one rule for the default setting. Get the rule that currently defines
// the permission for the given permission |type|. Then test whether the
@@ -401,29 +433,23 @@ void HostContentSettingsMap::SetNarrowestContentSetting(
primary_url, secondary_url, type, std::string(), &info);
DCHECK_EQ(content_settings::SETTING_SOURCE_USER, info.source);
- const WebsiteSettingsInfo* website_settings_info =
- content_settings::WebsiteSettingsRegistry::GetInstance()->Get(type);
- content_settings::PatternPair patterns = GetPatternsFromScopingType(
- website_settings_info->scoping_type(), primary_url, secondary_url);
-
- ContentSettingsPattern narrow_primary = patterns.first;
- ContentSettingsPattern narrow_secondary = patterns.second;
+ content_settings::PatternPair patterns = GetPatternsForContentSettingsType(
+ primary_url, secondary_url, type);
ContentSettingsPattern::Relation r1 =
info.primary_pattern.Compare(patterns.first);
if (r1 == ContentSettingsPattern::PREDECESSOR) {
- narrow_primary = info.primary_pattern;
+ patterns.first = info.primary_pattern;
} else if (r1 == ContentSettingsPattern::IDENTITY) {
ContentSettingsPattern::Relation r2 =
info.secondary_pattern.Compare(patterns.second);
DCHECK(r2 != ContentSettingsPattern::DISJOINT_ORDER_POST &&
r2 != ContentSettingsPattern::DISJOINT_ORDER_PRE);
if (r2 == ContentSettingsPattern::PREDECESSOR)
- narrow_secondary = info.secondary_pattern;
+ patterns.second = info.secondary_pattern;
}
- SetContentSettingCustomScope(narrow_primary, narrow_secondary, type,
- std::string(), setting);
+ return patterns;
}
void HostContentSettingsMap::SetContentSettingCustomScope(
@@ -458,14 +484,9 @@ void HostContentSettingsMap::SetContentSettingDefaultScope(
ContentSettingsType content_type,
const std::string& resource_identifier,
ContentSetting setting) {
- const ContentSettingsInfo* info =
- content_settings::ContentSettingsRegistry::GetInstance()->Get(
- content_type);
- DCHECK(info);
+ content_settings::PatternPair patterns = GetPatternsForContentSettingsType(
+ primary_url, secondary_url, content_type);
- content_settings::PatternPair patterns =
- GetPatternsFromScopingType(info->website_settings_info()->scoping_type(),
- primary_url, secondary_url);
ContentSettingsPattern primary_pattern = patterns.first;
ContentSettingsPattern secondary_pattern = patterns.second;
if (!primary_pattern.IsValid() || !secondary_pattern.IsValid())
« no previous file with comments | « components/content_settings/core/browser/host_content_settings_map.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698