Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: chrome/browser/sync/profile_sync_service.cc

Issue 7481023: Adding notifications for new sync types. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Now stores acknowledged types in a ListValue, not a StringValue. Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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(&registered);
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(&registered);
1440 syncable::ModelTypeBitSet registered_bit_set =
1441 syncable::ModelTypeBitSetFromSet(registered);
1442 unacknowledged = registered_bit_set & ~acknowledged;
1443 }
1444 return unacknowledged;
1445 }
1446
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698