OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/profile_impl.h" | 5 #include "chrome/browser/profile_impl.h" |
6 | 6 |
7 #include "app/resource_bundle.h" | 7 #include "app/resource_bundle.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/environment.h" | 9 #include "base/environment.h" |
10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 | 472 |
473 // Remove pref observers. | 473 // Remove pref observers. |
474 PrefService* prefs = GetPrefs(); | 474 PrefService* prefs = GetPrefs(); |
475 prefs->RemovePrefObserver(prefs::kSpellCheckDictionary, this); | 475 prefs->RemovePrefObserver(prefs::kSpellCheckDictionary, this); |
476 prefs->RemovePrefObserver(prefs::kEnableSpellCheck, this); | 476 prefs->RemovePrefObserver(prefs::kEnableSpellCheck, this); |
477 prefs->RemovePrefObserver(prefs::kEnableAutoSpellCorrect, this); | 477 prefs->RemovePrefObserver(prefs::kEnableAutoSpellCorrect, this); |
478 | 478 |
479 // Delete the NTP resource cache so we can unregister pref observers. | 479 // Delete the NTP resource cache so we can unregister pref observers. |
480 ntp_resource_cache_.reset(); | 480 ntp_resource_cache_.reset(); |
481 | 481 |
| 482 // The sync service needs to be deleted before the services it calls. |
482 sync_service_.reset(); | 483 sync_service_.reset(); |
483 | 484 |
484 // Both HistoryService and WebDataService maintain threads for background | 485 // Both HistoryService and WebDataService maintain threads for background |
485 // processing. Its possible each thread still has tasks on it that have | 486 // processing. Its possible each thread still has tasks on it that have |
486 // increased the ref count of the service. In such a situation, when we | 487 // increased the ref count of the service. In such a situation, when we |
487 // decrement the refcount, it won't be 0, and the threads/databases aren't | 488 // decrement the refcount, it won't be 0, and the threads/databases aren't |
488 // properly shut down. By explicitly calling Cleanup/Shutdown we ensure the | 489 // properly shut down. By explicitly calling Cleanup/Shutdown we ensure the |
489 // databases are properly closed. | 490 // databases are properly closed. |
490 if (web_data_service_.get()) | 491 if (web_data_service_.get()) |
491 web_data_service_->Shutdown(); | 492 web_data_service_->Shutdown(); |
(...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1228 } | 1229 } |
1229 | 1230 |
1230 TokenService* ProfileImpl::GetTokenService() { | 1231 TokenService* ProfileImpl::GetTokenService() { |
1231 if (!token_service_.get()) { | 1232 if (!token_service_.get()) { |
1232 token_service_.reset(new TokenService()); | 1233 token_service_.reset(new TokenService()); |
1233 } | 1234 } |
1234 return token_service_.get(); | 1235 return token_service_.get(); |
1235 } | 1236 } |
1236 | 1237 |
1237 ProfileSyncService* ProfileImpl::GetProfileSyncService() { | 1238 ProfileSyncService* ProfileImpl::GetProfileSyncService() { |
| 1239 return GetProfileSyncService(""); |
| 1240 } |
| 1241 |
| 1242 ProfileSyncService* ProfileImpl::GetProfileSyncService( |
| 1243 const std::string& cros_user) { |
| 1244 |
1238 if (!ProfileSyncService::IsSyncEnabled()) | 1245 if (!ProfileSyncService::IsSyncEnabled()) |
1239 return NULL; | 1246 return NULL; |
1240 if (!sync_service_.get()) | 1247 if (!sync_service_.get()) |
1241 InitSyncService(); | 1248 InitSyncService(cros_user); |
1242 return sync_service_.get(); | 1249 return sync_service_.get(); |
1243 } | 1250 } |
1244 | 1251 |
1245 CloudPrintProxyService* ProfileImpl::GetCloudPrintProxyService() { | 1252 CloudPrintProxyService* ProfileImpl::GetCloudPrintProxyService() { |
1246 if (!cloud_print_proxy_service_.get()) | 1253 if (!cloud_print_proxy_service_.get()) |
1247 InitCloudPrintProxyService(); | 1254 InitCloudPrintProxyService(); |
1248 return cloud_print_proxy_service_.get(); | 1255 return cloud_print_proxy_service_.get(); |
1249 } | 1256 } |
1250 | 1257 |
1251 void ProfileImpl::InitSyncService() { | 1258 void ProfileImpl::InitSyncService(const std::string& cros_user) { |
1252 profile_sync_factory_.reset( | 1259 profile_sync_factory_.reset( |
1253 new ProfileSyncFactoryImpl(this, CommandLine::ForCurrentProcess())); | 1260 new ProfileSyncFactoryImpl(this, CommandLine::ForCurrentProcess())); |
1254 sync_service_.reset( | 1261 sync_service_.reset( |
1255 profile_sync_factory_->CreateProfileSyncService()); | 1262 profile_sync_factory_->CreateProfileSyncService(cros_user)); |
1256 sync_service_->Initialize(); | 1263 sync_service_->Initialize(); |
1257 } | 1264 } |
1258 | 1265 |
1259 void ProfileImpl::InitCloudPrintProxyService() { | 1266 void ProfileImpl::InitCloudPrintProxyService() { |
1260 cloud_print_proxy_service_.reset(new CloudPrintProxyService(this)); | 1267 cloud_print_proxy_service_.reset(new CloudPrintProxyService(this)); |
1261 cloud_print_proxy_service_->Initialize(); | 1268 cloud_print_proxy_service_->Initialize(); |
1262 } | 1269 } |
1263 | 1270 |
1264 ChromeBlobStorageContext* ProfileImpl::GetBlobStorageContext() { | 1271 ChromeBlobStorageContext* ProfileImpl::GetBlobStorageContext() { |
1265 if (!blob_storage_context_) { | 1272 if (!blob_storage_context_) { |
1266 blob_storage_context_ = new ChromeBlobStorageContext(); | 1273 blob_storage_context_ = new ChromeBlobStorageContext(); |
1267 ChromeThread::PostTask( | 1274 ChromeThread::PostTask( |
1268 ChromeThread::IO, FROM_HERE, | 1275 ChromeThread::IO, FROM_HERE, |
1269 NewRunnableMethod(blob_storage_context_.get(), | 1276 NewRunnableMethod(blob_storage_context_.get(), |
1270 &ChromeBlobStorageContext::InitializeOnIOThread)); | 1277 &ChromeBlobStorageContext::InitializeOnIOThread)); |
1271 } | 1278 } |
1272 return blob_storage_context_; | 1279 return blob_storage_context_; |
1273 } | 1280 } |
1274 | 1281 |
1275 #if defined(OS_CHROMEOS) | 1282 #if defined(OS_CHROMEOS) |
1276 chromeos::ProxyConfigServiceImpl* | 1283 chromeos::ProxyConfigServiceImpl* |
1277 ProfileImpl::GetChromeOSProxyConfigServiceImpl() { | 1284 ProfileImpl::GetChromeOSProxyConfigServiceImpl() { |
1278 if (!chromeos_proxy_config_service_impl_) { | 1285 if (!chromeos_proxy_config_service_impl_) { |
1279 chromeos_proxy_config_service_impl_ = | 1286 chromeos_proxy_config_service_impl_ = |
1280 new chromeos::ProxyConfigServiceImpl(); | 1287 new chromeos::ProxyConfigServiceImpl(); |
1281 } | 1288 } |
1282 return chromeos_proxy_config_service_impl_; | 1289 return chromeos_proxy_config_service_impl_; |
1283 } | 1290 } |
1284 #endif // defined(OS_CHROMEOS) | 1291 #endif // defined(OS_CHROMEOS) |
OLD | NEW |