| 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 "chrome/browser/sync/sync_prefs.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/prefs/public/pref_member.h" | 8 #include "base/prefs/public/pref_member.h" |
| 9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 case syncer::SEARCH_ENGINES: | 312 case syncer::SEARCH_ENGINES: |
| 313 return prefs::kSyncSearchEngines; | 313 return prefs::kSyncSearchEngines; |
| 314 case syncer::SESSIONS: | 314 case syncer::SESSIONS: |
| 315 return prefs::kSyncSessions; | 315 return prefs::kSyncSessions; |
| 316 case syncer::APP_NOTIFICATIONS: | 316 case syncer::APP_NOTIFICATIONS: |
| 317 return prefs::kSyncAppNotifications; | 317 return prefs::kSyncAppNotifications; |
| 318 case syncer::HISTORY_DELETE_DIRECTIVES: | 318 case syncer::HISTORY_DELETE_DIRECTIVES: |
| 319 return prefs::kSyncHistoryDeleteDirectives; | 319 return prefs::kSyncHistoryDeleteDirectives; |
| 320 case syncer::SYNCED_NOTIFICATIONS: | 320 case syncer::SYNCED_NOTIFICATIONS: |
| 321 return prefs::kSyncSyncedNotifications; | 321 return prefs::kSyncSyncedNotifications; |
| 322 case syncer::TABS: |
| 323 return prefs::kSyncTabs; |
| 322 default: | 324 default: |
| 323 break; | 325 break; |
| 324 } | 326 } |
| 325 NOTREACHED(); | 327 NOTREACHED(); |
| 326 return NULL; | 328 return NULL; |
| 327 } | 329 } |
| 328 | 330 |
| 329 #if defined(OS_CHROMEOS) | 331 #if defined(OS_CHROMEOS) |
| 330 std::string SyncPrefs::GetSpareBootstrapToken() const { | 332 std::string SyncPrefs::GetSpareBootstrapToken() const { |
| 331 DCHECK(CalledOnValidThread()); | 333 DCHECK(CalledOnValidThread()); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 void SyncPrefs::RegisterPrefGroups() { | 380 void SyncPrefs::RegisterPrefGroups() { |
| 379 pref_groups_[syncer::APPS].Put(syncer::APP_NOTIFICATIONS); | 381 pref_groups_[syncer::APPS].Put(syncer::APP_NOTIFICATIONS); |
| 380 pref_groups_[syncer::APPS].Put(syncer::APP_SETTINGS); | 382 pref_groups_[syncer::APPS].Put(syncer::APP_SETTINGS); |
| 381 | 383 |
| 382 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_PROFILE); | 384 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_PROFILE); |
| 383 | 385 |
| 384 pref_groups_[syncer::EXTENSIONS].Put(syncer::EXTENSION_SETTINGS); | 386 pref_groups_[syncer::EXTENSIONS].Put(syncer::EXTENSION_SETTINGS); |
| 385 | 387 |
| 386 pref_groups_[syncer::PREFERENCES].Put(syncer::SEARCH_ENGINES); | 388 pref_groups_[syncer::PREFERENCES].Put(syncer::SEARCH_ENGINES); |
| 387 | 389 |
| 388 // TODO(akalin): Revisit this once UI lands. | 390 pref_groups_[syncer::TYPED_URLS].Put(syncer::HISTORY_DELETE_DIRECTIVES); |
| 389 pref_groups_[syncer::SESSIONS].Put(syncer::HISTORY_DELETE_DIRECTIVES); | 391 pref_groups_[syncer::HISTORY_DELETE_DIRECTIVES].Put(syncer::SESSIONS); |
| 392 pref_groups_[syncer::TABS].Put(syncer::SESSIONS); |
| 390 } | 393 } |
| 391 | 394 |
| 392 // static | 395 // static |
| 393 void SyncPrefs::RegisterDataTypePreferredPref(PrefServiceSyncable* prefs, | 396 void SyncPrefs::RegisterDataTypePreferredPref(PrefServiceSyncable* prefs, |
| 394 syncer::ModelType type, | 397 syncer::ModelType type, |
| 395 bool is_preferred) { | 398 bool is_preferred) { |
| 396 const char* pref_name = GetPrefNameForDataType(type); | 399 const char* pref_name = GetPrefNameForDataType(type); |
| 397 if (!pref_name) { | 400 if (!pref_name) { |
| 398 NOTREACHED(); | 401 NOTREACHED(); |
| 399 return; | 402 return; |
| 400 } | 403 } |
| 401 prefs->RegisterBooleanPref(pref_name, is_preferred, | 404 prefs->RegisterBooleanPref(pref_name, is_preferred, |
| 402 PrefServiceSyncable::UNSYNCABLE_PREF); | 405 PrefServiceSyncable::UNSYNCABLE_PREF); |
| 403 } | 406 } |
| 404 | 407 |
| 405 bool SyncPrefs::GetDataTypePreferred(syncer::ModelType type) const { | 408 bool SyncPrefs::GetDataTypePreferred(syncer::ModelType type) const { |
| 406 DCHECK(CalledOnValidThread()); | 409 DCHECK(CalledOnValidThread()); |
| 407 if (!pref_service_) { | 410 if (!pref_service_) { |
| 408 return false; | 411 return false; |
| 409 } | 412 } |
| 410 const char* pref_name = GetPrefNameForDataType(type); | 413 const char* pref_name = GetPrefNameForDataType(type); |
| 411 if (!pref_name) { | 414 if (!pref_name) { |
| 412 NOTREACHED(); | 415 NOTREACHED(); |
| 413 return false; | 416 return false; |
| 414 } | 417 } |
| 418 if (type == syncer::TABS && |
| 419 pref_service_->GetUserPrefValue(pref_name) == NULL && |
| 420 pref_service_->IsUserModifiablePreference(pref_name)) { |
| 421 // If there is no tab sync preference yet (i.e. newly enabled type), |
| 422 // default to the session sync preference value. |
| 423 pref_name = GetPrefNameForDataType(syncer::SESSIONS); |
| 424 } |
| 415 | 425 |
| 416 return pref_service_->GetBoolean(pref_name); | 426 return pref_service_->GetBoolean(pref_name); |
| 417 } | 427 } |
| 418 | 428 |
| 419 void SyncPrefs::SetDataTypePreferred( | 429 void SyncPrefs::SetDataTypePreferred( |
| 420 syncer::ModelType type, bool is_preferred) { | 430 syncer::ModelType type, bool is_preferred) { |
| 421 DCHECK(CalledOnValidThread()); | 431 DCHECK(CalledOnValidThread()); |
| 422 CHECK(pref_service_); | 432 CHECK(pref_service_); |
| 423 const char* pref_name = GetPrefNameForDataType(type); | 433 const char* pref_name = GetPrefNameForDataType(type); |
| 424 if (!pref_name) { | 434 if (!pref_name) { |
| 425 NOTREACHED(); | 435 NOTREACHED(); |
| 426 return; | 436 return; |
| 427 } | 437 } |
| 428 pref_service_->SetBoolean(pref_name, is_preferred); | 438 pref_service_->SetBoolean(pref_name, is_preferred); |
| 429 } | 439 } |
| 430 | 440 |
| 431 syncer::ModelTypeSet SyncPrefs::ResolvePrefGroups( | 441 syncer::ModelTypeSet SyncPrefs::ResolvePrefGroups( |
| 432 syncer::ModelTypeSet registered_types, | 442 syncer::ModelTypeSet registered_types, |
| 433 syncer::ModelTypeSet types) const { | 443 syncer::ModelTypeSet types) const { |
| 434 DCHECK(registered_types.HasAll(types)); | 444 DCHECK(registered_types.HasAll(types)); |
| 435 syncer::ModelTypeSet types_with_groups = types; | 445 syncer::ModelTypeSet types_with_groups = types; |
| 436 for (PrefGroupsMap::const_iterator i = pref_groups_.begin(); | 446 for (PrefGroupsMap::const_iterator i = pref_groups_.begin(); |
| 437 i != pref_groups_.end(); ++i) { | 447 i != pref_groups_.end(); ++i) { |
| 438 if (types.Has(i->first)) | 448 if (types.Has(i->first)) |
| 439 types_with_groups.PutAll(i->second); | 449 types_with_groups.PutAll(i->second); |
| 440 else | |
| 441 types_with_groups.RemoveAll(i->second); | |
| 442 } | 450 } |
| 443 types_with_groups.RetainAll(registered_types); | 451 types_with_groups.RetainAll(registered_types); |
| 444 return types_with_groups; | 452 return types_with_groups; |
| 445 } | 453 } |
| 446 | 454 |
| 447 } // namespace browser_sync | 455 } // namespace browser_sync |
| OLD | NEW |