| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/sync/driver/model_association_manager.h" | 5 #include "components/sync/driver/model_association_manager.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| 11 #include "components/sync/driver/fake_data_type_controller.h" | 11 #include "components/sync/driver/fake_data_type_controller.h" |
| 12 #include "testing/gmock/include/gmock/gmock.h" | 12 #include "testing/gmock/include/gmock/gmock.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 14 |
| 15 using ::testing::_; | 15 using ::testing::_; |
| 16 | 16 |
| 17 namespace syncer { | 17 namespace syncer { |
| 18 | 18 |
| 19 class MockModelAssociationManagerDelegate | 19 class MockModelAssociationManagerDelegate |
| 20 : public ModelAssociationManagerDelegate { | 20 : public ModelAssociationManagerDelegate { |
| 21 public: | 21 public: |
| 22 MockModelAssociationManagerDelegate() {} | 22 MockModelAssociationManagerDelegate() {} |
| 23 ~MockModelAssociationManagerDelegate() {} | 23 ~MockModelAssociationManagerDelegate() {} |
| 24 MOCK_METHOD0(OnAllDataTypesReadyForConfigure, void()); | 24 MOCK_METHOD0(OnAllDataTypesReadyForConfigure, void()); |
| 25 MOCK_METHOD2(OnSingleDataTypeAssociationDone, | 25 MOCK_METHOD2(OnSingleDataTypeAssociationDone, |
| 26 void(ModelType type, | 26 void(ModelType type, |
| 27 const DataTypeAssociationStats& association_stats)); | 27 const DataTypeAssociationStats& association_stats)); |
| 28 MOCK_METHOD1(OnSingleDataTypeWillStart, void(ModelType type)); | |
| 29 MOCK_METHOD2(OnSingleDataTypeWillStop, | 28 MOCK_METHOD2(OnSingleDataTypeWillStop, |
| 30 void(ModelType, const SyncError& error)); | 29 void(ModelType, const SyncError& error)); |
| 31 MOCK_METHOD1(OnModelAssociationDone, | 30 MOCK_METHOD1(OnModelAssociationDone, |
| 32 void(const DataTypeManager::ConfigureResult& result)); | 31 void(const DataTypeManager::ConfigureResult& result)); |
| 33 }; | 32 }; |
| 34 | 33 |
| 35 FakeDataTypeController* GetController( | 34 FakeDataTypeController* GetController( |
| 36 const DataTypeController::TypeMap& controllers, | 35 const DataTypeController::TypeMap& controllers, |
| 37 ModelType model_type) { | 36 ModelType model_type) { |
| 38 DataTypeController::TypeMap::const_iterator it = controllers.find(model_type); | 37 DataTypeController::TypeMap::const_iterator it = controllers.find(model_type); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 58 }; | 57 }; |
| 59 | 58 |
| 60 // Start a type and make sure ModelAssociationManager callst the |Start| | 59 // Start a type and make sure ModelAssociationManager callst the |Start| |
| 61 // method and calls the callback when it is done. | 60 // method and calls the callback when it is done. |
| 62 TEST_F(SyncModelAssociationManagerTest, SimpleModelStart) { | 61 TEST_F(SyncModelAssociationManagerTest, SimpleModelStart) { |
| 63 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); | 62 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); |
| 64 controllers_[APPS] = base::MakeUnique<FakeDataTypeController>(APPS); | 63 controllers_[APPS] = base::MakeUnique<FakeDataTypeController>(APPS); |
| 65 ModelAssociationManager model_association_manager(&controllers_, &delegate_); | 64 ModelAssociationManager model_association_manager(&controllers_, &delegate_); |
| 66 ModelTypeSet types(BOOKMARKS, APPS); | 65 ModelTypeSet types(BOOKMARKS, APPS); |
| 67 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); | 66 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); |
| 68 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(BOOKMARKS)); | |
| 69 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(APPS)); | |
| 70 EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure()); | 67 EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure()); |
| 71 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) | 68 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) |
| 72 .WillOnce(VerifyResult(expected_result)); | 69 .WillOnce(VerifyResult(expected_result)); |
| 73 | 70 |
| 74 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 71 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 75 DataTypeController::NOT_RUNNING); | 72 DataTypeController::NOT_RUNNING); |
| 76 EXPECT_EQ(GetController(controllers_, APPS)->state(), | 73 EXPECT_EQ(GetController(controllers_, APPS)->state(), |
| 77 DataTypeController::NOT_RUNNING); | 74 DataTypeController::NOT_RUNNING); |
| 78 | 75 |
| 79 // Initialize() kicks off model loading. | 76 // Initialize() kicks off model loading. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 95 } | 92 } |
| 96 | 93 |
| 97 // Start a type and call stop before it finishes associating. | 94 // Start a type and call stop before it finishes associating. |
| 98 TEST_F(SyncModelAssociationManagerTest, StopModelBeforeFinish) { | 95 TEST_F(SyncModelAssociationManagerTest, StopModelBeforeFinish) { |
| 99 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); | 96 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); |
| 100 ModelAssociationManager model_association_manager(&controllers_, &delegate_); | 97 ModelAssociationManager model_association_manager(&controllers_, &delegate_); |
| 101 | 98 |
| 102 ModelTypeSet types; | 99 ModelTypeSet types; |
| 103 types.Put(BOOKMARKS); | 100 types.Put(BOOKMARKS); |
| 104 | 101 |
| 105 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(BOOKMARKS)); | |
| 106 DataTypeManager::ConfigureResult expected_result(DataTypeManager::ABORTED, | 102 DataTypeManager::ConfigureResult expected_result(DataTypeManager::ABORTED, |
| 107 types); | 103 types); |
| 104 |
| 108 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) | 105 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) |
| 109 .WillOnce(VerifyResult(expected_result)); | 106 .WillOnce(VerifyResult(expected_result)); |
| 110 EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); | 107 EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); |
| 111 | 108 |
| 112 model_association_manager.Initialize(types); | 109 model_association_manager.Initialize(types); |
| 113 model_association_manager.StartAssociationAsync(types); | 110 model_association_manager.StartAssociationAsync(types); |
| 114 | 111 |
| 115 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 112 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 116 DataTypeController::ASSOCIATING); | 113 DataTypeController::ASSOCIATING); |
| 117 model_association_manager.Stop(); | 114 model_association_manager.Stop(); |
| 118 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 115 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 119 DataTypeController::NOT_RUNNING); | 116 DataTypeController::NOT_RUNNING); |
| 120 } | 117 } |
| 121 | 118 |
| 122 // Start a type, let it finish and then call stop. | 119 // Start a type, let it finish and then call stop. |
| 123 TEST_F(SyncModelAssociationManagerTest, StopAfterFinish) { | 120 TEST_F(SyncModelAssociationManagerTest, StopAfterFinish) { |
| 124 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); | 121 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); |
| 125 ModelAssociationManager model_association_manager(&controllers_, &delegate_); | 122 ModelAssociationManager model_association_manager(&controllers_, &delegate_); |
| 126 ModelTypeSet types; | 123 ModelTypeSet types; |
| 127 types.Put(BOOKMARKS); | 124 types.Put(BOOKMARKS); |
| 128 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(BOOKMARKS)); | |
| 129 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); | 125 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); |
| 130 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) | 126 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) |
| 131 .WillOnce(VerifyResult(expected_result)); | 127 .WillOnce(VerifyResult(expected_result)); |
| 132 EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); | 128 EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); |
| 133 | 129 |
| 134 model_association_manager.Initialize(types); | 130 model_association_manager.Initialize(types); |
| 135 model_association_manager.StartAssociationAsync(types); | 131 model_association_manager.StartAssociationAsync(types); |
| 136 | 132 |
| 137 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 133 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 138 DataTypeController::ASSOCIATING); | 134 DataTypeController::ASSOCIATING); |
| 139 GetController(controllers_, BOOKMARKS)->FinishStart(DataTypeController::OK); | 135 GetController(controllers_, BOOKMARKS)->FinishStart(DataTypeController::OK); |
| 140 | 136 |
| 141 model_association_manager.Stop(); | 137 model_association_manager.Stop(); |
| 142 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 138 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 143 DataTypeController::NOT_RUNNING); | 139 DataTypeController::NOT_RUNNING); |
| 144 } | 140 } |
| 145 | 141 |
| 146 // Make a type fail model association and verify correctness. | 142 // Make a type fail model association and verify correctness. |
| 147 TEST_F(SyncModelAssociationManagerTest, TypeFailModelAssociation) { | 143 TEST_F(SyncModelAssociationManagerTest, TypeFailModelAssociation) { |
| 148 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); | 144 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); |
| 149 ModelAssociationManager model_association_manager(&controllers_, &delegate_); | 145 ModelAssociationManager model_association_manager(&controllers_, &delegate_); |
| 150 ModelTypeSet types; | 146 ModelTypeSet types; |
| 151 types.Put(BOOKMARKS); | 147 types.Put(BOOKMARKS); |
| 152 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(BOOKMARKS)); | |
| 153 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); | 148 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); |
| 154 EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); | 149 EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); |
| 155 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) | 150 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) |
| 156 .WillOnce(VerifyResult(expected_result)); | 151 .WillOnce(VerifyResult(expected_result)); |
| 157 | 152 |
| 158 model_association_manager.Initialize(types); | 153 model_association_manager.Initialize(types); |
| 159 model_association_manager.StartAssociationAsync(types); | 154 model_association_manager.StartAssociationAsync(types); |
| 160 | 155 |
| 161 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 156 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 162 DataTypeController::ASSOCIATING); | 157 DataTypeController::ASSOCIATING); |
| 163 GetController(controllers_, BOOKMARKS) | 158 GetController(controllers_, BOOKMARKS) |
| 164 ->FinishStart(DataTypeController::ASSOCIATION_FAILED); | 159 ->FinishStart(DataTypeController::ASSOCIATION_FAILED); |
| 165 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 160 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 166 DataTypeController::NOT_RUNNING); | 161 DataTypeController::NOT_RUNNING); |
| 167 } | 162 } |
| 168 | 163 |
| 169 // Ensure configuring stops when a type returns a unrecoverable error. | 164 // Ensure configuring stops when a type returns a unrecoverable error. |
| 170 TEST_F(SyncModelAssociationManagerTest, TypeReturnUnrecoverableError) { | 165 TEST_F(SyncModelAssociationManagerTest, TypeReturnUnrecoverableError) { |
| 171 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); | 166 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); |
| 172 ModelAssociationManager model_association_manager(&controllers_, &delegate_); | 167 ModelAssociationManager model_association_manager(&controllers_, &delegate_); |
| 173 ModelTypeSet types; | 168 ModelTypeSet types; |
| 174 types.Put(BOOKMARKS); | 169 types.Put(BOOKMARKS); |
| 175 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(BOOKMARKS)); | |
| 176 DataTypeManager::ConfigureResult expected_result( | 170 DataTypeManager::ConfigureResult expected_result( |
| 177 DataTypeManager::UNRECOVERABLE_ERROR, types); | 171 DataTypeManager::UNRECOVERABLE_ERROR, types); |
| 178 EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); | 172 EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); |
| 179 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) | 173 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) |
| 180 .WillOnce(VerifyResult(expected_result)); | 174 .WillOnce(VerifyResult(expected_result)); |
| 181 | 175 |
| 182 model_association_manager.Initialize(types); | 176 model_association_manager.Initialize(types); |
| 183 | 177 |
| 184 model_association_manager.StartAssociationAsync(types); | 178 model_association_manager.StartAssociationAsync(types); |
| 185 | 179 |
| 186 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 180 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 187 DataTypeController::ASSOCIATING); | 181 DataTypeController::ASSOCIATING); |
| 188 GetController(controllers_, BOOKMARKS) | 182 GetController(controllers_, BOOKMARKS) |
| 189 ->FinishStart(DataTypeController::UNRECOVERABLE_ERROR); | 183 ->FinishStart(DataTypeController::UNRECOVERABLE_ERROR); |
| 190 } | 184 } |
| 191 | 185 |
| 192 TEST_F(SyncModelAssociationManagerTest, SlowTypeAsFailedType) { | 186 TEST_F(SyncModelAssociationManagerTest, SlowTypeAsFailedType) { |
| 193 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); | 187 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); |
| 194 controllers_[APPS] = base::MakeUnique<FakeDataTypeController>(APPS); | 188 controllers_[APPS] = base::MakeUnique<FakeDataTypeController>(APPS); |
| 195 GetController(controllers_, BOOKMARKS)->SetDelayModelLoad(); | 189 GetController(controllers_, BOOKMARKS)->SetDelayModelLoad(); |
| 196 ModelAssociationManager model_association_manager(&controllers_, &delegate_); | 190 ModelAssociationManager model_association_manager(&controllers_, &delegate_); |
| 197 ModelTypeSet types; | 191 ModelTypeSet types; |
| 198 types.Put(BOOKMARKS); | 192 types.Put(BOOKMARKS); |
| 199 types.Put(APPS); | 193 types.Put(APPS); |
| 200 | 194 |
| 201 DataTypeManager::ConfigureResult expected_result_partially_done( | 195 DataTypeManager::ConfigureResult expected_result_partially_done( |
| 202 DataTypeManager::OK, types); | 196 DataTypeManager::OK, types); |
| 203 | 197 |
| 204 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(BOOKMARKS)); | |
| 205 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(APPS)); | |
| 206 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) | 198 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) |
| 207 .WillOnce(VerifyResult(expected_result_partially_done)); | 199 .WillOnce(VerifyResult(expected_result_partially_done)); |
| 208 | 200 |
| 209 model_association_manager.Initialize(types); | 201 model_association_manager.Initialize(types); |
| 210 model_association_manager.StartAssociationAsync(types); | 202 model_association_manager.StartAssociationAsync(types); |
| 211 GetController(controllers_, APPS)->FinishStart(DataTypeController::OK); | 203 GetController(controllers_, APPS)->FinishStart(DataTypeController::OK); |
| 212 | 204 |
| 213 EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); | 205 EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); |
| 214 model_association_manager.GetTimerForTesting()->user_task().Run(); | 206 model_association_manager.GetTimerForTesting()->user_task().Run(); |
| 215 | 207 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 263 // is reported and stopped properly. | 255 // is reported and stopped properly. |
| 264 TEST_F(SyncModelAssociationManagerTest, ModelLoadFailBeforeAssociationStart) { | 256 TEST_F(SyncModelAssociationManagerTest, ModelLoadFailBeforeAssociationStart) { |
| 265 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); | 257 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); |
| 266 GetController(controllers_, BOOKMARKS) | 258 GetController(controllers_, BOOKMARKS) |
| 267 ->SetModelLoadError( | 259 ->SetModelLoadError( |
| 268 SyncError(FROM_HERE, SyncError::DATATYPE_ERROR, "", BOOKMARKS)); | 260 SyncError(FROM_HERE, SyncError::DATATYPE_ERROR, "", BOOKMARKS)); |
| 269 ModelAssociationManager model_association_manager(&controllers_, &delegate_); | 261 ModelAssociationManager model_association_manager(&controllers_, &delegate_); |
| 270 ModelTypeSet types; | 262 ModelTypeSet types; |
| 271 types.Put(BOOKMARKS); | 263 types.Put(BOOKMARKS); |
| 272 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); | 264 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); |
| 273 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(BOOKMARKS)); | |
| 274 EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); | 265 EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); |
| 275 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) | 266 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) |
| 276 .WillOnce(VerifyResult(expected_result)); | 267 .WillOnce(VerifyResult(expected_result)); |
| 277 | 268 |
| 278 model_association_manager.Initialize(types); | 269 model_association_manager.Initialize(types); |
| 279 EXPECT_EQ(DataTypeController::NOT_RUNNING, | 270 EXPECT_EQ(DataTypeController::NOT_RUNNING, |
| 280 GetController(controllers_, BOOKMARKS)->state()); | 271 GetController(controllers_, BOOKMARKS)->state()); |
| 281 model_association_manager.StartAssociationAsync(types); | 272 model_association_manager.StartAssociationAsync(types); |
| 282 EXPECT_EQ(DataTypeController::NOT_RUNNING, | 273 EXPECT_EQ(DataTypeController::NOT_RUNNING, |
| 283 GetController(controllers_, BOOKMARKS)->state()); | 274 GetController(controllers_, BOOKMARKS)->state()); |
| 284 } | 275 } |
| 285 | 276 |
| 286 // Test that a runtime error is handled by stopping the type. | 277 // Test that a runtime error is handled by stopping the type. |
| 287 TEST_F(SyncModelAssociationManagerTest, StopAfterConfiguration) { | 278 TEST_F(SyncModelAssociationManagerTest, StopAfterConfiguration) { |
| 288 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); | 279 controllers_[BOOKMARKS] = base::MakeUnique<FakeDataTypeController>(BOOKMARKS); |
| 289 ModelAssociationManager model_association_manager(&controllers_, &delegate_); | 280 ModelAssociationManager model_association_manager(&controllers_, &delegate_); |
| 290 ModelTypeSet types; | 281 ModelTypeSet types; |
| 291 types.Put(BOOKMARKS); | 282 types.Put(BOOKMARKS); |
| 292 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); | 283 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); |
| 293 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(BOOKMARKS)); | |
| 294 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) | 284 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) |
| 295 .WillOnce(VerifyResult(expected_result)); | 285 .WillOnce(VerifyResult(expected_result)); |
| 296 | 286 |
| 297 model_association_manager.Initialize(types); | 287 model_association_manager.Initialize(types); |
| 298 model_association_manager.StartAssociationAsync(types); | 288 model_association_manager.StartAssociationAsync(types); |
| 299 | 289 |
| 300 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 290 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 301 DataTypeController::ASSOCIATING); | 291 DataTypeController::ASSOCIATING); |
| 302 GetController(controllers_, BOOKMARKS)->FinishStart(DataTypeController::OK); | 292 GetController(controllers_, BOOKMARKS)->FinishStart(DataTypeController::OK); |
| 303 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 293 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| (...skipping 14 matching lines...) Expand all Loading... |
| 318 ModelAssociationManager model_association_manager(&controllers_, &delegate_); | 308 ModelAssociationManager model_association_manager(&controllers_, &delegate_); |
| 319 ModelTypeSet types; | 309 ModelTypeSet types; |
| 320 types.Put(BOOKMARKS); | 310 types.Put(BOOKMARKS); |
| 321 types.Put(APPS); | 311 types.Put(APPS); |
| 322 | 312 |
| 323 ModelTypeSet expected_types_unfinished; | 313 ModelTypeSet expected_types_unfinished; |
| 324 expected_types_unfinished.Put(BOOKMARKS); | 314 expected_types_unfinished.Put(BOOKMARKS); |
| 325 DataTypeManager::ConfigureResult expected_result_partially_done( | 315 DataTypeManager::ConfigureResult expected_result_partially_done( |
| 326 DataTypeManager::OK, types); | 316 DataTypeManager::OK, types); |
| 327 | 317 |
| 328 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(BOOKMARKS)); | |
| 329 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(APPS)); | |
| 330 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) | 318 EXPECT_CALL(delegate_, OnModelAssociationDone(_)) |
| 331 .WillOnce(VerifyResult(expected_result_partially_done)); | 319 .WillOnce(VerifyResult(expected_result_partially_done)); |
| 332 | 320 |
| 333 model_association_manager.Initialize(types); | 321 model_association_manager.Initialize(types); |
| 334 model_association_manager.StartAssociationAsync(types); | 322 model_association_manager.StartAssociationAsync(types); |
| 335 GetController(controllers_, APPS)->FinishStart(DataTypeController::OK); | 323 GetController(controllers_, APPS)->FinishStart(DataTypeController::OK); |
| 336 EXPECT_EQ(GetController(controllers_, APPS)->state(), | 324 EXPECT_EQ(GetController(controllers_, APPS)->state(), |
| 337 DataTypeController::RUNNING); | 325 DataTypeController::RUNNING); |
| 338 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 326 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 339 DataTypeController::ASSOCIATING); | 327 DataTypeController::ASSOCIATING); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 355 GetController(controllers_, APPS)->SetDelayModelLoad(); | 343 GetController(controllers_, APPS)->SetDelayModelLoad(); |
| 356 | 344 |
| 357 // APPS controller requires LoadModels complete before configure. | 345 // APPS controller requires LoadModels complete before configure. |
| 358 GetController(controllers_, APPS)->SetShouldLoadModelBeforeConfigure(true); | 346 GetController(controllers_, APPS)->SetShouldLoadModelBeforeConfigure(true); |
| 359 | 347 |
| 360 ModelAssociationManager model_association_manager(&controllers_, &delegate_); | 348 ModelAssociationManager model_association_manager(&controllers_, &delegate_); |
| 361 ModelTypeSet types(BOOKMARKS, APPS); | 349 ModelTypeSet types(BOOKMARKS, APPS); |
| 362 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); | 350 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); |
| 363 // OnAllDataTypesReadyForConfigure shouldn't be called, APPS data type is not | 351 // OnAllDataTypesReadyForConfigure shouldn't be called, APPS data type is not |
| 364 // loaded yet. | 352 // loaded yet. |
| 365 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(BOOKMARKS)); | |
| 366 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(APPS)); | |
| 367 EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure()).Times(0); | 353 EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure()).Times(0); |
| 368 | 354 |
| 369 model_association_manager.Initialize(types); | 355 model_association_manager.Initialize(types); |
| 370 | 356 |
| 371 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 357 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 372 DataTypeController::MODEL_STARTING); | 358 DataTypeController::MODEL_STARTING); |
| 373 EXPECT_EQ(GetController(controllers_, APPS)->state(), | 359 EXPECT_EQ(GetController(controllers_, APPS)->state(), |
| 374 DataTypeController::MODEL_STARTING); | 360 DataTypeController::MODEL_STARTING); |
| 375 | 361 |
| 376 testing::Mock::VerifyAndClearExpectations(&delegate_); | 362 testing::Mock::VerifyAndClearExpectations(&delegate_); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 402 GetController(controllers_, APPS)->SetDelayModelLoad(); | 388 GetController(controllers_, APPS)->SetDelayModelLoad(); |
| 403 | 389 |
| 404 // APPS controller requires LoadModels complete before configure. | 390 // APPS controller requires LoadModels complete before configure. |
| 405 GetController(controllers_, APPS)->SetShouldLoadModelBeforeConfigure(true); | 391 GetController(controllers_, APPS)->SetShouldLoadModelBeforeConfigure(true); |
| 406 | 392 |
| 407 ModelAssociationManager model_association_manager(&controllers_, &delegate_); | 393 ModelAssociationManager model_association_manager(&controllers_, &delegate_); |
| 408 ModelTypeSet types(APPS); | 394 ModelTypeSet types(APPS); |
| 409 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); | 395 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); |
| 410 // OnAllDataTypesReadyForConfigure shouldn't be called, APPS data type is not | 396 // OnAllDataTypesReadyForConfigure shouldn't be called, APPS data type is not |
| 411 // loaded yet. | 397 // loaded yet. |
| 412 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(APPS)); | |
| 413 EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure()).Times(0); | 398 EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure()).Times(0); |
| 414 | 399 |
| 415 model_association_manager.Initialize(types); | 400 model_association_manager.Initialize(types); |
| 416 | 401 |
| 417 EXPECT_EQ(GetController(controllers_, APPS)->state(), | 402 EXPECT_EQ(GetController(controllers_, APPS)->state(), |
| 418 DataTypeController::MODEL_STARTING); | 403 DataTypeController::MODEL_STARTING); |
| 419 | 404 |
| 420 testing::Mock::VerifyAndClearExpectations(&delegate_); | 405 testing::Mock::VerifyAndClearExpectations(&delegate_); |
| 421 | 406 |
| 422 EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure()); | 407 EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure()); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 444 GetController(controllers_, BOOKMARKS) | 429 GetController(controllers_, BOOKMARKS) |
| 445 ->SetShouldLoadModelBeforeConfigure(true); | 430 ->SetShouldLoadModelBeforeConfigure(true); |
| 446 GetController(controllers_, APPS)->SetShouldLoadModelBeforeConfigure(true); | 431 GetController(controllers_, APPS)->SetShouldLoadModelBeforeConfigure(true); |
| 447 | 432 |
| 448 ModelAssociationManager model_association_manager(&controllers_, &delegate_); | 433 ModelAssociationManager model_association_manager(&controllers_, &delegate_); |
| 449 ModelTypeSet types(BOOKMARKS, APPS); | 434 ModelTypeSet types(BOOKMARKS, APPS); |
| 450 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); | 435 DataTypeManager::ConfigureResult expected_result(DataTypeManager::OK, types); |
| 451 | 436 |
| 452 // Apps will finish loading but bookmarks won't. | 437 // Apps will finish loading but bookmarks won't. |
| 453 // OnAllDataTypesReadyForConfigure shouldn't be called. | 438 // OnAllDataTypesReadyForConfigure shouldn't be called. |
| 454 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(BOOKMARKS)); | |
| 455 EXPECT_CALL(delegate_, OnSingleDataTypeWillStart(APPS)); | |
| 456 EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure()).Times(0); | 439 EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure()).Times(0); |
| 457 | 440 |
| 458 model_association_manager.Initialize(types); | 441 model_association_manager.Initialize(types); |
| 459 | 442 |
| 460 GetController(controllers_, APPS)->SimulateModelLoadFinishing(); | 443 GetController(controllers_, APPS)->SimulateModelLoadFinishing(); |
| 461 | 444 |
| 462 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 445 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 463 DataTypeController::MODEL_STARTING); | 446 DataTypeController::MODEL_STARTING); |
| 464 EXPECT_EQ(GetController(controllers_, APPS)->state(), | 447 EXPECT_EQ(GetController(controllers_, APPS)->state(), |
| 465 DataTypeController::MODEL_LOADED); | 448 DataTypeController::MODEL_LOADED); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 480 | 463 |
| 481 EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure()); | 464 EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure()); |
| 482 // Finish loading BOOKMARKS. This should trigger | 465 // Finish loading BOOKMARKS. This should trigger |
| 483 // OnAllDataTypesReadyForConfigure(). | 466 // OnAllDataTypesReadyForConfigure(). |
| 484 GetController(controllers_, BOOKMARKS)->SimulateModelLoadFinishing(); | 467 GetController(controllers_, BOOKMARKS)->SimulateModelLoadFinishing(); |
| 485 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), | 468 EXPECT_EQ(GetController(controllers_, BOOKMARKS)->state(), |
| 486 DataTypeController::MODEL_LOADED); | 469 DataTypeController::MODEL_LOADED); |
| 487 } | 470 } |
| 488 | 471 |
| 489 } // namespace syncer | 472 } // namespace syncer |
| OLD | NEW |