| 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
|
|
|