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

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: Fix double registration in Chrome Frame test. 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.
103 //
104 // TODO(joi): We can directly reuse the same PrefRegistry once
105 // PrefService no longer registers for callbacks on registration and
106 // unregistration.
107 scoped_refptr<PrefRegistry> incognito_registry = new PrefRegistry;
108 incognito_registry->defaults_ = pref_registry_->defaults_;
109
96 PrefServiceSyncable* incognito_service = new PrefServiceSyncable( 110 PrefServiceSyncable* incognito_service = new PrefServiceSyncable(
97 pref_notifier, 111 pref_notifier,
98 pref_value_store_->CloneAndSpecialize( 112 pref_value_store_->CloneAndSpecialize(
99 NULL, // managed 113 NULL, // managed
100 incognito_extension_prefs, 114 incognito_extension_prefs,
101 NULL, // command_line_prefs 115 NULL, // command_line_prefs
102 incognito_pref_store, 116 incognito_pref_store,
103 NULL, // recommended 117 NULL, // recommended
104 default_store_.get(), 118 incognito_registry->defaults(),
105 pref_notifier), 119 pref_notifier),
106 incognito_pref_store, 120 incognito_pref_store,
107 default_store_.get(), 121 incognito_registry,
108 read_error_callback_, 122 read_error_callback_,
109 false); 123 false);
110 return incognito_service; 124 return incognito_service;
111 } 125 }
112 126
113 bool PrefServiceSyncable::IsSyncing() { 127 bool PrefServiceSyncable::IsSyncing() {
114 return pref_sync_associator_.models_associated(); 128 return pref_sync_associator_.models_associated();
115 } 129 }
116 130
117 void PrefServiceSyncable::AddObserver(PrefServiceSyncableObserver* observer) { 131 void PrefServiceSyncable::AddObserver(PrefServiceSyncableObserver* observer) {
118 observer_list_.AddObserver(observer); 132 observer_list_.AddObserver(observer);
119 } 133 }
120 134
121 void PrefServiceSyncable::RemoveObserver( 135 void PrefServiceSyncable::RemoveObserver(
122 PrefServiceSyncableObserver* observer) { 136 PrefServiceSyncableObserver* observer) {
123 observer_list_.RemoveObserver(observer); 137 observer_list_.RemoveObserver(observer);
124 } 138 }
125 139
126 void PrefServiceSyncable::UnregisterPreference(const char* path) { 140 void PrefServiceSyncable::UnregisterPreference(const char* path) {
127 PrefService::UnregisterPreference(path); 141 // TODO(joi): Temporary until we have PrefRegistrySyncable.
142 static_cast<PrefRegistrySimple*>(
143 DeprecatedGetPrefRegistry())->DeprecatedUnregisterPreference(path);
144
128 if (pref_sync_associator_.IsPrefRegistered(path)) { 145 if (pref_sync_associator_.IsPrefRegistered(path)) {
129 pref_sync_associator_.UnregisterPref(path); 146 pref_sync_associator_.UnregisterPref(path);
130 } 147 }
131 } 148 }
132 149
133 void PrefServiceSyncable::RegisterBooleanPref(const char* path, 150 void PrefServiceSyncable::RegisterBooleanPref(const char* path,
134 bool default_value, 151 bool default_value,
135 PrefSyncStatus sync_status) { 152 PrefSyncStatus sync_status) {
136 RegisterSyncablePreference(path, 153 RegisterSyncablePreference(path,
137 Value::CreateBooleanValue(default_value), 154 Value::CreateBooleanValue(default_value),
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 PrefService::UpdateCommandLinePrefStore(cmd_line_store); 281 PrefService::UpdateCommandLinePrefStore(cmd_line_store);
265 } 282 }
266 283
267 void PrefServiceSyncable::OnIsSyncingChanged() { 284 void PrefServiceSyncable::OnIsSyncingChanged() {
268 FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_, 285 FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_,
269 OnIsSyncingChanged()); 286 OnIsSyncingChanged());
270 } 287 }
271 288
272 void PrefServiceSyncable::RegisterSyncablePreference( 289 void PrefServiceSyncable::RegisterSyncablePreference(
273 const char* path, Value* default_value, PrefSyncStatus sync_status) { 290 const char* path, Value* default_value, PrefSyncStatus sync_status) {
274 PrefService::RegisterPreference(path, default_value); 291 // TODO(joi): Temporary until we have PrefRegistrySyncable.
292 static_cast<PrefRegistrySimple*>(
293 DeprecatedGetPrefRegistry())->RegisterPreference(path, default_value);
275 // Register with sync if necessary. 294 // Register with sync if necessary.
276 if (sync_status == SYNCABLE_PREF) 295 if (sync_status == SYNCABLE_PREF)
277 pref_sync_associator_.RegisterPref(path); 296 pref_sync_associator_.RegisterPref(path);
278 } 297 }
OLDNEW
« no previous file with comments | « chrome/browser/prefs/pref_service_syncable.h ('k') | chrome/browser/prefs/pref_service_syncable_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698