Home | History | Annotate | Download | only in prefs
      1 // Copyright 2013 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 "base/prefs/pref_service_factory.h"
      6 
      7 #include "base/bind.h"
      8 #include "base/prefs/default_pref_store.h"
      9 #include "base/prefs/json_pref_store.h"
     10 #include "base/prefs/pref_filter.h"
     11 #include "base/prefs/pref_notifier_impl.h"
     12 #include "base/prefs/pref_service.h"
     13 
     14 #include "base/prefs/pref_value_store.h"
     15 
     16 namespace base {
     17 
     18 namespace {
     19 
     20 // Do-nothing default implementation.
     21 void DoNothingHandleReadError(PersistentPrefStore::PrefReadError error) {
     22 }
     23 
     24 }  // namespace
     25 
     26 PrefServiceFactory::PrefServiceFactory()
     27     : managed_prefs_(NULL),
     28       supervised_user_prefs_(NULL),
     29       extension_prefs_(NULL),
     30       command_line_prefs_(NULL),
     31       user_prefs_(NULL),
     32       recommended_prefs_(NULL),
     33       read_error_callback_(base::Bind(&DoNothingHandleReadError)),
     34       async_(false) {}
     35 
     36 PrefServiceFactory::~PrefServiceFactory() {}
     37 
     38 void PrefServiceFactory::SetUserPrefsFile(
     39     const base::FilePath& prefs_file,
     40     base::SequencedTaskRunner* task_runner) {
     41   user_prefs_ = new JsonPrefStore(
     42       prefs_file, task_runner, scoped_ptr<PrefFilter>());
     43 }
     44 
     45 scoped_ptr<PrefService> PrefServiceFactory::Create(
     46     PrefRegistry* pref_registry) {
     47   PrefNotifierImpl* pref_notifier = new PrefNotifierImpl();
     48   scoped_ptr<PrefService> pref_service(
     49       new PrefService(pref_notifier,
     50                       new PrefValueStore(managed_prefs_.get(),
     51                                          supervised_user_prefs_.get(),
     52                                          extension_prefs_.get(),
     53                                          command_line_prefs_.get(),
     54                                          user_prefs_.get(),
     55                                          recommended_prefs_.get(),
     56                                          pref_registry->defaults().get(),
     57                                          pref_notifier),
     58                       user_prefs_.get(),
     59                       pref_registry,
     60                       read_error_callback_,
     61                       async_));
     62   return pref_service.Pass();
     63 }
     64 
     65 }  // namespace base
     66