signin_manager_factory.cc revision 1e9bf3e0803691d0a228da41fc608347b6db4340
1a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com// Use of this source code is governed by a BSD-style license that can be 3a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com// found in the LICENSE file. 4a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com 5a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com#include "chrome/browser/signin/signin_manager_factory.h" 6a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com 7e4fafb146e85cdfcf9d5418597b6818aa0754adatfarina@chromium.org#include "base/prefs/pref_registry_simple.h" 8a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com#include "chrome/browser/browser_process.h" 9a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com#include "chrome/browser/signin/chrome_signin_manager_delegate.h" 108f6884aab8aecd7657cf3f9cdbc682f0deca29c5tfarina@chromium.org#include "chrome/browser/signin/local_auth.h" 118f6884aab8aecd7657cf3f9cdbc682f0deca29c5tfarina@chromium.org#include "chrome/browser/signin/signin_manager.h" 128f6884aab8aecd7657cf3f9cdbc682f0deca29c5tfarina@chromium.org#include "chrome/browser/signin/token_service_factory.h" 13a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com#include "chrome/common/pref_names.h" 14e4fafb146e85cdfcf9d5418597b6818aa0754adatfarina@chromium.org#include "components/browser_context_keyed_service/browser_context_dependency_manager.h" 153c8fb5171858a81b7f2f66b357891f41755c4033senorblanco@chromium.org#include "components/user_prefs/pref_registry_syncable.h" 163c8fb5171858a81b7f2f66b357891f41755c4033senorblanco@chromium.org 17a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.comSigninManagerFactory::SigninManagerFactory() 18a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com : BrowserContextKeyedServiceFactory( 19a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com "SigninManager", 20deee496cd30070e52556dcb538c2e5eb39b66b81mike@reedtribe.org BrowserContextDependencyManager::GetInstance()) { 21a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com DependsOn(TokenServiceFactory::GetInstance()); 22a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com} 23a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com 24deee496cd30070e52556dcb538c2e5eb39b66b81mike@reedtribe.orgSigninManagerFactory::~SigninManagerFactory() {} 25a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com 26a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com#if defined(OS_CHROMEOS) 27a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com// static 28a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.comSigninManagerBase* SigninManagerFactory::GetForProfileIfExists( 29a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com Profile* profile) { 30a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com return static_cast<SigninManagerBase*>( 31a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com GetInstance()->GetServiceForBrowserContext(profile, false)); 32a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com} 33a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com 34a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com// static 35a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.comSigninManagerBase* SigninManagerFactory::GetForProfile( 36a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com Profile* profile) { 37a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com return static_cast<SigninManagerBase*>( 384469938e92d779dff05e745559e67907bbf21e78reed@google.com GetInstance()->GetServiceForBrowserContext(profile, true)); 394469938e92d779dff05e745559e67907bbf21e78reed@google.com} 40a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com 41a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com#else 42a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com// static 43a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.comSigninManager* SigninManagerFactory::GetForProfile(Profile* profile) { 44a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com return static_cast<SigninManager*>( 45a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com GetInstance()->GetServiceForBrowserContext(profile, true)); 46a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com} 47a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com 48a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com// static 49a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.comSigninManager* SigninManagerFactory::GetForProfileIfExists(Profile* profile) { 50a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com return static_cast<SigninManager*>( 51a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com GetInstance()->GetServiceForBrowserContext(profile, false)); 52a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com} 53a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com#endif 54a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com 55a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com// static 56a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.comSigninManagerFactory* SigninManagerFactory::GetInstance() { 57a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com return Singleton<SigninManagerFactory>::get(); 58a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com} 59a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com 60a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.comvoid SigninManagerFactory::RegisterProfilePrefs( 61a1c511b8704c6c266b90860a4c68f30ca7514f9bsugoi@google.com user_prefs::PrefRegistrySyncable* registry) { 62 registry->RegisterStringPref( 63 prefs::kGoogleServicesLastUsername, 64 std::string(), 65 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 66 registry->RegisterStringPref( 67 prefs::kGoogleServicesUsername, 68 std::string(), 69 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 70 registry->RegisterBooleanPref( 71 prefs::kAutologinEnabled, 72 true, 73 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 74 registry->RegisterBooleanPref( 75 prefs::kReverseAutologinEnabled, 76 true, 77 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 78 registry->RegisterListPref(prefs::kReverseAutologinRejectedEmailList, 79 new ListValue, 80 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 81 chrome::RegisterLocalAuthPrefs(registry); 82} 83 84// static 85void SigninManagerFactory::RegisterPrefs(PrefRegistrySimple* registry) { 86 registry->RegisterStringPref(prefs::kGoogleServicesUsernamePattern, 87 std::string()); 88} 89 90BrowserContextKeyedService* SigninManagerFactory::BuildServiceInstanceFor( 91 content::BrowserContext* context) const { 92 SigninManagerBase* service = NULL; 93 Profile* profile = static_cast<Profile*>(context); 94#if defined(OS_CHROMEOS) 95 service = new SigninManagerBase(); 96#else 97 service = new SigninManager( 98 scoped_ptr<SigninManagerDelegate>( 99 new ChromeSigninManagerDelegate(profile))); 100#endif 101 service->Initialize(profile, g_browser_process->local_state()); 102 return service; 103} 104