Index: components/sync_driver/data_type_manager_impl_unittest.cc |
diff --git a/components/sync_driver/data_type_manager_impl_unittest.cc b/components/sync_driver/data_type_manager_impl_unittest.cc |
index ee88568879ff6691c3d98506bde4a084adc51398..f501737f349d6b339ef1c6bddca72fad5aaa65ea 100644 |
--- a/components/sync_driver/data_type_manager_impl_unittest.cc |
+++ b/components/sync_driver/data_type_manager_impl_unittest.cc |
@@ -1154,4 +1154,46 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureForBackupRollback) { |
syncer::CONFIGURE_REASON_BACKUP_ROLLBACK); |
} |
+TEST_F(SyncDataTypeManagerImplTest, ReenableAfterDataTypeError) { |
+ syncer::SyncError error(FROM_HERE, |
+ syncer::SyncError::DATATYPE_ERROR, |
+ "Datatype disabled", |
+ syncer::BOOKMARKS); |
+ std::map<syncer::ModelType, syncer::SyncError> errors; |
+ errors[syncer::BOOKMARKS] = error; |
+ failed_data_types_handler_.UpdateFailedDataTypes(errors); |
+ |
+ AddController(PREFERENCES); // Will succeed. |
+ AddController(BOOKMARKS); // Will be disabled due to datatype error. |
+ |
+ SetConfigureStartExpectation(); |
+ SetConfigureDoneExpectation(DataTypeManager::PARTIAL_SUCCESS); |
+ |
+ Configure(dtm_.get(), ModelTypeSet(BOOKMARKS, PREFERENCES)); |
+ FinishDownload(*dtm_, ModelTypeSet(), ModelTypeSet()); |
+ FinishDownload(*dtm_, ModelTypeSet(PREFERENCES), ModelTypeSet()); |
+ GetController(PREFERENCES)->FinishStart(DataTypeController::OK); |
+ EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); |
+ EXPECT_EQ(DataTypeController::RUNNING, GetController(PREFERENCES)->state()); |
+ EXPECT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state()); |
+ |
+ Mock::VerifyAndClearExpectations(&observer_); |
+ |
+ // Re-enable bookmarks. |
+ failed_data_types_handler_.ResetDataTypeErrorFor(syncer::BOOKMARKS); |
+ |
+ SetConfigureStartExpectation(); |
+ SetConfigureDoneExpectation(DataTypeManager::OK); |
+ |
+ Configure(dtm_.get(), ModelTypeSet(BOOKMARKS, PREFERENCES)); |
+ EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm_->state()); |
+ FinishDownload(*dtm_, ModelTypeSet(), ModelTypeSet()); |
+ FinishDownload(*dtm_, ModelTypeSet(BOOKMARKS), ModelTypeSet()); |
+ EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state()); |
+ GetController(BOOKMARKS)->FinishStart(DataTypeController::OK); |
+ EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); |
+ EXPECT_EQ(DataTypeController::RUNNING, GetController(PREFERENCES)->state()); |
+ EXPECT_EQ(DataTypeController::RUNNING, GetController(BOOKMARKS)->state()); |
+} |
+ |
} // namespace browser_sync |