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

Side by Side Diff: chrome/browser/sync/sync_prefs.cc

Issue 8851006: [Sync] Replace all instances of ModelTypeSet with ModelEnumSet (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleanup pass #2 Created 9 years 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
« no previous file with comments | « chrome/browser/sync/sync_prefs.h ('k') | chrome/browser/sync/sync_prefs_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/sync/sync_prefs.h" 5 #include "chrome/browser/sync/sync_prefs.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/string_number_conversions.h" 8 #include "base/string_number_conversions.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 } 116 }
117 117
118 void SyncPrefs::SetKeepEverythingSynced(bool keep_everything_synced) { 118 void SyncPrefs::SetKeepEverythingSynced(bool keep_everything_synced) {
119 DCHECK(non_thread_safe_.CalledOnValidThread()); 119 DCHECK(non_thread_safe_.CalledOnValidThread());
120 CHECK(pref_service_); 120 CHECK(pref_service_);
121 pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced, 121 pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced,
122 keep_everything_synced); 122 keep_everything_synced);
123 pref_service_->ScheduleSavePersistentPrefs(); 123 pref_service_->ScheduleSavePersistentPrefs();
124 } 124 }
125 125
126 syncable::ModelTypeSet SyncPrefs::GetPreferredDataTypes( 126 syncable::ModelEnumSet SyncPrefs::GetPreferredDataTypes(
127 const syncable::ModelTypeSet& registered_types) const { 127 syncable::ModelEnumSet registered_types) const {
128 DCHECK(non_thread_safe_.CalledOnValidThread()); 128 DCHECK(non_thread_safe_.CalledOnValidThread());
129 if (!pref_service_) { 129 if (!pref_service_) {
130 return syncable::ModelTypeSet(); 130 return syncable::ModelEnumSet();
131 } 131 }
132 132
133 if (pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced)) { 133 if (pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced)) {
134 return registered_types; 134 return registered_types;
135 } 135 }
136 136
137 // Remove autofill_profile since it's controlled by autofill, and 137 // Remove autofill_profile since it's controlled by autofill, and
138 // search_engines since it's controlled by preferences (see code below). 138 // search_engines since it's controlled by preferences (see code below).
139 syncable::ModelTypeSet user_selectable_types(registered_types); 139 syncable::ModelEnumSet user_selectable_types(registered_types);
140 DCHECK_EQ(user_selectable_types.count(syncable::NIGORI), 0u); 140 DCHECK(!user_selectable_types.Has(syncable::NIGORI));
141 user_selectable_types.erase(syncable::AUTOFILL_PROFILE); 141 user_selectable_types.Remove(syncable::AUTOFILL_PROFILE);
142 user_selectable_types.erase(syncable::SEARCH_ENGINES); 142 user_selectable_types.Remove(syncable::SEARCH_ENGINES);
143 143
144 // Remove app_notifications since it's controlled by apps (see 144 // Remove app_notifications since it's controlled by apps (see
145 // code below). 145 // code below).
146 // TODO(akalin): Centralize notion of all user selectable data types. 146 // TODO(akalin): Centralize notion of all user selectable data types.
147 user_selectable_types.erase(syncable::APP_NOTIFICATIONS); 147 user_selectable_types.Remove(syncable::APP_NOTIFICATIONS);
148 148
149 syncable::ModelTypeSet preferred_types; 149 syncable::ModelEnumSet preferred_types;
150 150
151 for (syncable::ModelTypeSet::const_iterator it = 151 for (syncable::ModelEnumSet::Iterator it = user_selectable_types.First();
152 user_selectable_types.begin(); 152 it.Good(); it.Inc()) {
153 it != user_selectable_types.end(); ++it) { 153 if (GetDataTypePreferred(it.Get())) {
154 if (GetDataTypePreferred(*it)) { 154 preferred_types.Put(it.Get());
155 preferred_types.insert(*it);
156 } 155 }
157 } 156 }
158 157
159 // Group the enabled/disabled state of autofill_profile with autofill, and 158 // Group the enabled/disabled state of autofill_profile with autofill, and
160 // search_engines with preferences (since only autofill and preferences are 159 // search_engines with preferences (since only autofill and preferences are
161 // shown on the UI). 160 // shown on the UI).
162 if (registered_types.count(syncable::AUTOFILL) && 161 if (registered_types.Has(syncable::AUTOFILL) &&
163 registered_types.count(syncable::AUTOFILL_PROFILE) && 162 registered_types.Has(syncable::AUTOFILL_PROFILE) &&
164 GetDataTypePreferred(syncable::AUTOFILL)) { 163 GetDataTypePreferred(syncable::AUTOFILL)) {
165 preferred_types.insert(syncable::AUTOFILL_PROFILE); 164 preferred_types.Put(syncable::AUTOFILL_PROFILE);
166 } 165 }
167 if (registered_types.count(syncable::PREFERENCES) && 166 if (registered_types.Has(syncable::PREFERENCES) &&
168 registered_types.count(syncable::SEARCH_ENGINES) && 167 registered_types.Has(syncable::SEARCH_ENGINES) &&
169 GetDataTypePreferred(syncable::PREFERENCES)) { 168 GetDataTypePreferred(syncable::PREFERENCES)) {
170 preferred_types.insert(syncable::SEARCH_ENGINES); 169 preferred_types.Put(syncable::SEARCH_ENGINES);
171 } 170 }
172 171
173 // Set app_notifications to the same enabled/disabled state as 172 // Set app_notifications to the same enabled/disabled state as
174 // apps (since only apps is shown on the UI). 173 // apps (since only apps is shown on the UI).
175 if (registered_types.count(syncable::APPS) && 174 if (registered_types.Has(syncable::APPS) &&
176 registered_types.count(syncable::APP_NOTIFICATIONS) && 175 registered_types.Has(syncable::APP_NOTIFICATIONS) &&
177 GetDataTypePreferred(syncable::APPS)) { 176 GetDataTypePreferred(syncable::APPS)) {
178 preferred_types.insert(syncable::APP_NOTIFICATIONS); 177 preferred_types.Put(syncable::APP_NOTIFICATIONS);
179 } 178 }
180 179
181 return preferred_types; 180 return preferred_types;
182 } 181 }
183 182
184 void SyncPrefs::SetPreferredDataTypes( 183 void SyncPrefs::SetPreferredDataTypes(
185 const syncable::ModelTypeSet& registered_types, 184 syncable::ModelEnumSet registered_types,
186 const syncable::ModelTypeSet& preferred_types) { 185 syncable::ModelEnumSet preferred_types) {
187 DCHECK(non_thread_safe_.CalledOnValidThread()); 186 DCHECK(non_thread_safe_.CalledOnValidThread());
188 CHECK(pref_service_); 187 CHECK(pref_service_);
189 DCHECK(std::includes(registered_types.begin(), registered_types.end(), 188 DCHECK(registered_types.HasAll(preferred_types));
190 preferred_types.begin(), preferred_types.end())); 189 syncable::ModelEnumSet preferred_types_with_dependents(preferred_types);
191 syncable::ModelTypeSet preferred_types_with_dependents(preferred_types);
192 // Set autofill_profile to the same enabled/disabled state as 190 // Set autofill_profile to the same enabled/disabled state as
193 // autofill (since only autofill is shown in the UI). 191 // autofill (since only autofill is shown in the UI).
194 if (registered_types.count(syncable::AUTOFILL) && 192 if (registered_types.Has(syncable::AUTOFILL) &&
195 registered_types.count(syncable::AUTOFILL_PROFILE)) { 193 registered_types.Has(syncable::AUTOFILL_PROFILE)) {
196 if (preferred_types_with_dependents.count(syncable::AUTOFILL)) { 194 if (preferred_types_with_dependents.Has(syncable::AUTOFILL)) {
197 preferred_types_with_dependents.insert(syncable::AUTOFILL_PROFILE); 195 preferred_types_with_dependents.Put(syncable::AUTOFILL_PROFILE);
198 } else { 196 } else {
199 preferred_types_with_dependents.erase(syncable::AUTOFILL_PROFILE); 197 preferred_types_with_dependents.Remove(syncable::AUTOFILL_PROFILE);
200 } 198 }
201 } 199 }
202 // Set app_notifications to the same enabled/disabled state as 200 // Set app_notifications to the same enabled/disabled state as
203 // apps (since only apps is shown in the UI). 201 // apps (since only apps is shown in the UI).
204 if (registered_types.count(syncable::APPS) && 202 if (registered_types.Has(syncable::APPS) &&
205 registered_types.count(syncable::APP_NOTIFICATIONS)) { 203 registered_types.Has(syncable::APP_NOTIFICATIONS)) {
206 if (preferred_types_with_dependents.count(syncable::APPS)) { 204 if (preferred_types_with_dependents.Has(syncable::APPS)) {
207 preferred_types_with_dependents.insert(syncable::APP_NOTIFICATIONS); 205 preferred_types_with_dependents.Put(syncable::APP_NOTIFICATIONS);
208 } else { 206 } else {
209 preferred_types_with_dependents.erase(syncable::APP_NOTIFICATIONS); 207 preferred_types_with_dependents.Remove(syncable::APP_NOTIFICATIONS);
210 } 208 }
211 } 209 }
212 // Set search_engines to the same enabled/disabled state as 210 // Set search_engines to the same enabled/disabled state as
213 // preferences (since only preferences is shown in the UI). 211 // preferences (since only preferences is shown in the UI).
214 if (registered_types.count(syncable::PREFERENCES) && 212 if (registered_types.Has(syncable::PREFERENCES) &&
215 registered_types.count(syncable::SEARCH_ENGINES)) { 213 registered_types.Has(syncable::SEARCH_ENGINES)) {
216 if (preferred_types_with_dependents.count(syncable::PREFERENCES)) { 214 if (preferred_types_with_dependents.Has(syncable::PREFERENCES)) {
217 preferred_types_with_dependents.insert(syncable::SEARCH_ENGINES); 215 preferred_types_with_dependents.Put(syncable::SEARCH_ENGINES);
218 } else { 216 } else {
219 preferred_types_with_dependents.erase(syncable::SEARCH_ENGINES); 217 preferred_types_with_dependents.Remove(syncable::SEARCH_ENGINES);
220 } 218 }
221 } 219 }
222 220
223 for (syncable::ModelTypeSet::const_iterator it = registered_types.begin(); 221 for (syncable::ModelEnumSet::Iterator it = registered_types.First();
224 it != registered_types.end(); ++it) { 222 it.Good(); it.Inc()) {
225 SetDataTypePreferred(*it, preferred_types_with_dependents.count(*it) > 0); 223 SetDataTypePreferred(
224 it.Get(), preferred_types_with_dependents.Has(it.Get()));
226 } 225 }
227 } 226 }
228 227
229 bool SyncPrefs::IsManaged() const { 228 bool SyncPrefs::IsManaged() const {
230 DCHECK(non_thread_safe_.CalledOnValidThread()); 229 DCHECK(non_thread_safe_.CalledOnValidThread());
231 return pref_service_ && pref_service_->GetBoolean(prefs::kSyncManaged); 230 return pref_service_ && pref_service_->GetBoolean(prefs::kSyncManaged);
232 } 231 }
233 232
234 std::string SyncPrefs::GetEncryptionBootstrapToken() const { 233 std::string SyncPrefs::GetEncryptionBootstrapToken() const {
235 DCHECK(non_thread_safe_.CalledOnValidThread()); 234 DCHECK(non_thread_safe_.CalledOnValidThread());
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 max_versions.begin(); 306 max_versions.begin();
308 it != max_versions.end(); ++it) { 307 it != max_versions.end(); ++it) {
309 max_versions_dict.SetString( 308 max_versions_dict.SetString(
310 base::IntToString(it->first), 309 base::IntToString(it->first),
311 base::Int64ToString(it->second)); 310 base::Int64ToString(it->second));
312 } 311 }
313 pref_service_->Set(prefs::kSyncMaxInvalidationVersions, max_versions_dict); 312 pref_service_->Set(prefs::kSyncMaxInvalidationVersions, max_versions_dict);
314 } 313 }
315 314
316 void SyncPrefs::AcknowledgeSyncedTypes( 315 void SyncPrefs::AcknowledgeSyncedTypes(
317 const syncable::ModelTypeSet& types) { 316 syncable::ModelEnumSet types) {
318 DCHECK(non_thread_safe_.CalledOnValidThread()); 317 DCHECK(non_thread_safe_.CalledOnValidThread());
319 CHECK(pref_service_); 318 CHECK(pref_service_);
320 syncable::ModelTypeSet acknowledged_types =
321 syncable::ModelTypeSetFromValue(
322 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes));
323
324 // Add the types to the current set of acknowledged 319 // Add the types to the current set of acknowledged
325 // types, and then store the resulting set in prefs. 320 // types, and then store the resulting set in prefs.
326 { 321 const syncable::ModelEnumSet acknowledged_types =
327 syncable::ModelTypeSet temp; 322 Union(types,
328 std::set_union(acknowledged_types.begin(), acknowledged_types.end(), 323 syncable::ModelEnumSetFromValue(
329 types.begin(), types.end(), 324 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes)));
330 std::inserter(temp, temp.end()));
331 std::swap(acknowledged_types, temp);
332 }
333 325
334 scoped_ptr<ListValue> value( 326 scoped_ptr<ListValue> value(
335 syncable::ModelTypeSetToValue(acknowledged_types)); 327 syncable::ModelEnumSetToValue(acknowledged_types));
336 pref_service_->Set(prefs::kSyncAcknowledgedSyncTypes, *value); 328 pref_service_->Set(prefs::kSyncAcknowledgedSyncTypes, *value);
337 pref_service_->ScheduleSavePersistentPrefs(); 329 pref_service_->ScheduleSavePersistentPrefs();
338 } 330 }
339 331
340 void SyncPrefs::Observe(int type, 332 void SyncPrefs::Observe(int type,
341 const content::NotificationSource& source, 333 const content::NotificationSource& source,
342 const content::NotificationDetails& details) { 334 const content::NotificationDetails& details) {
343 DCHECK(non_thread_safe_.CalledOnValidThread()); 335 DCHECK(non_thread_safe_.CalledOnValidThread());
344 DCHECK(content::Source<PrefService>(pref_service_) == source); 336 DCHECK(content::Source<PrefService>(pref_service_) == source);
345 switch (type) { 337 switch (type) {
(...skipping 12 matching lines...) Expand all
358 } 350 }
359 } 351 }
360 352
361 void SyncPrefs::SetManagedForTest(bool is_managed) { 353 void SyncPrefs::SetManagedForTest(bool is_managed) {
362 DCHECK(non_thread_safe_.CalledOnValidThread()); 354 DCHECK(non_thread_safe_.CalledOnValidThread());
363 CHECK(pref_service_); 355 CHECK(pref_service_);
364 pref_service_->SetBoolean(prefs::kSyncManaged, is_managed); 356 pref_service_->SetBoolean(prefs::kSyncManaged, is_managed);
365 pref_service_->ScheduleSavePersistentPrefs(); 357 pref_service_->ScheduleSavePersistentPrefs();
366 } 358 }
367 359
368 syncable::ModelTypeSet SyncPrefs::GetAcknowledgeSyncedTypesForTest() const { 360 syncable::ModelEnumSet SyncPrefs::GetAcknowledgeSyncedTypesForTest() const {
369 DCHECK(non_thread_safe_.CalledOnValidThread()); 361 DCHECK(non_thread_safe_.CalledOnValidThread());
370 if (!pref_service_) { 362 if (!pref_service_) {
371 return syncable::ModelTypeSet(); 363 return syncable::ModelEnumSet();
372 } 364 }
373 return syncable::ModelTypeSetFromValue( 365 return syncable::ModelEnumSetFromValue(
374 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes)); 366 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes));
375 } 367 }
376 368
377 namespace { 369 namespace {
378 370
379 const char* GetPrefNameForDataType(syncable::ModelType data_type) { 371 const char* GetPrefNameForDataType(syncable::ModelType data_type) {
380 switch (data_type) { 372 switch (data_type) {
381 case syncable::BOOKMARKS: 373 case syncable::BOOKMARKS:
382 return prefs::kSyncBookmarks; 374 return prefs::kSyncBookmarks;
383 case syncable::PASSWORDS: 375 case syncable::PASSWORDS:
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 const char* pref_name = GetPrefNameForDataType(type); 515 const char* pref_name = GetPrefNameForDataType(type);
524 if (!pref_name) { 516 if (!pref_name) {
525 NOTREACHED(); 517 NOTREACHED();
526 return; 518 return;
527 } 519 }
528 pref_service_->SetBoolean(pref_name, is_preferred); 520 pref_service_->SetBoolean(pref_name, is_preferred);
529 pref_service_->ScheduleSavePersistentPrefs(); 521 pref_service_->ScheduleSavePersistentPrefs();
530 } 522 }
531 523
532 } // namespace browser_sync 524 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/sync_prefs.h ('k') | chrome/browser/sync/sync_prefs_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698