Chromium Code Reviews| 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 |