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

Unified Diff: chrome/browser/sync/glue/model_association_manager_unittest.cc

Issue 10387144: [Sync] - Implement isolated model association. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: For review. Created 8 years, 7 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: chrome/browser/sync/glue/model_association_manager_unittest.cc
diff --git a/chrome/browser/sync/glue/model_association_manager_unittest.cc b/chrome/browser/sync/glue/model_association_manager_unittest.cc
index 48b93ee803d98b47f0a02cb31d750cef2dd6eaeb..589230d1237d594b264a9c90dc7e9a7be5f4d81e 100755
--- a/chrome/browser/sync/glue/model_association_manager_unittest.cc
+++ b/chrome/browser/sync/glue/model_association_manager_unittest.cc
@@ -18,6 +18,7 @@ class MockModelAssociationResultProcessor :
~MockModelAssociationResultProcessor() {}
MOCK_METHOD1(OnModelAssociationDone, void(
const DataTypeManager::ConfigureResult& result));
+ MOCK_METHOD0(OnTypesLoaded, void());
};
scoped_refptr<FakeDataTypeController> GetController(
@@ -35,17 +36,21 @@ scoped_refptr<FakeDataTypeController> GetController(
ACTION_P(VerifyResult, expected_result) {
EXPECT_EQ(arg0.status, expected_result.status);
EXPECT_TRUE(arg0.requested_types.Equals(expected_result.requested_types));
- EXPECT_EQ(arg0.errors.size(), expected_result.errors.size());
+ EXPECT_EQ(arg0.failed_data_types.size(),
+ expected_result.failed_data_types.size());
- if (arg0.errors.size() == expected_result.errors.size()) {
+ if (arg0.failed_data_types.size() ==
+ expected_result.failed_data_types.size()) {
std::list<SyncError>::const_iterator it1, it2;
- for (it1 = arg0.errors.begin(),
- it2 = expected_result.errors.begin();
- it1 != arg0.errors.end();
+ for (it1 = arg0.failed_data_types.begin(),
+ it2 = expected_result.failed_data_types.begin();
+ it1 != arg0.failed_data_types.end();
++it1, ++it2) {
EXPECT_EQ((*it1).type(), (*it2).type());
}
}
+
+ EXPECT_TRUE(arg0.waiting_to_start.Equals(expected_result.waiting_to_start));
}
class ModelAssociationManagerTest : public testing::Test {
@@ -73,7 +78,8 @@ TEST_F(ModelAssociationManagerTest, SimpleModelStart) {
DataTypeManager::ConfigureResult expected_result(
DataTypeManager::OK,
types,
- std::list<SyncError>());
+ std::list<SyncError>(),
+ syncable::ModelTypeSet());
EXPECT_CALL(result_processor_, OnModelAssociationDone(_)).
WillOnce(VerifyResult(expected_result));
@@ -100,7 +106,8 @@ TEST_F(ModelAssociationManagerTest, StopModelBeforeFinish) {
DataTypeManager::ConfigureResult expected_result(
DataTypeManager::ABORTED,
types,
- std::list<SyncError>());
+ std::list<SyncError>(),
+ syncable::ModelTypeSet());
EXPECT_CALL(result_processor_, OnModelAssociationDone(_)).
WillOnce(VerifyResult(expected_result));
@@ -127,7 +134,8 @@ TEST_F(ModelAssociationManagerTest, StopAfterFinish) {
DataTypeManager::ConfigureResult expected_result(
DataTypeManager::OK,
types,
- std::list<SyncError>());
+ std::list<SyncError>(),
+ syncable::ModelTypeSet());
EXPECT_CALL(result_processor_, OnModelAssociationDone(_)).
WillOnce(VerifyResult(expected_result));
@@ -159,7 +167,8 @@ TEST_F(ModelAssociationManagerTest, TypeFailModelAssociation) {
DataTypeManager::ConfigureResult expected_result(
DataTypeManager::PARTIAL_SUCCESS,
types,
- errors);
+ errors,
+ syncable::ModelTypeSet());
EXPECT_CALL(result_processor_, OnModelAssociationDone(_)).
WillOnce(VerifyResult(expected_result));
@@ -187,7 +196,8 @@ TEST_F(ModelAssociationManagerTest, TypeReturnUnrecoverableError) {
DataTypeManager::ConfigureResult expected_result(
DataTypeManager::UNRECOVERABLE_ERROR,
types,
- errors);
+ errors,
+ syncable::ModelTypeSet());
EXPECT_CALL(result_processor_, OnModelAssociationDone(_)).
WillOnce(VerifyResult(expected_result));
@@ -201,4 +211,63 @@ TEST_F(ModelAssociationManagerTest, TypeReturnUnrecoverableError) {
DataTypeController::UNRECOVERABLE_ERROR);
}
+// Start 2 types. One of which timeout loading. Ensure that type is
+// fully configured eventually.
+TEST_F(ModelAssociationManagerTest, ModelStartWithSlowLoadingType) {
+ controllers_[syncable::BOOKMARKS] =
+ new FakeDataTypeController(syncable::BOOKMARKS);
+ controllers_[syncable::APPS] =
+ new FakeDataTypeController(syncable::APPS);
+ GetController(controllers_, syncable::BOOKMARKS)->SetDelayModelLoad();
+ ModelAssociationManager model_association_manager(&controllers_,
+ &result_processor_);
+ syncable::ModelTypeSet types;
+ types.Put(syncable::BOOKMARKS);
+ types.Put(syncable::APPS);
+
+ syncable::ModelTypeSet expected_types_waiting_to_load;
+ expected_types_waiting_to_load.Put(syncable::BOOKMARKS);
+ DataTypeManager::ConfigureResult expected_result_partially_done(
+ DataTypeManager::PARTIAL_SUCCESS,
+ types,
+ std::list<SyncError>(),
+ expected_types_waiting_to_load);
+
+ DataTypeManager::ConfigureResult expected_result_done(
+ DataTypeManager::OK,
+ types,
+ std::list<SyncError>(),
+ syncable::ModelTypeSet());
+
+
+ EXPECT_CALL(result_processor_, OnModelAssociationDone(_)).
+ WillOnce(VerifyResult(expected_result_partially_done));
+ EXPECT_CALL(result_processor_, OnTypesLoaded());
+
+ model_association_manager.Initialize(types);
+ model_association_manager.StopDisabledTypes();
+ model_association_manager.StartAssociationAsync();
+
+ model_association_manager.TestSimulateDataTypeLoadTimeout();
+
+ GetController(controllers_, syncable::APPS)->FinishStart(
+ DataTypeController::OK);
+
+ GetController(controllers_, syncable::BOOKMARKS)->FinishModelLoad();
+
+ EXPECT_CALL(result_processor_, OnModelAssociationDone(_)).
+ WillOnce(VerifyResult(expected_result_done));
+
+ // Do it once more to associate bookmarks.
+ model_association_manager.Initialize(types);
+ model_association_manager.StopDisabledTypes();
+ model_association_manager.StartAssociationAsync();
+
+ GetController(controllers_, syncable::BOOKMARKS)->FinishModelLoad();
+
+ GetController(controllers_, syncable::BOOKMARKS)->FinishStart(
+ DataTypeController::OK);
+}
+
+
} // namespace browser_sync

Powered by Google App Engine
This is Rietveld 408576698