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/sync/sync_prefs.h" | 5 #include "components/sync_driver/sync_prefs.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/prefs/pref_member.h" | 9 #include "base/prefs/pref_member.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| 11 #include "base/strings/string_number_conversions.h" | 11 #include "base/strings/string_number_conversions.h" |
| 12 #include "base/values.h" | 12 #include "base/values.h" |
| 13 #include "build/build_config.h" | 13 #include "build/build_config.h" |
| 14 #include "chrome/browser/chrome_notification_types.h" | 14 #include "components/sync_driver/pref_names.h" |
| 15 #include "chrome/browser/profiles/profile_io_data.h" | |
| 16 #include "chrome/browser/sync/profile_sync_service.h" | |
| 17 #include "chrome/common/chrome_switches.h" | |
| 18 #include "chrome/common/pref_names.h" | |
| 19 #include "components/user_prefs/pref_registry_syncable.h" | 15 #include "components/user_prefs/pref_registry_syncable.h" |
| 20 #include "content/public/browser/notification_details.h" | |
| 21 #include "content/public/browser/notification_source.h" | |
| 22 | 16 |
| 23 namespace browser_sync { | 17 namespace sync_driver { |
| 24 | 18 |
| 25 SyncPrefObserver::~SyncPrefObserver() {} | 19 SyncPrefObserver::~SyncPrefObserver() {} |
| 26 | 20 |
| 27 SyncPrefs::SyncPrefs(PrefService* pref_service) | 21 SyncPrefs::SyncPrefs(PrefService* pref_service) : pref_service_(pref_service) { |
| 28 : pref_service_(pref_service) { | |
| 29 DCHECK(pref_service); | 22 DCHECK(pref_service); |
| 30 RegisterPrefGroups(); | 23 RegisterPrefGroups(); |
| 31 // Watch the preference that indicates sync is managed so we can take | 24 // Watch the preference that indicates sync is managed so we can take |
| 32 // appropriate action. | 25 // appropriate action. |
| 33 pref_sync_managed_.Init(prefs::kSyncManaged, pref_service_, | 26 pref_sync_managed_.Init( |
| 34 base::Bind(&SyncPrefs::OnSyncManagedPrefChanged, | 27 prefs::kSyncManaged, |
| 35 base::Unretained(this))); | 28 pref_service_, |
| 29 base::Bind(&SyncPrefs::OnSyncManagedPrefChanged, base::Unretained(this))); | |
| 36 } | 30 } |
| 37 | 31 |
| 38 SyncPrefs::~SyncPrefs() { | 32 SyncPrefs::~SyncPrefs() { DCHECK(CalledOnValidThread()); } |
| 39 DCHECK(CalledOnValidThread()); | |
| 40 } | |
| 41 | 33 |
| 42 // static | 34 // static |
| 43 void SyncPrefs::RegisterProfilePrefs( | 35 void SyncPrefs::RegisterProfilePrefs( |
| 44 user_prefs::PrefRegistrySyncable* registry) { | 36 user_prefs::PrefRegistrySyncable* registry) { |
| 45 registry->RegisterBooleanPref( | 37 registry->RegisterBooleanPref( |
| 46 prefs::kSyncHasSetupCompleted, | 38 prefs::kSyncHasSetupCompleted, |
| 47 false, | 39 false, |
| 48 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 40 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 49 registry->RegisterBooleanPref( | 41 registry->RegisterBooleanPref( |
| 50 prefs::kSyncSuppressStart, | 42 prefs::kSyncSuppressStart, |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 81 | 73 |
| 82 registry->RegisterStringPref( | 74 registry->RegisterStringPref( |
| 83 prefs::kEnhancedBookmarksExtensionId, | 75 prefs::kEnhancedBookmarksExtensionId, |
| 84 std::string(), | 76 std::string(), |
| 85 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 77 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 86 | 78 |
| 87 // All types are set to off by default, which forces a configuration to | 79 // All types are set to off by default, which forces a configuration to |
| 88 // explicitly enable them. GetPreferredTypes() will ensure that any new | 80 // explicitly enable them. GetPreferredTypes() will ensure that any new |
| 89 // implicit types are enabled when their pref group is, or via | 81 // implicit types are enabled when their pref group is, or via |
| 90 // KeepEverythingSynced. | 82 // KeepEverythingSynced. |
| 91 for (syncer::ModelTypeSet::Iterator it = user_types.First(); | 83 for (syncer::ModelTypeSet::Iterator it = user_types.First(); it.Good(); |
| 92 it.Good(); it.Inc()) { | 84 it.Inc()) { |
| 93 RegisterDataTypePreferredPref(registry, it.Get(), false); | 85 RegisterDataTypePreferredPref(registry, it.Get(), false); |
| 94 } | 86 } |
| 95 | 87 |
| 96 registry->RegisterBooleanPref( | 88 registry->RegisterBooleanPref( |
| 97 prefs::kSyncManaged, | 89 prefs::kSyncManaged, |
| 98 false, | 90 false, |
| 99 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 91 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 100 registry->RegisterStringPref( | 92 registry->RegisterStringPref( |
| 101 prefs::kSyncEncryptionBootstrapToken, | 93 prefs::kSyncEncryptionBootstrapToken, |
| 102 std::string(), | 94 std::string(), |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 190 bool SyncPrefs::IsStartSuppressed() const { | 182 bool SyncPrefs::IsStartSuppressed() const { |
| 191 DCHECK(CalledOnValidThread()); | 183 DCHECK(CalledOnValidThread()); |
| 192 return pref_service_->GetBoolean(prefs::kSyncSuppressStart); | 184 return pref_service_->GetBoolean(prefs::kSyncSuppressStart); |
| 193 } | 185 } |
| 194 | 186 |
| 195 void SyncPrefs::SetStartSuppressed(bool is_suppressed) { | 187 void SyncPrefs::SetStartSuppressed(bool is_suppressed) { |
| 196 DCHECK(CalledOnValidThread()); | 188 DCHECK(CalledOnValidThread()); |
| 197 pref_service_->SetBoolean(prefs::kSyncSuppressStart, is_suppressed); | 189 pref_service_->SetBoolean(prefs::kSyncSuppressStart, is_suppressed); |
| 198 } | 190 } |
| 199 | 191 |
| 200 std::string SyncPrefs::GetGoogleServicesUsername() const { | |
| 201 DCHECK(CalledOnValidThread()); | |
| 202 return pref_service_->GetString(prefs::kGoogleServicesUsername); | |
| 203 } | |
| 204 | |
| 205 base::Time SyncPrefs::GetLastSyncedTime() const { | 192 base::Time SyncPrefs::GetLastSyncedTime() const { |
| 206 DCHECK(CalledOnValidThread()); | 193 DCHECK(CalledOnValidThread()); |
| 207 return | 194 return base::Time::FromInternalValue( |
| 208 base::Time::FromInternalValue( | 195 pref_service_->GetInt64(prefs::kSyncLastSyncedTime)); |
| 209 pref_service_->GetInt64(prefs::kSyncLastSyncedTime)); | |
| 210 } | 196 } |
| 211 | 197 |
| 212 void SyncPrefs::SetLastSyncedTime(base::Time time) { | 198 void SyncPrefs::SetLastSyncedTime(base::Time time) { |
| 213 DCHECK(CalledOnValidThread()); | 199 DCHECK(CalledOnValidThread()); |
| 214 pref_service_->SetInt64(prefs::kSyncLastSyncedTime, time.ToInternalValue()); | 200 pref_service_->SetInt64(prefs::kSyncLastSyncedTime, time.ToInternalValue()); |
| 215 } | 201 } |
| 216 | 202 |
| 217 bool SyncPrefs::HasKeepEverythingSynced() const { | 203 bool SyncPrefs::HasKeepEverythingSynced() const { |
| 218 DCHECK(CalledOnValidThread()); | 204 DCHECK(CalledOnValidThread()); |
| 219 return pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced); | 205 return pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced); |
| 220 } | 206 } |
| 221 | 207 |
| 222 void SyncPrefs::SetKeepEverythingSynced(bool keep_everything_synced) { | 208 void SyncPrefs::SetKeepEverythingSynced(bool keep_everything_synced) { |
| 223 DCHECK(CalledOnValidThread()); | 209 DCHECK(CalledOnValidThread()); |
| 224 pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced, | 210 pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced, |
| 225 keep_everything_synced); | 211 keep_everything_synced); |
| 226 } | 212 } |
| 227 | 213 |
| 228 syncer::ModelTypeSet SyncPrefs::GetPreferredDataTypes( | 214 syncer::ModelTypeSet SyncPrefs::GetPreferredDataTypes( |
| 229 syncer::ModelTypeSet registered_types) const { | 215 syncer::ModelTypeSet registered_types) const { |
| 230 DCHECK(CalledOnValidThread()); | 216 DCHECK(CalledOnValidThread()); |
| 231 | 217 |
| 232 // First remove any datatypes that are inconsistent with the current policies | |
| 233 // on the client (so that "keep everything synced" doesn't include them). | |
| 234 if (pref_service_->HasPrefPath(prefs::kSavingBrowserHistoryDisabled) && | |
|
Nicolas Zea
2014/03/14 23:47:41
moved to datatype controller
| |
| 235 pref_service_->GetBoolean(prefs::kSavingBrowserHistoryDisabled)) { | |
| 236 registered_types.Remove(syncer::TYPED_URLS); | |
| 237 } | |
| 238 | |
| 239 if (pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced)) { | 218 if (pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced)) { |
| 240 return registered_types; | 219 return registered_types; |
| 241 } | 220 } |
| 242 | 221 |
| 243 syncer::ModelTypeSet preferred_types; | 222 syncer::ModelTypeSet preferred_types; |
| 244 for (syncer::ModelTypeSet::Iterator it = registered_types.First(); | 223 for (syncer::ModelTypeSet::Iterator it = registered_types.First(); it.Good(); |
| 245 it.Good(); it.Inc()) { | 224 it.Inc()) { |
| 246 if (GetDataTypePreferred(it.Get())) { | 225 if (GetDataTypePreferred(it.Get())) { |
| 247 preferred_types.Put(it.Get()); | 226 preferred_types.Put(it.Get()); |
| 248 } | 227 } |
| 249 } | 228 } |
| 250 return ResolvePrefGroups(registered_types, preferred_types); | 229 return ResolvePrefGroups(registered_types, preferred_types); |
| 251 } | 230 } |
| 252 | 231 |
| 253 void SyncPrefs::SetPreferredDataTypes( | 232 void SyncPrefs::SetPreferredDataTypes(syncer::ModelTypeSet registered_types, |
| 254 syncer::ModelTypeSet registered_types, | 233 syncer::ModelTypeSet preferred_types) { |
| 255 syncer::ModelTypeSet preferred_types) { | |
| 256 DCHECK(CalledOnValidThread()); | 234 DCHECK(CalledOnValidThread()); |
| 257 DCHECK(registered_types.HasAll(preferred_types)); | 235 DCHECK(registered_types.HasAll(preferred_types)); |
| 258 preferred_types = ResolvePrefGroups(registered_types, preferred_types); | 236 preferred_types = ResolvePrefGroups(registered_types, preferred_types); |
| 259 for (syncer::ModelTypeSet::Iterator i = registered_types.First(); | 237 for (syncer::ModelTypeSet::Iterator i = registered_types.First(); i.Good(); |
| 260 i.Good(); i.Inc()) { | 238 i.Inc()) { |
| 261 SetDataTypePreferred(i.Get(), preferred_types.Has(i.Get())); | 239 SetDataTypePreferred(i.Get(), preferred_types.Has(i.Get())); |
| 262 } | 240 } |
| 263 } | 241 } |
| 264 | 242 |
| 265 bool SyncPrefs::IsManaged() const { | 243 bool SyncPrefs::IsManaged() const { |
| 266 DCHECK(CalledOnValidThread()); | 244 DCHECK(CalledOnValidThread()); |
| 267 return pref_service_->GetBoolean(prefs::kSyncManaged); | 245 return pref_service_->GetBoolean(prefs::kSyncManaged); |
| 268 } | 246 } |
| 269 | 247 |
| 270 std::string SyncPrefs::GetEncryptionBootstrapToken() const { | 248 std::string SyncPrefs::GetEncryptionBootstrapToken() const { |
| 271 DCHECK(CalledOnValidThread()); | 249 DCHECK(CalledOnValidThread()); |
| 272 return pref_service_->GetString(prefs::kSyncEncryptionBootstrapToken); | 250 return pref_service_->GetString(prefs::kSyncEncryptionBootstrapToken); |
| 273 } | 251 } |
| 274 | 252 |
| 275 void SyncPrefs::SetEncryptionBootstrapToken(const std::string& token) { | 253 void SyncPrefs::SetEncryptionBootstrapToken(const std::string& token) { |
| 276 DCHECK(CalledOnValidThread()); | 254 DCHECK(CalledOnValidThread()); |
| 277 pref_service_->SetString(prefs::kSyncEncryptionBootstrapToken, token); | 255 pref_service_->SetString(prefs::kSyncEncryptionBootstrapToken, token); |
| 278 } | 256 } |
| 279 | 257 |
| 280 std::string SyncPrefs::GetKeystoreEncryptionBootstrapToken() const { | 258 std::string SyncPrefs::GetKeystoreEncryptionBootstrapToken() const { |
| 281 DCHECK(CalledOnValidThread()); | 259 DCHECK(CalledOnValidThread()); |
| 282 return pref_service_->GetString( | 260 return pref_service_->GetString(prefs::kSyncKeystoreEncryptionBootstrapToken); |
| 283 prefs::kSyncKeystoreEncryptionBootstrapToken); | |
| 284 } | 261 } |
| 285 | 262 |
| 286 void SyncPrefs::SetKeystoreEncryptionBootstrapToken(const std::string& token) { | 263 void SyncPrefs::SetKeystoreEncryptionBootstrapToken(const std::string& token) { |
| 287 DCHECK(CalledOnValidThread()); | 264 DCHECK(CalledOnValidThread()); |
| 288 pref_service_->SetString(prefs::kSyncKeystoreEncryptionBootstrapToken, token); | 265 pref_service_->SetString(prefs::kSyncKeystoreEncryptionBootstrapToken, token); |
| 289 } | 266 } |
| 290 | 267 |
| 291 std::string SyncPrefs::GetSyncSessionsGUID() const { | 268 std::string SyncPrefs::GetSyncSessionsGUID() const { |
| 292 DCHECK(CalledOnValidThread()); | 269 DCHECK(CalledOnValidThread()); |
| 293 return pref_service_->GetString(prefs::kSyncSessionsGUID); | 270 return pref_service_->GetString(prefs::kSyncSessionsGUID); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 383 syncer::ModelTypeSetFromValue( | 360 syncer::ModelTypeSetFromValue( |
| 384 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes))); | 361 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes))); |
| 385 | 362 |
| 386 scoped_ptr<base::ListValue> value( | 363 scoped_ptr<base::ListValue> value( |
| 387 syncer::ModelTypeSetToValue(acknowledged_types)); | 364 syncer::ModelTypeSetToValue(acknowledged_types)); |
| 388 pref_service_->Set(prefs::kSyncAcknowledgedSyncTypes, *value); | 365 pref_service_->Set(prefs::kSyncAcknowledgedSyncTypes, *value); |
| 389 } | 366 } |
| 390 | 367 |
| 391 void SyncPrefs::OnSyncManagedPrefChanged() { | 368 void SyncPrefs::OnSyncManagedPrefChanged() { |
| 392 DCHECK(CalledOnValidThread()); | 369 DCHECK(CalledOnValidThread()); |
| 393 FOR_EACH_OBSERVER(SyncPrefObserver, sync_pref_observers_, | 370 FOR_EACH_OBSERVER(SyncPrefObserver, |
| 371 sync_pref_observers_, | |
| 394 OnSyncManagedPrefChange(*pref_sync_managed_)); | 372 OnSyncManagedPrefChange(*pref_sync_managed_)); |
| 395 } | 373 } |
| 396 | 374 |
| 397 void SyncPrefs::SetManagedForTest(bool is_managed) { | 375 void SyncPrefs::SetManagedForTest(bool is_managed) { |
| 398 DCHECK(CalledOnValidThread()); | 376 DCHECK(CalledOnValidThread()); |
| 399 pref_service_->SetBoolean(prefs::kSyncManaged, is_managed); | 377 pref_service_->SetBoolean(prefs::kSyncManaged, is_managed); |
| 400 } | 378 } |
| 401 | 379 |
| 402 syncer::ModelTypeSet SyncPrefs::GetAcknowledgeSyncedTypesForTest() const { | 380 syncer::ModelTypeSet SyncPrefs::GetAcknowledgeSyncedTypesForTest() const { |
| 403 DCHECK(CalledOnValidThread()); | 381 DCHECK(CalledOnValidThread()); |
| 404 return syncer::ModelTypeSetFromValue( | 382 return syncer::ModelTypeSetFromValue( |
| 405 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes)); | 383 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes)); |
| 406 } | 384 } |
| 407 | 385 |
| 408 void SyncPrefs::RegisterPrefGroups() { | 386 void SyncPrefs::RegisterPrefGroups() { |
| 409 pref_groups_[syncer::APPS].Put(syncer::APP_NOTIFICATIONS); | 387 pref_groups_[syncer::APPS].Put(syncer::APP_NOTIFICATIONS); |
| 410 pref_groups_[syncer::APPS].Put(syncer::APP_SETTINGS); | 388 pref_groups_[syncer::APPS].Put(syncer::APP_SETTINGS); |
| 411 pref_groups_[syncer::APPS].Put(syncer::APP_LIST); | 389 pref_groups_[syncer::APPS].Put(syncer::APP_LIST); |
| 412 | 390 |
| 413 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_PROFILE); | 391 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_PROFILE); |
| 414 | 392 |
| 415 pref_groups_[syncer::EXTENSIONS].Put(syncer::EXTENSION_SETTINGS); | 393 pref_groups_[syncer::EXTENSIONS].Put(syncer::EXTENSION_SETTINGS); |
| 416 | 394 |
| 417 pref_groups_[syncer::PREFERENCES].Put(syncer::DICTIONARY); | 395 pref_groups_[syncer::PREFERENCES].Put(syncer::DICTIONARY); |
| 418 pref_groups_[syncer::PREFERENCES].Put(syncer::PRIORITY_PREFERENCES); | 396 pref_groups_[syncer::PREFERENCES].Put(syncer::PRIORITY_PREFERENCES); |
| 419 pref_groups_[syncer::PREFERENCES].Put(syncer::SEARCH_ENGINES); | 397 pref_groups_[syncer::PREFERENCES].Put(syncer::SEARCH_ENGINES); |
| 420 | 398 |
| 421 pref_groups_[syncer::TYPED_URLS].Put(syncer::HISTORY_DELETE_DIRECTIVES); | 399 pref_groups_[syncer::TYPED_URLS].Put(syncer::HISTORY_DELETE_DIRECTIVES); |
| 422 if (!CommandLine::ForCurrentProcess()->HasSwitch( | 400 pref_groups_[syncer::TYPED_URLS].Put(syncer::SESSIONS); |
|
Nicolas Zea
2014/03/14 23:47:41
obsolete
| |
| 423 switches::kHistoryDisableFullHistorySync)) { | 401 pref_groups_[syncer::TYPED_URLS].Put(syncer::FAVICON_IMAGES); |
| 424 pref_groups_[syncer::TYPED_URLS].Put(syncer::SESSIONS); | 402 pref_groups_[syncer::TYPED_URLS].Put(syncer::FAVICON_TRACKING); |
| 425 pref_groups_[syncer::TYPED_URLS].Put(syncer::FAVICON_IMAGES); | |
| 426 pref_groups_[syncer::TYPED_URLS].Put(syncer::FAVICON_TRACKING); | |
| 427 } | |
| 428 | 403 |
| 429 pref_groups_[syncer::PROXY_TABS].Put(syncer::SESSIONS); | 404 pref_groups_[syncer::PROXY_TABS].Put(syncer::SESSIONS); |
| 430 pref_groups_[syncer::PROXY_TABS].Put(syncer::FAVICON_IMAGES); | 405 pref_groups_[syncer::PROXY_TABS].Put(syncer::FAVICON_IMAGES); |
| 431 pref_groups_[syncer::PROXY_TABS].Put(syncer::FAVICON_TRACKING); | 406 pref_groups_[syncer::PROXY_TABS].Put(syncer::FAVICON_TRACKING); |
| 432 | 407 |
| 433 pref_groups_[syncer::MANAGED_USER_SETTINGS].Put(syncer::SESSIONS); | 408 pref_groups_[syncer::MANAGED_USER_SETTINGS].Put(syncer::SESSIONS); |
| 434 | 409 |
| 435 // TODO(zea): put favicons in the bookmarks group as well once it handles | 410 // TODO(zea): put favicons in the bookmarks group as well once it handles |
| 436 // those favicons. | 411 // those favicons. |
| 437 } | 412 } |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 463 pref_service_->GetUserPrefValue(pref_name) == NULL && | 438 pref_service_->GetUserPrefValue(pref_name) == NULL && |
| 464 pref_service_->IsUserModifiablePreference(pref_name)) { | 439 pref_service_->IsUserModifiablePreference(pref_name)) { |
| 465 // If there is no tab sync preference yet (i.e. newly enabled type), | 440 // If there is no tab sync preference yet (i.e. newly enabled type), |
| 466 // default to the session sync preference value. | 441 // default to the session sync preference value. |
| 467 pref_name = GetPrefNameForDataType(syncer::SESSIONS); | 442 pref_name = GetPrefNameForDataType(syncer::SESSIONS); |
| 468 } | 443 } |
| 469 | 444 |
| 470 return pref_service_->GetBoolean(pref_name); | 445 return pref_service_->GetBoolean(pref_name); |
| 471 } | 446 } |
| 472 | 447 |
| 473 void SyncPrefs::SetDataTypePreferred( | 448 void SyncPrefs::SetDataTypePreferred(syncer::ModelType type, |
| 474 syncer::ModelType type, bool is_preferred) { | 449 bool is_preferred) { |
| 475 DCHECK(CalledOnValidThread()); | 450 DCHECK(CalledOnValidThread()); |
| 476 const char* pref_name = GetPrefNameForDataType(type); | 451 const char* pref_name = GetPrefNameForDataType(type); |
| 477 if (!pref_name) { | 452 if (!pref_name) { |
| 478 NOTREACHED(); | 453 NOTREACHED(); |
| 479 return; | 454 return; |
| 480 } | 455 } |
| 481 pref_service_->SetBoolean(pref_name, is_preferred); | 456 pref_service_->SetBoolean(pref_name, is_preferred); |
| 482 } | 457 } |
| 483 | 458 |
| 484 syncer::ModelTypeSet SyncPrefs::ResolvePrefGroups( | 459 syncer::ModelTypeSet SyncPrefs::ResolvePrefGroups( |
| 485 syncer::ModelTypeSet registered_types, | 460 syncer::ModelTypeSet registered_types, |
| 486 syncer::ModelTypeSet types) const { | 461 syncer::ModelTypeSet types) const { |
| 487 DCHECK(registered_types.HasAll(types)); | 462 DCHECK(registered_types.HasAll(types)); |
| 488 syncer::ModelTypeSet types_with_groups = types; | 463 syncer::ModelTypeSet types_with_groups = types; |
| 489 for (PrefGroupsMap::const_iterator i = pref_groups_.begin(); | 464 for (PrefGroupsMap::const_iterator i = pref_groups_.begin(); |
| 490 i != pref_groups_.end(); ++i) { | 465 i != pref_groups_.end(); |
| 466 ++i) { | |
| 491 if (types.Has(i->first)) | 467 if (types.Has(i->first)) |
| 492 types_with_groups.PutAll(i->second); | 468 types_with_groups.PutAll(i->second); |
| 493 } | 469 } |
| 494 types_with_groups.RetainAll(registered_types); | 470 types_with_groups.RetainAll(registered_types); |
| 495 return types_with_groups; | 471 return types_with_groups; |
| 496 } | 472 } |
| 497 | 473 |
| 498 } // namespace browser_sync | 474 } // namespace browser_sync |
| OLD | NEW |