Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 164 // wouldn't be needed except that we used to allow settings to be stored for | 164 // wouldn't be needed except that we used to allow settings to be stored for |
| 165 // the guest profile and so we need to ensure those get cleared. | 165 // the guest profile and so we need to ensure those get cleared. |
| 166 if (is_guest_profile) | 166 if (is_guest_profile) |
| 167 pref_provider_->ClearPrefs(); | 167 pref_provider_->ClearPrefs(); |
| 168 | 168 |
| 169 content_settings::ObservableProvider* default_provider = | 169 content_settings::ObservableProvider* default_provider = |
| 170 new content_settings::DefaultProvider(prefs_, is_off_the_record_); | 170 new content_settings::DefaultProvider(prefs_, is_off_the_record_); |
| 171 default_provider->AddObserver(this); | 171 default_provider->AddObserver(this); |
| 172 content_settings_providers_[DEFAULT_PROVIDER] = default_provider; | 172 content_settings_providers_[DEFAULT_PROVIDER] = default_provider; |
| 173 | 173 |
| 174 // ios doean't have KEYGEN to be migrated. | |
| 175 #if !defined(OS_IOS) | |
| 174 MigrateOldSettings(); | 176 MigrateOldSettings(); |
|
raymes
2016/05/20 19:10:16
Maybe we can just rename this to MigrateKeygenSett
lshang
2016/05/24 11:55:45
Good suggestion! I made a separate CL(https://code
| |
| 175 | 177 #endif |
| 176 RecordNumberOfExceptions(); | 178 RecordNumberOfExceptions(); |
| 177 } | 179 } |
| 178 | 180 |
| 179 // static | 181 // static |
| 180 void HostContentSettingsMap::RegisterProfilePrefs( | 182 void HostContentSettingsMap::RegisterProfilePrefs( |
| 181 user_prefs::PrefRegistrySyncable* registry) { | 183 user_prefs::PrefRegistrySyncable* registry) { |
| 182 // Ensure the content settings are all registered. | 184 // Ensure the content settings are all registered. |
| 183 content_settings::ContentSettingsRegistry::GetInstance(); | 185 content_settings::ContentSettingsRegistry::GetInstance(); |
| 184 | 186 |
| 185 registry->RegisterIntegerPref(prefs::kContentSettingsWindowLastTabIndex, 0); | 187 registry->RegisterIntegerPref(prefs::kContentSettingsWindowLastTabIndex, 0); |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 467 resource_identifier, setting); | 469 resource_identifier, setting); |
| 468 } | 470 } |
| 469 | 471 |
| 470 void HostContentSettingsMap::MigrateOldSettings() { | 472 void HostContentSettingsMap::MigrateOldSettings() { |
| 471 const ContentSettingsType kMigrateContentSettingTypes[] = { | 473 const ContentSettingsType kMigrateContentSettingTypes[] = { |
| 472 // Only content types of scoping type: REQUESTING_DOMAIN_ONLY_SCOPE, | 474 // Only content types of scoping type: REQUESTING_DOMAIN_ONLY_SCOPE, |
| 473 // REQUESTING_ORIGIN_ONLY_SCOPE and TOP_LEVEL_DOMAIN_ONLY_SCOPE need to be | 475 // REQUESTING_ORIGIN_ONLY_SCOPE and TOP_LEVEL_DOMAIN_ONLY_SCOPE need to be |
| 474 // migrated. | 476 // migrated. |
| 475 CONTENT_SETTINGS_TYPE_KEYGEN}; | 477 CONTENT_SETTINGS_TYPE_KEYGEN}; |
| 476 for (const ContentSettingsType& type : kMigrateContentSettingTypes) { | 478 for (const ContentSettingsType& type : kMigrateContentSettingTypes) { |
| 477 WebsiteSettingsInfo::ScopingType scoping_type = | 479 const content_settings::ContentSettingsInfo* info = |
| 478 content_settings::ContentSettingsRegistry::GetInstance() | 480 content_settings::ContentSettingsRegistry::GetInstance()->Get(type); |
| 479 ->Get(type) | 481 if (info) { |
| 480 ->website_settings_info() | 482 WebsiteSettingsInfo::ScopingType scoping_type = |
| 481 ->scoping_type(); | 483 info->website_settings_info()->scoping_type(); |
| 482 DCHECK_NE( | 484 DCHECK_NE( |
| 483 scoping_type, | 485 scoping_type, |
| 484 WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE); | 486 WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE); |
| 485 | 487 |
| 486 ContentSettingsForOneType settings; | 488 ContentSettingsForOneType settings; |
| 487 GetSettingsForOneType(type, std::string(), &settings); | 489 GetSettingsForOneType(type, std::string(), &settings); |
| 488 for (const ContentSettingPatternSource& setting_entry : settings) { | 490 for (const ContentSettingPatternSource& setting_entry : settings) { |
| 489 // Migrate user preference settings only. | 491 // Migrate user preference settings only. |
| 490 if (setting_entry.source != "preference") | 492 if (setting_entry.source != "preference") |
| 491 continue; | 493 continue; |
| 492 // Migrate old-format settings only. | 494 // Migrate old-format settings only. |
| 493 if (setting_entry.secondary_pattern != | 495 if (setting_entry.secondary_pattern != |
| 494 ContentSettingsPattern::Wildcard()) { | 496 ContentSettingsPattern::Wildcard()) { |
| 495 GURL url(setting_entry.primary_pattern.ToString()); | 497 GURL url(setting_entry.primary_pattern.ToString()); |
| 496 // Pull out the value of the old-format setting. Only do this if the | 498 // Pull out the value of the old-format setting. Only do this if the |
| 497 // patterns are as we expect them to be, otherwise the setting will just | 499 // patterns are as we expect them to be, otherwise the setting will |
| 498 // be removed for safety. | 500 // just be removed for safety. |
| 499 ContentSetting content_setting = CONTENT_SETTING_DEFAULT; | 501 ContentSetting content_setting = CONTENT_SETTING_DEFAULT; |
| 500 if (setting_entry.primary_pattern == setting_entry.secondary_pattern && | 502 if (setting_entry.primary_pattern == |
| 501 url.is_valid()) { | 503 setting_entry.secondary_pattern && |
| 502 content_setting = GetContentSetting(url, url, type, std::string()); | 504 url.is_valid()) { |
| 505 content_setting = GetContentSetting(url, url, type, std::string()); | |
| 506 } | |
| 507 // Remove the old pattern. | |
| 508 SetContentSettingCustomScope(setting_entry.primary_pattern, | |
| 509 setting_entry.secondary_pattern, type, | |
| 510 std::string(), CONTENT_SETTING_DEFAULT); | |
| 511 // Set the new pattern. | |
| 512 SetContentSettingDefaultScope(url, GURL(), type, std::string(), | |
| 513 content_setting); | |
| 503 } | 514 } |
| 504 // Remove the old pattern. | |
| 505 SetContentSettingCustomScope(setting_entry.primary_pattern, | |
| 506 setting_entry.secondary_pattern, type, std::string(), | |
| 507 CONTENT_SETTING_DEFAULT); | |
| 508 // Set the new pattern. | |
| 509 SetContentSettingDefaultScope(url, GURL(), type, std::string(), | |
| 510 content_setting); | |
| 511 } | 515 } |
| 512 } | 516 } |
| 513 } | 517 } |
| 514 } | 518 } |
| 515 | 519 |
| 516 void HostContentSettingsMap::RecordNumberOfExceptions() { | 520 void HostContentSettingsMap::RecordNumberOfExceptions() { |
| 517 for (const content_settings::WebsiteSettingsInfo* info : | 521 for (const content_settings::WebsiteSettingsInfo* info : |
| 518 *content_settings::WebsiteSettingsRegistry::GetInstance()) { | 522 *content_settings::WebsiteSettingsRegistry::GetInstance()) { |
| 519 ContentSettingsType content_type = info->type(); | 523 ContentSettingsType content_type = info->type(); |
| 520 const std::string type_name = info->name(); | 524 const std::string type_name = info->name(); |
| (...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 862 rule.secondary_pattern.Matches(secondary_url)) { | 866 rule.secondary_pattern.Matches(secondary_url)) { |
| 863 if (primary_pattern) | 867 if (primary_pattern) |
| 864 *primary_pattern = rule.primary_pattern; | 868 *primary_pattern = rule.primary_pattern; |
| 865 if (secondary_pattern) | 869 if (secondary_pattern) |
| 866 *secondary_pattern = rule.secondary_pattern; | 870 *secondary_pattern = rule.secondary_pattern; |
| 867 return base::WrapUnique(rule.value.get()->DeepCopy()); | 871 return base::WrapUnique(rule.value.get()->DeepCopy()); |
| 868 } | 872 } |
| 869 } | 873 } |
| 870 return std::unique_ptr<base::Value>(); | 874 return std::unique_ptr<base::Value>(); |
| 871 } | 875 } |
| OLD | NEW |