15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef GOOGLE_APIS_GAIA_FAKE_OAUTH2_TOKEN_SERVICE_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define GOOGLE_APIS_GAIA_FAKE_OAUTH2_TOKEN_SERVICE_H_ 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include <set> 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <string> 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/compiler_specific.h" 126d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "base/memory/weak_ptr.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "google_apis/gaia/oauth2_token_service.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace net { 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class URLRequestContextGetter; 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Do-nothing implementation of OAuth2TokenService. 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class FakeOAuth2TokenService : public OAuth2TokenService { 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FakeOAuth2TokenService(); 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ~FakeOAuth2TokenService(); 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 256d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) virtual std::vector<std::string> GetAccounts() OVERRIDE; 266d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void AddAccount(const std::string& account_id); 286d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void RemoveAccount(const std::string& account_id); 296d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Helper routines to issue tokens for pending requests or complete them with 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // error. 326d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void IssueAllTokensForAccount(const std::string& account_id, 336d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) const std::string& access_token, 346d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) const base::Time& expiration); 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void IssueErrorForAllPendingRequestsForAccount( 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& account_id, 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const GoogleServiceAuthError& auth_error); 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void set_request_context(net::URLRequestContextGetter* request_context) { 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) request_context_ = request_context; 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) protected: 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // OAuth2TokenService overrides. 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void FetchOAuth2Token(RequestImpl* request, 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& account_id, 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) net::URLRequestContextGetter* getter, 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& client_id, 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& client_secret, 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const ScopeSet& scopes) OVERRIDE; 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void InvalidateOAuth2Token(const std::string& account_id, 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& client_id, 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const ScopeSet& scopes, 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& access_token) OVERRIDE; 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool RefreshTokenIsAvailable(const std::string& account_id) const 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) OVERRIDE; 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private: 616d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) struct PendingRequest { 626d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) PendingRequest(); 636d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ~PendingRequest(); 646d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 656d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) std::string account_id; 666d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) std::string client_id; 676d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) std::string client_secret; 686d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ScopeSet scopes; 696d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) base::WeakPtr<RequestImpl> request; 706d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) }; 716d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // OAuth2TokenService overrides. 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE; 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual OAuth2AccessTokenFetcher* CreateAccessTokenFetcher( 76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const std::string& account_id, 77a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) net::URLRequestContextGetter* getter, 78a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) OAuth2AccessTokenConsumer* consumer) OVERRIDE; 79a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 80a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::set<std::string> account_ids_; 816d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) std::vector<PendingRequest> pending_requests_; 826d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) net::URLRequestContextGetter* request_context_; // weak 84a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FakeOAuth2TokenService); 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // GOOGLE_APIS_GAIA_FAKE_OAUTH2_TOKEN_SERVICE_H_ 89