Chromium Code Reviews| Index: chrome/browser/sync/profile_sync_service.cc |
| diff --git a/chrome/browser/sync/profile_sync_service.cc b/chrome/browser/sync/profile_sync_service.cc |
| index 7fa28b89d5b21eead6ff2fe2cc757b6a56e3e707..1b0bc3ac31323e99a5309546d8ebbeb9b081ea8d 100644 |
| --- a/chrome/browser/sync/profile_sync_service.cc |
| +++ b/chrome/browser/sync/profile_sync_service.cc |
| @@ -21,6 +21,9 @@ |
| #include "base/string16.h" |
| #include "base/stringprintf.h" |
| #include "base/threading/thread_restrictions.h" |
| +#if defined(OS_WIN) |
| +#include "base/win/windows_version.h" |
| +#endif |
| #include "chrome/browser/about_flags.h" |
| #include "chrome/browser/browser_process.h" |
| #include "chrome/browser/defaults.h" |
| @@ -31,6 +34,8 @@ |
| #include "chrome/browser/signin/token_service.h" |
| #include "chrome/browser/signin/token_service_factory.h" |
| #include "chrome/browser/sync/backend_migrator.h" |
| +#include "chrome/browser/sync/credential_cache_service_factory_win.h" |
| +#include "chrome/browser/sync/credential_cache_service_win.h" |
| #include "chrome/browser/sync/glue/change_processor.h" |
| #include "chrome/browser/sync/glue/chrome_encryptor.h" |
| #include "chrome/browser/sync/glue/chrome_report_unrecoverable_error.h" |
| @@ -69,6 +74,8 @@ using browser_sync::ChangeProcessor; |
| using browser_sync::DataTypeController; |
| using browser_sync::DataTypeManager; |
| using browser_sync::SyncBackendHost; |
| +using syncer::CredentialCacheService; |
| +using syncer::CredentialCacheServiceFactory; |
| using syncer::ModelType; |
| using syncer::ModelTypeSet; |
| using syncer::JsBackend; |
| @@ -139,7 +146,8 @@ ProfileSyncService::ProfileSyncService(ProfileSyncComponentsFactory* factory, |
| auto_start_enabled_(start_behavior == AUTO_START), |
| failed_datatypes_handler_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |
| configure_status_(DataTypeManager::UNKNOWN), |
| - setup_in_progress_(false) { |
| + setup_in_progress_(false), |
| + credential_cache_service_(NULL) { |
| #if defined(OS_ANDROID) |
| chrome::VersionInfo version_info; |
| if (version_info.IsOfficialBuild()) { |
| @@ -205,12 +213,28 @@ void ProfileSyncService::Initialize() { |
| DisableForUser(); |
| } |
| +#if defined(OS_WIN) |
| + // Initialize the CredentialCacheService for the default profile on Windows 8. |
| + if (base::win::GetVersion() >= base::win::VERSION_WIN8 && |
|
Andrew T Wilson (Slow)
2012/07/24 18:00:33
I guess I still don't understand why PSS needs to
Raghu Simha
2012/07/24 20:45:04
I see what you mean. I originally coupled PSS and
|
| + CredentialCacheService::IsDefaultProfileDir(profile()->GetPath()) && |
| + !sync_prefs_.IsStartSuppressed()) { |
| + credential_cache_service_ = |
| + CredentialCacheServiceFactory::GetInstance()->GetForProfile(profile_); |
| + } |
| +#endif // OS_WIN |
| + |
| TryStart(); |
| } |
| void ProfileSyncService::TryStart() { |
| - if (!IsSyncEnabledAndLoggedIn()) |
| + if (!IsSyncEnabledAndLoggedIn()) { |
| +#if defined(OS_WIN) |
| + if (credential_cache_service_) |
| + credential_cache_service_->LookForCachedCredentialsInAlternateProfile(); |
| +#endif // OS_WIN |
| return; |
| + } |
| + |
| TokenService* token_service = TokenServiceFactory::GetForProfile(profile_); |
| if (!token_service) |
| return; |