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 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
940 if (!backend_.get() && | 958 if (!backend_.get() && |
941 unrecoverable_error_detected_ == false) { | 959 unrecoverable_error_detected_ == false) { |
942 NOTREACHED(); | 960 NOTREACHED(); |
943 return; | 961 return; |
944 } | 962 } |
945 | 963 |
946 profile_->GetPrefs()->SetBoolean(prefs::kKeepEverythingSynced, | 964 profile_->GetPrefs()->SetBoolean(prefs::kKeepEverythingSynced, |
947 sync_everything); | 965 sync_everything); |
948 | 966 |
949 ChangePreferredDataTypes(chosen_types); | 967 ChangePreferredDataTypes(chosen_types); |
| 968 AcknowledgeSyncedTypes(); |
950 profile_->GetPrefs()->ScheduleSavePersistentPrefs(); | 969 profile_->GetPrefs()->ScheduleSavePersistentPrefs(); |
951 } | 970 } |
952 | 971 |
953 void ProfileSyncService::OnUserCancelledDialog() { | 972 void ProfileSyncService::OnUserCancelledDialog() { |
954 if (!HasSyncSetupCompleted()) { | 973 if (!HasSyncSetupCompleted()) { |
955 // A sync dialog was aborted before authentication. | 974 // A sync dialog was aborted before authentication. |
956 // Rollback. | 975 // Rollback. |
957 expect_sync_configuration_aborted_ = true; | 976 expect_sync_configuration_aborted_ = true; |
958 DisableForUser(); | 977 DisableForUser(); |
959 } | 978 } |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1403 // is initialized, all enabled data types are consistent with one | 1422 // is initialized, all enabled data types are consistent with one |
1404 // another, and no unrecoverable error has transpired. | 1423 // another, and no unrecoverable error has transpired. |
1405 if (unrecoverable_error_detected_) | 1424 if (unrecoverable_error_detected_) |
1406 return false; | 1425 return false; |
1407 | 1426 |
1408 if (!data_type_manager_.get()) | 1427 if (!data_type_manager_.get()) |
1409 return false; | 1428 return false; |
1410 | 1429 |
1411 return data_type_manager_->state() == DataTypeManager::CONFIGURED; | 1430 return data_type_manager_->state() == DataTypeManager::CONFIGURED; |
1412 } | 1431 } |
| 1432 |
| 1433 void ProfileSyncService::AcknowledgeSyncedTypes() { |
| 1434 syncable::ModelTypeBitSet acknowledged = syncable::ModelTypeBitSetFromValue( |
| 1435 *profile_->GetPrefs()->GetList(prefs::kAcknowledgedSyncTypes)); |
| 1436 syncable::ModelTypeSet registered; |
| 1437 GetRegisteredDataTypes(®istered); |
| 1438 syncable::ModelTypeBitSet registered_bit_set = |
| 1439 syncable::ModelTypeBitSetFromSet(registered); |
| 1440 |
| 1441 // Add the registered types to the current set of acknowledged types, and then |
| 1442 // store the resulting set in prefs. |
| 1443 acknowledged |= registered_bit_set; |
| 1444 scoped_ptr<ListValue> value(syncable::ModelTypeBitSetToValue(acknowledged)); |
| 1445 profile_->GetPrefs()->Set(prefs::kAcknowledgedSyncTypes, *value); |
| 1446 profile_->GetPrefs()->ScheduleSavePersistentPrefs(); |
| 1447 } |
| 1448 |
| 1449 syncable::ModelTypeBitSet ProfileSyncService::GetUnacknowledgedTypes() const { |
| 1450 syncable::ModelTypeBitSet unacknowledged; |
| 1451 if (HasSyncSetupCompleted() && |
| 1452 profile_->GetPrefs()->GetBoolean(prefs::kKeepEverythingSynced)) { |
| 1453 // User is "syncing everything" - see if we've added any new data types. |
| 1454 syncable::ModelTypeBitSet acknowledged = |
| 1455 syncable::ModelTypeBitSetFromValue( |
| 1456 *profile_->GetPrefs()->GetList(prefs::kAcknowledgedSyncTypes)); |
| 1457 syncable::ModelTypeSet registered; |
| 1458 GetRegisteredDataTypes(®istered); |
| 1459 syncable::ModelTypeBitSet registered_bit_set = |
| 1460 syncable::ModelTypeBitSetFromSet(registered); |
| 1461 unacknowledged = registered_bit_set & ~acknowledged; |
| 1462 } |
| 1463 return unacknowledged; |
| 1464 } |
| 1465 |
OLD | NEW |