1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef CHROME_BROWSER_SIGNIN_FAKE_SIGNIN_MANAGER_H_ 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define CHROME_BROWSER_SIGNIN_FAKE_SIGNIN_MANAGER_H_ 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <string> 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/compiler_specific.h" 11e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "components/signin/core/browser/signin_manager.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/signin/core/browser/signin_metrics.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace content { 15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass BrowserContext; 16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class Profile; 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// SigninManager to use for testing. Tests should use the type 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// SigninManagerForTesting to ensure that the right type for their platform is 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// used. 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 24a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)// Overrides InitTokenService to do-nothing in tests. 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class FakeSigninManagerBase : public SigninManagerBase { 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch explicit FakeSigninManagerBase(Profile* profile); 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ~FakeSigninManagerBase(); 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Helper function to be used with 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // KeyedService::SetTestingFactory(). In order to match 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // the API of SigninManagerFactory::GetForProfile(), returns a 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // FakeSigninManagerBase* on ChromeOS, and a FakeSigninManager* on all other 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // platforms. The returned instance is initialized. 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static KeyedService* Build(content::BrowserContext* context); 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if !defined(OS_CHROMEOS) 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// A signin manager that bypasses actual authentication routines with servers 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// and accepts the credentials provided to StartSignIn. 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class FakeSigninManager : public SigninManager { 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) explicit FakeSigninManager(Profile* profile); 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ~FakeSigninManager(); 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void set_auth_in_progress(const std::string& username) { 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) possibly_invalid_username_ = username; 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void set_password(const std::string& password) { password_ = password; } 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SignIn(const std::string& username, const std::string& password); 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void FailSignin(const GoogleServiceAuthError& error); 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void StartSignInWithRefreshToken( 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const std::string& refresh_token, 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& username, 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& password, 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const OAuthTokenFetchedCallback& oauth_fetched_callback) OVERRIDE; 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void SignOut(signin_metrics::ProfileSignout signout_source_metric) 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch OVERRIDE; 65a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void CompletePendingSignin() OVERRIDE; 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif // !defined (OS_CHROMEOS) 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_CHROMEOS) 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)typedef FakeSigninManagerBase FakeSigninManagerForTesting; 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#else 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)typedef FakeSigninManager FakeSigninManagerForTesting; 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif // CHROME_BROWSER_SIGNIN_FAKE_SIGNIN_MANAGER_H_ 78