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 3 // found in the LICENSE file. 4 5 #include "chrome/browser/signin/fake_signin_manager.h" 6 7 #include "base/callback_helpers.h" 8 #include "base/prefs/pref_service.h" 9 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/signin/chrome_signin_client_factory.h" 11 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 12 #include "chrome/browser/signin/signin_manager_factory.h" 13 #include "chrome/browser/ui/global_error/global_error_service.h" 14 #include "chrome/browser/ui/global_error/global_error_service_factory.h" 15 #include "chrome/common/pref_names.h" 16 17 FakeSigninManagerBase::FakeSigninManagerBase(Profile* profile) 18 : SigninManagerBase( 19 ChromeSigninClientFactory::GetInstance()->GetForProfile(profile)) {} 20 21 FakeSigninManagerBase::~FakeSigninManagerBase() { 22 } 23 24 // static 25 KeyedService* FakeSigninManagerBase::Build(content::BrowserContext* context) { 26 SigninManagerBase* manager; 27 Profile* profile = static_cast<Profile*>(context); 28 #if defined(OS_CHROMEOS) 29 manager = new FakeSigninManagerBase(profile); 30 #else 31 manager = new FakeSigninManager(profile); 32 #endif 33 manager->Initialize(NULL); 34 SigninManagerFactory::GetInstance() 35 ->NotifyObserversOfSigninManagerCreationForTesting(manager); 36 return manager; 37 } 38 39 #if !defined (OS_CHROMEOS) 40 41 FakeSigninManager::FakeSigninManager(Profile* profile) 42 : SigninManager( 43 ChromeSigninClientFactory::GetInstance()->GetForProfile(profile), 44 ProfileOAuth2TokenServiceFactory::GetForProfile(profile)) {} 45 46 FakeSigninManager::~FakeSigninManager() { 47 } 48 49 void FakeSigninManager::StartSignInWithRefreshToken( 50 const std::string& refresh_token, 51 const std::string& username, 52 const std::string& password, 53 const OAuthTokenFetchedCallback& oauth_fetched_callback) { 54 set_auth_in_progress(username); 55 set_password(password); 56 if (!oauth_fetched_callback.is_null()) 57 oauth_fetched_callback.Run(refresh_token); 58 } 59 60 61 void FakeSigninManager::CompletePendingSignin() { 62 SetAuthenticatedUsername(GetUsernameForAuthInProgress()); 63 set_auth_in_progress(std::string()); 64 FOR_EACH_OBSERVER(Observer, 65 observer_list_, 66 GoogleSigninSucceeded(authenticated_username_, 67 authenticated_username_, 68 password_)); 69 } 70 71 void FakeSigninManager::SignIn(const std::string& username, 72 const std::string& password) { 73 StartSignInWithRefreshToken( 74 std::string(), username, password, OAuthTokenFetchedCallback()); 75 CompletePendingSignin(); 76 } 77 78 void FakeSigninManager::FailSignin(const GoogleServiceAuthError& error) { 79 FOR_EACH_OBSERVER(Observer, observer_list_, GoogleSigninFailed(error)); 80 } 81 82 void FakeSigninManager::SignOut( 83 signin_metrics::ProfileSignout signout_source_metric) { 84 if (IsSignoutProhibited()) 85 return; 86 set_auth_in_progress(std::string()); 87 set_password(std::string()); 88 const std::string account_id = GetAuthenticatedAccountId(); 89 const std::string username = authenticated_username_; 90 authenticated_username_.clear(); 91 92 FOR_EACH_OBSERVER(SigninManagerBase::Observer, observer_list_, 93 GoogleSignedOut(account_id, username)); 94 } 95 96 #endif // !defined (OS_CHROMEOS) 97