11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright (c) 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/signin/account_tracker_service_factory.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/memory/scoped_ptr.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/profiles/profile.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/keyed_service/content/browser_context_dependency_manager.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/pref_registry/pref_registry_syncable.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/signin/core/browser/account_tracker_service.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/signin/core/browser/profile_oauth2_token_service.h"
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/signin/core/common/signin_pref_names.h"
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAccountTrackerServiceFactory::AccountTrackerServiceFactory()
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    : BrowserContextKeyedServiceFactory(
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        "AccountTrackerServiceFactory",
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        BrowserContextDependencyManager::GetInstance()) {
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance());
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAccountTrackerServiceFactory::~AccountTrackerServiceFactory() {
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// static
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAccountTrackerService*
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAccountTrackerServiceFactory::GetForProfile(Profile* profile) {
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return static_cast<AccountTrackerService*>(
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      GetInstance()->GetServiceForBrowserContext(profile, true));
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// static
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAccountTrackerServiceFactory* AccountTrackerServiceFactory::GetInstance() {
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return Singleton<AccountTrackerServiceFactory>::get();
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid AccountTrackerServiceFactory::RegisterProfilePrefs(
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    user_prefs::PrefRegistrySyncable* registry) {
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  registry->RegisterListPref(
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      AccountTrackerService::kAccountInfoPref,
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  registry->RegisterIntegerPref(
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      prefs::kAccountIdMigrationState,
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      AccountTrackerService::MIGRATION_NOT_STARTED,
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciKeyedService* AccountTrackerServiceFactory::BuildServiceInstanceFor(
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    content::BrowserContext* context) const {
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  Profile* profile = static_cast<Profile*>(context);
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  AccountTrackerService* service = new AccountTrackerService();
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  service->Initialize(
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      ProfileOAuth2TokenServiceFactory::GetForProfile(profile),
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      profile->GetPrefs(),
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      profile->GetRequestContext());
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return service;
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
59