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/files/file_path.h" | 8 #include "base/files/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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 priority_pref_sync_associator_(syncer::PRIORITY_PREFERENCES) { | 48 priority_pref_sync_associator_(syncer::PRIORITY_PREFERENCES) { |
49 pref_sync_associator_.SetPrefService(this); | 49 pref_sync_associator_.SetPrefService(this); |
50 priority_pref_sync_associator_.SetPrefService(this); | 50 priority_pref_sync_associator_.SetPrefService(this); |
51 | 51 |
52 // Let PrefModelAssociators know about changes to preference values. | 52 // Let PrefModelAssociators know about changes to preference values. |
53 pref_value_store->set_callback( | 53 pref_value_store->set_callback( |
54 base::Bind(&PrefServiceSyncable::ProcessPrefChange, | 54 base::Bind(&PrefServiceSyncable::ProcessPrefChange, |
55 base::Unretained(this))); | 55 base::Unretained(this))); |
56 | 56 |
57 // Add already-registered syncable preferences to PrefModelAssociator. | 57 // Add already-registered syncable preferences to PrefModelAssociator. |
58 const user_prefs::PrefRegistrySyncable::PrefToStatus& syncable_preferences = | 58 for (PrefRegistry::const_iterator it = pref_registry->begin(); |
59 pref_registry->syncable_preferences(); | 59 it != pref_registry->end(); ++it) { |
60 for (user_prefs::PrefRegistrySyncable::PrefToStatus::const_iterator it = | 60 const std::string& path = it->first; |
61 syncable_preferences.begin(); | 61 AddRegisteredSyncablePreference( |
62 it != syncable_preferences.end(); | 62 path.c_str(), pref_registry_->GetRegistrationFlags(path)); |
63 ++it) { | |
64 AddRegisteredSyncablePreference(it->first.c_str(), it->second); | |
65 } | 63 } |
66 | 64 |
67 // Watch for syncable preferences registered after this point. | 65 // Watch for syncable preferences registered after this point. |
68 pref_registry->SetSyncableRegistrationCallback( | 66 pref_registry->SetSyncableRegistrationCallback( |
69 base::Bind(&PrefServiceSyncable::AddRegisteredSyncablePreference, | 67 base::Bind(&PrefServiceSyncable::AddRegisteredSyncablePreference, |
70 base::Unretained(this))); | 68 base::Unretained(this))); |
71 } | 69 } |
72 | 70 |
73 PrefServiceSyncable::~PrefServiceSyncable() { | 71 PrefServiceSyncable::~PrefServiceSyncable() { |
74 // Remove our callback from the registry, since it may outlive us. | 72 // Remove our callback from the registry, since it may outlive us. |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 priority_pref_sync_associator_.AddSyncedPrefObserver(name, observer); | 153 priority_pref_sync_associator_.AddSyncedPrefObserver(name, observer); |
156 } | 154 } |
157 | 155 |
158 void PrefServiceSyncable::RemoveSyncedPrefObserver( | 156 void PrefServiceSyncable::RemoveSyncedPrefObserver( |
159 const std::string& name, | 157 const std::string& name, |
160 SyncedPrefObserver* observer) { | 158 SyncedPrefObserver* observer) { |
161 pref_sync_associator_.RemoveSyncedPrefObserver(name, observer); | 159 pref_sync_associator_.RemoveSyncedPrefObserver(name, observer); |
162 priority_pref_sync_associator_.RemoveSyncedPrefObserver(name, observer); | 160 priority_pref_sync_associator_.RemoveSyncedPrefObserver(name, observer); |
163 } | 161 } |
164 | 162 |
165 void PrefServiceSyncable::AddRegisteredSyncablePreference( | 163 void PrefServiceSyncable::AddRegisteredSyncablePreference(const char* path, |
166 const char* path, | 164 uint32 flags) { |
167 const user_prefs::PrefRegistrySyncable::PrefSyncStatus sync_status) { | |
168 DCHECK(FindPreference(path)); | 165 DCHECK(FindPreference(path)); |
169 if (sync_status == user_prefs::PrefRegistrySyncable::SYNCABLE_PREF) { | 166 if (flags & user_prefs::PrefRegistrySyncable::SYNCABLE_PREF) { |
170 pref_sync_associator_.RegisterPref(path); | 167 pref_sync_associator_.RegisterPref(path); |
171 } else if (sync_status == | 168 } else if (flags & |
172 user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF) { | 169 user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF) { |
173 priority_pref_sync_associator_.RegisterPref(path); | 170 priority_pref_sync_associator_.RegisterPref(path); |
174 } else { | |
175 NOTREACHED() << "invalid sync_status: " << sync_status; | |
176 } | 171 } |
177 } | 172 } |
178 | 173 |
179 void PrefServiceSyncable::OnIsSyncingChanged() { | 174 void PrefServiceSyncable::OnIsSyncingChanged() { |
180 FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_, | 175 FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_, |
181 OnIsSyncingChanged()); | 176 OnIsSyncingChanged()); |
182 } | 177 } |
183 | 178 |
184 void PrefServiceSyncable::ProcessPrefChange(const std::string& name) { | 179 void PrefServiceSyncable::ProcessPrefChange(const std::string& name) { |
185 pref_sync_associator_.ProcessPrefChange(name); | 180 pref_sync_associator_.ProcessPrefChange(name); |
186 priority_pref_sync_associator_.ProcessPrefChange(name); | 181 priority_pref_sync_associator_.ProcessPrefChange(name); |
187 } | 182 } |
OLD | NEW |