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

Side by Side Diff: chrome/browser/prefs/pref_service_syncable.cc

Issue 12033093: sync: Implementation of Priority Preferences. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix tests Created 7 years, 8 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/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 25 matching lines...) Expand all
36 PersistentPrefStore* user_prefs, 36 PersistentPrefStore* user_prefs,
37 PrefRegistrySyncable* pref_registry, 37 PrefRegistrySyncable* pref_registry,
38 base::Callback<void(PersistentPrefStore::PrefReadError)> 38 base::Callback<void(PersistentPrefStore::PrefReadError)>
39 read_error_callback, 39 read_error_callback,
40 bool async) 40 bool async)
41 : PrefService(pref_notifier, 41 : PrefService(pref_notifier,
42 pref_value_store, 42 pref_value_store,
43 user_prefs, 43 user_prefs,
44 pref_registry, 44 pref_registry,
45 read_error_callback, 45 read_error_callback,
46 async) { 46 async),
47 pref_sync_associator_(syncer::PREFERENCES),
48 priority_pref_sync_associator_(syncer::PRIORITY_PREFERENCES) {
47 pref_sync_associator_.SetPrefService(this); 49 pref_sync_associator_.SetPrefService(this);
50 priority_pref_sync_associator_.SetPrefService(this);
48 51
49 // Let PrefModelAssociator know about changes to preference values. 52 // Let PrefModelAssociators know about changes to preference values.
50 pref_value_store->set_callback( 53 pref_value_store->set_callback(
51 base::Bind(&PrefModelAssociator::ProcessPrefChange, 54 base::Bind(&PrefServiceSyncable::ProcessPrefChange,
52 base::Unretained(&pref_sync_associator_))); 55 base::Unretained(this)));
53 56
54 // Add already-registered syncable preferences to PrefModelAssociator. 57 // Add already-registered syncable preferences to PrefModelAssociator.
55 const std::set<std::string>& syncable_preferences = 58 const PrefRegistrySyncable::PrefToStatus& syncable_preferences =
56 pref_registry->syncable_preferences(); 59 pref_registry->syncable_preferences();
57 for (std::set<std::string>::const_iterator it = syncable_preferences.begin(); 60 for (PrefRegistrySyncable::PrefToStatus::const_iterator it =
61 syncable_preferences.begin();
58 it != syncable_preferences.end(); 62 it != syncable_preferences.end();
59 ++it) { 63 ++it) {
60 AddRegisteredSyncablePreference(it->c_str()); 64 AddRegisteredSyncablePreference(it->first.c_str(), it->second);
61 } 65 }
62 66
63 // Watch for syncable preferences registered after this point. 67 // Watch for syncable preferences registered after this point.
64 pref_registry->SetSyncableRegistrationCallback( 68 pref_registry->SetSyncableRegistrationCallback(
65 base::Bind(&PrefServiceSyncable::AddRegisteredSyncablePreference, 69 base::Bind(&PrefServiceSyncable::AddRegisteredSyncablePreference,
66 base::Unretained(this))); 70 base::Unretained(this)));
67 } 71 }
68 72
69 PrefServiceSyncable::~PrefServiceSyncable() { 73 PrefServiceSyncable::~PrefServiceSyncable() {
70 // Remove our callback from the registry, since it may outlive us. 74 // Remove our callback from the registry, since it may outlive us.
(...skipping 28 matching lines...) Expand all
99 forked_registry, 103 forked_registry,
100 read_error_callback_, 104 read_error_callback_,
101 false); 105 false);
102 return incognito_service; 106 return incognito_service;
103 } 107 }
104 108
105 bool PrefServiceSyncable::IsSyncing() { 109 bool PrefServiceSyncable::IsSyncing() {
106 return pref_sync_associator_.models_associated(); 110 return pref_sync_associator_.models_associated();
107 } 111 }
108 112
113
114 bool PrefServiceSyncable::IsPrioritySyncing() {
115 return priority_pref_sync_associator_.models_associated();
116 }
117
109 void PrefServiceSyncable::AddObserver(PrefServiceSyncableObserver* observer) { 118 void PrefServiceSyncable::AddObserver(PrefServiceSyncableObserver* observer) {
110 observer_list_.AddObserver(observer); 119 observer_list_.AddObserver(observer);
111 } 120 }
112 121
113 void PrefServiceSyncable::RemoveObserver( 122 void PrefServiceSyncable::RemoveObserver(
114 PrefServiceSyncableObserver* observer) { 123 PrefServiceSyncableObserver* observer) {
115 observer_list_.RemoveObserver(observer); 124 observer_list_.RemoveObserver(observer);
116 } 125 }
117 126
118 syncer::SyncableService* PrefServiceSyncable::GetSyncableService() { 127 syncer::SyncableService* PrefServiceSyncable::GetSyncableService(
119 return &pref_sync_associator_; 128 const syncer::ModelType& type) {
129 if (type == syncer::PREFERENCES) {
130 return &pref_sync_associator_;
131 } else if (type == syncer::PRIORITY_PREFERENCES) {
132 return &priority_pref_sync_associator_;
133 } else {
134 NOTREACHED() << "invalid model type: " << type;
135 return NULL;
136 }
120 } 137 }
121 138
122 void PrefServiceSyncable::UpdateCommandLinePrefStore( 139 void PrefServiceSyncable::UpdateCommandLinePrefStore(
123 PrefStore* cmd_line_store) { 140 PrefStore* cmd_line_store) {
124 // If |pref_service_forked_| is true, then this PrefService and the forked 141 // If |pref_service_forked_| is true, then this PrefService and the forked
125 // copies will be out of sync. 142 // copies will be out of sync.
126 DCHECK(!pref_service_forked_); 143 DCHECK(!pref_service_forked_);
127 PrefService::UpdateCommandLinePrefStore(cmd_line_store); 144 PrefService::UpdateCommandLinePrefStore(cmd_line_store);
128 } 145 }
129 146
130 void PrefServiceSyncable::AddRegisteredSyncablePreference(const char* path) { 147 void PrefServiceSyncable::AddRegisteredSyncablePreference(
148 const char* path,
149 const PrefRegistrySyncable::PrefSyncStatus sync_status) {
131 DCHECK(FindPreference(path)); 150 DCHECK(FindPreference(path));
132 pref_sync_associator_.RegisterPref(path); 151 if (sync_status == PrefRegistrySyncable::SYNCABLE_PREF) {
152 pref_sync_associator_.RegisterPref(path);
153 } else if (sync_status == PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF) {
154 priority_pref_sync_associator_.RegisterPref(path);
155 } else {
156 NOTREACHED() << "invalid sync_status: " << sync_status;
157 }
133 } 158 }
134 159
135 void PrefServiceSyncable::OnIsSyncingChanged() { 160 void PrefServiceSyncable::OnIsSyncingChanged() {
136 FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_, 161 FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_,
137 OnIsSyncingChanged()); 162 OnIsSyncingChanged());
138 } 163 }
164
165 void PrefServiceSyncable::ProcessPrefChange(const std::string& name) {
166 pref_sync_associator_.ProcessPrefChange(name);
167 priority_pref_sync_associator_.ProcessPrefChange(name);
168 }
OLDNEW
« no previous file with comments | « chrome/browser/prefs/pref_service_syncable.h ('k') | chrome/browser/sync/profile_sync_components_factory_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698