Home | History | Annotate | Download | only in signin
      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