signin_manager_factory.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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/signin_manager_factory.h"
6
7#include "base/prefs/pref_registry_simple.h"
8#include "chrome/browser/profiles/profile_dependency_manager.h"
9#include "chrome/browser/signin/signin_manager.h"
10#include "chrome/browser/signin/token_service_factory.h"
11#include "chrome/browser/ui/global_error/global_error_service_factory.h"
12#include "chrome/common/pref_names.h"
13#include "components/user_prefs/pref_registry_syncable.h"
14
15SigninManagerFactory::SigninManagerFactory()
16    : ProfileKeyedServiceFactory("SigninManager",
17                                 ProfileDependencyManager::GetInstance()) {
18  DependsOn(TokenServiceFactory::GetInstance());
19  DependsOn(GlobalErrorServiceFactory::GetInstance());
20}
21
22SigninManagerFactory::~SigninManagerFactory() {}
23
24// static
25SigninManager* SigninManagerFactory::GetForProfile(Profile* profile) {
26  return static_cast<SigninManager*>(
27      GetInstance()->GetServiceForProfile(profile, true));
28}
29
30// static
31SigninManager* SigninManagerFactory::GetForProfileIfExists(Profile* profile) {
32  return static_cast<SigninManager*>(
33      GetInstance()->GetServiceForProfile(profile, false));
34}
35
36// static
37SigninManagerFactory* SigninManagerFactory::GetInstance() {
38  return Singleton<SigninManagerFactory>::get();
39}
40
41void SigninManagerFactory::RegisterUserPrefs(PrefRegistrySyncable* registry) {
42  registry->RegisterStringPref(prefs::kGoogleServicesLastUsername, "",
43                               PrefRegistrySyncable::UNSYNCABLE_PREF);
44  registry->RegisterStringPref(prefs::kGoogleServicesUsername, "",
45                               PrefRegistrySyncable::UNSYNCABLE_PREF);
46  registry->RegisterBooleanPref(prefs::kAutologinEnabled, true,
47                                PrefRegistrySyncable::UNSYNCABLE_PREF);
48  registry->RegisterBooleanPref(prefs::kReverseAutologinEnabled, true,
49                                PrefRegistrySyncable::UNSYNCABLE_PREF);
50  registry->RegisterListPref(prefs::kReverseAutologinRejectedEmailList,
51                             new ListValue,
52                             PrefRegistrySyncable::UNSYNCABLE_PREF);
53}
54
55// static
56void SigninManagerFactory::RegisterPrefs(PrefRegistrySimple* registry) {
57  registry->RegisterStringPref(prefs::kGoogleServicesUsernamePattern, "");
58}
59
60ProfileKeyedService* SigninManagerFactory::BuildServiceInstanceFor(
61    Profile* profile) const {
62  SigninManager* service = new SigninManager();
63  service->Initialize(profile);
64  return service;
65}
66