OLD | NEW |
---|---|
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" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
60 NOTREACHED(); | 60 NOTREACHED(); |
61 return Value::CreateNullValue(); | 61 return Value::CreateNullValue(); |
62 } | 62 } |
63 | 63 |
64 } // namespace | 64 } // namespace |
65 | 65 |
66 PrefServiceSyncable::PrefServiceSyncable( | 66 PrefServiceSyncable::PrefServiceSyncable( |
67 PrefNotifierImpl* pref_notifier, | 67 PrefNotifierImpl* pref_notifier, |
68 PrefValueStore* pref_value_store, | 68 PrefValueStore* pref_value_store, |
69 PersistentPrefStore* user_prefs, | 69 PersistentPrefStore* user_prefs, |
70 DefaultPrefStore* default_store, | 70 scoped_ptr<PrefRegistry> pref_registry, |
71 base::Callback<void(PersistentPrefStore::PrefReadError)> | 71 base::Callback<void(PersistentPrefStore::PrefReadError)> |
72 read_error_callback, | 72 read_error_callback, |
73 bool async) | 73 bool async) |
74 : PrefService(pref_notifier, | 74 : PrefService(pref_notifier, |
75 pref_value_store, | 75 pref_value_store, |
76 user_prefs, | 76 user_prefs, |
77 default_store, | 77 pref_registry.Pass(), |
78 read_error_callback, | 78 read_error_callback, |
79 async) { | 79 async) { |
80 pref_sync_associator_.SetPrefService(this); | 80 pref_sync_associator_.SetPrefService(this); |
81 | 81 |
82 pref_value_store->set_callback( | 82 pref_value_store->set_callback( |
83 base::Bind(&PrefModelAssociator::ProcessPrefChange, | 83 base::Bind(&PrefModelAssociator::ProcessPrefChange, |
84 base::Unretained(&pref_sync_associator_))); | 84 base::Unretained(&pref_sync_associator_))); |
85 } | 85 } |
86 | 86 |
87 PrefServiceSyncable::~PrefServiceSyncable() {} | 87 PrefServiceSyncable::~PrefServiceSyncable() {} |
88 | 88 |
89 PrefServiceSyncable* PrefServiceSyncable::CreateIncognitoPrefService( | 89 PrefServiceSyncable* PrefServiceSyncable::CreateIncognitoPrefService( |
90 PrefStore* incognito_extension_prefs) { | 90 PrefStore* incognito_extension_prefs) { |
91 pref_service_forked_ = true; | 91 pref_service_forked_ = true; |
92 PrefNotifierImpl* pref_notifier = new PrefNotifierImpl(); | 92 PrefNotifierImpl* pref_notifier = new PrefNotifierImpl(); |
93 OverlayUserPrefStore* incognito_pref_store = | 93 OverlayUserPrefStore* incognito_pref_store = |
94 new OverlayUserPrefStore(user_pref_store_.get()); | 94 new OverlayUserPrefStore(user_pref_store_.get()); |
95 // TODO(joi): Temporary until we have a PrefRegistrySyncable. | |
96 PrefRegistry* dummy_registry = new PrefRegistry; | |
97 dummy_registry->default_prefs_ = default_store_; | |
Mattias Nissler (ping if slow)
2013/01/25 14:57:11
shouldn't the two stores share the same registry?
Jói
2013/01/29 16:10:02
Done.
| |
95 PrefsTabHelper::InitIncognitoUserPrefStore(incognito_pref_store); | 98 PrefsTabHelper::InitIncognitoUserPrefStore(incognito_pref_store); |
96 PrefServiceSyncable* incognito_service = new PrefServiceSyncable( | 99 PrefServiceSyncable* incognito_service = new PrefServiceSyncable( |
97 pref_notifier, | 100 pref_notifier, |
98 pref_value_store_->CloneAndSpecialize( | 101 pref_value_store_->CloneAndSpecialize( |
99 NULL, // managed | 102 NULL, // managed |
100 incognito_extension_prefs, | 103 incognito_extension_prefs, |
101 NULL, // command_line_prefs | 104 NULL, // command_line_prefs |
102 incognito_pref_store, | 105 incognito_pref_store, |
103 NULL, // recommended | 106 NULL, // recommended |
104 default_store_.get(), | 107 default_store_.get(), |
105 pref_notifier), | 108 pref_notifier), |
106 incognito_pref_store, | 109 incognito_pref_store, |
107 default_store_.get(), | 110 make_scoped_ptr(dummy_registry), |
108 read_error_callback_, | 111 read_error_callback_, |
109 false); | 112 false); |
110 return incognito_service; | 113 return incognito_service; |
111 } | 114 } |
112 | 115 |
113 bool PrefServiceSyncable::IsSyncing() { | 116 bool PrefServiceSyncable::IsSyncing() { |
114 return pref_sync_associator_.models_associated(); | 117 return pref_sync_associator_.models_associated(); |
115 } | 118 } |
116 | 119 |
117 void PrefServiceSyncable::AddObserver(PrefServiceSyncableObserver* observer) { | 120 void PrefServiceSyncable::AddObserver(PrefServiceSyncableObserver* observer) { |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
257 } | 260 } |
258 | 261 |
259 void PrefServiceSyncable::UpdateCommandLinePrefStore( | 262 void PrefServiceSyncable::UpdateCommandLinePrefStore( |
260 PrefStore* cmd_line_store) { | 263 PrefStore* cmd_line_store) { |
261 // If |pref_service_forked_| is true, then this PrefService and the forked | 264 // If |pref_service_forked_| is true, then this PrefService and the forked |
262 // copies will be out of sync. | 265 // copies will be out of sync. |
263 DCHECK(!pref_service_forked_); | 266 DCHECK(!pref_service_forked_); |
264 PrefService::UpdateCommandLinePrefStore(cmd_line_store); | 267 PrefService::UpdateCommandLinePrefStore(cmd_line_store); |
265 } | 268 } |
266 | 269 |
270 bool PrefServiceSyncable::AllowPrefRegistrarSimple() const { | |
271 return false; | |
272 } | |
273 | |
267 void PrefServiceSyncable::OnIsSyncingChanged() { | 274 void PrefServiceSyncable::OnIsSyncingChanged() { |
268 FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_, | 275 FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_, |
269 OnIsSyncingChanged()); | 276 OnIsSyncingChanged()); |
270 } | 277 } |
271 | 278 |
272 void PrefServiceSyncable::RegisterSyncablePreference( | 279 void PrefServiceSyncable::RegisterSyncablePreference( |
273 const char* path, Value* default_value, PrefSyncStatus sync_status) { | 280 const char* path, Value* default_value, PrefSyncStatus sync_status) { |
274 PrefService::RegisterPreference(path, default_value); | 281 PrefService::RegisterPreference(path, default_value, false); |
275 // Register with sync if necessary. | 282 // Register with sync if necessary. |
276 if (sync_status == SYNCABLE_PREF) | 283 if (sync_status == SYNCABLE_PREF) |
277 pref_sync_associator_.RegisterPref(path); | 284 pref_sync_associator_.RegisterPref(path); |
278 } | 285 } |
OLD | NEW |