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 |