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

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

Issue 7344008: Make the hcsm and its providers communicate via an observer interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: " Created 9 years, 5 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <list> 7 #include <list>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
11 #include "base/utf_string_conversions.h" 11 #include "base/utf_string_conversions.h"
12 #include "chrome/browser/content_settings/content_settings_extension_provider.h" 12 #include "chrome/browser/content_settings/content_settings_extension_provider.h"
13 #include "chrome/browser/content_settings/content_settings_policy_provider.h" 13 #include "chrome/browser/content_settings/content_settings_policy_provider.h"
14 #include "chrome/browser/content_settings/content_settings_pref_provider.h" 14 #include "chrome/browser/content_settings/content_settings_pref_provider.h"
15 #include "chrome/browser/content_settings/content_settings_abstract_provider.h"
15 #include "chrome/browser/content_settings/content_settings_provider.h" 16 #include "chrome/browser/content_settings/content_settings_provider.h"
16 #include "chrome/browser/content_settings/content_settings_utils.h" 17 #include "chrome/browser/content_settings/content_settings_utils.h"
17 #include "chrome/browser/extensions/extension_service.h" 18 #include "chrome/browser/extensions/extension_service.h"
18 #include "chrome/browser/prefs/pref_service.h" 19 #include "chrome/browser/prefs/pref_service.h"
19 #include "chrome/browser/prefs/scoped_user_pref_update.h" 20 #include "chrome/browser/prefs/scoped_user_pref_update.h"
20 #include "chrome/browser/profiles/profile.h" 21 #include "chrome/browser/profiles/profile.h"
21 #include "chrome/common/chrome_notification_types.h" 22 #include "chrome/common/chrome_notification_types.h"
22 #include "chrome/common/chrome_switches.h" 23 #include "chrome/common/chrome_switches.h"
23 #include "chrome/common/pref_names.h" 24 #include "chrome/common/pref_names.h"
24 #include "chrome/common/url_constants.h" 25 #include "chrome/common/url_constants.h"
(...skipping 18 matching lines...) Expand all
43 url.SchemeIs(chrome::kExtensionScheme); 44 url.SchemeIs(chrome::kExtensionScheme);
44 } 45 }
45 46
46 typedef linked_ptr<content_settings::DefaultProviderInterface> 47 typedef linked_ptr<content_settings::DefaultProviderInterface>
47 DefaultContentSettingsProviderPtr; 48 DefaultContentSettingsProviderPtr;
48 typedef std::vector<DefaultContentSettingsProviderPtr>::iterator 49 typedef std::vector<DefaultContentSettingsProviderPtr>::iterator
49 DefaultProviderIterator; 50 DefaultProviderIterator;
50 typedef std::vector<DefaultContentSettingsProviderPtr>::const_iterator 51 typedef std::vector<DefaultContentSettingsProviderPtr>::const_iterator
51 ConstDefaultProviderIterator; 52 ConstDefaultProviderIterator;
52 53
53 typedef linked_ptr<content_settings::ProviderInterface> ProviderPtr; 54 typedef linked_ptr<content_settings::AbstractProvider> ProviderPtr;
54 typedef std::vector<ProviderPtr>::iterator ProviderIterator; 55 typedef std::vector<ProviderPtr>::iterator ProviderIterator;
55 typedef std::vector<ProviderPtr>::const_iterator ConstProviderIterator; 56 typedef std::vector<ProviderPtr>::const_iterator ConstProviderIterator;
56 57
57 typedef content_settings::ProviderInterface::Rules Rules; 58 typedef content_settings::ProviderInterface::Rules Rules;
58 typedef content_settings::ProviderInterface::Rules::iterator 59 typedef content_settings::ProviderInterface::Rules::iterator
Bernhard Bauer 2011/07/13 07:58:18 While you're in here, could you do some additional
markusheintz_ 2011/07/13 12:48:16 Done.
59 rules_iterator; 60 rules_iterator;
60 typedef content_settings::ProviderInterface::Rules::const_iterator 61 typedef content_settings::ProviderInterface::Rules::const_iterator
61 const_rules_iterator; 62 const_rules_iterator;
62 63
63 const char* kProviderNames[] = { 64 const char* kProviderNames[] = {
64 "policy", 65 "policy",
65 "extension", 66 "extension",
66 "preference" 67 "preference"
67 }; 68 };
68 69
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 UserMetrics::RecordAction( 103 UserMetrics::RecordAction(
103 UserMetricsAction("ThirdPartyCookieBlockingDisabled")); 104 UserMetricsAction("ThirdPartyCookieBlockingDisabled"));
104 } 105 }
105 is_block_third_party_cookies_managed_ = 106 is_block_third_party_cookies_managed_ =
106 prefs_->IsManagedPreference(prefs::kBlockThirdPartyCookies); 107 prefs_->IsManagedPreference(prefs::kBlockThirdPartyCookies);
107 108
108 // User defined non default content settings are provided by the PrefProvider. 109 // User defined non default content settings are provided by the PrefProvider.
109 // The order in which the content settings providers are created is critical, 110 // The order in which the content settings providers are created is critical,
110 // as providers that are further up in the list (i.e. added earlier) override 111 // as providers that are further up in the list (i.e. added earlier) override
111 // providers further down. 112 // providers further down.
112 content_settings_providers_.push_back(make_linked_ptr( 113 content_settings::AbstractProvider* provider =
113 new content_settings::PolicyProvider(this, 114 new content_settings::PolicyProvider(
114 prefs_, 115 this, prefs_, policy_default_provider);
115 policy_default_provider))); 116 content_settings_providers_.push_back(make_linked_ptr(provider));
117
116 if (extension_service) { 118 if (extension_service) {
117 // |extension_service| can be NULL in unit tests. 119 // |extension_service| can be NULL in unit tests.
118 content_settings_providers_.push_back(make_linked_ptr( 120 provider = new content_settings::ExtensionProvider(
119 new content_settings::ExtensionProvider( 121 this,
120 this, 122 extension_service->GetExtensionContentSettingsStore(),
121 extension_service->GetExtensionContentSettingsStore(), 123 is_off_the_record_);
122 is_off_the_record_))); 124 content_settings_providers_.push_back(make_linked_ptr(provider));
123 } 125 }
124 content_settings_providers_.push_back(make_linked_ptr( 126 provider = new content_settings::PrefProvider(
125 new content_settings::PrefProvider(this, prefs_, is_off_the_record_))); 127 this, prefs_, is_off_the_record_);
128 content_settings_providers_.push_back(make_linked_ptr(provider));
126 129
127 pref_change_registrar_.Init(prefs_); 130 pref_change_registrar_.Init(prefs_);
128 pref_change_registrar_.Add(prefs::kBlockThirdPartyCookies, this); 131 pref_change_registrar_.Add(prefs::kBlockThirdPartyCookies, this);
129 } 132 }
130 133
131 // static 134 // static
132 void HostContentSettingsMap::RegisterUserPrefs(PrefService* prefs) { 135 void HostContentSettingsMap::RegisterUserPrefs(PrefService* prefs) {
133 prefs->RegisterBooleanPref(prefs::kBlockThirdPartyCookies, 136 prefs->RegisterBooleanPref(prefs::kBlockThirdPartyCookies,
134 false, 137 false,
135 PrefService::SYNCABLE_PREF); 138 PrefService::SYNCABLE_PREF);
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 } 443 }
441 444
442 { 445 {
443 base::AutoLock auto_lock(lock_); 446 base::AutoLock auto_lock(lock_);
444 block_third_party_cookies_ = block; 447 block_third_party_cookies_ = block;
445 } 448 }
446 449
447 prefs_->SetBoolean(prefs::kBlockThirdPartyCookies, block); 450 prefs_->SetBoolean(prefs::kBlockThirdPartyCookies, block);
448 } 451 }
449 452
453 void HostContentSettingsMap::OnContentSettingChanged(
454 const ContentSettingsDetails& details) {
455 LOG(ERROR) << " *** OnContentSettingChanged event received:"
Bernhard Bauer 2011/07/13 07:58:18 Please remember to remove this statement before co
markusheintz_ 2011/07/13 12:48:16 removed
456 << " [" << details.primary_pattern().ToString()
457 << ", " << details.secondary_pattern().ToString()
458 << ", " << details.type()
459 << ", " << details.resource_identifier()
460 << "]";
461 NotificationService::current()->Notify(
462 chrome::NOTIFICATION_CONTENT_SETTINGS_CHANGED,
463 Source<HostContentSettingsMap>(this),
464 Details<const ContentSettingsDetails>(&details));
465 }
466
450 void HostContentSettingsMap::Observe(int type, 467 void HostContentSettingsMap::Observe(int type,
451 const NotificationSource& source, 468 const NotificationSource& source,
452 const NotificationDetails& details) { 469 const NotificationDetails& details) {
453 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 470 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
454 471
455 if (type == chrome::NOTIFICATION_PREF_CHANGED) { 472 if (type == chrome::NOTIFICATION_PREF_CHANGED) {
456 DCHECK_EQ(prefs_, Source<PrefService>(source).ptr()); 473 DCHECK_EQ(prefs_, Source<PrefService>(source).ptr());
457 if (updating_preferences_) 474 if (updating_preferences_)
458 return; 475 return;
459 476
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES, 531 SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES,
515 (cookie_behavior == net::StaticCookiePolicy::BLOCK_ALL_COOKIES) ? 532 (cookie_behavior == net::StaticCookiePolicy::BLOCK_ALL_COOKIES) ?
516 CONTENT_SETTING_BLOCK : CONTENT_SETTING_ALLOW); 533 CONTENT_SETTING_BLOCK : CONTENT_SETTING_ALLOW);
517 } 534 }
518 if (!prefs_->HasPrefPath(prefs::kBlockThirdPartyCookies)) { 535 if (!prefs_->HasPrefPath(prefs::kBlockThirdPartyCookies)) {
519 SetBlockThirdPartyCookies(cookie_behavior == 536 SetBlockThirdPartyCookies(cookie_behavior ==
520 net::StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES); 537 net::StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES);
521 } 538 }
522 } 539 }
523 } 540 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698