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

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

Issue 1754073002: Migrate old settings for ContentSettingTypes with wildcard as secondary_pattern (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scoping_set_content_setting
Patch Set: rebase Created 4 years, 10 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 d1151eab85af2a51fa622b979cda1d05674ff2a3..4d4edab7cf37158d6b821eb3ca684c4d891a54ce 100644
--- a/components/content_settings/core/browser/host_content_settings_map.cc
+++ b/components/content_settings/core/browser/host_content_settings_map.cc
@@ -164,6 +164,8 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
new content_settings::DefaultProvider(prefs_, is_off_the_record_);
default_provider->AddObserver(this);
content_settings_providers_[DEFAULT_PROVIDER] = default_provider;
+
+ MigrateOldSettings();
}
// static
@@ -465,6 +467,51 @@ void HostContentSettingsMap::SetContentSettingDefaultScope(
resource_identifier, setting);
}
+void HostContentSettingsMap::MigrateOldSettings() {
+ const ContentSettingsType kMigrateContentSettingTypes[] = {
+ // Only content types of scoping type: REQUESTING_DOMAIN_ONLY_SCOPE,
+ // REQUESTING_ORIGIN_ONLY_SCOPE and TOP_LEVEL_DOMAIN_ONLY_SCOPE need to be
+ // migrated.
+ CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
+ };
+ for (const ContentSettingsType& type : kMigrateContentSettingTypes) {
+ WebsiteSettingsInfo::ScopingType scoping_type =
+ content_settings::ContentSettingsRegistry::GetInstance()
+ ->Get(type)
+ ->website_settings_info()
+ ->scoping_type();
+ if (scoping_type ==
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE)
+ return;
raymes 2016/03/07 01:47:55 I think we should make this a DCHECK_NE (instead o
lshang 2016/03/23 13:58:36 Done.
+ ContentSettingsForOneType settings;
+ GetSettingsForOneType(type, std::string(), &settings);
+ for (const ContentSettingPatternSource& setting_entry : settings) {
+ // Migrate old-format settings only.
+ if (setting_entry.secondary_pattern !=
+ ContentSettingsPattern::Wildcard()) {
+ GURL url(setting_entry.primary_pattern.ToString());
+ // Pull out the value of the old-format setting. Only do this if the
+ // patterns are as we expect them to be, otherwise the setting will just
+ // be removed for safety.
+ ContentSetting content_setting = CONTENT_SETTING_DEFAULT;
+ if (setting_entry.primary_pattern == setting_entry.secondary_pattern &&
+ url.is_valid()) {
+ content_setting = GetContentSetting(url, url, type, std::string());
+ }
+ // Remove the old pattern.
+ SetContentSetting(setting_entry.primary_pattern,
+ setting_entry.secondary_pattern, type, std::string(),
+ CONTENT_SETTING_DEFAULT);
+ // Set the new pattern.
+ if (content_setting) {
raymes 2016/03/07 01:47:55 I think you can remove this check (the branch will
lshang 2016/03/23 13:58:36 Done.
+ SetContentSettingDefaultScope(url, GURL(), type, std::string(),
+ content_setting);
+ }
+ }
+ }
+ }
+}
+
ContentSetting HostContentSettingsMap::GetContentSettingAndMaybeUpdateLastUsage(
const GURL& primary_url,
const GURL& secondary_url,

Powered by Google App Engine
This is Rietveld 408576698