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

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

Issue 513543004: [Sync] Rename FailedDataTypesHandler -> DataTypeStatusTable (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Created 6 years, 3 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
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 <vector> 9 #include <vector>
10 10
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 #if defined(OS_ANDROID) 104 #if defined(OS_ANDROID)
105 #include "sync/internal_api/public/read_transaction.h" 105 #include "sync/internal_api/public/read_transaction.h"
106 #endif 106 #endif
107 107
108 using browser_sync::NotificationServiceSessionsRouter; 108 using browser_sync::NotificationServiceSessionsRouter;
109 using browser_sync::ProfileSyncServiceStartBehavior; 109 using browser_sync::ProfileSyncServiceStartBehavior;
110 using browser_sync::SyncBackendHost; 110 using browser_sync::SyncBackendHost;
111 using sync_driver::ChangeProcessor; 111 using sync_driver::ChangeProcessor;
112 using sync_driver::DataTypeController; 112 using sync_driver::DataTypeController;
113 using sync_driver::DataTypeManager; 113 using sync_driver::DataTypeManager;
114 using sync_driver::FailedDataTypesHandler; 114 using sync_driver::DataTypeStatusTable;
115 using syncer::ModelType; 115 using syncer::ModelType;
116 using syncer::ModelTypeSet; 116 using syncer::ModelTypeSet;
117 using syncer::JsBackend; 117 using syncer::JsBackend;
118 using syncer::JsController; 118 using syncer::JsController;
119 using syncer::JsEventDetails; 119 using syncer::JsEventDetails;
120 using syncer::JsEventHandler; 120 using syncer::JsEventHandler;
121 using syncer::ModelSafeRoutingInfo; 121 using syncer::ModelSafeRoutingInfo;
122 using syncer::SyncCredentials; 122 using syncer::SyncCredentials;
123 using syncer::SyncProtocolError; 123 using syncer::SyncProtocolError;
124 using syncer::WeakHandle; 124 using syncer::WeakHandle;
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after
955 955
956 void ProfileSyncService::NotifySyncCycleCompleted() { 956 void ProfileSyncService::NotifySyncCycleCompleted() {
957 FOR_EACH_OBSERVER(ProfileSyncServiceBase::Observer, observers_, 957 FOR_EACH_OBSERVER(ProfileSyncServiceBase::Observer, observers_,
958 OnSyncCycleCompleted()); 958 OnSyncCycleCompleted());
959 } 959 }
960 960
961 void ProfileSyncService::ClearStaleErrors() { 961 void ProfileSyncService::ClearStaleErrors() {
962 ClearUnrecoverableError(); 962 ClearUnrecoverableError();
963 last_actionable_error_ = SyncProtocolError(); 963 last_actionable_error_ = SyncProtocolError();
964 // Clear the data type errors as well. 964 // Clear the data type errors as well.
965 failed_data_types_handler_.Reset(); 965 data_type_status_table_.Reset();
966 } 966 }
967 967
968 void ProfileSyncService::ClearUnrecoverableError() { 968 void ProfileSyncService::ClearUnrecoverableError() {
969 unrecoverable_error_reason_ = ERROR_REASON_UNSET; 969 unrecoverable_error_reason_ = ERROR_REASON_UNSET;
970 unrecoverable_error_message_.clear(); 970 unrecoverable_error_message_.clear();
971 unrecoverable_error_location_ = tracked_objects::Location(); 971 unrecoverable_error_location_ = tracked_objects::Location();
972 } 972 }
973 973
974 void ProfileSyncService::RegisterNewDataType(syncer::ModelType data_type) { 974 void ProfileSyncService::RegisterNewDataType(syncer::ModelType data_type) {
975 if (directory_data_type_controllers_.count(data_type) > 0) 975 if (directory_data_type_controllers_.count(data_type) > 0)
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after
1412 1412
1413 // If sessions are encrypted, full history sync is not possible, and 1413 // If sessions are encrypted, full history sync is not possible, and
1414 // delete directives are unnecessary. 1414 // delete directives are unnecessary.
1415 if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) && 1415 if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) &&
1416 encrypted_types_.Has(syncer::SESSIONS)) { 1416 encrypted_types_.Has(syncer::SESSIONS)) {
1417 syncer::SyncError error( 1417 syncer::SyncError error(
1418 FROM_HERE, 1418 FROM_HERE,
1419 syncer::SyncError::DATATYPE_POLICY_ERROR, 1419 syncer::SyncError::DATATYPE_POLICY_ERROR,
1420 "Delete directives not supported with encryption.", 1420 "Delete directives not supported with encryption.",
1421 syncer::HISTORY_DELETE_DIRECTIVES); 1421 syncer::HISTORY_DELETE_DIRECTIVES);
1422 FailedDataTypesHandler::TypeErrorMap error_map; 1422 DataTypeStatusTable::TypeErrorMap error_map;
1423 error_map[error.model_type()] = error; 1423 error_map[error.model_type()] = error;
1424 failed_data_types_handler_.UpdateFailedDataTypes(error_map); 1424 data_type_status_table_.UpdateFailedDataTypes(error_map);
1425 ReconfigureDatatypeManager(); 1425 ReconfigureDatatypeManager();
1426 } 1426 }
1427 } 1427 }
1428 1428
1429 void ProfileSyncService::OnEncryptionComplete() { 1429 void ProfileSyncService::OnEncryptionComplete() {
1430 DVLOG(1) << "Encryption complete"; 1430 DVLOG(1) << "Encryption complete";
1431 if (encryption_pending_ && encrypt_everything_) { 1431 if (encryption_pending_ && encrypt_everything_) {
1432 encryption_pending_ = false; 1432 encryption_pending_ = false;
1433 // This is to nudge the integration tests when encryption is 1433 // This is to nudge the integration tests when encryption is
1434 // finished. 1434 // finished.
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1570 DVLOG(0) << "ProfileSyncService::Observe Sync Configure aborted"; 1570 DVLOG(0) << "ProfileSyncService::Observe Sync Configure aborted";
1571 expect_sync_configuration_aborted_ = false; 1571 expect_sync_configuration_aborted_ = false;
1572 return; 1572 return;
1573 } 1573 }
1574 1574
1575 // Handle unrecoverable error. 1575 // Handle unrecoverable error.
1576 if (configure_status_ != DataTypeManager::OK) { 1576 if (configure_status_ != DataTypeManager::OK) {
1577 // Something catastrophic had happened. We should only have one 1577 // Something catastrophic had happened. We should only have one
1578 // error representing it. 1578 // error representing it.
1579 syncer::SyncError error = 1579 syncer::SyncError error =
1580 failed_data_types_handler_.GetUnrecoverableError(); 1580 data_type_status_table_.GetUnrecoverableError();
1581 DCHECK(error.IsSet()); 1581 DCHECK(error.IsSet());
1582 std::string message = 1582 std::string message =
1583 "Sync configuration failed with status " + 1583 "Sync configuration failed with status " +
1584 DataTypeManager::ConfigureStatusToString(configure_status_) + 1584 DataTypeManager::ConfigureStatusToString(configure_status_) +
1585 " caused by " + 1585 " caused by " +
1586 syncer::ModelTypeSetToString( 1586 syncer::ModelTypeSetToString(
1587 failed_data_types_handler_.GetUnrecoverableErrorTypes()) + 1587 data_type_status_table_.GetUnrecoverableErrorTypes()) +
1588 ": " + error.message(); 1588 ": " + error.message();
1589 LOG(ERROR) << "ProfileSyncService error: " << message; 1589 LOG(ERROR) << "ProfileSyncService error: " << message;
1590 OnInternalUnrecoverableError(error.location(), 1590 OnInternalUnrecoverableError(error.location(),
1591 message, 1591 message,
1592 true, 1592 true,
1593 ERROR_REASON_CONFIGURATION_FAILURE); 1593 ERROR_REASON_CONFIGURATION_FAILURE);
1594 return; 1594 return;
1595 } 1595 }
1596 1596
1597 // We should never get in a state where we have no encrypted datatypes 1597 // We should never get in a state where we have no encrypted datatypes
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
1833 bool sync_everything, 1833 bool sync_everything,
1834 syncer::ModelTypeSet chosen_types) { 1834 syncer::ModelTypeSet chosen_types) {
1835 if (!backend_.get() && !HasUnrecoverableError()) { 1835 if (!backend_.get() && !HasUnrecoverableError()) {
1836 NOTREACHED(); 1836 NOTREACHED();
1837 return; 1837 return;
1838 } 1838 }
1839 1839
1840 UpdateSelectedTypesHistogram(sync_everything, chosen_types); 1840 UpdateSelectedTypesHistogram(sync_everything, chosen_types);
1841 sync_prefs_.SetKeepEverythingSynced(sync_everything); 1841 sync_prefs_.SetKeepEverythingSynced(sync_everything);
1842 1842
1843 failed_data_types_handler_.Reset(); 1843 data_type_status_table_.Reset();
1844 if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) && 1844 if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) &&
1845 encrypted_types_.Has(syncer::SESSIONS)) { 1845 encrypted_types_.Has(syncer::SESSIONS)) {
1846 syncer::SyncError error( 1846 syncer::SyncError error(
1847 FROM_HERE, 1847 FROM_HERE,
1848 syncer::SyncError::DATATYPE_POLICY_ERROR, 1848 syncer::SyncError::DATATYPE_POLICY_ERROR,
1849 "Delete directives not supported with encryption.", 1849 "Delete directives not supported with encryption.",
1850 syncer::HISTORY_DELETE_DIRECTIVES); 1850 syncer::HISTORY_DELETE_DIRECTIVES);
1851 FailedDataTypesHandler::TypeErrorMap error_map; 1851 DataTypeStatusTable::TypeErrorMap error_map;
1852 error_map[error.model_type()] = error; 1852 error_map[error.model_type()] = error;
1853 failed_data_types_handler_.UpdateFailedDataTypes(error_map); 1853 data_type_status_table_.UpdateFailedDataTypes(error_map);
1854 } 1854 }
1855 ChangePreferredDataTypes(chosen_types); 1855 ChangePreferredDataTypes(chosen_types);
1856 AcknowledgeSyncedTypes(); 1856 AcknowledgeSyncedTypes();
1857 NotifyObservers(); 1857 NotifyObservers();
1858 } 1858 }
1859 1859
1860 void ProfileSyncService::ChangePreferredDataTypes( 1860 void ProfileSyncService::ChangePreferredDataTypes(
1861 syncer::ModelTypeSet preferred_types) { 1861 syncer::ModelTypeSet preferred_types) {
1862 1862
1863 DVLOG(1) << "ChangePreferredDataTypes invoked"; 1863 DVLOG(1) << "ChangePreferredDataTypes invoked";
1864 const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes(); 1864 const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes();
1865 const syncer::ModelTypeSet registered_preferred_types = 1865 const syncer::ModelTypeSet registered_preferred_types =
1866 Intersection(registered_types, preferred_types); 1866 Intersection(registered_types, preferred_types);
1867 sync_prefs_.SetPreferredDataTypes(registered_types, 1867 sync_prefs_.SetPreferredDataTypes(registered_types,
1868 registered_preferred_types); 1868 registered_preferred_types);
1869 1869
1870 // Now reconfigure the DTM. 1870 // Now reconfigure the DTM.
1871 ReconfigureDatatypeManager(); 1871 ReconfigureDatatypeManager();
1872 1872
1873 // TODO(rlarocque): Reconfigure the NonBlockingDataTypeManager, too. Blocked 1873 // TODO(rlarocque): Reconfigure the NonBlockingDataTypeManager, too. Blocked
1874 // on crbug.com/368834. Until that bug is fixed, it's difficult to tell 1874 // on crbug.com/368834. Until that bug is fixed, it's difficult to tell
1875 // which types should be enabled and when. 1875 // which types should be enabled and when.
1876 } 1876 }
1877 1877
1878 syncer::ModelTypeSet ProfileSyncService::GetActiveDataTypes() const { 1878 syncer::ModelTypeSet ProfileSyncService::GetActiveDataTypes() const {
1879 const syncer::ModelTypeSet preferred_types = GetPreferredDataTypes(); 1879 const syncer::ModelTypeSet preferred_types = GetPreferredDataTypes();
1880 const syncer::ModelTypeSet failed_types = 1880 const syncer::ModelTypeSet failed_types =
1881 failed_data_types_handler_.GetFailedTypes(); 1881 data_type_status_table_.GetFailedTypes();
1882 return Difference(preferred_types, failed_types); 1882 return Difference(preferred_types, failed_types);
1883 } 1883 }
1884 1884
1885 syncer::ModelTypeSet ProfileSyncService::GetPreferredDataTypes() const { 1885 syncer::ModelTypeSet ProfileSyncService::GetPreferredDataTypes() const {
1886 const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes(); 1886 const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes();
1887 const syncer::ModelTypeSet preferred_types = 1887 const syncer::ModelTypeSet preferred_types =
1888 sync_prefs_.GetPreferredDataTypes(registered_types); 1888 sync_prefs_.GetPreferredDataTypes(registered_types);
1889 return preferred_types; 1889 return preferred_types;
1890 } 1890 }
1891 1891
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1969 1969
1970 bool restart = false; 1970 bool restart = false;
1971 if (!directory_data_type_manager_) { 1971 if (!directory_data_type_manager_) {
1972 restart = true; 1972 restart = true;
1973 directory_data_type_manager_.reset( 1973 directory_data_type_manager_.reset(
1974 factory_->CreateDataTypeManager(debug_info_listener_, 1974 factory_->CreateDataTypeManager(debug_info_listener_,
1975 &directory_data_type_controllers_, 1975 &directory_data_type_controllers_,
1976 this, 1976 this,
1977 backend_.get(), 1977 backend_.get(),
1978 this, 1978 this,
1979 &failed_data_types_handler_)); 1979 &data_type_status_table_));
1980 1980
1981 // We create the migrator at the same time. 1981 // We create the migrator at the same time.
1982 migrator_.reset( 1982 migrator_.reset(
1983 new browser_sync::BackendMigrator( 1983 new browser_sync::BackendMigrator(
1984 profile_->GetDebugName(), GetUserShare(), 1984 profile_->GetDebugName(), GetUserShare(),
1985 this, directory_data_type_manager_.get(), 1985 this, directory_data_type_manager_.get(),
1986 base::Bind(&ProfileSyncService::StartSyncingWithServer, 1986 base::Bind(&ProfileSyncService::StartSyncingWithServer,
1987 base::Unretained(this)))); 1987 base::Unretained(this))));
1988 } 1988 }
1989 1989
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2050 } 2050 }
2051 } 2051 }
2052 2052
2053 base::Value* ProfileSyncService::GetTypeStatusMap() const { 2053 base::Value* ProfileSyncService::GetTypeStatusMap() const {
2054 scoped_ptr<base::ListValue> result(new base::ListValue()); 2054 scoped_ptr<base::ListValue> result(new base::ListValue());
2055 2055
2056 if (!backend_.get() || !backend_initialized_) { 2056 if (!backend_.get() || !backend_initialized_) {
2057 return result.release(); 2057 return result.release();
2058 } 2058 }
2059 2059
2060 FailedDataTypesHandler::TypeErrorMap error_map = 2060 DataTypeStatusTable::TypeErrorMap error_map =
2061 failed_data_types_handler_.GetAllErrors(); 2061 data_type_status_table_.GetAllErrors();
2062
2063 ModelTypeSet active_types; 2062 ModelTypeSet active_types;
2064 ModelTypeSet passive_types; 2063 ModelTypeSet passive_types;
2065 ModelSafeRoutingInfo routing_info; 2064 ModelSafeRoutingInfo routing_info;
2066 backend_->GetModelSafeRoutingInfo(&routing_info); 2065 backend_->GetModelSafeRoutingInfo(&routing_info);
2067 for (ModelSafeRoutingInfo::const_iterator it = routing_info.begin(); 2066 for (ModelSafeRoutingInfo::const_iterator it = routing_info.begin();
2068 it != routing_info.end(); ++it) { 2067 it != routing_info.end(); ++it) {
2069 if (it->second == syncer::GROUP_PASSIVE) { 2068 if (it->second == syncer::GROUP_PASSIVE) {
2070 passive_types.Put(it->first); 2069 passive_types.Put(it->first);
2071 } else { 2070 } else {
2072 active_types.Put(it->first); 2071 active_types.Put(it->first);
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
2567 syncer::ModelTypeSet types; 2566 syncer::ModelTypeSet types;
2568 for (std::set<SyncTypePreferenceProvider*>::const_iterator it = 2567 for (std::set<SyncTypePreferenceProvider*>::const_iterator it =
2569 preference_providers_.begin(); 2568 preference_providers_.begin();
2570 it != preference_providers_.end(); 2569 it != preference_providers_.end();
2571 ++it) { 2570 ++it) {
2572 types.PutAll((*it)->GetPreferredDataTypes()); 2571 types.PutAll((*it)->GetPreferredDataTypes());
2573 } 2572 }
2574 return types; 2573 return types;
2575 } 2574 }
2576 2575
2577 const FailedDataTypesHandler& ProfileSyncService::failed_data_types_handler() 2576 const DataTypeStatusTable& ProfileSyncService::data_type_status_table()
2578 const { 2577 const {
2579 return failed_data_types_handler_; 2578 return data_type_status_table_;
2580 } 2579 }
2581 2580
2582 void ProfileSyncService::OnInternalUnrecoverableError( 2581 void ProfileSyncService::OnInternalUnrecoverableError(
2583 const tracked_objects::Location& from_here, 2582 const tracked_objects::Location& from_here,
2584 const std::string& message, 2583 const std::string& message,
2585 bool delete_sync_database, 2584 bool delete_sync_database,
2586 UnrecoverableErrorReason reason) { 2585 UnrecoverableErrorReason reason) {
2587 DCHECK(!HasUnrecoverableError()); 2586 DCHECK(!HasUnrecoverableError());
2588 unrecoverable_error_reason_ = reason; 2587 unrecoverable_error_reason_ = reason;
2589 OnUnrecoverableErrorImpl(from_here, message, delete_sync_database); 2588 OnUnrecoverableErrorImpl(from_here, message, delete_sync_database);
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
2772 true)); 2771 true));
2773 } 2772 }
2774 2773
2775 bool ProfileSyncService::NeedBackup() const { 2774 bool ProfileSyncService::NeedBackup() const {
2776 return need_backup_; 2775 return need_backup_;
2777 } 2776 }
2778 2777
2779 base::Time ProfileSyncService::GetDeviceBackupTimeForTesting() const { 2778 base::Time ProfileSyncService::GetDeviceBackupTimeForTesting() const {
2780 return backend_->GetSyncedDeviceTracker()->GetLocalDeviceBackupTime(); 2779 return backend_->GetSyncedDeviceTracker()->GetLocalDeviceBackupTime();
2781 } 2780 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/profile_sync_service.h ('k') | chrome/browser/sync/profile_sync_service_startup_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698