Chromium Code Reviews| Index: chrome/browser/chromeos/settings/device_oauth2_token_service.cc |
| diff --git a/chrome/browser/chromeos/settings/device_oauth2_token_service.cc b/chrome/browser/chromeos/settings/device_oauth2_token_service.cc |
| index 1dc6bde934c3f50fbc53cff2d0e33b5f09c50b46..49c145d4126ce3968c4aa6d286c37d6a350ae6c8 100644 |
| --- a/chrome/browser/chromeos/settings/device_oauth2_token_service.cc |
| +++ b/chrome/browser/chromeos/settings/device_oauth2_token_service.cc |
| @@ -43,25 +43,79 @@ struct DeviceOAuth2TokenService::PendingRequest { |
| const ScopeSet scopes; |
| }; |
| +DeviceOAuth2TokenService::DeviceOAuth2TokenServiceDelegate:: |
|
Mattias Nissler (ping if slow)
2015/06/29 08:20:06
It's pretty odd that the CL introduces a delegate
|
| + DeviceOAuth2TokenServiceDelegate( |
| + DeviceOAuth2TokenService* device_token_service) |
| + : device_token_service_(device_token_service) { |
| +} |
| + |
| +DeviceOAuth2TokenService::DeviceOAuth2TokenServiceDelegate:: |
| + ~DeviceOAuth2TokenServiceDelegate() { |
| +} |
| + |
| +OAuth2AccessTokenFetcher* DeviceOAuth2TokenService:: |
| + DeviceOAuth2TokenServiceDelegate::CreateAccessTokenFetcher( |
| + const std::string& account_id, |
| + net::URLRequestContextGetter* getter, |
| + OAuth2AccessTokenConsumer* consumer) { |
| + return device_token_service_->CreateAccessTokenFetcherImpl(account_id, getter, |
| + consumer); |
| +} |
| + |
| +bool DeviceOAuth2TokenService::DeviceOAuth2TokenServiceDelegate:: |
| + RefreshTokenIsAvailable(const std::string& account_id) const { |
| + return device_token_service_->RefreshTokenIsAvailableImpl(account_id); |
| +} |
| + |
| +net::URLRequestContextGetter* |
| +DeviceOAuth2TokenService::DeviceOAuth2TokenServiceDelegate::GetRequestContext() |
| + const { |
| + return device_token_service_->GetRequestContextImpl(); |
| +} |
| + |
| +void DeviceOAuth2TokenService::DeviceOAuth2TokenServiceDelegate:: |
| + UpdateAuthError(const std::string& account_id, |
| + const GoogleServiceAuthError& error) { |
|
Mattias Nissler (ping if slow)
2015/06/29 08:20:06
Should have a comment explaining why it's OK that
|
| +} |
| + |
| +std::vector<std::string> |
| +DeviceOAuth2TokenService::DeviceOAuth2TokenServiceDelegate::GetAccounts() { |
| + std::vector<std::string> accounts; |
| + std::string account = device_token_service_->GetRobotAccountId(); |
| + if (!account.empty()) |
| + accounts.push_back(account); |
| + return accounts; |
| +} |
| + |
| +void DeviceOAuth2TokenService::DeviceOAuth2TokenServiceDelegate:: |
| + RevokeAllCredentials() { |
|
Mattias Nissler (ping if slow)
2015/06/29 08:20:06
Again, please explain why it's OK that this is emp
|
| +} |
| + |
| void DeviceOAuth2TokenService::OnServiceAccountIdentityChanged() { |
| if (!GetRobotAccountId().empty() && !refresh_token_.empty()) |
| - FireRefreshTokenAvailable(GetRobotAccountId()); |
| + device_oauth2_token_service_delegate_->FireRefreshTokenAvailable( |
| + GetRobotAccountId()); |
| } |
| DeviceOAuth2TokenService::DeviceOAuth2TokenService( |
| net::URLRequestContextGetter* getter, |
| PrefService* local_state) |
| - : url_request_context_getter_(getter), |
| + : OAuth2TokenService(new DeviceOAuth2TokenServiceDelegate(this)), |
| + url_request_context_getter_(getter), |
| local_state_(local_state), |
| state_(STATE_LOADING), |
| max_refresh_token_validation_retries_(3), |
| service_account_identity_subscription_( |
| - CrosSettings::Get()->AddSettingsObserver( |
| - kServiceAccountIdentity, |
| - base::Bind( |
| - &DeviceOAuth2TokenService::OnServiceAccountIdentityChanged, |
| - base::Unretained(this))).Pass()), |
| + CrosSettings::Get() |
| + ->AddSettingsObserver( |
| + kServiceAccountIdentity, |
| + base::Bind(&DeviceOAuth2TokenService:: |
| + OnServiceAccountIdentityChanged, |
| + base::Unretained(this))) |
| + .Pass()), |
| weak_ptr_factory_(this) { |
| + device_oauth2_token_service_delegate_ = |
| + (DeviceOAuth2TokenServiceDelegate*)GetDelegate(); |
|
xiyuan
2015/06/26 18:15:52
nit: static_cast<DeviceOAuth2TokenServiceDelegate*
Mattias Nissler (ping if slow)
2015/06/29 08:20:06
Actually, it looks like none of the uses of |devic
|
| // Pull in the system salt. |
| SystemSaltGetter::Get()->GetSystemSalt( |
| base::Bind(&DeviceOAuth2TokenService::DidGetSystemSalt, |
| @@ -92,7 +146,8 @@ void DeviceOAuth2TokenService::SetAndSaveRefreshToken( |
| // will be done from OnServiceAccountIdentityChanged() once the robot account |
| // ID becomes available as well. |
| if (!GetRobotAccountId().empty()) |
| - FireRefreshTokenAvailable(GetRobotAccountId()); |
| + device_oauth2_token_service_delegate_->FireRefreshTokenAvailable( |
| + GetRobotAccountId()); |
| token_save_callbacks_.push_back(result_callback); |
| if (!waiting_for_salt) { |
| @@ -103,7 +158,7 @@ void DeviceOAuth2TokenService::SetAndSaveRefreshToken( |
| } |
| } |
| -bool DeviceOAuth2TokenService::RefreshTokenIsAvailable( |
| +bool DeviceOAuth2TokenService::RefreshTokenIsAvailableImpl( |
| const std::string& account_id) const { |
| switch (state_) { |
| case STATE_NO_TOKEN: |
| @@ -181,7 +236,8 @@ std::string DeviceOAuth2TokenService::GetRefreshToken( |
| return std::string(); |
| } |
| -net::URLRequestContextGetter* DeviceOAuth2TokenService::GetRequestContext() { |
| +net::URLRequestContextGetter* |
| +DeviceOAuth2TokenService::GetRequestContextImpl() { |
| return url_request_context_getter_.get(); |
| } |
| @@ -219,7 +275,8 @@ void DeviceOAuth2TokenService::FetchOAuth2Token( |
| NOTREACHED() << "Unexpected state " << state_; |
| } |
| -OAuth2AccessTokenFetcher* DeviceOAuth2TokenService::CreateAccessTokenFetcher( |
| +OAuth2AccessTokenFetcher* |
| +DeviceOAuth2TokenService::CreateAccessTokenFetcherImpl( |
| const std::string& account_id, |
| net::URLRequestContextGetter* getter, |
| OAuth2AccessTokenConsumer* consumer) { |
| @@ -238,14 +295,14 @@ void DeviceOAuth2TokenService::DidGetSystemSalt( |
| LOG(ERROR) << "Failed to get system salt."; |
| FlushTokenSaveCallbacks(false); |
| state_ = STATE_NO_TOKEN; |
| - FireRefreshTokensLoaded(); |
| + device_oauth2_token_service_delegate_->FireRefreshTokensLoaded(); |
| return; |
| } |
| // If the token has been set meanwhile, write it to |local_state_|. |
| if (!refresh_token_.empty()) { |
| EncryptAndSaveToken(); |
| - FireRefreshTokensLoaded(); |
| + device_oauth2_token_service_delegate_->FireRefreshTokensLoaded(); |
| return; |
| } |
| @@ -258,7 +315,7 @@ void DeviceOAuth2TokenService::DidGetSystemSalt( |
| if (refresh_token_.empty()) { |
| LOG(ERROR) << "Failed to decrypt refresh token."; |
| state_ = STATE_NO_TOKEN; |
| - FireRefreshTokensLoaded(); |
| + device_oauth2_token_service_delegate_->FireRefreshTokensLoaded(); |
| return; |
| } |
| } |
| @@ -270,8 +327,9 @@ void DeviceOAuth2TokenService::DidGetSystemSalt( |
| StartValidation(); |
| // Announce the token. |
| - FireRefreshTokenAvailable(GetRobotAccountId()); |
| - FireRefreshTokensLoaded(); |
| + device_oauth2_token_service_delegate_->FireRefreshTokenAvailable( |
| + GetRobotAccountId()); |
| + device_oauth2_token_service_delegate_->FireRefreshTokensLoaded(); |
| } |
| void DeviceOAuth2TokenService::CheckRobotAccountId( |
| @@ -369,10 +427,8 @@ void DeviceOAuth2TokenService::FlushPendingRequests( |
| if (token_is_valid) { |
| OAuth2TokenService::FetchOAuth2Token( |
| scoped_request->request.get(), |
| - scoped_request->request->GetAccountId(), |
| - GetRequestContext(), |
| - scoped_request->client_id, |
| - scoped_request->client_secret, |
| + scoped_request->request->GetAccountId(), GetRequestContextImpl(), |
| + scoped_request->client_id, scoped_request->client_secret, |
| scoped_request->scopes); |
| } else { |
| FailRequest(scoped_request->request.get(), error); |