1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/prefs/pref_service_factory.h" 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/bind.h" 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/prefs/default_pref_store.h" 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/prefs/json_pref_store.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/prefs/pref_filter.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/prefs/pref_notifier_impl.h" 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/prefs/pref_service.h" 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/prefs/pref_value_store.h" 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace base { 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace { 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Do-nothing default implementation. 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void DoNothingHandleReadError(PersistentPrefStore::PrefReadError error) { 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)PrefServiceFactory::PrefServiceFactory() 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) : managed_prefs_(NULL), 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) supervised_user_prefs_(NULL), 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extension_prefs_(NULL), 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) command_line_prefs_(NULL), 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) user_prefs_(NULL), 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) recommended_prefs_(NULL), 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) read_error_callback_(base::Bind(&DoNothingHandleReadError)), 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) async_(false) {} 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)PrefServiceFactory::~PrefServiceFactory() {} 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void PrefServiceFactory::SetUserPrefsFile( 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const base::FilePath& prefs_file, 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::SequencedTaskRunner* task_runner) { 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) user_prefs_ = new JsonPrefStore( 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) prefs_file, task_runner, scoped_ptr<PrefFilter>()); 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)scoped_ptr<PrefService> PrefServiceFactory::Create( 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) PrefRegistry* pref_registry) { 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) PrefNotifierImpl* pref_notifier = new PrefNotifierImpl(); 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<PrefService> pref_service( 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) new PrefService(pref_notifier, 50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) new PrefValueStore(managed_prefs_.get(), 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) supervised_user_prefs_.get(), 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extension_prefs_.get(), 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) command_line_prefs_.get(), 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) user_prefs_.get(), 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) recommended_prefs_.get(), 56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) pref_registry->defaults().get(), 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) pref_notifier), 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) user_prefs_.get(), 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) pref_registry, 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) read_error_callback_, 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) async_)); 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return pref_service.Pass(); 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace base 66