| OLD | NEW |
| 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/profile_sync_service.h" | 5 #include "chrome/browser/sync/profile_sync_service.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <ostream> | 9 #include <ostream> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 pref_service->RegisterBooleanPref(prefs::kSyncManaged, | 313 pref_service->RegisterBooleanPref(prefs::kSyncManaged, |
| 314 false, | 314 false, |
| 315 PrefService::UNSYNCABLE_PREF); | 315 PrefService::UNSYNCABLE_PREF); |
| 316 pref_service->RegisterStringPref(prefs::kEncryptionBootstrapToken, | 316 pref_service->RegisterStringPref(prefs::kEncryptionBootstrapToken, |
| 317 "", | 317 "", |
| 318 PrefService::UNSYNCABLE_PREF); | 318 PrefService::UNSYNCABLE_PREF); |
| 319 | 319 |
| 320 pref_service->RegisterBooleanPref(prefs::kSyncAutofillProfile, | 320 pref_service->RegisterBooleanPref(prefs::kSyncAutofillProfile, |
| 321 enable_by_default, | 321 enable_by_default, |
| 322 PrefService::UNSYNCABLE_PREF); | 322 PrefService::UNSYNCABLE_PREF); |
| 323 |
| 324 // We started prompting people about new data types starting with the |
| 325 // rollout of TYPED_URLs - all previously launched data types are treated |
| 326 // as if they are already acknowledged. |
| 327 syncable::ModelTypeBitSet model_set; |
| 328 model_set.set(syncable::BOOKMARKS); |
| 329 model_set.set(syncable::PREFERENCES); |
| 330 model_set.set(syncable::PASSWORDS); |
| 331 model_set.set(syncable::AUTOFILL_PROFILE); |
| 332 model_set.set(syncable::AUTOFILL); |
| 333 model_set.set(syncable::THEMES); |
| 334 model_set.set(syncable::EXTENSIONS); |
| 335 model_set.set(syncable::NIGORI); |
| 336 model_set.set(syncable::SEARCH_ENGINES); |
| 337 model_set.set(syncable::APPS); |
| 338 pref_service->RegisterListPref(prefs::kAcknowledgedSyncTypes, |
| 339 syncable::ModelTypeBitSetToValue(model_set), |
| 340 PrefService::UNSYNCABLE_PREF); |
| 323 } | 341 } |
| 324 | 342 |
| 325 void ProfileSyncService::ClearPreferences() { | 343 void ProfileSyncService::ClearPreferences() { |
| 326 PrefService* pref_service = profile_->GetPrefs(); | 344 PrefService* pref_service = profile_->GetPrefs(); |
| 327 pref_service->ClearPref(prefs::kSyncLastSyncedTime); | 345 pref_service->ClearPref(prefs::kSyncLastSyncedTime); |
| 328 pref_service->ClearPref(prefs::kSyncHasSetupCompleted); | 346 pref_service->ClearPref(prefs::kSyncHasSetupCompleted); |
| 329 pref_service->ClearPref(prefs::kEncryptionBootstrapToken); | 347 pref_service->ClearPref(prefs::kEncryptionBootstrapToken); |
| 330 | 348 |
| 331 // TODO(nick): The current behavior does not clear e.g. prefs::kSyncBookmarks. | 349 // TODO(nick): The current behavior does not clear e.g. prefs::kSyncBookmarks. |
| 332 // Is that really what we want? | 350 // Is that really what we want? |
| (...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 920 if (!backend_.get() && | 938 if (!backend_.get() && |
| 921 unrecoverable_error_detected_ == false) { | 939 unrecoverable_error_detected_ == false) { |
| 922 NOTREACHED(); | 940 NOTREACHED(); |
| 923 return; | 941 return; |
| 924 } | 942 } |
| 925 | 943 |
| 926 profile_->GetPrefs()->SetBoolean(prefs::kKeepEverythingSynced, | 944 profile_->GetPrefs()->SetBoolean(prefs::kKeepEverythingSynced, |
| 927 sync_everything); | 945 sync_everything); |
| 928 | 946 |
| 929 ChangePreferredDataTypes(chosen_types); | 947 ChangePreferredDataTypes(chosen_types); |
| 948 AcknowledgeSyncedTypes(); |
| 930 profile_->GetPrefs()->ScheduleSavePersistentPrefs(); | 949 profile_->GetPrefs()->ScheduleSavePersistentPrefs(); |
| 931 } | 950 } |
| 932 | 951 |
| 933 void ProfileSyncService::OnUserCancelledDialog() { | 952 void ProfileSyncService::OnUserCancelledDialog() { |
| 934 if (!HasSyncSetupCompleted()) { | 953 if (!HasSyncSetupCompleted()) { |
| 935 // A sync dialog was aborted before authentication. | 954 // A sync dialog was aborted before authentication. |
| 936 // Rollback. | 955 // Rollback. |
| 937 expect_sync_configuration_aborted_ = true; | 956 expect_sync_configuration_aborted_ = true; |
| 938 DisableForUser(); | 957 DisableForUser(); |
| 939 } | 958 } |
| (...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1384 // is initialized, all enabled data types are consistent with one | 1403 // is initialized, all enabled data types are consistent with one |
| 1385 // another, and no unrecoverable error has transpired. | 1404 // another, and no unrecoverable error has transpired. |
| 1386 if (unrecoverable_error_detected_) | 1405 if (unrecoverable_error_detected_) |
| 1387 return false; | 1406 return false; |
| 1388 | 1407 |
| 1389 if (!data_type_manager_.get()) | 1408 if (!data_type_manager_.get()) |
| 1390 return false; | 1409 return false; |
| 1391 | 1410 |
| 1392 return data_type_manager_->state() == DataTypeManager::CONFIGURED; | 1411 return data_type_manager_->state() == DataTypeManager::CONFIGURED; |
| 1393 } | 1412 } |
| 1413 |
| 1414 void ProfileSyncService::AcknowledgeSyncedTypes() { |
| 1415 syncable::ModelTypeBitSet acknowledged = syncable::ModelTypeBitSetFromValue( |
| 1416 *profile_->GetPrefs()->GetList(prefs::kAcknowledgedSyncTypes)); |
| 1417 syncable::ModelTypeSet registered; |
| 1418 GetRegisteredDataTypes(®istered); |
| 1419 syncable::ModelTypeBitSet registered_bit_set = |
| 1420 syncable::ModelTypeBitSetFromSet(registered); |
| 1421 |
| 1422 // Add the registered types to the current set of acknowledged types, and then |
| 1423 // store the resulting set in prefs. |
| 1424 acknowledged |= registered_bit_set; |
| 1425 scoped_ptr<ListValue> value(syncable::ModelTypeBitSetToValue(acknowledged)); |
| 1426 profile_->GetPrefs()->Set(prefs::kAcknowledgedSyncTypes, *value); |
| 1427 profile_->GetPrefs()->ScheduleSavePersistentPrefs(); |
| 1428 } |
| 1429 |
| 1430 syncable::ModelTypeBitSet ProfileSyncService::GetUnacknowledgedTypes() const { |
| 1431 syncable::ModelTypeBitSet unacknowledged; |
| 1432 if (HasSyncSetupCompleted() && |
| 1433 profile_->GetPrefs()->GetBoolean(prefs::kKeepEverythingSynced)) { |
| 1434 // User is "syncing everything" - see if we've added any new data types. |
| 1435 syncable::ModelTypeBitSet acknowledged = |
| 1436 syncable::ModelTypeBitSetFromValue( |
| 1437 *profile_->GetPrefs()->GetList(prefs::kAcknowledgedSyncTypes)); |
| 1438 syncable::ModelTypeSet registered; |
| 1439 GetRegisteredDataTypes(®istered); |
| 1440 syncable::ModelTypeBitSet registered_bit_set = |
| 1441 syncable::ModelTypeBitSetFromSet(registered); |
| 1442 unacknowledged = registered_bit_set & ~acknowledged; |
| 1443 } |
| 1444 return unacknowledged; |
| 1445 } |
| 1446 |
| OLD | NEW |