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

Unified Diff: components/sync_driver/data_type_manager_impl_unittest.cc

Issue 312163004: [Sync] Add support for dynamically enabling/disabling types (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comment, fix purging behavior 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698