Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(447)

Side by Side Diff: chrome/browser/prefs/pref_service_builder.cc

Issue 11570009: Split PrefService into PrefService, PrefServiceSimple and PrefServiceSyncable. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Ready for review. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/prefs/pref_service_builder.h" 5 #include "chrome/browser/prefs/pref_service_builder.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/prefs/default_pref_store.h" 8 #include "base/prefs/default_pref_store.h"
9 #include "base/prefs/json_pref_store.h" 9 #include "base/prefs/json_pref_store.h"
10 #include "chrome/browser/prefs/pref_notifier_impl.h" 10 #include "chrome/browser/prefs/pref_notifier_impl.h"
11 #include "chrome/browser/prefs/pref_service.h" 11 #include "chrome/browser/prefs/pref_service.h"
12 #include "chrome/browser/prefs/pref_value_store.h" 12 #include "chrome/browser/prefs/pref_value_store.h"
13 13
14 namespace { 14 namespace {
15 15
16 // Do-nothing default implementation. 16 // Do-nothing default implementation.
17 void DoNothingHandleReadError(PersistentPrefStore::PrefReadError error) { 17 void DoNothingHandleReadError(PersistentPrefStore::PrefReadError error) {
18 } 18 }
19 19
20 // Dummy default implementation.
21 std::string DummyGetLocalizedString(int id) {
22 return "";
23 }
24
25 } // namespace 20 } // namespace
26 21
27 PrefServiceBuilder::PrefServiceBuilder() 22 PrefServiceBuilder::PrefServiceBuilder() {
28 : sync_associator_(NULL) {
29 ResetDefaultState(); 23 ResetDefaultState();
30 } 24 }
31 25
32 PrefServiceBuilder::~PrefServiceBuilder() { 26 PrefServiceBuilder::~PrefServiceBuilder() {
33 } 27 }
34 28
35 PrefServiceBuilder& PrefServiceBuilder::WithManagedPrefs(PrefStore* store) { 29 PrefServiceBuilder& PrefServiceBuilder::WithManagedPrefs(PrefStore* store) {
36 managed_prefs_ = store; 30 managed_prefs_ = store;
37 return *this; 31 return *this;
38 } 32 }
(...skipping 12 matching lines...) Expand all
51 PersistentPrefStore* store) { 45 PersistentPrefStore* store) {
52 user_prefs_ = store; 46 user_prefs_ = store;
53 return *this; 47 return *this;
54 } 48 }
55 49
56 PrefServiceBuilder& PrefServiceBuilder::WithRecommendedPrefs(PrefStore* store) { 50 PrefServiceBuilder& PrefServiceBuilder::WithRecommendedPrefs(PrefStore* store) {
57 recommended_prefs_ = store; 51 recommended_prefs_ = store;
58 return *this; 52 return *this;
59 } 53 }
60 54
61 PrefServiceBuilder& PrefServiceBuilder::WithSyncAssociator(
62 PrefModelAssociator* associator) {
63 sync_associator_ = associator;
64 return *this;
65 }
66
67 PrefServiceBuilder& PrefServiceBuilder::WithLocalizedStringMethod(
68 const base::Callback<std::string(int)>& localized_string_method) {
69 get_localized_string_method_ = localized_string_method;
70 return *this;
71 }
72
73 PrefServiceBuilder& PrefServiceBuilder::WithReadErrorCallback( 55 PrefServiceBuilder& PrefServiceBuilder::WithReadErrorCallback(
74 const base::Callback<void(PersistentPrefStore::PrefReadError)>& 56 const base::Callback<void(PersistentPrefStore::PrefReadError)>&
75 read_error_callback) { 57 read_error_callback) {
76 read_error_callback_ = read_error_callback; 58 read_error_callback_ = read_error_callback;
77 return *this; 59 return *this;
78 } 60 }
79 61
80 PrefServiceBuilder& PrefServiceBuilder::WithUserFilePrefs( 62 PrefServiceBuilder& PrefServiceBuilder::WithUserFilePrefs(
81 const FilePath& prefs_file, 63 const FilePath& prefs_file,
82 base::SequencedTaskRunner* task_runner) { 64 base::SequencedTaskRunner* task_runner) {
83 user_prefs_ = new JsonPrefStore(prefs_file, task_runner); 65 user_prefs_ = new JsonPrefStore(prefs_file, task_runner);
84 return *this; 66 return *this;
85 } 67 }
86 68
87 PrefServiceBuilder& PrefServiceBuilder::WithAsync(bool async) { 69 PrefServiceBuilder& PrefServiceBuilder::WithAsync(bool async) {
88 async_ = async; 70 async_ = async;
89 return *this; 71 return *this;
90 } 72 }
91 73
92 PrefService* PrefServiceBuilder::Create() { 74 PrefService* PrefServiceBuilder::Build(PrefService* pref_service) {
93 DefaultPrefStore* default_pref_store = new DefaultPrefStore(); 75 DefaultPrefStore* default_pref_store = new DefaultPrefStore();
94 PrefNotifierImpl* pref_notifier = new PrefNotifierImpl(); 76 PrefNotifierImpl* pref_notifier = new PrefNotifierImpl();
95 PrefService* pref_service = 77 pref_service->Initialize(
96 new PrefService( 78 pref_notifier,
97 pref_notifier, 79 new PrefValueStore(
98 new PrefValueStore( 80 managed_prefs_.get(),
99 managed_prefs_.get(), 81 extension_prefs_.get(),
100 extension_prefs_.get(), 82 command_line_prefs_.get(),
101 command_line_prefs_.get(),
102 user_prefs_.get(),
103 recommended_prefs_.get(),
104 default_pref_store,
105 sync_associator_,
106 pref_notifier),
107 user_prefs_.get(), 83 user_prefs_.get(),
84 recommended_prefs_.get(),
108 default_pref_store, 85 default_pref_store,
109 sync_associator_, 86 pref_notifier),
110 get_localized_string_method_, 87 user_prefs_.get(),
111 read_error_callback_, 88 default_pref_store,
112 async_); 89 read_error_callback_,
90 async_);
91 ResetDefaultState();
92 return pref_service;
93 }
94
95 void PrefServiceBuilder::ResetDefaultState() {
113 managed_prefs_ = NULL; 96 managed_prefs_ = NULL;
114 extension_prefs_ = NULL; 97 extension_prefs_ = NULL;
115 command_line_prefs_ = NULL; 98 command_line_prefs_ = NULL;
116 user_prefs_ = NULL; 99 user_prefs_ = NULL;
117 recommended_prefs_ = NULL; 100 recommended_prefs_ = NULL;
118 sync_associator_ = NULL;
119 ResetDefaultState();
120
121 return pref_service;
122 }
123
124 void PrefServiceBuilder::ResetDefaultState() {
125 get_localized_string_method_ = base::Bind(&DummyGetLocalizedString);
126 read_error_callback_ = base::Bind(&DoNothingHandleReadError); 101 read_error_callback_ = base::Bind(&DoNothingHandleReadError);
127 async_ = false; 102 async_ = false;
128 } 103 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698