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

Side by Side 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: add check for user preference settings Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/content_settings/core/browser/host_content_settings_map.h" 5 #include "components/content_settings/core/browser/host_content_settings_map.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 // This ensures that content settings are cleared for the guest profile. This 159 // This ensures that content settings are cleared for the guest profile. This
160 // wouldn't be needed except that we used to allow settings to be stored for 160 // wouldn't be needed except that we used to allow settings to be stored for
161 // the guest profile and so we need to ensure those get cleared. 161 // the guest profile and so we need to ensure those get cleared.
162 if (is_guest_profile) 162 if (is_guest_profile)
163 pref_provider->ClearPrefs(); 163 pref_provider->ClearPrefs();
164 164
165 content_settings::ObservableProvider* default_provider = 165 content_settings::ObservableProvider* default_provider =
166 new content_settings::DefaultProvider(prefs_, is_off_the_record_); 166 new content_settings::DefaultProvider(prefs_, is_off_the_record_);
167 default_provider->AddObserver(this); 167 default_provider->AddObserver(this);
168 content_settings_providers_[DEFAULT_PROVIDER] = default_provider; 168 content_settings_providers_[DEFAULT_PROVIDER] = default_provider;
169
170 MigrateOldSettings();
169 } 171 }
170 172
171 // static 173 // static
172 void HostContentSettingsMap::RegisterProfilePrefs( 174 void HostContentSettingsMap::RegisterProfilePrefs(
173 user_prefs::PrefRegistrySyncable* registry) { 175 user_prefs::PrefRegistrySyncable* registry) {
174 // Ensure the content settings are all registered. 176 // Ensure the content settings are all registered.
175 content_settings::ContentSettingsRegistry::GetInstance(); 177 content_settings::ContentSettingsRegistry::GetInstance();
176 178
177 registry->RegisterIntegerPref(prefs::kContentSettingsWindowLastTabIndex, 0); 179 registry->RegisterIntegerPref(prefs::kContentSettingsWindowLastTabIndex, 0);
178 180
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 primary_url, secondary_url); 462 primary_url, secondary_url);
461 ContentSettingsPattern primary_pattern = patterns.first; 463 ContentSettingsPattern primary_pattern = patterns.first;
462 ContentSettingsPattern secondary_pattern = patterns.second; 464 ContentSettingsPattern secondary_pattern = patterns.second;
463 if (!primary_pattern.IsValid() || !secondary_pattern.IsValid()) 465 if (!primary_pattern.IsValid() || !secondary_pattern.IsValid())
464 return; 466 return;
465 467
466 SetContentSetting(primary_pattern, secondary_pattern, content_type, 468 SetContentSetting(primary_pattern, secondary_pattern, content_type,
467 resource_identifier, setting); 469 resource_identifier, setting);
468 } 470 }
469 471
472 void HostContentSettingsMap::MigrateOldSettings() {
473 const ContentSettingsType kMigrateContentSettingTypes[] = {
474 // Only content types of scoping type: REQUESTING_DOMAIN_ONLY_SCOPE,
475 // REQUESTING_ORIGIN_ONLY_SCOPE and TOP_LEVEL_DOMAIN_ONLY_SCOPE need to be
476 // migrated.
477 // TODO(lshang): Default is temporarily added here to pass the array size
478 // 0
raymes 2016/03/29 04:43:46 nit: fill 80chars
lshang 2016/03/29 05:02:30 Done.
479 // error. Will add types that need to be migrated later.
480 CONTENT_SETTINGS_TYPE_DEFAULT};
raymes 2016/03/29 04:43:46 Maybe just put KEYGEN in this CL?
lshang 2016/03/29 05:02:30 Done.
481 for (const ContentSettingsType& type : kMigrateContentSettingTypes) {
482 if (type == CONTENT_SETTINGS_TYPE_DEFAULT)
483 break;
484 WebsiteSettingsInfo::ScopingType scoping_type =
485 content_settings::ContentSettingsRegistry::GetInstance()
486 ->Get(type)
487 ->website_settings_info()
488 ->scoping_type();
489 DCHECK_NE(
490 scoping_type,
491 WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE);
492
493 ContentSettingsForOneType settings;
494 GetSettingsForOneType(type, std::string(), &settings);
495 for (const ContentSettingPatternSource& setting_entry : settings) {
496 // Migrate user preference settings only.
497 if (setting_entry.source != "preference")
498 continue;
499 // Migrate old-format settings only.
500 if (setting_entry.secondary_pattern !=
501 ContentSettingsPattern::Wildcard()) {
502 GURL url(setting_entry.primary_pattern.ToString());
503 // Pull out the value of the old-format setting. Only do this if the
504 // patterns are as we expect them to be, otherwise the setting will just
505 // be removed for safety.
506 ContentSetting content_setting = CONTENT_SETTING_DEFAULT;
507 if (setting_entry.primary_pattern == setting_entry.secondary_pattern &&
508 url.is_valid()) {
509 content_setting = GetContentSetting(url, url, type, std::string());
510 }
511 // Remove the old pattern.
512 SetContentSetting(setting_entry.primary_pattern,
513 setting_entry.secondary_pattern, type, std::string(),
514 CONTENT_SETTING_DEFAULT);
515 // Set the new pattern.
516 SetContentSettingDefaultScope(url, GURL(), type, std::string(),
517 content_setting);
518 }
519 }
520 }
521 }
522
470 ContentSetting HostContentSettingsMap::GetContentSettingAndMaybeUpdateLastUsage( 523 ContentSetting HostContentSettingsMap::GetContentSettingAndMaybeUpdateLastUsage(
471 const GURL& primary_url, 524 const GURL& primary_url,
472 const GURL& secondary_url, 525 const GURL& secondary_url,
473 ContentSettingsType content_type, 526 ContentSettingsType content_type,
474 const std::string& resource_identifier) { 527 const std::string& resource_identifier) {
475 DCHECK(thread_checker_.CalledOnValidThread()); 528 DCHECK(thread_checker_.CalledOnValidThread());
476 529
477 ContentSetting setting = GetContentSetting( 530 ContentSetting setting = GetContentSetting(
478 primary_url, secondary_url, content_type, resource_identifier); 531 primary_url, secondary_url, content_type, resource_identifier);
479 if (setting == CONTENT_SETTING_ALLOW) { 532 if (setting == CONTENT_SETTING_ALLOW) {
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
799 rule.secondary_pattern.Matches(secondary_url)) { 852 rule.secondary_pattern.Matches(secondary_url)) {
800 if (primary_pattern) 853 if (primary_pattern)
801 *primary_pattern = rule.primary_pattern; 854 *primary_pattern = rule.primary_pattern;
802 if (secondary_pattern) 855 if (secondary_pattern)
803 *secondary_pattern = rule.secondary_pattern; 856 *secondary_pattern = rule.secondary_pattern;
804 return make_scoped_ptr(rule.value.get()->DeepCopy()); 857 return make_scoped_ptr(rule.value.get()->DeepCopy());
805 } 858 }
806 } 859 }
807 return scoped_ptr<base::Value>(); 860 return scoped_ptr<base::Value>();
808 } 861 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698