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

Side by Side Diff: components/sync/driver/model_association_manager_unittest.cc

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

Powered by Google App Engine
This is Rietveld 408576698