fake_profile_oauth2_token_service.cc revision 3551c9c881056c480085172ff9840cab31610854
13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/signin/fake_profile_oauth2_token_service.h" 63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)FakeProfileOAuth2TokenService::PendingRequest::PendingRequest() { 83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)FakeProfileOAuth2TokenService::PendingRequest::~PendingRequest() { 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// static 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)BrowserContextKeyedService* FakeProfileOAuth2TokenService::Build( 153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) content::BrowserContext* profile) { 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return new FakeProfileOAuth2TokenService(); 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)FakeProfileOAuth2TokenService::FakeProfileOAuth2TokenService() { 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)FakeProfileOAuth2TokenService::~FakeProfileOAuth2TokenService() { 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void FakeProfileOAuth2TokenService::Shutdown() { 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Do not call the base class handler because it assumes that Initialize() 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // is always called before Shutdown() and that's not the case for this mock. 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void FakeProfileOAuth2TokenService::IssueRefreshToken( 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& token) { 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) refresh_token_ = token; 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (refresh_token_.empty()) 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) FireRefreshTokenRevoked("account_id"); 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) else 363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) FireRefreshTokenAvailable("account_id"); 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // TODO(atwilson): Maybe we should also call FireRefreshTokensLoaded() here? 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void FakeProfileOAuth2TokenService::IssueTokenForScope( 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const ScopeSet& scope, 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& access_token, 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const base::Time& expiration) { 443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) CompleteRequests(false, 453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scope, 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GoogleServiceAuthError::AuthErrorNone(), 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) access_token, 483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) expiration); 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void FakeProfileOAuth2TokenService::IssueErrorForScope( 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const ScopeSet& scope, 533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const GoogleServiceAuthError& error) { 543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) CompleteRequests(false, scope, error, std::string(), base::Time()); 553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void FakeProfileOAuth2TokenService::IssueErrorForAllPendingRequests( 583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const GoogleServiceAuthError& error) { 593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) CompleteRequests(true, ScopeSet(), error, std::string(), base::Time()); 603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void FakeProfileOAuth2TokenService::IssueTokenForAllPendingRequests( 633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& access_token, 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const base::Time& expiration) { 653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) CompleteRequests(true, 663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ScopeSet(), 673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GoogleServiceAuthError::AuthErrorNone(), 683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) access_token, 693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) expiration); 703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void FakeProfileOAuth2TokenService::CompleteRequests( 733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool all_scopes, 743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const ScopeSet& scope, 753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const GoogleServiceAuthError& error, 763551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& access_token, 773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const base::Time& expiration) { 783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::vector<FakeProfileOAuth2TokenService::PendingRequest> requests = 793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GetPendingRequests(); 803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Walk the requests and notify the callbacks. 813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) for (std::vector<PendingRequest>::iterator it = pending_requests_.begin(); 823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) it != pending_requests_.end(); ++it) { 833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (it->request && (all_scopes || it->scopes == scope)) 843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) it->request->InformConsumer(error, access_token, expiration); 853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)std::string FakeProfileOAuth2TokenService::GetRefreshToken() { 893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return refresh_token_; 903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)net::URLRequestContextGetter* 933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)FakeProfileOAuth2TokenService::GetRequestContext() { 943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return NULL; 953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)std::vector<FakeProfileOAuth2TokenService::PendingRequest> 983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)FakeProfileOAuth2TokenService::GetPendingRequests() { 993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::vector<PendingRequest> valid_requests; 1003551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) for (std::vector<PendingRequest>::iterator it = pending_requests_.begin(); 1013551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) it != pending_requests_.end(); ++it) { 1023551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (it->request) 1033551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) valid_requests.push_back(*it); 1043551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1053551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return valid_requests; 1063551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 1073551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void FakeProfileOAuth2TokenService::FetchOAuth2Token( 1093551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) RequestImpl* request, 1103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) net::URLRequestContextGetter* getter, 1113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& client_id, 1123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& client_secret, 1133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const ScopeSet& scopes) { 1143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) PendingRequest pending_request; 1153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) pending_request.client_id = client_id; 1163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) pending_request.client_secret = client_secret; 1173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) pending_request.scopes = scopes; 1183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) pending_request.request = request->AsWeakPtr(); 1193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) pending_requests_.push_back(pending_request); 1203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 121