Chromium Code Reviews| 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 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 307 pref_service->RegisterBooleanPref(prefs::kSyncManaged, | 307 pref_service->RegisterBooleanPref(prefs::kSyncManaged, |
| 308 false, | 308 false, |
| 309 PrefService::UNSYNCABLE_PREF); | 309 PrefService::UNSYNCABLE_PREF); |
| 310 pref_service->RegisterStringPref(prefs::kEncryptionBootstrapToken, | 310 pref_service->RegisterStringPref(prefs::kEncryptionBootstrapToken, |
| 311 "", | 311 "", |
| 312 PrefService::UNSYNCABLE_PREF); | 312 PrefService::UNSYNCABLE_PREF); |
| 313 | 313 |
| 314 pref_service->RegisterBooleanPref(prefs::kSyncAutofillProfile, | 314 pref_service->RegisterBooleanPref(prefs::kSyncAutofillProfile, |
| 315 enable_by_default, | 315 enable_by_default, |
| 316 PrefService::UNSYNCABLE_PREF); | 316 PrefService::UNSYNCABLE_PREF); |
| 317 | |
| 318 // We started prompting people about new data types starting with the | |
| 319 // rollout of TYPED_URLs - all previously launched data types are treated | |
| 320 // as if they are already acknowledged. | |
| 321 syncable::ModelTypeBitSet model_set; | |
| 322 model_set.set(syncable::BOOKMARKS); | |
| 323 model_set.set(syncable::PREFERENCES); | |
| 324 model_set.set(syncable::PASSWORDS); | |
| 325 model_set.set(syncable::AUTOFILL_PROFILE); | |
| 326 model_set.set(syncable::AUTOFILL); | |
| 327 model_set.set(syncable::THEMES); | |
| 328 model_set.set(syncable::EXTENSIONS); | |
| 329 model_set.set(syncable::NIGORI); | |
| 330 model_set.set(syncable::SEARCH_ENGINES); | |
| 331 model_set.set(syncable::APPS); | |
| 332 pref_service->RegisterStringPref(prefs::kAcknowledgedSyncTypes, | |
|
akalin
2011/08/02 20:16:53
Wouldn't it better to have this as a List pref?
Andrew T Wilson (Slow)
2011/08/02 22:07:42
Not really - I really just want to serialize a Mod
akalin
2011/08/04 01:26:06
Yes, but it's conceivable that in the future that
Andrew T Wilson (Slow)
2011/08/07 02:45:38
So, in the interest of getting this landed, I made
| |
| 333 syncable::ModelTypeBitSetToString(model_set), | |
| 334 PrefService::UNSYNCABLE_PREF); | |
| 317 } | 335 } |
| 318 | 336 |
| 319 void ProfileSyncService::ClearPreferences() { | 337 void ProfileSyncService::ClearPreferences() { |
| 320 PrefService* pref_service = profile_->GetPrefs(); | 338 PrefService* pref_service = profile_->GetPrefs(); |
| 321 pref_service->ClearPref(prefs::kSyncLastSyncedTime); | 339 pref_service->ClearPref(prefs::kSyncLastSyncedTime); |
| 322 pref_service->ClearPref(prefs::kSyncHasSetupCompleted); | 340 pref_service->ClearPref(prefs::kSyncHasSetupCompleted); |
| 323 pref_service->ClearPref(prefs::kEncryptionBootstrapToken); | 341 pref_service->ClearPref(prefs::kEncryptionBootstrapToken); |
| 324 | 342 |
| 325 // TODO(nick): The current behavior does not clear e.g. prefs::kSyncBookmarks. | 343 // TODO(nick): The current behavior does not clear e.g. prefs::kSyncBookmarks. |
| 326 // Is that really what we want? | 344 // Is that really what we want? |
| (...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 904 if (!backend_.get() && | 922 if (!backend_.get() && |
| 905 unrecoverable_error_detected_ == false) { | 923 unrecoverable_error_detected_ == false) { |
| 906 NOTREACHED(); | 924 NOTREACHED(); |
| 907 return; | 925 return; |
| 908 } | 926 } |
| 909 | 927 |
| 910 profile_->GetPrefs()->SetBoolean(prefs::kKeepEverythingSynced, | 928 profile_->GetPrefs()->SetBoolean(prefs::kKeepEverythingSynced, |
| 911 sync_everything); | 929 sync_everything); |
| 912 | 930 |
| 913 ChangePreferredDataTypes(chosen_types); | 931 ChangePreferredDataTypes(chosen_types); |
| 932 AcknowledgeSyncedTypes(); | |
| 914 profile_->GetPrefs()->ScheduleSavePersistentPrefs(); | 933 profile_->GetPrefs()->ScheduleSavePersistentPrefs(); |
| 915 } | 934 } |
| 916 | 935 |
| 917 void ProfileSyncService::OnUserCancelledDialog() { | 936 void ProfileSyncService::OnUserCancelledDialog() { |
| 918 if (!HasSyncSetupCompleted()) { | 937 if (!HasSyncSetupCompleted()) { |
| 919 // A sync dialog was aborted before authentication. | 938 // A sync dialog was aborted before authentication. |
| 920 // Rollback. | 939 // Rollback. |
| 921 expect_sync_configuration_aborted_ = true; | 940 expect_sync_configuration_aborted_ = true; |
| 922 DisableForUser(); | 941 DisableForUser(); |
| 923 } | 942 } |
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1356 // is initialized, all enabled data types are consistent with one | 1375 // is initialized, all enabled data types are consistent with one |
| 1357 // another, and no unrecoverable error has transpired. | 1376 // another, and no unrecoverable error has transpired. |
| 1358 if (unrecoverable_error_detected_) | 1377 if (unrecoverable_error_detected_) |
| 1359 return false; | 1378 return false; |
| 1360 | 1379 |
| 1361 if (!data_type_manager_.get()) | 1380 if (!data_type_manager_.get()) |
| 1362 return false; | 1381 return false; |
| 1363 | 1382 |
| 1364 return data_type_manager_->state() == DataTypeManager::CONFIGURED; | 1383 return data_type_manager_->state() == DataTypeManager::CONFIGURED; |
| 1365 } | 1384 } |
| 1385 | |
| 1386 void ProfileSyncService::AcknowledgeSyncedTypes() { | |
| 1387 syncable::ModelTypeBitSet acknowledged; | |
| 1388 CHECK(syncable::ModelTypeBitSetFromString( | |
| 1389 profile_->GetPrefs()->GetString(prefs::kAcknowledgedSyncTypes), | |
| 1390 &acknowledged)); | |
| 1391 syncable::ModelTypeSet registered; | |
| 1392 GetRegisteredDataTypes(®istered); | |
| 1393 syncable::ModelTypeBitSet registered_bit_set = | |
| 1394 syncable::ModelTypeBitSetFromSet(registered); | |
| 1395 | |
| 1396 // Add the registered types to the current set of acknowledged types, and then | |
| 1397 // store the resulting set in prefs. | |
| 1398 acknowledged |= registered_bit_set; | |
| 1399 profile_->GetPrefs()->SetString( | |
|
akalin
2011/08/04 01:26:06
and here you'd just do:
scoped_ptr<ListValue> ack
Andrew T Wilson (Slow)
2011/08/07 02:45:38
Done.
| |
| 1400 prefs::kAcknowledgedSyncTypes, | |
| 1401 syncable::ModelTypeBitSetToString(acknowledged)); | |
| 1402 profile_->GetPrefs()->ScheduleSavePersistentPrefs(); | |
| 1403 } | |
| 1404 | |
| 1405 string16 ProfileSyncService::GetSyncNotification() { | |
| 1406 string16 promo; | |
| 1407 if (HasSyncSetupCompleted() && | |
| 1408 profile_->GetPrefs()->GetBoolean(prefs::kKeepEverythingSynced)) { | |
| 1409 // User is "syncing everything" - see if we've added any new data types. | |
| 1410 syncable::ModelTypeBitSet acknowledged; | |
| 1411 CHECK(syncable::ModelTypeBitSetFromString( | |
|
akalin
2011/08/04 01:26:06
I guess here you'd have to write ModelTypeBitSetFr
Andrew T Wilson (Slow)
2011/08/07 02:45:38
Done.
| |
| 1412 profile_->GetPrefs()->GetString(prefs::kAcknowledgedSyncTypes), | |
| 1413 &acknowledged)); | |
| 1414 syncable::ModelTypeSet registered; | |
| 1415 GetRegisteredDataTypes(®istered); | |
| 1416 syncable::ModelTypeBitSet registered_bit_set = | |
| 1417 syncable::ModelTypeBitSetFromSet(registered); | |
| 1418 | |
| 1419 syncable::ModelTypeBitSet unacknowledged = | |
| 1420 registered_bit_set & ~acknowledged; | |
| 1421 // TODO(sync): As we add new data types, we'll probably need some more | |
| 1422 // generic string to display to the user, since the method below won't | |
| 1423 // scale indefinitely (we'd need N*(N+1)/2 different strings to represent | |
| 1424 // all the combinations of unacknowledged types). But for now, we just | |
| 1425 // have sessions and typed urls so this is OK. | |
| 1426 if (unacknowledged.test(syncable::SESSIONS) && | |
| 1427 unacknowledged.test(syncable::TYPED_URLS)) { | |
| 1428 return l10n_util::GetStringUTF16(IDS_SYNC_ADDED_SESSIONS_AND_TYPED_URLS); | |
| 1429 } else if (unacknowledged.test(syncable::SESSIONS)) { | |
| 1430 return l10n_util::GetStringUTF16(IDS_SYNC_ADDED_SESSIONS); | |
| 1431 } else if (unacknowledged.test(syncable::TYPED_URLS)) { | |
| 1432 return l10n_util::GetStringUTF16(IDS_SYNC_ADDED_TYPED_URLS); | |
| 1433 } else { | |
| 1434 // Shouldn't be possible for any other types to be unacknowledged. | |
| 1435 DCHECK(!unacknowledged.any()); | |
| 1436 } | |
| 1437 } | |
| 1438 return promo; | |
| 1439 } | |
| 1440 | |
| OLD | NEW |