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

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

Issue 436733002: [Sync] Use OnSingleDataTypeUnrecoverableError for all errors (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 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) 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 933 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 << " -- ProfileSyncService unusable: " << message; 944 << " -- ProfileSyncService unusable: " << message;
945 945
946 // Shut all data types down. 946 // Shut all data types down.
947 base::MessageLoop::current()->PostTask(FROM_HERE, 947 base::MessageLoop::current()->PostTask(FROM_HERE,
948 base::Bind(&ProfileSyncService::ShutdownImpl, 948 base::Bind(&ProfileSyncService::ShutdownImpl,
949 weak_factory_.GetWeakPtr(), 949 weak_factory_.GetWeakPtr(),
950 delete_sync_database ? 950 delete_sync_database ?
951 syncer::DISABLE_SYNC : syncer::STOP_SYNC)); 951 syncer::DISABLE_SYNC : syncer::STOP_SYNC));
952 } 952 }
953 953
954 // TODO(zea): Move this logic into the DataTypeController/DataTypeManager.
955 void ProfileSyncService::DisableDatatype(const syncer::SyncError& error) {
956 // First deactivate the type so that no further server changes are
957 // passed onto the change processor.
958 DeactivateDataType(error.model_type());
959
960 std::map<syncer::ModelType, syncer::SyncError> errors;
961 errors[error.model_type()] = error;
962
963 // Update this before posting a task. So if a configure happens before
964 // the task that we are going to post, this type would still be disabled.
965 failed_data_types_handler_.UpdateFailedDataTypes(errors);
966
967 base::MessageLoop::current()->PostTask(FROM_HERE,
968 base::Bind(&ProfileSyncService::ReconfigureDatatypeManager,
969 weak_factory_.GetWeakPtr()));
970 }
971
972 void ProfileSyncService::ReenableDatatype(syncer::ModelType type) { 954 void ProfileSyncService::ReenableDatatype(syncer::ModelType type) {
973 // Only reconfigure if the type actually had a data type or unready error. 955 // Only reconfigure if the type actually had a data type or unready error.
974 if (!failed_data_types_handler_.ResetDataTypeErrorFor(type) && 956 if (!failed_data_types_handler_.ResetDataTypeErrorFor(type) &&
975 !failed_data_types_handler_.ResetUnreadyErrorFor(type)) { 957 !failed_data_types_handler_.ResetUnreadyErrorFor(type)) {
976 return; 958 return;
977 } 959 }
978 960
979 // If the type is no longer enabled, don't bother reconfiguring. 961 // If the type is no longer enabled, don't bother reconfiguring.
980 // TODO(zea): something else should encapsulate the notion of "whether a type 962 // TODO(zea): something else should encapsulate the notion of "whether a type
981 // should be enabled". 963 // should be enabled".
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
1377 1359
1378 // If sessions are encrypted, full history sync is not possible, and 1360 // If sessions are encrypted, full history sync is not possible, and
1379 // delete directives are unnecessary. 1361 // delete directives are unnecessary.
1380 if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) && 1362 if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) &&
1381 encrypted_types_.Has(syncer::SESSIONS)) { 1363 encrypted_types_.Has(syncer::SESSIONS)) {
1382 syncer::SyncError error( 1364 syncer::SyncError error(
1383 FROM_HERE, 1365 FROM_HERE,
1384 syncer::SyncError::DATATYPE_POLICY_ERROR, 1366 syncer::SyncError::DATATYPE_POLICY_ERROR,
1385 "Delete directives not supported with encryption.", 1367 "Delete directives not supported with encryption.",
1386 syncer::HISTORY_DELETE_DIRECTIVES); 1368 syncer::HISTORY_DELETE_DIRECTIVES);
1387 DisableDatatype(error); 1369 FailedDataTypesHandler::TypeErrorMap error_map;
1370 error_map[error.model_type()] = error;
1371 failed_data_types_handler_.UpdateFailedDataTypes(error_map);
1372 ReconfigureDatatypeManager();
1388 } 1373 }
1389 } 1374 }
1390 1375
1391 void ProfileSyncService::OnEncryptionComplete() { 1376 void ProfileSyncService::OnEncryptionComplete() {
1392 DVLOG(1) << "Encryption complete"; 1377 DVLOG(1) << "Encryption complete";
1393 if (encryption_pending_ && encrypt_everything_) { 1378 if (encryption_pending_ && encrypt_everything_) {
1394 encryption_pending_ = false; 1379 encryption_pending_ = false;
1395 // This is to nudge the integration tests when encryption is 1380 // This is to nudge the integration tests when encryption is
1396 // finished. 1381 // finished.
1397 NotifyObservers(); 1382 NotifyObservers();
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
1785 sync_prefs_.SetKeepEverythingSynced(sync_everything); 1770 sync_prefs_.SetKeepEverythingSynced(sync_everything);
1786 1771
1787 failed_data_types_handler_.Reset(); 1772 failed_data_types_handler_.Reset();
1788 if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) && 1773 if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) &&
1789 encrypted_types_.Has(syncer::SESSIONS)) { 1774 encrypted_types_.Has(syncer::SESSIONS)) {
1790 syncer::SyncError error( 1775 syncer::SyncError error(
1791 FROM_HERE, 1776 FROM_HERE,
1792 syncer::SyncError::DATATYPE_POLICY_ERROR, 1777 syncer::SyncError::DATATYPE_POLICY_ERROR,
1793 "Delete directives not supported with encryption.", 1778 "Delete directives not supported with encryption.",
1794 syncer::HISTORY_DELETE_DIRECTIVES); 1779 syncer::HISTORY_DELETE_DIRECTIVES);
1795 DisableDatatype(error); 1780 FailedDataTypesHandler::TypeErrorMap error_map;
1781 error_map[error.model_type()] = error;
1782 failed_data_types_handler_.UpdateFailedDataTypes(error_map);
1796 } 1783 }
1797 ChangePreferredDataTypes(chosen_types); 1784 ChangePreferredDataTypes(chosen_types);
1798 AcknowledgeSyncedTypes(); 1785 AcknowledgeSyncedTypes();
1799 NotifyObservers(); 1786 NotifyObservers();
1800 } 1787 }
1801 1788
1802 void ProfileSyncService::ChangePreferredDataTypes( 1789 void ProfileSyncService::ChangePreferredDataTypes(
1803 syncer::ModelTypeSet preferred_types) { 1790 syncer::ModelTypeSet preferred_types) {
1804 1791
1805 DVLOG(1) << "ChangePreferredDataTypes invoked"; 1792 DVLOG(1) << "ChangePreferredDataTypes invoked";
(...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after
2660 browser_sync::SyncedDeviceTracker* device_tracker = 2647 browser_sync::SyncedDeviceTracker* device_tracker =
2661 backend_->GetSyncedDeviceTracker(); 2648 backend_->GetSyncedDeviceTracker();
2662 if (device_tracker) 2649 if (device_tracker)
2663 device_tracker->UpdateLocalDeviceBackupTime(*last_backup_time_); 2650 device_tracker->UpdateLocalDeviceBackupTime(*last_backup_time_);
2664 } 2651 }
2665 } 2652 }
2666 2653
2667 base::Time ProfileSyncService::GetDeviceBackupTimeForTesting() const { 2654 base::Time ProfileSyncService::GetDeviceBackupTimeForTesting() const {
2668 return backend_->GetSyncedDeviceTracker()->GetLocalDeviceBackupTime(); 2655 return backend_->GetSyncedDeviceTracker()->GetLocalDeviceBackupTime();
2669 } 2656 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/profile_sync_service.h ('k') | chrome/browser/sync/profile_sync_service_autofill_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698