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

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

Issue 11741003: Remove PrefServiceSimple, replacing it with PrefService and PrefRegistrySimple. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update production interfaces based on review comments. Created 7 years, 10 months 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_syncable.h" 5 #include "chrome/browser/prefs/pref_service_syncable.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/prefs/default_pref_store.h" 9 #include "base/prefs/default_pref_store.h"
10 #include "base/prefs/overlay_user_pref_store.h" 10 #include "base/prefs/overlay_user_pref_store.h"
11 #include "base/string_number_conversions.h" 11 #include "base/string_number_conversions.h"
12 #include "base/value_conversions.h" 12 #include "base/value_conversions.h"
13 #include "chrome/browser/prefs/pref_model_associator.h" 13 #include "chrome/browser/prefs/pref_model_associator.h"
14 #include "chrome/browser/prefs/pref_notifier_impl.h" 14 #include "chrome/browser/prefs/pref_notifier_impl.h"
15 #include "chrome/browser/prefs/pref_registry.h"
16 #include "chrome/browser/prefs/pref_registry_simple.h"
15 #include "chrome/browser/prefs/pref_service_syncable_observer.h" 17 #include "chrome/browser/prefs/pref_service_syncable_observer.h"
16 #include "chrome/browser/prefs/pref_value_store.h" 18 #include "chrome/browser/prefs/pref_value_store.h"
17 #include "chrome/browser/ui/prefs/prefs_tab_helper.h" 19 #include "chrome/browser/ui/prefs/prefs_tab_helper.h"
18 #include "ui/base/l10n/l10n_util.h" 20 #include "ui/base/l10n/l10n_util.h"
19 21
20 namespace { 22 namespace {
21 23
22 // A helper function for RegisterLocalized*Pref that creates a Value* 24 // A helper function for RegisterLocalized*Pref that creates a Value*
23 // based on a localized resource. Because we control the values in a 25 // based on a localized resource. Because we control the values in a
24 // locale dll, this should always return a Value of the appropriate 26 // locale dll, this should always return a Value of the appropriate
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 NOTREACHED(); 62 NOTREACHED();
61 return Value::CreateNullValue(); 63 return Value::CreateNullValue();
62 } 64 }
63 65
64 } // namespace 66 } // namespace
65 67
66 PrefServiceSyncable::PrefServiceSyncable( 68 PrefServiceSyncable::PrefServiceSyncable(
67 PrefNotifierImpl* pref_notifier, 69 PrefNotifierImpl* pref_notifier,
68 PrefValueStore* pref_value_store, 70 PrefValueStore* pref_value_store,
69 PersistentPrefStore* user_prefs, 71 PersistentPrefStore* user_prefs,
70 DefaultPrefStore* default_store, 72 PrefRegistry* pref_registry,
71 base::Callback<void(PersistentPrefStore::PrefReadError)> 73 base::Callback<void(PersistentPrefStore::PrefReadError)>
72 read_error_callback, 74 read_error_callback,
73 bool async) 75 bool async)
74 : PrefService(pref_notifier, 76 : PrefService(pref_notifier,
75 pref_value_store, 77 pref_value_store,
76 user_prefs, 78 user_prefs,
77 default_store, 79 pref_registry,
78 read_error_callback, 80 read_error_callback,
79 async) { 81 async) {
80 pref_sync_associator_.SetPrefService(this); 82 pref_sync_associator_.SetPrefService(this);
81 83
82 pref_value_store->set_callback( 84 pref_value_store->set_callback(
83 base::Bind(&PrefModelAssociator::ProcessPrefChange, 85 base::Bind(&PrefModelAssociator::ProcessPrefChange,
84 base::Unretained(&pref_sync_associator_))); 86 base::Unretained(&pref_sync_associator_)));
85 } 87 }
86 88
87 PrefServiceSyncable::~PrefServiceSyncable() {} 89 PrefServiceSyncable::~PrefServiceSyncable() {}
88 90
89 PrefServiceSyncable* PrefServiceSyncable::CreateIncognitoPrefService( 91 PrefServiceSyncable* PrefServiceSyncable::CreateIncognitoPrefService(
90 PrefStore* incognito_extension_prefs) { 92 PrefStore* incognito_extension_prefs) {
91 pref_service_forked_ = true; 93 pref_service_forked_ = true;
92 PrefNotifierImpl* pref_notifier = new PrefNotifierImpl(); 94 PrefNotifierImpl* pref_notifier = new PrefNotifierImpl();
93 OverlayUserPrefStore* incognito_pref_store = 95 OverlayUserPrefStore* incognito_pref_store =
94 new OverlayUserPrefStore(user_pref_store_.get()); 96 new OverlayUserPrefStore(user_pref_store_.get());
95 PrefsTabHelper::InitIncognitoUserPrefStore(incognito_pref_store); 97 PrefsTabHelper::InitIncognitoUserPrefStore(incognito_pref_store);
98
99 // For the incognito service, we need a registry that shares the
100 // same default prefs, but does not interfere with callbacks on
101 // registration/unregistration made to the main service, or allow
102 // any registrations.
Mattias Nissler (ping if slow) 2013/01/29 18:10:45 I understand we are intending to remove the callba
Jói 2013/01/30 14:23:33 Done.
103 scoped_refptr<PrefRegistry> incognito_registry = new PrefRegistry;
104 incognito_registry->defaults_ = pref_registry_->defaults_;
105
96 PrefServiceSyncable* incognito_service = new PrefServiceSyncable( 106 PrefServiceSyncable* incognito_service = new PrefServiceSyncable(
97 pref_notifier, 107 pref_notifier,
98 pref_value_store_->CloneAndSpecialize( 108 pref_value_store_->CloneAndSpecialize(
99 NULL, // managed 109 NULL, // managed
100 incognito_extension_prefs, 110 incognito_extension_prefs,
101 NULL, // command_line_prefs 111 NULL, // command_line_prefs
102 incognito_pref_store, 112 incognito_pref_store,
103 NULL, // recommended 113 NULL, // recommended
104 default_store_.get(), 114 incognito_registry->defaults(),
105 pref_notifier), 115 pref_notifier),
106 incognito_pref_store, 116 incognito_pref_store,
107 default_store_.get(), 117 incognito_registry,
108 read_error_callback_, 118 read_error_callback_,
109 false); 119 false);
110 return incognito_service; 120 return incognito_service;
111 } 121 }
112 122
113 bool PrefServiceSyncable::IsSyncing() { 123 bool PrefServiceSyncable::IsSyncing() {
114 return pref_sync_associator_.models_associated(); 124 return pref_sync_associator_.models_associated();
115 } 125 }
116 126
117 void PrefServiceSyncable::AddObserver(PrefServiceSyncableObserver* observer) { 127 void PrefServiceSyncable::AddObserver(PrefServiceSyncableObserver* observer) {
118 observer_list_.AddObserver(observer); 128 observer_list_.AddObserver(observer);
119 } 129 }
120 130
121 void PrefServiceSyncable::RemoveObserver( 131 void PrefServiceSyncable::RemoveObserver(
122 PrefServiceSyncableObserver* observer) { 132 PrefServiceSyncableObserver* observer) {
123 observer_list_.RemoveObserver(observer); 133 observer_list_.RemoveObserver(observer);
124 } 134 }
125 135
126 void PrefServiceSyncable::UnregisterPreference(const char* path) { 136 void PrefServiceSyncable::UnregisterPreference(const char* path) {
127 PrefService::UnregisterPreference(path); 137 // TODO(joi): Temporary until we have PrefRegistrySyncable.
138 static_cast<PrefRegistrySimple*>(
139 DeprecatedGetPrefRegistry())->DeprecatedUnregisterPreference(path);
140
128 if (pref_sync_associator_.IsPrefRegistered(path)) { 141 if (pref_sync_associator_.IsPrefRegistered(path)) {
129 pref_sync_associator_.UnregisterPref(path); 142 pref_sync_associator_.UnregisterPref(path);
130 } 143 }
131 } 144 }
132 145
133 void PrefServiceSyncable::RegisterBooleanPref(const char* path, 146 void PrefServiceSyncable::RegisterBooleanPref(const char* path,
134 bool default_value, 147 bool default_value,
135 PrefSyncStatus sync_status) { 148 PrefSyncStatus sync_status) {
136 RegisterSyncablePreference(path, 149 RegisterSyncablePreference(path,
137 Value::CreateBooleanValue(default_value), 150 Value::CreateBooleanValue(default_value),
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 PrefService::UpdateCommandLinePrefStore(cmd_line_store); 277 PrefService::UpdateCommandLinePrefStore(cmd_line_store);
265 } 278 }
266 279
267 void PrefServiceSyncable::OnIsSyncingChanged() { 280 void PrefServiceSyncable::OnIsSyncingChanged() {
268 FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_, 281 FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_,
269 OnIsSyncingChanged()); 282 OnIsSyncingChanged());
270 } 283 }
271 284
272 void PrefServiceSyncable::RegisterSyncablePreference( 285 void PrefServiceSyncable::RegisterSyncablePreference(
273 const char* path, Value* default_value, PrefSyncStatus sync_status) { 286 const char* path, Value* default_value, PrefSyncStatus sync_status) {
274 PrefService::RegisterPreference(path, default_value); 287 // TODO(joi): Temporary until we have PrefRegistrySyncable.
288 static_cast<PrefRegistrySimple*>(
289 DeprecatedGetPrefRegistry())->RegisterPreference(path, default_value);
275 // Register with sync if necessary. 290 // Register with sync if necessary.
276 if (sync_status == SYNCABLE_PREF) 291 if (sync_status == SYNCABLE_PREF)
277 pref_sync_associator_.RegisterPref(path); 292 pref_sync_associator_.RegisterPref(path);
278 } 293 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698