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

Side by Side Diff: chrome/browser/sync/profile_sync_service.cc

Issue 23382008: Making OAuth2TokenService multi-login aware, updating callers, minor fixes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding the AndroidPO2TS update Created 7 years, 3 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
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/sync/profile_sync_service.h" 5 #include "chrome/browser/sync/profile_sync_service.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 bool ProfileSyncService::IsOAuthRefreshTokenAvailable() { 208 bool ProfileSyncService::IsOAuthRefreshTokenAvailable() {
209 // Function name doesn't reflect which token is checked. Function checks 209 // Function name doesn't reflect which token is checked. Function checks
210 // refresh token when use_oauth2_token_ is true (all platforms except android) 210 // refresh token when use_oauth2_token_ is true (all platforms except android)
211 // and sync token otherwise (for android). 211 // and sync token otherwise (for android).
212 // TODO(pavely): Remove "else" part once use_oauth2_token_ is gone. 212 // TODO(pavely): Remove "else" part once use_oauth2_token_ is gone.
213 if (use_oauth2_token_) { 213 if (use_oauth2_token_) {
214 ProfileOAuth2TokenService* token_service = 214 ProfileOAuth2TokenService* token_service =
215 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_); 215 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_);
216 if (!token_service) 216 if (!token_service)
217 return false; 217 return false;
218 return token_service->RefreshTokenIsAvailable(); 218 return token_service->RefreshTokenIsAvailable(
219 token_service->GetPrimaryAccountId());
219 } else { 220 } else {
220 TokenService* token_service = TokenServiceFactory::GetForProfile(profile_); 221 TokenService* token_service = TokenServiceFactory::GetForProfile(profile_);
221 if (!token_service) 222 if (!token_service)
222 return false; 223 return false;
223 return token_service->HasTokenForService(GaiaConstants::kSyncService); 224 return token_service->HasTokenForService(GaiaConstants::kSyncService);
224 } 225 }
225 } 226 }
226 227
227 void ProfileSyncService::Initialize() { 228 void ProfileSyncService::Initialize() {
228 if (profile_) 229 if (profile_)
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 } 685 }
685 default: { 686 default: {
686 // Show error to user. 687 // Show error to user.
687 UpdateAuthErrorState(error); 688 UpdateAuthErrorState(error);
688 } 689 }
689 } 690 }
690 } 691 }
691 692
692 void ProfileSyncService::OnRefreshTokenAvailable( 693 void ProfileSyncService::OnRefreshTokenAvailable(
693 const std::string& account_id) { 694 const std::string& account_id) {
694 OnRefreshTokensLoaded(); 695 OnRefreshTokensLoaded();
Roger Tawa OOO till Jul 10th 2013/08/29 15:41:40 Shouldn't this happen only if |account_id| is the
fgorski 2013/08/29 23:04:14 Done.
695 } 696 }
696 697
697 void ProfileSyncService::OnRefreshTokenRevoked( 698 void ProfileSyncService::OnRefreshTokenRevoked(
698 const std::string& account_id) { 699 const std::string& account_id) {
699 if (!IsOAuthRefreshTokenAvailable()) { 700 if (!IsOAuthRefreshTokenAvailable()) {
701 access_token_.clear();
700 // The additional check around IsOAuthRefreshTokenAvailable() above 702 // The additional check around IsOAuthRefreshTokenAvailable() above
701 // prevents us sounding the alarm if we actually have a valid token but 703 // prevents us sounding the alarm if we actually have a valid token but
702 // a refresh attempt by TokenService failed for any variety of reasons 704 // a refresh attempt by TokenService failed for any variety of reasons
703 // (e.g. flaky network). It's possible the token we do have is also 705 // (e.g. flaky network). It's possible the token we do have is also
704 // invalid, but in that case we should already have (or can expect) an 706 // invalid, but in that case we should already have (or can expect) an
705 // auth error sent from the sync backend. 707 // auth error sent from the sync backend.
706 UpdateAuthErrorState( 708 UpdateAuthErrorState(
707 GoogleServiceAuthError(GoogleServiceAuthError::REQUEST_CANCELED)); 709 GoogleServiceAuthError(GoogleServiceAuthError::REQUEST_CANCELED));
708 } 710 }
709 } 711 }
710 712
711 void ProfileSyncService::OnRefreshTokensLoaded() { 713 void ProfileSyncService::OnRefreshTokensLoaded() {
712 // This notification gets fired when TokenService loads the tokens 714 // This notification gets fired when TokenService loads the tokens
713 // from storage. 715 // from storage.
714 // Initialize the backend if sync is enabled. If the sync token was 716 // Initialize the backend if sync is enabled. If the sync token was
715 // not loaded, GetCredentials() will generate invalid credentials to 717 // not loaded, GetCredentials() will generate invalid credentials to
716 // cause the backend to generate an auth error (crbug.com/121755). 718 // cause the backend to generate an auth error (crbug.com/121755).
717 if (backend_) { 719 if (backend_) {
718 RequestAccessToken(); 720 RequestAccessToken();
719 } else { 721 } else {
720 TryStart(); 722 TryStart();
721 } 723 }
722 } 724 }
723 725
724 void ProfileSyncService::OnRefreshTokensCleared() {
725 access_token_.clear();
726 }
727
728 void ProfileSyncService::Shutdown() { 726 void ProfileSyncService::Shutdown() {
729 UnregisterAuthNotifications(); 727 UnregisterAuthNotifications();
730 728
731 if (profile_) 729 if (profile_)
732 SigninGlobalError::GetForProfile(profile_)->RemoveProvider(this); 730 SigninGlobalError::GetForProfile(profile_)->RemoveProvider(this);
733 731
734 ShutdownImpl(browser_sync::SyncBackendHost::STOP); 732 ShutdownImpl(browser_sync::SyncBackendHost::STOP);
735 733
736 if (sync_thread_) 734 if (sync_thread_)
737 sync_thread_->Stop(); 735 sync_thread_->Stop();
(...skipping 1117 matching lines...) Expand 10 before | Expand all | Expand 10 after
1855 if (access_token_request_ != NULL) 1853 if (access_token_request_ != NULL)
1856 return; 1854 return;
1857 request_access_token_retry_timer_.Stop(); 1855 request_access_token_retry_timer_.Stop();
1858 OAuth2TokenService::ScopeSet oauth2_scopes; 1856 OAuth2TokenService::ScopeSet oauth2_scopes;
1859 if (profile_->IsManaged()) { 1857 if (profile_->IsManaged()) {
1860 oauth2_scopes.insert(GaiaConstants::kChromeSyncManagedOAuth2Scope); 1858 oauth2_scopes.insert(GaiaConstants::kChromeSyncManagedOAuth2Scope);
1861 } else { 1859 } else {
1862 oauth2_scopes.insert(GaiaConstants::kChromeSyncOAuth2Scope); 1860 oauth2_scopes.insert(GaiaConstants::kChromeSyncOAuth2Scope);
1863 } 1861 }
1864 1862
1865 OAuth2TokenService* token_service = 1863 ProfileOAuth2TokenService* token_service =
1866 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_); 1864 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_);
1867 // Invalidate previous token, otherwise token service will return the same 1865 // Invalidate previous token, otherwise token service will return the same
1868 // token again. 1866 // token again.
1869 if (!access_token_.empty()) 1867 if (!access_token_.empty())
1870 token_service->InvalidateToken(oauth2_scopes, access_token_); 1868 token_service->InvalidateToken(oauth2_scopes, access_token_);
1871 access_token_.clear(); 1869 access_token_.clear();
1872 access_token_request_ = token_service->StartRequest(oauth2_scopes, this); 1870 access_token_request_ = token_service->StartRequest(
1871 token_service->GetPrimaryAccountId(), oauth2_scopes, this);
1873 } 1872 }
1874 1873
1875 void ProfileSyncService::SetEncryptionPassphrase(const std::string& passphrase, 1874 void ProfileSyncService::SetEncryptionPassphrase(const std::string& passphrase,
1876 PassphraseType type) { 1875 PassphraseType type) {
1877 // This should only be called when the backend has been initialized. 1876 // This should only be called when the backend has been initialized.
1878 DCHECK(sync_initialized()); 1877 DCHECK(sync_initialized());
1879 DCHECK(!(type == IMPLICIT && IsUsingSecondaryPassphrase())) << 1878 DCHECK(!(type == IMPLICIT && IsUsingSecondaryPassphrase())) <<
1880 "Data is already encrypted using an explicit passphrase"; 1879 "Data is already encrypted using an explicit passphrase";
1881 DCHECK(!(type == EXPLICIT && 1880 DCHECK(!(type == EXPLICIT &&
1882 passphrase_required_reason_ == syncer::REASON_DECRYPTION)) << 1881 passphrase_required_reason_ == syncer::REASON_DECRYPTION)) <<
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
2108 NOTREACHED(); 2107 NOTREACHED();
2109 #endif 2108 #endif
2110 } 2109 }
2111 2110
2112 return signin_->GetAuthenticatedUsername(); 2111 return signin_->GetAuthenticatedUsername();
2113 } 2112 }
2114 2113
2115 WeakHandle<syncer::JsEventHandler> ProfileSyncService::GetJsEventHandler() { 2114 WeakHandle<syncer::JsEventHandler> ProfileSyncService::GetJsEventHandler() {
2116 return MakeWeakHandle(sync_js_controller_.AsWeakPtr()); 2115 return MakeWeakHandle(sync_js_controller_.AsWeakPtr());
2117 } 2116 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698