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 |