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

Side by Side Diff: chrome/browser/profiles/profile_impl.cc

Issue 11345008: Remove content::NotificationObserver dependency from most Prefs code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments. Created 8 years, 1 month 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) 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/profiles/profile_impl.h" 5 #include "chrome/browser/profiles/profile_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h"
8 #include "base/command_line.h" 9 #include "base/command_line.h"
9 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
10 #include "base/environment.h" 11 #include "base/environment.h"
11 #include "base/file_path.h" 12 #include "base/file_path.h"
12 #include "base/file_util.h" 13 #include "base/file_util.h"
13 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/scoped_ptr.h"
14 #include "base/path_service.h" 15 #include "base/path_service.h"
15 #include "base/string_number_conversions.h" 16 #include "base/string_number_conversions.h"
16 #include "base/string_tokenizer.h" 17 #include "base/string_tokenizer.h"
17 #include "base/string_util.h" 18 #include "base/string_util.h"
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 policy_service_.reset(new policy::PolicyServiceStub()); 315 policy_service_.reset(new policy::PolicyServiceStub());
315 #endif 316 #endif
316 317
317 if (create_mode == CREATE_MODE_ASYNCHRONOUS) { 318 if (create_mode == CREATE_MODE_ASYNCHRONOUS) {
318 prefs_.reset(PrefService::CreatePrefService( 319 prefs_.reset(PrefService::CreatePrefService(
319 GetPrefFilePath(), 320 GetPrefFilePath(),
320 policy_service_.get(), 321 policy_service_.get(),
321 new ExtensionPrefStore( 322 new ExtensionPrefStore(
322 ExtensionPrefValueMapFactory::GetForProfile(this), false), 323 ExtensionPrefValueMapFactory::GetForProfile(this), false),
323 true)); 324 true));
324 // Wait for the notification that prefs has been loaded (successfully or 325 // Wait for the notification that prefs has been loaded
325 // not). 326 // (successfully or not). Note that we can use base::Unretained
326 registrar_.Add(this, chrome::NOTIFICATION_PREF_INITIALIZATION_COMPLETED, 327 // because the prefs service is owned by this class and lives on
327 content::Source<PrefService>(prefs_.get())); 328 // the same thread.
329 prefs_->AddPrefInitObserver(base::Bind(&ProfileImpl::OnPrefsLoaded,
330 base::Unretained(this)));
328 } else if (create_mode == CREATE_MODE_SYNCHRONOUS) { 331 } else if (create_mode == CREATE_MODE_SYNCHRONOUS) {
329 // Load prefs synchronously. 332 // Load prefs synchronously.
330 prefs_.reset(PrefService::CreatePrefService( 333 prefs_.reset(PrefService::CreatePrefService(
331 GetPrefFilePath(), 334 GetPrefFilePath(),
332 policy_service_.get(), 335 policy_service_.get(),
333 new ExtensionPrefStore( 336 new ExtensionPrefStore(
334 ExtensionPrefValueMapFactory::GetForProfile(this), false), 337 ExtensionPrefValueMapFactory::GetForProfile(this), false),
335 false)); 338 false));
336 OnPrefsLoaded(true); 339 OnPrefsLoaded(true);
337 } else { 340 } else {
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
884 } 887 }
885 888
886 history::TopSites* ProfileImpl::GetTopSitesWithoutCreating() { 889 history::TopSites* ProfileImpl::GetTopSitesWithoutCreating() {
887 return top_sites_; 890 return top_sites_;
888 } 891 }
889 892
890 void ProfileImpl::Observe(int type, 893 void ProfileImpl::Observe(int type,
891 const content::NotificationSource& source, 894 const content::NotificationSource& source,
892 const content::NotificationDetails& details) { 895 const content::NotificationDetails& details) {
893 switch (type) { 896 switch (type) {
894 case chrome::NOTIFICATION_PREF_INITIALIZATION_COMPLETED: {
895 bool* succeeded = content::Details<bool>(details).ptr();
896 PrefService *prefs = content::Source<PrefService>(source).ptr();
897 DCHECK(prefs == prefs_.get());
898 registrar_.Remove(this,
899 chrome::NOTIFICATION_PREF_INITIALIZATION_COMPLETED,
900 content::Source<PrefService>(prefs));
901 OnPrefsLoaded(*succeeded);
902 break;
903 }
904 case chrome::NOTIFICATION_PREF_CHANGED: {
905 std::string* pref_name_in = content::Details<std::string>(details).ptr();
906 PrefService* prefs = content::Source<PrefService>(source).ptr();
907 DCHECK(pref_name_in && prefs);
908 if (*pref_name_in == prefs::kGoogleServicesUsername) {
909 UpdateProfileUserNameCache();
910 } else if (*pref_name_in == prefs::kProfileAvatarIndex) {
911 UpdateProfileAvatarCache();
912 } else if (*pref_name_in == prefs::kProfileName) {
913 UpdateProfileNameCache();
914 } else if (*pref_name_in == prefs::kDefaultZoomLevel) {
915 HostZoomMap::GetForBrowserContext(this)->SetDefaultZoomLevel(
916 prefs->GetDouble(prefs::kDefaultZoomLevel));
917 }
918 break;
919 }
920 case chrome::NOTIFICATION_BOOKMARK_MODEL_LOADED: 897 case chrome::NOTIFICATION_BOOKMARK_MODEL_LOADED:
921 // Causes lazy-load if sync is enabled. 898 // Causes lazy-load if sync is enabled.
922 ProfileSyncServiceFactory::GetInstance()->GetForProfile(this); 899 ProfileSyncServiceFactory::GetInstance()->GetForProfile(this);
923 registrar_.Remove(this, chrome::NOTIFICATION_BOOKMARK_MODEL_LOADED, 900 registrar_.Remove(this, chrome::NOTIFICATION_BOOKMARK_MODEL_LOADED,
924 content::Source<Profile>(this)); 901 content::Source<Profile>(this));
925 break; 902 break;
926 case content::NOTIFICATION_ZOOM_LEVEL_CHANGED: { 903 case content::NOTIFICATION_ZOOM_LEVEL_CHANGED: {
927 const std::string& host = 904 const std::string& host =
928 *(content::Details<const std::string>(details).ptr()); 905 *(content::Details<const std::string>(details).ptr());
929 if (!host.empty()) { 906 if (!host.empty()) {
930 HostZoomMap* host_zoom_map = HostZoomMap::GetForBrowserContext(this); 907 HostZoomMap* host_zoom_map = HostZoomMap::GetForBrowserContext(this);
931 double level = host_zoom_map->GetZoomLevel(host); 908 double level = host_zoom_map->GetZoomLevel(host);
932 DictionaryPrefUpdate update(prefs_.get(), prefs::kPerHostZoomLevels); 909 DictionaryPrefUpdate update(prefs_.get(), prefs::kPerHostZoomLevels);
933 DictionaryValue* host_zoom_dictionary = update.Get(); 910 DictionaryValue* host_zoom_dictionary = update.Get();
934 if (level == host_zoom_map->GetDefaultZoomLevel()) { 911 if (level == host_zoom_map->GetDefaultZoomLevel()) {
935 host_zoom_dictionary->RemoveWithoutPathExpansion(host, NULL); 912 host_zoom_dictionary->RemoveWithoutPathExpansion(host, NULL);
936 } else { 913 } else {
937 host_zoom_dictionary->SetWithoutPathExpansion( 914 host_zoom_dictionary->SetWithoutPathExpansion(
938 host, Value::CreateDoubleValue(level)); 915 host, Value::CreateDoubleValue(level));
939 } 916 }
940 } 917 }
941 break; 918 break;
942 } 919 }
943 default: 920 default:
944 NOTREACHED(); 921 NOTREACHED();
945 } 922 }
946 } 923 }
947 924
925 void ProfileImpl::OnPreferenceChanged(PrefServiceBase* prefs,
926 const std::string& pref_name_in) {
927 DCHECK(prefs);
928 if (pref_name_in == prefs::kGoogleServicesUsername) {
929 UpdateProfileUserNameCache();
930 } else if (pref_name_in == prefs::kProfileAvatarIndex) {
931 UpdateProfileAvatarCache();
932 } else if (pref_name_in == prefs::kProfileName) {
933 UpdateProfileNameCache();
934 } else if (pref_name_in == prefs::kDefaultZoomLevel) {
935 HostZoomMap::GetForBrowserContext(this)->SetDefaultZoomLevel(
936 prefs->GetDouble(prefs::kDefaultZoomLevel));
937 }
938 }
939
948 #if defined(ENABLE_SESSION_SERVICE) 940 #if defined(ENABLE_SESSION_SERVICE)
949 void ProfileImpl::StopCreateSessionServiceTimer() { 941 void ProfileImpl::StopCreateSessionServiceTimer() {
950 create_session_service_timer_.Stop(); 942 create_session_service_timer_.Stop();
951 } 943 }
952 944
953 void ProfileImpl::EnsureSessionServiceCreated() { 945 void ProfileImpl::EnsureSessionServiceCreated() {
954 SessionServiceFactory::GetForProfile(this); 946 SessionServiceFactory::GetForProfile(this);
955 } 947 }
956 #endif 948 #endif
957 949
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
1139 if (!path.empty()) 1131 if (!path.empty())
1140 *cache_path = path; 1132 *cache_path = path;
1141 *max_size = is_media_context ? prefs_->GetInteger(prefs::kMediaCacheSize) : 1133 *max_size = is_media_context ? prefs_->GetInteger(prefs::kMediaCacheSize) :
1142 prefs_->GetInteger(prefs::kDiskCacheSize); 1134 prefs_->GetInteger(prefs::kDiskCacheSize);
1143 } 1135 }
1144 1136
1145 base::Callback<ChromeURLDataManagerBackend*(void)> 1137 base::Callback<ChromeURLDataManagerBackend*(void)>
1146 ProfileImpl::GetChromeURLDataManagerBackendGetter() const { 1138 ProfileImpl::GetChromeURLDataManagerBackendGetter() const {
1147 return io_data_.GetChromeURLDataManagerBackendGetter(); 1139 return io_data_.GetChromeURLDataManagerBackendGetter();
1148 } 1140 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698