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

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

Issue 312163004: [Sync] Add support for dynamically enabling/disabling types (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 6 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <cstddef> 7 #include <cstddef>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after
950 // Shut all data types down. 950 // Shut all data types down.
951 base::MessageLoop::current()->PostTask(FROM_HERE, 951 base::MessageLoop::current()->PostTask(FROM_HERE,
952 base::Bind(&ProfileSyncService::ShutdownImpl, 952 base::Bind(&ProfileSyncService::ShutdownImpl,
953 weak_factory_.GetWeakPtr(), 953 weak_factory_.GetWeakPtr(),
954 delete_sync_database ? 954 delete_sync_database ?
955 browser_sync::SyncBackendHost::DISABLE_AND_CLAIM_THREAD : 955 browser_sync::SyncBackendHost::DISABLE_AND_CLAIM_THREAD :
956 browser_sync::SyncBackendHost::STOP_AND_CLAIM_THREAD)); 956 browser_sync::SyncBackendHost::STOP_AND_CLAIM_THREAD));
957 } 957 }
958 958
959 // TODO(zea): Move this logic into the DataTypeController/DataTypeManager. 959 // TODO(zea): Move this logic into the DataTypeController/DataTypeManager.
960 void ProfileSyncService::DisableBrokenDatatype( 960 void ProfileSyncService::DisableDatatype(
961 syncer::ModelType type, 961 syncer::ModelType type,
962 const tracked_objects::Location& from_here, 962 const tracked_objects::Location& from_here,
963 std::string message) { 963 std::string message) {
964 // First deactivate the type so that no further server changes are 964 // First deactivate the type so that no further server changes are
965 // passed onto the change processor. 965 // passed onto the change processor.
966 DeactivateDataType(type); 966 DeactivateDataType(type);
967 967
968 syncer::SyncError error(from_here, 968 syncer::SyncError error(from_here,
969 syncer::SyncError::DATATYPE_ERROR, 969 syncer::SyncError::DATATYPE_ERROR,
970 message, 970 message,
971 type); 971 type);
972 972
973 std::map<syncer::ModelType, syncer::SyncError> errors; 973 std::map<syncer::ModelType, syncer::SyncError> errors;
974 errors[type] = error; 974 errors[type] = error;
975 975
976 // Update this before posting a task. So if a configure happens before 976 // Update this before posting a task. So if a configure happens before
977 // the task that we are going to post, this type would still be disabled. 977 // the task that we are going to post, this type would still be disabled.
978 failed_data_types_handler_.UpdateFailedDataTypes(errors); 978 failed_data_types_handler_.UpdateFailedDataTypes(errors);
979 979
980 base::MessageLoop::current()->PostTask(FROM_HERE, 980 base::MessageLoop::current()->PostTask(FROM_HERE,
981 base::Bind(&ProfileSyncService::ReconfigureDatatypeManager, 981 base::Bind(&ProfileSyncService::ReconfigureDatatypeManager,
982 weak_factory_.GetWeakPtr())); 982 weak_factory_.GetWeakPtr()));
983 } 983 }
984 984
985 void ProfileSyncService::ReenableDatatype(syncer::ModelType type) {
986 // Only reconfigure if the type actually had a data type or unready error.
987 if (!failed_data_types_handler_.ResetDataTypeErrorFor(type) &&
988 !failed_data_types_handler_.ResetUnreadyErrorFor(type)) {
989 return;
990 }
991
992 // If the type is no longer enabled, don't bother reconfiguring.
993 // TODO(zea): something else should encapsulate the notion of "whether a type
994 // should be enabled".
995 if (!syncer::CoreTypes().Has(type) && !GetPreferredDataTypes().Has(type))
996 return;
997
998 base::MessageLoop::current()->PostTask(FROM_HERE,
999 base::Bind(&ProfileSyncService::ReconfigureDatatypeManager,
1000 weak_factory_.GetWeakPtr()));
1001 }
1002
985 void ProfileSyncService::UpdateBackendInitUMA(bool success) { 1003 void ProfileSyncService::UpdateBackendInitUMA(bool success) {
986 if (backend_mode_ != SYNC) 1004 if (backend_mode_ != SYNC)
987 return; 1005 return;
988 1006
989 is_first_time_sync_configure_ = !HasSyncSetupCompleted(); 1007 is_first_time_sync_configure_ = !HasSyncSetupCompleted();
990 1008
991 if (is_first_time_sync_configure_) { 1009 if (is_first_time_sync_configure_) {
992 UMA_HISTOGRAM_BOOLEAN("Sync.BackendInitializeFirstTimeSuccess", success); 1010 UMA_HISTOGRAM_BOOLEAN("Sync.BackendInitializeFirstTimeSuccess", success);
993 } else { 1011 } else {
994 UMA_HISTOGRAM_BOOLEAN("Sync.BackendInitializeRestoreSuccess", success); 1012 UMA_HISTOGRAM_BOOLEAN("Sync.BackendInitializeRestoreSuccess", success);
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
1350 DVLOG(1) << "Encrypted types changed to " 1368 DVLOG(1) << "Encrypted types changed to "
1351 << syncer::ModelTypeSetToString(encrypted_types_) 1369 << syncer::ModelTypeSetToString(encrypted_types_)
1352 << " (encrypt everything is set to " 1370 << " (encrypt everything is set to "
1353 << (encrypt_everything_ ? "true" : "false") << ")"; 1371 << (encrypt_everything_ ? "true" : "false") << ")";
1354 DCHECK(encrypted_types_.Has(syncer::PASSWORDS)); 1372 DCHECK(encrypted_types_.Has(syncer::PASSWORDS));
1355 1373
1356 // If sessions are encrypted, full history sync is not possible, and 1374 // If sessions are encrypted, full history sync is not possible, and
1357 // delete directives are unnecessary. 1375 // delete directives are unnecessary.
1358 if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) && 1376 if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) &&
1359 encrypted_types_.Has(syncer::SESSIONS)) { 1377 encrypted_types_.Has(syncer::SESSIONS)) {
1360 DisableBrokenDatatype(syncer::HISTORY_DELETE_DIRECTIVES, 1378 DisableDatatype(syncer::HISTORY_DELETE_DIRECTIVES,
1361 FROM_HERE, 1379 FROM_HERE,
1362 "Delete directives not supported with encryption."); 1380 "Delete directives not supported with encryption.");
1363 } 1381 }
1364 } 1382 }
1365 1383
1366 void ProfileSyncService::OnEncryptionComplete() { 1384 void ProfileSyncService::OnEncryptionComplete() {
1367 DVLOG(1) << "Encryption complete"; 1385 DVLOG(1) << "Encryption complete";
1368 if (encryption_pending_ && encrypt_everything_) { 1386 if (encryption_pending_ && encrypt_everything_) {
1369 encryption_pending_ = false; 1387 encryption_pending_ = false;
1370 // This is to nudge the integration tests when encryption is 1388 // This is to nudge the integration tests when encryption is
1371 // finished. 1389 // finished.
1372 NotifyObservers(); 1390 NotifyObservers();
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
1756 NOTREACHED(); 1774 NOTREACHED();
1757 return; 1775 return;
1758 } 1776 }
1759 1777
1760 UpdateSelectedTypesHistogram(sync_everything, chosen_types); 1778 UpdateSelectedTypesHistogram(sync_everything, chosen_types);
1761 sync_prefs_.SetKeepEverythingSynced(sync_everything); 1779 sync_prefs_.SetKeepEverythingSynced(sync_everything);
1762 1780
1763 failed_data_types_handler_.Reset(); 1781 failed_data_types_handler_.Reset();
1764 if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) && 1782 if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) &&
1765 encrypted_types_.Has(syncer::SESSIONS)) { 1783 encrypted_types_.Has(syncer::SESSIONS)) {
1766 DisableBrokenDatatype(syncer::HISTORY_DELETE_DIRECTIVES, 1784 DisableDatatype(syncer::HISTORY_DELETE_DIRECTIVES,
1767 FROM_HERE, 1785 FROM_HERE,
1768 "Delete directives not supported with encryption."); 1786 "Delete directives not supported with encryption.");
1769 } 1787 }
1770 ChangePreferredDataTypes(chosen_types); 1788 ChangePreferredDataTypes(chosen_types);
1771 AcknowledgeSyncedTypes(); 1789 AcknowledgeSyncedTypes();
1772 NotifyObservers(); 1790 NotifyObservers();
1773 } 1791 }
1774 1792
1775 void ProfileSyncService::ChangePreferredDataTypes( 1793 void ProfileSyncService::ChangePreferredDataTypes(
1776 syncer::ModelTypeSet preferred_types) { 1794 syncer::ModelTypeSet preferred_types) {
1777 1795
1778 DVLOG(1) << "ChangePreferredDataTypes invoked"; 1796 DVLOG(1) << "ChangePreferredDataTypes invoked";
(...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after
2533 if (first_sync_time.is_null()) 2551 if (first_sync_time.is_null())
2534 return; 2552 return;
2535 2553
2536 clear_browsing_data_.Run(profile_, first_sync_time, base::Time::Now()); 2554 clear_browsing_data_.Run(profile_, first_sync_time, base::Time::Now());
2537 } 2555 }
2538 2556
2539 void ProfileSyncService::SetClearingBrowseringDataForTesting( 2557 void ProfileSyncService::SetClearingBrowseringDataForTesting(
2540 base::Callback<void(Profile*, base::Time, base::Time)> c) { 2558 base::Callback<void(Profile*, base::Time, base::Time)> c) {
2541 clear_browsing_data_ = c; 2559 clear_browsing_data_ = c;
2542 } 2560 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698