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 17FakeSigninManagerBase::FakeSigninManagerBase(Profile* profile) 18 : SigninManagerBase( 19 ChromeSigninClientFactory::GetInstance()->GetForProfile(profile)) {} 20 21FakeSigninManagerBase::~FakeSigninManagerBase() { 22} 23 24// static 25KeyedService* 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 41FakeSigninManager::FakeSigninManager(Profile* profile) 42 : SigninManager( 43 ChromeSigninClientFactory::GetInstance()->GetForProfile(profile), 44 ProfileOAuth2TokenServiceFactory::GetForProfile(profile)) {} 45 46FakeSigninManager::~FakeSigninManager() { 47} 48 49void 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 61void 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 71void FakeSigninManager::SignIn(const std::string& username, 72 const std::string& password) { 73 StartSignInWithRefreshToken( 74 std::string(), username, password, OAuthTokenFetchedCallback()); 75 CompletePendingSignin(); 76} 77 78void FakeSigninManager::FailSignin(const GoogleServiceAuthError& error) { 79 FOR_EACH_OBSERVER(Observer, observer_list_, GoogleSigninFailed(error)); 80} 81 82void 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