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

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

Issue 7327007: Moving notification types which are chrome specific to a new header file chrome_notification_type... (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/content_settings_pref_provider.h" 5 #include "chrome/browser/content_settings/content_settings_pref_provider.h"
6 6
7 #include <list> 7 #include <list>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/metrics/histogram.h" 13 #include "base/metrics/histogram.h"
14 #include "chrome/browser/content_settings/content_settings_details.h" 14 #include "chrome/browser/content_settings/content_settings_details.h"
15 #include "chrome/browser/content_settings/content_settings_pattern.h" 15 #include "chrome/browser/content_settings/content_settings_pattern.h"
16 #include "chrome/browser/content_settings/content_settings_utils.h" 16 #include "chrome/browser/content_settings/content_settings_utils.h"
17 #include "chrome/browser/prefs/pref_service.h" 17 #include "chrome/browser/prefs/pref_service.h"
18 #include "chrome/browser/prefs/scoped_user_pref_update.h" 18 #include "chrome/browser/prefs/scoped_user_pref_update.h"
19 #include "chrome/browser/profiles/profile.h" 19 #include "chrome/browser/profiles/profile.h"
20 #include "chrome/common/chrome_notification_types.h"
20 #include "chrome/common/chrome_switches.h" 21 #include "chrome/common/chrome_switches.h"
21 #include "chrome/common/content_settings.h" 22 #include "chrome/common/content_settings.h"
22 #include "chrome/common/pref_names.h" 23 #include "chrome/common/pref_names.h"
23 #include "content/browser/browser_thread.h" 24 #include "content/browser/browser_thread.h"
24 #include "content/browser/user_metrics.h" 25 #include "content/browser/user_metrics.h"
25 #include "content/common/notification_details.h" 26 #include "content/common/notification_details.h"
26 #include "content/common/notification_service.h" 27 #include "content/common/notification_service.h"
27 #include "content/common/notification_source.h" 28 #include "content/common/notification_source.h"
28 #include "googleurl/src/gurl.h" 29 #include "googleurl/src/gurl.h"
29 #include "net/base/net_util.h" 30 #include "net/base/net_util.h"
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 CONTENT_SETTING_BLOCK) { 166 CONTENT_SETTING_BLOCK) {
166 UserMetrics::RecordAction( 167 UserMetrics::RecordAction(
167 UserMetricsAction("CookieBlockingEnabledPerDefault")); 168 UserMetricsAction("CookieBlockingEnabledPerDefault"));
168 } else { 169 } else {
169 UserMetrics::RecordAction( 170 UserMetrics::RecordAction(
170 UserMetricsAction("CookieBlockingDisabledPerDefault")); 171 UserMetricsAction("CookieBlockingDisabledPerDefault"));
171 } 172 }
172 173
173 pref_change_registrar_.Init(prefs); 174 pref_change_registrar_.Init(prefs);
174 pref_change_registrar_.Add(prefs::kDefaultContentSettings, this); 175 pref_change_registrar_.Add(prefs::kDefaultContentSettings, this);
175 notification_registrar_.Add(this, NotificationType::PROFILE_DESTROYED, 176 notification_registrar_.Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
176 Source<Profile>(profile_)); 177 Source<Profile>(profile_));
177 initializing_ = false; 178 initializing_ = false;
178 } 179 }
179 180
180 PrefDefaultProvider::~PrefDefaultProvider() { 181 PrefDefaultProvider::~PrefDefaultProvider() {
181 UnregisterObservers(); 182 UnregisterObservers();
182 } 183 }
183 184
184 ContentSetting PrefDefaultProvider::ProvideDefaultSetting( 185 ContentSetting PrefDefaultProvider::ProvideDefaultSetting(
185 ContentSettingsType content_type) const { 186 ContentSettingsType content_type) const {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 content_type, 227 content_type,
227 std::string()); 228 std::string());
228 NotifyObservers(details); 229 NotifyObservers(details);
229 } 230 }
230 231
231 bool PrefDefaultProvider::DefaultSettingIsManaged( 232 bool PrefDefaultProvider::DefaultSettingIsManaged(
232 ContentSettingsType content_type) const { 233 ContentSettingsType content_type) const {
233 return false; 234 return false;
234 } 235 }
235 236
236 void PrefDefaultProvider::Observe(NotificationType type, 237 void PrefDefaultProvider::Observe(int type,
237 const NotificationSource& source, 238 const NotificationSource& source,
238 const NotificationDetails& details) { 239 const NotificationDetails& details) {
239 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 240 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
240 241
241 if (type == NotificationType::PREF_CHANGED) { 242 if (type == chrome::NOTIFICATION_PREF_CHANGED) {
242 DCHECK_EQ(profile_->GetPrefs(), Source<PrefService>(source).ptr()); 243 DCHECK_EQ(profile_->GetPrefs(), Source<PrefService>(source).ptr());
243 if (updating_preferences_) 244 if (updating_preferences_)
244 return; 245 return;
245 246
246 std::string* name = Details<std::string>(details).ptr(); 247 std::string* name = Details<std::string>(details).ptr();
247 if (*name == prefs::kDefaultContentSettings) { 248 if (*name == prefs::kDefaultContentSettings) {
248 ReadDefaultSettings(true); 249 ReadDefaultSettings(true);
249 } else { 250 } else {
250 NOTREACHED() << "Unexpected preference observed"; 251 NOTREACHED() << "Unexpected preference observed";
251 return; 252 return;
252 } 253 }
253 254
254 if (!is_incognito_) { 255 if (!is_incognito_) {
255 ContentSettingsDetails details(ContentSettingsPattern(), 256 ContentSettingsDetails details(ContentSettingsPattern(),
256 ContentSettingsPattern(), 257 ContentSettingsPattern(),
257 CONTENT_SETTINGS_TYPE_DEFAULT, 258 CONTENT_SETTINGS_TYPE_DEFAULT,
258 std::string()); 259 std::string());
259 NotifyObservers(details); 260 NotifyObservers(details);
260 } 261 }
261 } else if (type == NotificationType::PROFILE_DESTROYED) { 262 } else if (type == chrome::NOTIFICATION_PROFILE_DESTROYED) {
262 DCHECK_EQ(profile_, Source<Profile>(source).ptr()); 263 DCHECK_EQ(profile_, Source<Profile>(source).ptr());
263 UnregisterObservers(); 264 UnregisterObservers();
264 } else { 265 } else {
265 NOTREACHED() << "Unexpected notification"; 266 NOTREACHED() << "Unexpected notification";
266 } 267 }
267 } 268 }
268 269
269 void PrefDefaultProvider::UnregisterObservers() { 270 void PrefDefaultProvider::UnregisterObservers() {
270 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 271 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
271 if (!profile_) 272 if (!profile_)
272 return; 273 return;
273 pref_change_registrar_.RemoveAll(); 274 pref_change_registrar_.RemoveAll();
274 notification_registrar_.Remove(this, NotificationType::PROFILE_DESTROYED, 275 notification_registrar_.Remove(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
275 Source<Profile>(profile_)); 276 Source<Profile>(profile_));
276 profile_ = NULL; 277 profile_ = NULL;
277 } 278 }
278 279
279 void PrefDefaultProvider::ReadDefaultSettings(bool overwrite) { 280 void PrefDefaultProvider::ReadDefaultSettings(bool overwrite) {
280 PrefService* prefs = profile_->GetPrefs(); 281 PrefService* prefs = profile_->GetPrefs();
281 const DictionaryValue* default_settings_dictionary = 282 const DictionaryValue* default_settings_dictionary =
282 prefs->GetDictionary(prefs::kDefaultContentSettings); 283 prefs->GetDictionary(prefs::kDefaultContentSettings);
283 284
284 base::AutoLock lock(lock_); 285 base::AutoLock lock(lock_);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 ClickToPlayFixup(CONTENT_SETTINGS_TYPE_PLUGINS, 331 ClickToPlayFixup(CONTENT_SETTINGS_TYPE_PLUGINS,
331 settings->settings[CONTENT_SETTINGS_TYPE_PLUGINS]); 332 settings->settings[CONTENT_SETTINGS_TYPE_PLUGINS]);
332 } 333 }
333 334
334 void PrefDefaultProvider::NotifyObservers( 335 void PrefDefaultProvider::NotifyObservers(
335 const ContentSettingsDetails& details) { 336 const ContentSettingsDetails& details) {
336 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 337 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
337 if (initializing_ || profile_ == NULL) 338 if (initializing_ || profile_ == NULL)
338 return; 339 return;
339 NotificationService::current()->Notify( 340 NotificationService::current()->Notify(
340 NotificationType::CONTENT_SETTINGS_CHANGED, 341 chrome::NOTIFICATION_CONTENT_SETTINGS_CHANGED,
341 Source<HostContentSettingsMap>(profile_->GetHostContentSettingsMap()), 342 Source<HostContentSettingsMap>(profile_->GetHostContentSettingsMap()),
342 Details<const ContentSettingsDetails>(&details)); 343 Details<const ContentSettingsDetails>(&details));
343 } 344 }
344 345
345 void PrefDefaultProvider::MigrateObsoleteNotificationPref(PrefService* prefs) { 346 void PrefDefaultProvider::MigrateObsoleteNotificationPref(PrefService* prefs) {
346 if (prefs->HasPrefPath(prefs::kDesktopNotificationDefaultContentSetting)) { 347 if (prefs->HasPrefPath(prefs::kDesktopNotificationDefaultContentSetting)) {
347 ContentSetting setting = IntToContentSetting( 348 ContentSetting setting = IntToContentSetting(
348 prefs->GetInteger(prefs::kDesktopNotificationDefaultContentSetting)); 349 prefs->GetInteger(prefs::kDesktopNotificationDefaultContentSetting));
349 UpdateDefaultSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, setting); 350 UpdateDefaultSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, setting);
350 prefs->ClearPref(prefs::kDesktopNotificationDefaultContentSetting); 351 prefs->ClearPref(prefs::kDesktopNotificationDefaultContentSetting);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 427
427 if (!is_incognito_) { 428 if (!is_incognito_) {
428 UMA_HISTOGRAM_COUNTS("ContentSettings.NumberOfExceptions", 429 UMA_HISTOGRAM_COUNTS("ContentSettings.NumberOfExceptions",
429 value_map_.size()); 430 value_map_.size());
430 } 431 }
431 432
432 pref_change_registrar_.Init(prefs); 433 pref_change_registrar_.Init(prefs);
433 pref_change_registrar_.Add(prefs::kContentSettingsPatterns, this); 434 pref_change_registrar_.Add(prefs::kContentSettingsPatterns, this);
434 pref_change_registrar_.Add(prefs::kContentSettingsPatternPairs, this); 435 pref_change_registrar_.Add(prefs::kContentSettingsPatternPairs, this);
435 436
436 notification_registrar_.Add(this, NotificationType::PROFILE_DESTROYED, 437 notification_registrar_.Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
437 Source<Profile>(profile_)); 438 Source<Profile>(profile_));
438 initializing_ = false; 439 initializing_ = false;
439 } 440 }
440 441
441 ContentSetting PrefProvider::GetContentSetting( 442 ContentSetting PrefProvider::GetContentSetting(
442 const GURL& primary_url, 443 const GURL& primary_url,
443 const GURL& secondary_url, 444 const GURL& secondary_url,
444 ContentSettingsType content_type, 445 ContentSettingsType content_type,
445 const ResourceIdentifier& resource_identifier) const { 446 const ResourceIdentifier& resource_identifier) const {
446 // For a |PrefProvider| used in a |HostContentSettingsMap| of a non incognito 447 // For a |PrefProvider| used in a |HostContentSettingsMap| of a non incognito
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 569
569 ContentSettingsDetails details( 570 ContentSettingsDetails details(
570 ContentSettingsPattern(), 571 ContentSettingsPattern(),
571 ContentSettingsPattern(), 572 ContentSettingsPattern(),
572 content_type, 573 content_type,
573 std::string()); 574 std::string());
574 NotifyObservers(details); 575 NotifyObservers(details);
575 } 576 }
576 577
577 void PrefProvider::Observe( 578 void PrefProvider::Observe(
578 NotificationType type, 579 int type,
579 const NotificationSource& source, 580 const NotificationSource& source,
580 const NotificationDetails& details) { 581 const NotificationDetails& details) {
581 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 582 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
582 583
583 if (type == NotificationType::PREF_CHANGED) { 584 if (type == chrome::NOTIFICATION_PREF_CHANGED) {
584 DCHECK_EQ(profile_->GetPrefs(), Source<PrefService>(source).ptr()); 585 DCHECK_EQ(profile_->GetPrefs(), Source<PrefService>(source).ptr());
585 if (updating_preferences_) 586 if (updating_preferences_)
586 return; 587 return;
587 588
588 std::string* name = Details<std::string>(details).ptr(); 589 std::string* name = Details<std::string>(details).ptr();
589 if (*name == prefs::kContentSettingsPatternPairs) { 590 if (*name == prefs::kContentSettingsPatternPairs) {
590 SyncObsoletePref(profile_->GetPrefs()); 591 SyncObsoletePref(profile_->GetPrefs());
591 ReadContentSettingsFromPref(true); 592 ReadContentSettingsFromPref(true);
592 } else if (*name == prefs::kContentSettingsPatterns) { 593 } else if (*name == prefs::kContentSettingsPatterns) {
593 updating_preferences_ = true; 594 updating_preferences_ = true;
594 MigrateObsoleteContentSettingsPatternPref(profile_->GetPrefs()); 595 MigrateObsoleteContentSettingsPatternPref(profile_->GetPrefs());
595 updating_preferences_ = false; 596 updating_preferences_ = false;
596 ReadContentSettingsFromPref(true); 597 ReadContentSettingsFromPref(true);
597 } else { 598 } else {
598 NOTREACHED() << "Unexpected preference observed"; 599 NOTREACHED() << "Unexpected preference observed";
599 return; 600 return;
600 } 601 }
601 602
602 if (!is_incognito_) { 603 if (!is_incognito_) {
603 ContentSettingsDetails details(ContentSettingsPattern(), 604 ContentSettingsDetails details(ContentSettingsPattern(),
604 ContentSettingsPattern(), 605 ContentSettingsPattern(),
605 CONTENT_SETTINGS_TYPE_DEFAULT, 606 CONTENT_SETTINGS_TYPE_DEFAULT,
606 std::string()); 607 std::string());
607 NotifyObservers(details); 608 NotifyObservers(details);
608 } 609 }
609 } else if (type == NotificationType::PROFILE_DESTROYED) { 610 } else if (type == chrome::NOTIFICATION_PROFILE_DESTROYED) {
610 DCHECK_EQ(profile_, Source<Profile>(source).ptr()); 611 DCHECK_EQ(profile_, Source<Profile>(source).ptr());
611 UnregisterObservers(); 612 UnregisterObservers();
612 } else { 613 } else {
613 NOTREACHED() << "Unexpected notification"; 614 NOTREACHED() << "Unexpected notification";
614 } 615 }
615 } 616 }
616 617
617 PrefProvider::~PrefProvider() { 618 PrefProvider::~PrefProvider() {
618 UnregisterObservers(); 619 UnregisterObservers();
619 } 620 }
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
916 move_items[i].second, pattern_settings_dictionary); 917 move_items[i].second, pattern_settings_dictionary);
917 } 918 }
918 } 919 }
919 920
920 void PrefProvider::NotifyObservers( 921 void PrefProvider::NotifyObservers(
921 const ContentSettingsDetails& details) { 922 const ContentSettingsDetails& details) {
922 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 923 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
923 if (initializing_ || profile_ == NULL) 924 if (initializing_ || profile_ == NULL)
924 return; 925 return;
925 NotificationService::current()->Notify( 926 NotificationService::current()->Notify(
926 NotificationType::CONTENT_SETTINGS_CHANGED, 927 chrome::NOTIFICATION_CONTENT_SETTINGS_CHANGED,
927 Source<HostContentSettingsMap>( 928 Source<HostContentSettingsMap>(
928 profile_->GetHostContentSettingsMap()), 929 profile_->GetHostContentSettingsMap()),
929 Details<const ContentSettingsDetails>(&details)); 930 Details<const ContentSettingsDetails>(&details));
930 } 931 }
931 932
932 void PrefProvider::UnregisterObservers() { 933 void PrefProvider::UnregisterObservers() {
933 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 934 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
934 if (!profile_) 935 if (!profile_)
935 return; 936 return;
936 pref_change_registrar_.RemoveAll(); 937 pref_change_registrar_.RemoveAll();
937 notification_registrar_.Remove(this, NotificationType::PROFILE_DESTROYED, 938 notification_registrar_.Remove(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
938 Source<Profile>(profile_)); 939 Source<Profile>(profile_));
939 profile_ = NULL; 940 profile_ = NULL;
940 } 941 }
941 942
942 void PrefProvider::MigrateObsoletePerhostPref(PrefService* prefs) { 943 void PrefProvider::MigrateObsoletePerhostPref(PrefService* prefs) {
943 if (prefs->HasPrefPath(prefs::kPerHostContentSettings)) { 944 if (prefs->HasPrefPath(prefs::kPerHostContentSettings)) {
944 const DictionaryValue* all_settings_dictionary = 945 const DictionaryValue* all_settings_dictionary =
945 prefs->GetDictionary(prefs::kPerHostContentSettings); 946 prefs->GetDictionary(prefs::kPerHostContentSettings);
946 DCHECK(all_settings_dictionary); 947 DCHECK(all_settings_dictionary);
947 for (DictionaryValue::key_iterator 948 for (DictionaryValue::key_iterator
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
1085 std::string new_key = pattern_pair.first.ToString(); 1086 std::string new_key = pattern_pair.first.ToString();
1086 // Existing values are overwritten. 1087 // Existing values are overwritten.
1087 obsolete_settings_dictionary->SetWithoutPathExpansion( 1088 obsolete_settings_dictionary->SetWithoutPathExpansion(
1088 new_key, dictionary->DeepCopy()); 1089 new_key, dictionary->DeepCopy());
1089 } 1090 }
1090 } 1091 }
1091 updating_preferences_ = false; 1092 updating_preferences_ = false;
1092 } 1093 }
1093 1094
1094 } // namespace content_settings 1095 } // namespace content_settings
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698