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

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: Merge to head for commit 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
« no previous file with comments | « chrome/browser/profiles/profile_impl.h ('k') | chrome/browser/protector/base_prefs_change.h » ('j') | 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/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/prefs/json_pref_store.h" 16 #include "base/prefs/json_pref_store.h"
16 #include "base/string_number_conversions.h" 17 #include "base/string_number_conversions.h"
17 #include "base/string_tokenizer.h" 18 #include "base/string_tokenizer.h"
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 #endif 355 #endif
355 356
356 if (create_mode == CREATE_MODE_ASYNCHRONOUS) { 357 if (create_mode == CREATE_MODE_ASYNCHRONOUS) {
357 prefs_.reset(PrefService::CreatePrefService( 358 prefs_.reset(PrefService::CreatePrefService(
358 GetPrefFilePath(), 359 GetPrefFilePath(),
359 sequenced_task_runner, 360 sequenced_task_runner,
360 policy_service_.get(), 361 policy_service_.get(),
361 new ExtensionPrefStore( 362 new ExtensionPrefStore(
362 ExtensionPrefValueMapFactory::GetForProfile(this), false), 363 ExtensionPrefValueMapFactory::GetForProfile(this), false),
363 true)); 364 true));
364 // Wait for the notification that prefs has been loaded (successfully or 365 // Wait for the notification that prefs has been loaded
365 // not). 366 // (successfully or not). Note that we can use base::Unretained
366 registrar_.Add(this, chrome::NOTIFICATION_PREF_INITIALIZATION_COMPLETED, 367 // because the PrefService is owned by this class and lives on
367 content::Source<PrefService>(prefs_.get())); 368 // the same thread.
369 prefs_->AddPrefInitObserver(base::Bind(&ProfileImpl::OnPrefsLoaded,
370 base::Unretained(this)));
368 } else if (create_mode == CREATE_MODE_SYNCHRONOUS) { 371 } else if (create_mode == CREATE_MODE_SYNCHRONOUS) {
369 // Load prefs synchronously. 372 // Load prefs synchronously.
370 prefs_.reset(PrefService::CreatePrefService( 373 prefs_.reset(PrefService::CreatePrefService(
371 GetPrefFilePath(), 374 GetPrefFilePath(),
372 sequenced_task_runner, 375 sequenced_task_runner,
373 policy_service_.get(), 376 policy_service_.get(),
374 new ExtensionPrefStore( 377 new ExtensionPrefStore(
375 ExtensionPrefValueMapFactory::GetForProfile(this), false), 378 ExtensionPrefValueMapFactory::GetForProfile(this), false),
376 false)); 379 false));
377 OnPrefsLoaded(true); 380 OnPrefsLoaded(true);
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after
908 } 911 }
909 912
910 history::TopSites* ProfileImpl::GetTopSitesWithoutCreating() { 913 history::TopSites* ProfileImpl::GetTopSitesWithoutCreating() {
911 return top_sites_; 914 return top_sites_;
912 } 915 }
913 916
914 void ProfileImpl::Observe(int type, 917 void ProfileImpl::Observe(int type,
915 const content::NotificationSource& source, 918 const content::NotificationSource& source,
916 const content::NotificationDetails& details) { 919 const content::NotificationDetails& details) {
917 switch (type) { 920 switch (type) {
918 case chrome::NOTIFICATION_PREF_INITIALIZATION_COMPLETED: {
919 bool* succeeded = content::Details<bool>(details).ptr();
920 PrefService *prefs = content::Source<PrefService>(source).ptr();
921 DCHECK(prefs == prefs_.get());
922 registrar_.Remove(this,
923 chrome::NOTIFICATION_PREF_INITIALIZATION_COMPLETED,
924 content::Source<PrefService>(prefs));
925 OnPrefsLoaded(*succeeded);
926 break;
927 }
928 case chrome::NOTIFICATION_PREF_CHANGED: {
929 std::string* pref_name_in = content::Details<std::string>(details).ptr();
930 PrefService* prefs = content::Source<PrefService>(source).ptr();
931 DCHECK(pref_name_in && prefs);
932 if (*pref_name_in == prefs::kGoogleServicesUsername) {
933 UpdateProfileUserNameCache();
934 } else if (*pref_name_in == prefs::kProfileAvatarIndex) {
935 UpdateProfileAvatarCache();
936 } else if (*pref_name_in == prefs::kProfileName) {
937 UpdateProfileNameCache();
938 } else if (*pref_name_in == prefs::kDefaultZoomLevel) {
939 HostZoomMap::GetForBrowserContext(this)->SetDefaultZoomLevel(
940 prefs->GetDouble(prefs::kDefaultZoomLevel));
941 }
942 break;
943 }
944 case chrome::NOTIFICATION_BOOKMARK_MODEL_LOADED: 921 case chrome::NOTIFICATION_BOOKMARK_MODEL_LOADED:
945 // Causes lazy-load if sync is enabled. 922 // Causes lazy-load if sync is enabled.
946 ProfileSyncServiceFactory::GetInstance()->GetForProfile(this); 923 ProfileSyncServiceFactory::GetInstance()->GetForProfile(this);
947 registrar_.Remove(this, chrome::NOTIFICATION_BOOKMARK_MODEL_LOADED, 924 registrar_.Remove(this, chrome::NOTIFICATION_BOOKMARK_MODEL_LOADED,
948 content::Source<Profile>(this)); 925 content::Source<Profile>(this));
949 break; 926 break;
950 case content::NOTIFICATION_ZOOM_LEVEL_CHANGED: { 927 case content::NOTIFICATION_ZOOM_LEVEL_CHANGED: {
951 const std::string& host = 928 const std::string& host =
952 *(content::Details<const std::string>(details).ptr()); 929 *(content::Details<const std::string>(details).ptr());
953 if (!host.empty()) { 930 if (!host.empty()) {
954 HostZoomMap* host_zoom_map = HostZoomMap::GetForBrowserContext(this); 931 HostZoomMap* host_zoom_map = HostZoomMap::GetForBrowserContext(this);
955 double level = host_zoom_map->GetZoomLevel(host); 932 double level = host_zoom_map->GetZoomLevel(host);
956 DictionaryPrefUpdate update(prefs_.get(), prefs::kPerHostZoomLevels); 933 DictionaryPrefUpdate update(prefs_.get(), prefs::kPerHostZoomLevels);
957 DictionaryValue* host_zoom_dictionary = update.Get(); 934 DictionaryValue* host_zoom_dictionary = update.Get();
958 if (level == host_zoom_map->GetDefaultZoomLevel()) { 935 if (level == host_zoom_map->GetDefaultZoomLevel()) {
959 host_zoom_dictionary->RemoveWithoutPathExpansion(host, NULL); 936 host_zoom_dictionary->RemoveWithoutPathExpansion(host, NULL);
960 } else { 937 } else {
961 host_zoom_dictionary->SetWithoutPathExpansion( 938 host_zoom_dictionary->SetWithoutPathExpansion(
962 host, Value::CreateDoubleValue(level)); 939 host, Value::CreateDoubleValue(level));
963 } 940 }
964 } 941 }
965 break; 942 break;
966 } 943 }
967 default: 944 default:
968 NOTREACHED(); 945 NOTREACHED();
969 } 946 }
970 } 947 }
971 948
949 void ProfileImpl::OnPreferenceChanged(PrefServiceBase* prefs,
950 const std::string& pref_name_in) {
951 DCHECK(prefs);
952 if (pref_name_in == prefs::kGoogleServicesUsername) {
953 UpdateProfileUserNameCache();
954 } else if (pref_name_in == prefs::kProfileAvatarIndex) {
955 UpdateProfileAvatarCache();
956 } else if (pref_name_in == prefs::kProfileName) {
957 UpdateProfileNameCache();
958 } else if (pref_name_in == prefs::kDefaultZoomLevel) {
959 HostZoomMap::GetForBrowserContext(this)->SetDefaultZoomLevel(
960 prefs->GetDouble(prefs::kDefaultZoomLevel));
961 }
962 }
963
972 #if defined(ENABLE_SESSION_SERVICE) 964 #if defined(ENABLE_SESSION_SERVICE)
973 void ProfileImpl::StopCreateSessionServiceTimer() { 965 void ProfileImpl::StopCreateSessionServiceTimer() {
974 create_session_service_timer_.Stop(); 966 create_session_service_timer_.Stop();
975 } 967 }
976 968
977 void ProfileImpl::EnsureSessionServiceCreated() { 969 void ProfileImpl::EnsureSessionServiceCreated() {
978 SessionServiceFactory::GetForProfile(this); 970 SessionServiceFactory::GetForProfile(this);
979 } 971 }
980 #endif 972 #endif
981 973
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
1163 if (!path.empty()) 1155 if (!path.empty())
1164 *cache_path = path; 1156 *cache_path = path;
1165 *max_size = is_media_context ? prefs_->GetInteger(prefs::kMediaCacheSize) : 1157 *max_size = is_media_context ? prefs_->GetInteger(prefs::kMediaCacheSize) :
1166 prefs_->GetInteger(prefs::kDiskCacheSize); 1158 prefs_->GetInteger(prefs::kDiskCacheSize);
1167 } 1159 }
1168 1160
1169 base::Callback<ChromeURLDataManagerBackend*(void)> 1161 base::Callback<ChromeURLDataManagerBackend*(void)>
1170 ProfileImpl::GetChromeURLDataManagerBackendGetter() const { 1162 ProfileImpl::GetChromeURLDataManagerBackendGetter() const {
1171 return io_data_.GetChromeURLDataManagerBackendGetter(); 1163 return io_data_.GetChromeURLDataManagerBackendGetter();
1172 } 1164 }
OLDNEW
« no previous file with comments | « chrome/browser/profiles/profile_impl.h ('k') | chrome/browser/protector/base_prefs_change.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698