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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 } | 128 } |
129 | 129 |
130 content_settings::PatternPair GetPatternsFromScopingType( | 130 content_settings::PatternPair GetPatternsFromScopingType( |
131 WebsiteSettingsInfo::ScopingType scoping_type, | 131 WebsiteSettingsInfo::ScopingType scoping_type, |
132 const GURL& primary_url, | 132 const GURL& primary_url, |
133 const GURL& secondary_url) { | 133 const GURL& secondary_url) { |
134 DCHECK(!primary_url.is_empty()); | 134 DCHECK(!primary_url.is_empty()); |
135 content_settings::PatternPair patterns; | 135 content_settings::PatternPair patterns; |
136 | 136 |
137 switch (scoping_type) { | 137 switch (scoping_type) { |
138 case WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE: | 138 case WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE: |
139 case WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE: | |
140 patterns.first = ContentSettingsPattern::FromURL(primary_url); | |
141 patterns.second = ContentSettingsPattern::Wildcard(); | |
142 break; | |
143 case WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE: | 139 case WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE: |
144 patterns.first = ContentSettingsPattern::FromURLNoWildcard(primary_url); | 140 patterns.first = ContentSettingsPattern::FromURLNoWildcard(primary_url); |
145 patterns.second = ContentSettingsPattern::Wildcard(); | 141 patterns.second = ContentSettingsPattern::Wildcard(); |
146 break; | 142 break; |
147 case WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE: | 143 case WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE: |
148 DCHECK(!secondary_url.is_empty()); | 144 DCHECK(!secondary_url.is_empty()); |
149 patterns.first = ContentSettingsPattern::FromURLNoWildcard(primary_url); | 145 patterns.first = ContentSettingsPattern::FromURLNoWildcard(primary_url); |
150 patterns.second = | 146 patterns.second = |
151 ContentSettingsPattern::FromURLNoWildcard(secondary_url); | 147 ContentSettingsPattern::FromURLNoWildcard(secondary_url); |
152 break; | 148 break; |
153 } | 149 } |
154 return patterns; | 150 return patterns; |
155 } | 151 } |
156 | 152 |
157 } // namespace | 153 } // namespace |
158 | 154 |
159 HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, | 155 HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, |
160 bool is_incognito_profile, | 156 bool is_incognito_profile, |
161 bool is_guest_profile) | 157 bool is_guest_profile) |
162 : | 158 : |
163 #ifndef NDEBUG | 159 #ifndef NDEBUG |
164 used_from_thread_id_(base::PlatformThread::CurrentId()), | 160 used_from_thread_id_(base::PlatformThread::CurrentId()), |
165 #endif | 161 #endif |
166 prefs_(prefs), | 162 prefs_(prefs), |
167 is_off_the_record_(is_incognito_profile || is_guest_profile) { | 163 is_off_the_record_(is_incognito_profile || is_guest_profile), |
| 164 weak_ptr_factory_(this) { |
168 DCHECK(!(is_incognito_profile && is_guest_profile)); | 165 DCHECK(!(is_incognito_profile && is_guest_profile)); |
169 | 166 |
170 content_settings::PolicyProvider* policy_provider = | 167 content_settings::PolicyProvider* policy_provider = |
171 new content_settings::PolicyProvider(prefs_); | 168 new content_settings::PolicyProvider(prefs_); |
172 content_settings_providers_[POLICY_PROVIDER] = policy_provider; | 169 content_settings_providers_[POLICY_PROVIDER] = policy_provider; |
173 policy_provider->AddObserver(this); | 170 policy_provider->AddObserver(this); |
174 | 171 |
175 pref_provider_ = | 172 pref_provider_ = |
176 new content_settings::PrefProvider(prefs_, is_off_the_record_); | 173 new content_settings::PrefProvider(prefs_, is_off_the_record_); |
177 content_settings_providers_[PREF_PROVIDER] = pref_provider_; | 174 content_settings_providers_[PREF_PROVIDER] = pref_provider_; |
178 pref_provider_->AddObserver(this); | 175 pref_provider_->AddObserver(this); |
179 | 176 |
180 // This ensures that content settings are cleared for the guest profile. This | 177 // This ensures that content settings are cleared for the guest profile. This |
181 // wouldn't be needed except that we used to allow settings to be stored for | 178 // wouldn't be needed except that we used to allow settings to be stored for |
182 // the guest profile and so we need to ensure those get cleared. | 179 // the guest profile and so we need to ensure those get cleared. |
183 if (is_guest_profile) | 180 if (is_guest_profile) |
184 pref_provider_->ClearPrefs(); | 181 pref_provider_->ClearPrefs(); |
185 | 182 |
186 content_settings::ObservableProvider* default_provider = | 183 content_settings::ObservableProvider* default_provider = |
187 new content_settings::DefaultProvider(prefs_, is_off_the_record_); | 184 new content_settings::DefaultProvider(prefs_, is_off_the_record_); |
188 default_provider->AddObserver(this); | 185 default_provider->AddObserver(this); |
189 content_settings_providers_[DEFAULT_PROVIDER] = default_provider; | 186 content_settings_providers_[DEFAULT_PROVIDER] = default_provider; |
190 | 187 |
191 MigrateKeygenSettings(); | 188 MigrateKeygenSettings(); |
192 | 189 MigrateDomainScopedSettings(false); |
193 RecordNumberOfExceptions(); | 190 RecordNumberOfExceptions(); |
194 } | 191 } |
195 | 192 |
196 // static | 193 // static |
197 void HostContentSettingsMap::RegisterProfilePrefs( | 194 void HostContentSettingsMap::RegisterProfilePrefs( |
198 user_prefs::PrefRegistrySyncable* registry) { | 195 user_prefs::PrefRegistrySyncable* registry) { |
199 // Ensure the content settings are all registered. | 196 // Ensure the content settings are all registered. |
200 content_settings::ContentSettingsRegistry::GetInstance(); | 197 content_settings::ContentSettingsRegistry::GetInstance(); |
201 | 198 |
202 registry->RegisterIntegerPref(prefs::kContentSettingsWindowLastTabIndex, 0); | 199 registry->RegisterIntegerPref(prefs::kContentSettingsWindowLastTabIndex, 0); |
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 | 590 |
594 if (status == NOT_MIGRATED) { | 591 if (status == NOT_MIGRATED) { |
595 prefs_->SetInteger(prefs::kDomainToOriginMigrationStatus, | 592 prefs_->SetInteger(prefs::kDomainToOriginMigrationStatus, |
596 MIGRATED_BEFORE_SYNC); | 593 MIGRATED_BEFORE_SYNC); |
597 } else if (status == MIGRATED_BEFORE_SYNC) { | 594 } else if (status == MIGRATED_BEFORE_SYNC) { |
598 prefs_->SetInteger(prefs::kDomainToOriginMigrationStatus, | 595 prefs_->SetInteger(prefs::kDomainToOriginMigrationStatus, |
599 MIGRATED_AFTER_SYNC); | 596 MIGRATED_AFTER_SYNC); |
600 } | 597 } |
601 } | 598 } |
602 | 599 |
| 600 base::WeakPtr<HostContentSettingsMap> HostContentSettingsMap::GetWeakPtr() { |
| 601 return weak_ptr_factory_.GetWeakPtr(); |
| 602 } |
| 603 |
603 void HostContentSettingsMap::RecordNumberOfExceptions() { | 604 void HostContentSettingsMap::RecordNumberOfExceptions() { |
604 for (const content_settings::WebsiteSettingsInfo* info : | 605 for (const content_settings::WebsiteSettingsInfo* info : |
605 *content_settings::WebsiteSettingsRegistry::GetInstance()) { | 606 *content_settings::WebsiteSettingsRegistry::GetInstance()) { |
606 ContentSettingsType content_type = info->type(); | 607 ContentSettingsType content_type = info->type(); |
607 const std::string type_name = info->name(); | 608 const std::string type_name = info->name(); |
608 | 609 |
609 ContentSettingsForOneType settings; | 610 ContentSettingsForOneType settings; |
610 GetSettingsForOneType(content_type, std::string(), &settings); | 611 GetSettingsForOneType(content_type, std::string(), &settings); |
611 size_t num_exceptions = 0; | 612 size_t num_exceptions = 0; |
612 for (const ContentSettingPatternSource& setting_entry : settings) { | 613 for (const ContentSettingPatternSource& setting_entry : settings) { |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
949 rule.secondary_pattern.Matches(secondary_url)) { | 950 rule.secondary_pattern.Matches(secondary_url)) { |
950 if (primary_pattern) | 951 if (primary_pattern) |
951 *primary_pattern = rule.primary_pattern; | 952 *primary_pattern = rule.primary_pattern; |
952 if (secondary_pattern) | 953 if (secondary_pattern) |
953 *secondary_pattern = rule.secondary_pattern; | 954 *secondary_pattern = rule.secondary_pattern; |
954 return base::WrapUnique(rule.value.get()->DeepCopy()); | 955 return base::WrapUnique(rule.value.get()->DeepCopy()); |
955 } | 956 } |
956 } | 957 } |
957 return std::unique_ptr<base::Value>(); | 958 return std::unique_ptr<base::Value>(); |
958 } | 959 } |
OLD | NEW |