11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2013 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/profile_resetter/automatic_profile_resetter_factory.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/memory/singleton.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/prefs/pref_registry_simple.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/profile_resetter/automatic_profile_resetter.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/profiles/profile.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/search_engines/template_url_service_factory.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/global_error/global_error_service_factory.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/pref_names.h"
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/keyed_service/content/browser_context_dependency_manager.h"
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/pref_registry/pref_registry_syncable.h"
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/browser/browser_context.h"
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// static
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAutomaticProfileResetter* AutomaticProfileResetterFactory::GetForBrowserContext(
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    content::BrowserContext* context) {
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return static_cast<AutomaticProfileResetter*>(
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      GetInstance()->GetServiceForBrowserContext(context, true));
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// static
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAutomaticProfileResetterFactory*
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAutomaticProfileResetterFactory::GetInstance() {
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return Singleton<AutomaticProfileResetterFactory>::get();
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// static
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid AutomaticProfileResetterFactory::RegisterPrefs(
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    PrefRegistrySimple* registry) {
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  registry->RegisterDictionaryPref(
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      prefs::kProfileResetPromptMementosInLocalState);
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAutomaticProfileResetterFactory::AutomaticProfileResetterFactory()
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    : BrowserContextKeyedServiceFactory(
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          "AutomaticProfileResetter",
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          BrowserContextDependencyManager::GetInstance()) {
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DependsOn(TemplateURLServiceFactory::GetInstance());
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DependsOn(GlobalErrorServiceFactory::GetInstance());
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAutomaticProfileResetterFactory::~AutomaticProfileResetterFactory() {}
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciKeyedService* AutomaticProfileResetterFactory::BuildServiceInstanceFor(
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    content::BrowserContext* context) const {
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  Profile* profile = Profile::FromBrowserContext(context);
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  AutomaticProfileResetter* service = new AutomaticProfileResetter(profile);
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  service->Initialize();
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  service->Activate();
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return service;
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid AutomaticProfileResetterFactory::RegisterProfilePrefs(
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    user_prefs::PrefRegistrySyncable* registry) {
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  registry->RegisterStringPref(
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      prefs::kProfileResetPromptMementoInProfilePrefs,
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      "",
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool AutomaticProfileResetterFactory::
661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    ServiceIsCreatedWithBrowserContext() const {
671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return true;
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool AutomaticProfileResetterFactory::ServiceIsNULLWhileTesting() const {
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return true;
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
73