| 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 (const auto& entry : pref_registry->registration_flags()) |
| 59 pref_registry->syncable_preferences(); | 59 AddRegisteredSyncablePreference(entry.first.c_str(), entry.second); |
| 60 for (user_prefs::PrefRegistrySyncable::PrefToStatus::const_iterator it = | |
| 61 syncable_preferences.begin(); | |
| 62 it != syncable_preferences.end(); | |
| 63 ++it) { | |
| 64 AddRegisteredSyncablePreference(it->first.c_str(), it->second); | |
| 65 } | |
| 66 | 60 |
| 67 // Watch for syncable preferences registered after this point. | 61 // Watch for syncable preferences registered after this point. |
| 68 pref_registry->SetSyncableRegistrationCallback( | 62 pref_registry->SetSyncableRegistrationCallback( |
| 69 base::Bind(&PrefServiceSyncable::AddRegisteredSyncablePreference, | 63 base::Bind(&PrefServiceSyncable::AddRegisteredSyncablePreference, |
| 70 base::Unretained(this))); | 64 base::Unretained(this))); |
| 71 } | 65 } |
| 72 | 66 |
| 73 PrefServiceSyncable::~PrefServiceSyncable() { | 67 PrefServiceSyncable::~PrefServiceSyncable() { |
| 74 // Remove our callback from the registry, since it may outlive us. | 68 // Remove our callback from the registry, since it may outlive us. |
| 75 user_prefs::PrefRegistrySyncable* registry = | 69 user_prefs::PrefRegistrySyncable* registry = |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 priority_pref_sync_associator_.AddSyncedPrefObserver(name, observer); | 149 priority_pref_sync_associator_.AddSyncedPrefObserver(name, observer); |
| 156 } | 150 } |
| 157 | 151 |
| 158 void PrefServiceSyncable::RemoveSyncedPrefObserver( | 152 void PrefServiceSyncable::RemoveSyncedPrefObserver( |
| 159 const std::string& name, | 153 const std::string& name, |
| 160 SyncedPrefObserver* observer) { | 154 SyncedPrefObserver* observer) { |
| 161 pref_sync_associator_.RemoveSyncedPrefObserver(name, observer); | 155 pref_sync_associator_.RemoveSyncedPrefObserver(name, observer); |
| 162 priority_pref_sync_associator_.RemoveSyncedPrefObserver(name, observer); | 156 priority_pref_sync_associator_.RemoveSyncedPrefObserver(name, observer); |
| 163 } | 157 } |
| 164 | 158 |
| 165 void PrefServiceSyncable::AddRegisteredSyncablePreference( | 159 void PrefServiceSyncable::AddRegisteredSyncablePreference(const char* path, |
| 166 const char* path, | 160 uint32 flags) { |
| 167 const user_prefs::PrefRegistrySyncable::PrefSyncStatus sync_status) { | |
| 168 DCHECK(FindPreference(path)); | 161 DCHECK(FindPreference(path)); |
| 169 if (sync_status == user_prefs::PrefRegistrySyncable::SYNCABLE_PREF) { | 162 if (flags & user_prefs::PrefRegistrySyncable::SYNCABLE_PREF) { |
| 170 pref_sync_associator_.RegisterPref(path); | 163 pref_sync_associator_.RegisterPref(path); |
| 171 } else if (sync_status == | 164 } else if (flags & |
| 172 user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF) { | 165 user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF) { |
| 173 priority_pref_sync_associator_.RegisterPref(path); | 166 priority_pref_sync_associator_.RegisterPref(path); |
| 174 } else { | |
| 175 NOTREACHED() << "invalid sync_status: " << sync_status; | |
| 176 } | 167 } |
| 177 } | 168 } |
| 178 | 169 |
| 179 void PrefServiceSyncable::OnIsSyncingChanged() { | 170 void PrefServiceSyncable::OnIsSyncingChanged() { |
| 180 FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_, | 171 FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_, |
| 181 OnIsSyncingChanged()); | 172 OnIsSyncingChanged()); |
| 182 } | 173 } |
| 183 | 174 |
| 184 void PrefServiceSyncable::ProcessPrefChange(const std::string& name) { | 175 void PrefServiceSyncable::ProcessPrefChange(const std::string& name) { |
| 185 pref_sync_associator_.ProcessPrefChange(name); | 176 pref_sync_associator_.ProcessPrefChange(name); |
| 186 priority_pref_sync_associator_.ProcessPrefChange(name); | 177 priority_pref_sync_associator_.ProcessPrefChange(name); |
| 187 } | 178 } |
| OLD | NEW |