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

Side by Side Diff: chrome/browser/content_settings/host_content_settings_map.cc

Issue 12223052: Remove unused lock, add debug-only verification of intended usage. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Forgot that DCHECK-enabled != NDEBUG not defined. Created 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/content_settings/host_content_settings_map.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/content_settings/host_content_settings_map.h" 5 #include "chrome/browser/content_settings/host_content_settings_map.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 // Returns true if the |content_type| supports a resource identifier. 71 // Returns true if the |content_type| supports a resource identifier.
72 // Resource identifiers are supported (but not required) for plug-ins. 72 // Resource identifiers are supported (but not required) for plug-ins.
73 bool SupportsResourceIdentifier(ContentSettingsType content_type) { 73 bool SupportsResourceIdentifier(ContentSettingsType content_type) {
74 return content_type == CONTENT_SETTINGS_TYPE_PLUGINS; 74 return content_type == CONTENT_SETTINGS_TYPE_PLUGINS;
75 } 75 }
76 76
77 } // namespace 77 } // namespace
78 78
79 HostContentSettingsMap::HostContentSettingsMap( 79 HostContentSettingsMap::HostContentSettingsMap(
80 PrefService* prefs, 80 PrefService* prefs,
81 bool incognito) 81 bool incognito) :
82 : prefs_(prefs), 82 #ifndef NDEBUG
83 used_content_settings_providers_(false),
84 #endif
85 prefs_(prefs),
83 is_off_the_record_(incognito) { 86 is_off_the_record_(incognito) {
84 content_settings::ObservableProvider* policy_provider = 87 content_settings::ObservableProvider* policy_provider =
85 new content_settings::PolicyProvider(prefs_); 88 new content_settings::PolicyProvider(prefs_);
86 policy_provider->AddObserver(this); 89 policy_provider->AddObserver(this);
87 content_settings_providers_[POLICY_PROVIDER] = policy_provider; 90 content_settings_providers_[POLICY_PROVIDER] = policy_provider;
88 91
89 content_settings::ObservableProvider* pref_provider = 92 content_settings::ObservableProvider* pref_provider =
90 new content_settings::PrefProvider(prefs_, is_off_the_record_); 93 new content_settings::PrefProvider(prefs_, is_off_the_record_);
91 pref_provider->AddObserver(this); 94 pref_provider->AddObserver(this);
92 content_settings_providers_[PREF_PROVIDER] = pref_provider; 95 content_settings_providers_[PREF_PROVIDER] = pref_provider;
93 96
94 content_settings::ObservableProvider* default_provider = 97 content_settings::ObservableProvider* default_provider =
95 new content_settings::DefaultProvider(prefs_, is_off_the_record_); 98 new content_settings::DefaultProvider(prefs_, is_off_the_record_);
96 default_provider->AddObserver(this); 99 default_provider->AddObserver(this);
97 content_settings_providers_[DEFAULT_PROVIDER] = default_provider; 100 content_settings_providers_[DEFAULT_PROVIDER] = default_provider;
98 101
99 if (!is_off_the_record_) { 102 if (!is_off_the_record_) {
100 // Migrate obsolete preferences. 103 // Migrate obsolete preferences.
101 MigrateObsoleteClearOnExitPref(); 104 MigrateObsoleteClearOnExitPref();
102 } 105 }
103 } 106 }
104 107
105 #if defined(ENABLE_EXTENSIONS) 108 #if defined(ENABLE_EXTENSIONS)
106 void HostContentSettingsMap::RegisterExtensionService( 109 void HostContentSettingsMap::RegisterExtensionService(
107 ExtensionService* extension_service) { 110 ExtensionService* extension_service) {
108 DCHECK(extension_service); 111 DCHECK(extension_service);
112 #ifndef NDEBUG
113 DCHECK(!used_content_settings_providers_);
114 #endif
109 DCHECK(!content_settings_providers_[INTERNAL_EXTENSION_PROVIDER]); 115 DCHECK(!content_settings_providers_[INTERNAL_EXTENSION_PROVIDER]);
110 DCHECK(!content_settings_providers_[CUSTOM_EXTENSION_PROVIDER]); 116 DCHECK(!content_settings_providers_[CUSTOM_EXTENSION_PROVIDER]);
111 117
112 content_settings::InternalExtensionProvider* internal_extension_provider = 118 content_settings::InternalExtensionProvider* internal_extension_provider =
113 new content_settings::InternalExtensionProvider(extension_service); 119 new content_settings::InternalExtensionProvider(extension_service);
114 internal_extension_provider->AddObserver(this); 120 internal_extension_provider->AddObserver(this);
115 content_settings_providers_[INTERNAL_EXTENSION_PROVIDER] = 121 content_settings_providers_[INTERNAL_EXTENSION_PROVIDER] =
116 internal_extension_provider; 122 internal_extension_provider;
117 123
118 content_settings::ObservableProvider* custom_extension_provider = 124 content_settings::ObservableProvider* custom_extension_provider =
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 rule.secondary_pattern == wildcard) { 167 rule.secondary_pattern == wildcard) {
162 return content_settings::ValueToContentSetting(rule.value.get()); 168 return content_settings::ValueToContentSetting(rule.value.get());
163 } 169 }
164 } 170 }
165 return CONTENT_SETTING_DEFAULT; 171 return CONTENT_SETTING_DEFAULT;
166 } 172 }
167 173
168 ContentSetting HostContentSettingsMap::GetDefaultContentSetting( 174 ContentSetting HostContentSettingsMap::GetDefaultContentSetting(
169 ContentSettingsType content_type, 175 ContentSettingsType content_type,
170 std::string* provider_id) const { 176 std::string* provider_id) const {
177 UsedContentSettingsProviders();
178
171 // Iterate through the list of providers and return the first non-NULL value 179 // Iterate through the list of providers and return the first non-NULL value
172 // that matches |primary_url| and |secondary_url|. 180 // that matches |primary_url| and |secondary_url|.
173 for (ConstProviderIterator provider = content_settings_providers_.begin(); 181 for (ConstProviderIterator provider = content_settings_providers_.begin();
174 provider != content_settings_providers_.end(); 182 provider != content_settings_providers_.end();
175 ++provider) { 183 ++provider) {
176 if (provider->first == PREF_PROVIDER) 184 if (provider->first == PREF_PROVIDER)
177 continue; 185 continue;
178 ContentSetting default_setting = 186 ContentSetting default_setting =
179 GetDefaultContentSettingFromProvider(content_type, provider->second); 187 GetDefaultContentSettingFromProvider(content_type, provider->second);
180 if (default_setting != CONTENT_SETTING_DEFAULT) { 188 if (default_setting != CONTENT_SETTING_DEFAULT) {
(...skipping 21 matching lines...) Expand all
202 return content_settings::ValueToContentSetting(value.get()); 210 return content_settings::ValueToContentSetting(value.get());
203 } 211 }
204 212
205 void HostContentSettingsMap::GetSettingsForOneType( 213 void HostContentSettingsMap::GetSettingsForOneType(
206 ContentSettingsType content_type, 214 ContentSettingsType content_type,
207 const std::string& resource_identifier, 215 const std::string& resource_identifier,
208 ContentSettingsForOneType* settings) const { 216 ContentSettingsForOneType* settings) const {
209 DCHECK(SupportsResourceIdentifier(content_type) || 217 DCHECK(SupportsResourceIdentifier(content_type) ||
210 resource_identifier.empty()); 218 resource_identifier.empty());
211 DCHECK(settings); 219 DCHECK(settings);
220 UsedContentSettingsProviders();
212 221
213 settings->clear(); 222 settings->clear();
214 for (ConstProviderIterator provider = content_settings_providers_.begin(); 223 for (ConstProviderIterator provider = content_settings_providers_.begin();
215 provider != content_settings_providers_.end(); 224 provider != content_settings_providers_.end();
216 ++provider) { 225 ++provider) {
217 // For each provider, iterate first the incognito-specific rules, then the 226 // For each provider, iterate first the incognito-specific rules, then the
218 // normal rules. 227 // normal rules.
219 if (is_off_the_record_) { 228 if (is_off_the_record_) {
220 AddSettingsForOneType(provider->second, 229 AddSettingsForOneType(provider->second,
221 provider->first, 230 provider->first,
(...skipping 29 matching lines...) Expand all
251 260
252 void HostContentSettingsMap::SetWebsiteSetting( 261 void HostContentSettingsMap::SetWebsiteSetting(
253 const ContentSettingsPattern& primary_pattern, 262 const ContentSettingsPattern& primary_pattern,
254 const ContentSettingsPattern& secondary_pattern, 263 const ContentSettingsPattern& secondary_pattern,
255 ContentSettingsType content_type, 264 ContentSettingsType content_type,
256 const std::string& resource_identifier, 265 const std::string& resource_identifier,
257 base::Value* value) { 266 base::Value* value) {
258 DCHECK(IsValueAllowedForType(prefs_, value, content_type)); 267 DCHECK(IsValueAllowedForType(prefs_, value, content_type));
259 DCHECK(SupportsResourceIdentifier(content_type) || 268 DCHECK(SupportsResourceIdentifier(content_type) ||
260 resource_identifier.empty()); 269 resource_identifier.empty());
270 UsedContentSettingsProviders();
271
261 for (ProviderIterator provider = content_settings_providers_.begin(); 272 for (ProviderIterator provider = content_settings_providers_.begin();
262 provider != content_settings_providers_.end(); 273 provider != content_settings_providers_.end();
263 ++provider) { 274 ++provider) {
264 if (provider->second->SetWebsiteSetting(primary_pattern, 275 if (provider->second->SetWebsiteSetting(primary_pattern,
265 secondary_pattern, 276 secondary_pattern,
266 content_type, 277 content_type,
267 resource_identifier, 278 resource_identifier,
268 value)) { 279 value)) {
269 return; 280 return;
270 } 281 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 321
311 SetContentSetting(ContentSettingsPattern::FromURL(primary_url), 322 SetContentSetting(ContentSettingsPattern::FromURL(primary_url),
312 ContentSettingsPattern::Wildcard(), 323 ContentSettingsPattern::Wildcard(),
313 content_type, 324 content_type,
314 resource_identifier, 325 resource_identifier,
315 setting); 326 setting);
316 } 327 }
317 328
318 void HostContentSettingsMap::ClearSettingsForOneType( 329 void HostContentSettingsMap::ClearSettingsForOneType(
319 ContentSettingsType content_type) { 330 ContentSettingsType content_type) {
331 UsedContentSettingsProviders();
320 for (ProviderIterator provider = content_settings_providers_.begin(); 332 for (ProviderIterator provider = content_settings_providers_.begin();
321 provider != content_settings_providers_.end(); 333 provider != content_settings_providers_.end();
322 ++provider) { 334 ++provider) {
323 provider->second->ClearAllContentSettingsRules(content_type); 335 provider->second->ClearAllContentSettingsRules(content_type);
324 } 336 }
325 } 337 }
326 338
327 bool HostContentSettingsMap::IsValueAllowedForType( 339 bool HostContentSettingsMap::IsValueAllowedForType(
328 PrefService* prefs, const base::Value* value, ContentSettingsType type) { 340 PrefService* prefs, const base::Value* value, ContentSettingsType type) {
329 return ContentTypeHasCompoundValue(type) || IsSettingAllowedForType( 341 return ContentTypeHasCompoundValue(type) || IsSettingAllowedForType(
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 setting_value = content_settings::ValueToContentSetting(rule.value.get()); 510 setting_value = content_settings::ValueToContentSetting(rule.value.get());
499 } 511 }
500 settings->push_back(ContentSettingPatternSource( 512 settings->push_back(ContentSettingPatternSource(
501 rule.primary_pattern, rule.secondary_pattern, 513 rule.primary_pattern, rule.secondary_pattern,
502 setting_value, 514 setting_value,
503 kProviderNames[provider_type], 515 kProviderNames[provider_type],
504 incognito)); 516 incognito));
505 } 517 }
506 } 518 }
507 519
520 void HostContentSettingsMap::UsedContentSettingsProviders() const {
521 #ifndef NDEBUG
522 used_content_settings_providers_ = true;
523 #endif
524 }
525
508 bool HostContentSettingsMap::ShouldAllowAllContent( 526 bool HostContentSettingsMap::ShouldAllowAllContent(
509 const GURL& primary_url, 527 const GURL& primary_url,
510 const GURL& secondary_url, 528 const GURL& secondary_url,
511 ContentSettingsType content_type) { 529 ContentSettingsType content_type) {
512 if (content_type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS || 530 if (content_type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS ||
513 content_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) { 531 content_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) {
514 return false; 532 return false;
515 } 533 }
516 if (secondary_url.SchemeIs(chrome::kChromeUIScheme) && 534 if (secondary_url.SchemeIs(chrome::kChromeUIScheme) &&
517 content_type == CONTENT_SETTINGS_TYPE_COOKIES && 535 content_type == CONTENT_SETTINGS_TYPE_COOKIES &&
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 HostContentSettingsMap::GetProviderTypeFromSource( 601 HostContentSettingsMap::GetProviderTypeFromSource(
584 const std::string& source) { 602 const std::string& source) {
585 for (size_t i = 0; i < arraysize(kProviderNames); ++i) { 603 for (size_t i = 0; i < arraysize(kProviderNames); ++i) {
586 if (source == kProviderNames[i]) 604 if (source == kProviderNames[i])
587 return static_cast<ProviderType>(i); 605 return static_cast<ProviderType>(i);
588 } 606 }
589 607
590 NOTREACHED(); 608 NOTREACHED();
591 return DEFAULT_PROVIDER; 609 return DEFAULT_PROVIDER;
592 } 610 }
OLDNEW
« no previous file with comments | « chrome/browser/content_settings/host_content_settings_map.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698