OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/sync/glue/data_type_manager_impl.h" | 5 #include "chrome/browser/sync/glue/data_type_manager_impl.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 MessageLoopForUI message_loop_; | 160 MessageLoopForUI message_loop_; |
161 BrowserThread ui_thread_; | 161 BrowserThread ui_thread_; |
162 DataTypeController::TypeMap controllers_; | 162 DataTypeController::TypeMap controllers_; |
163 SyncBackendHostMock backend_; | 163 SyncBackendHostMock backend_; |
164 NotificationObserverMock observer_; | 164 NotificationObserverMock observer_; |
165 NotificationRegistrar registrar_; | 165 NotificationRegistrar registrar_; |
166 std::set<syncable::ModelType> types_; | 166 std::set<syncable::ModelType> types_; |
167 }; | 167 }; |
168 | 168 |
169 TEST_F(DataTypeManagerImplTest, NoControllers) { | 169 TEST_F(DataTypeManagerImplTest, NoControllers) { |
170 DataTypeManagerImpl dtm(&backend_, controllers_); | 170 DataTypeManagerImpl dtm(&backend_, &controllers_); |
171 SetConfigureStartExpectation(); | 171 SetConfigureStartExpectation(); |
172 SetConfigureDoneExpectation(DataTypeManager::OK); | 172 SetConfigureDoneExpectation(DataTypeManager::OK); |
173 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 173 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
174 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); | 174 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); |
175 dtm.Stop(); | 175 dtm.Stop(); |
176 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); | 176 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); |
177 } | 177 } |
178 | 178 |
179 TEST_F(DataTypeManagerImplTest, ConfigureOne) { | 179 TEST_F(DataTypeManagerImplTest, ConfigureOne) { |
180 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); | 180 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); |
181 SetStartStopExpectations(bookmark_dtc); | 181 SetStartStopExpectations(bookmark_dtc); |
182 controllers_[syncable::BOOKMARKS] = bookmark_dtc; | 182 controllers_[syncable::BOOKMARKS] = bookmark_dtc; |
183 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); | 183 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); |
184 DataTypeManagerImpl dtm(&backend_, controllers_); | 184 DataTypeManagerImpl dtm(&backend_, &controllers_); |
185 types_.insert(syncable::BOOKMARKS); | 185 types_.insert(syncable::BOOKMARKS); |
186 SetConfigureStartExpectation(); | 186 SetConfigureStartExpectation(); |
187 SetConfigureDoneExpectation(DataTypeManager::OK); | 187 SetConfigureDoneExpectation(DataTypeManager::OK); |
188 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 188 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
189 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); | 189 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); |
190 dtm.Stop(); | 190 dtm.Stop(); |
191 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); | 191 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); |
192 } | 192 } |
193 | 193 |
194 TEST_F(DataTypeManagerImplTest, ConfigureOneStopWhileStarting) { | 194 TEST_F(DataTypeManagerImplTest, ConfigureOneStopWhileStarting) { |
195 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); | 195 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); |
196 SetBusyStartStopExpectations(bookmark_dtc, | 196 SetBusyStartStopExpectations(bookmark_dtc, |
197 DataTypeController::MODEL_STARTING); | 197 DataTypeController::MODEL_STARTING); |
198 controllers_[syncable::BOOKMARKS] = bookmark_dtc; | 198 controllers_[syncable::BOOKMARKS] = bookmark_dtc; |
199 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); | 199 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); |
200 DataTypeManagerImpl dtm(&backend_, controllers_); | 200 DataTypeManagerImpl dtm(&backend_, &controllers_); |
201 types_.insert(syncable::BOOKMARKS); | 201 types_.insert(syncable::BOOKMARKS); |
202 SetConfigureStartExpectation(); | 202 SetConfigureStartExpectation(); |
203 SetConfigureDoneExpectation(DataTypeManager::OK); | 203 SetConfigureDoneExpectation(DataTypeManager::OK); |
204 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 204 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
205 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); | 205 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); |
206 dtm.Stop(); | 206 dtm.Stop(); |
207 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); | 207 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); |
208 } | 208 } |
209 | 209 |
210 TEST_F(DataTypeManagerImplTest, ConfigureOneStopWhileAssociating) { | 210 TEST_F(DataTypeManagerImplTest, ConfigureOneStopWhileAssociating) { |
211 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); | 211 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); |
212 SetBusyStartStopExpectations(bookmark_dtc, DataTypeController::ASSOCIATING); | 212 SetBusyStartStopExpectations(bookmark_dtc, DataTypeController::ASSOCIATING); |
213 controllers_[syncable::BOOKMARKS] = bookmark_dtc; | 213 controllers_[syncable::BOOKMARKS] = bookmark_dtc; |
214 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); | 214 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); |
215 DataTypeManagerImpl dtm(&backend_, controllers_); | 215 DataTypeManagerImpl dtm(&backend_, &controllers_); |
216 types_.insert(syncable::BOOKMARKS); | 216 types_.insert(syncable::BOOKMARKS); |
217 SetConfigureStartExpectation(); | 217 SetConfigureStartExpectation(); |
218 SetConfigureDoneExpectation(DataTypeManager::OK); | 218 SetConfigureDoneExpectation(DataTypeManager::OK); |
219 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 219 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
220 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); | 220 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); |
221 dtm.Stop(); | 221 dtm.Stop(); |
222 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); | 222 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); |
223 } | 223 } |
224 | 224 |
225 TEST_F(DataTypeManagerImplTest, OneWaitingForCrypto) { | 225 TEST_F(DataTypeManagerImplTest, OneWaitingForCrypto) { |
226 DataTypeControllerMock* password_dtc = MakePasswordDTC(); | 226 DataTypeControllerMock* password_dtc = MakePasswordDTC(); |
227 EXPECT_CALL(*password_dtc, state()).Times(AtLeast(2)). | 227 EXPECT_CALL(*password_dtc, state()).Times(AtLeast(2)). |
228 WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); | 228 WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); |
229 EXPECT_CALL(*password_dtc, Start(_)). | 229 EXPECT_CALL(*password_dtc, Start(_)). |
230 WillOnce(InvokeCallback((DataTypeController::NEEDS_CRYPTO))); | 230 WillOnce(InvokeCallback((DataTypeController::NEEDS_CRYPTO))); |
231 | 231 |
232 controllers_[syncable::PASSWORDS] = password_dtc; | 232 controllers_[syncable::PASSWORDS] = password_dtc; |
233 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); | 233 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); |
234 | 234 |
235 DataTypeManagerImpl dtm(&backend_, controllers_); | 235 DataTypeManagerImpl dtm(&backend_, &controllers_); |
236 types_.insert(syncable::PASSWORDS); | 236 types_.insert(syncable::PASSWORDS); |
237 SetConfigureStartExpectation(); | 237 SetConfigureStartExpectation(); |
238 | 238 |
239 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 239 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
240 EXPECT_EQ(DataTypeManager::BLOCKED, dtm.state()); | 240 EXPECT_EQ(DataTypeManager::BLOCKED, dtm.state()); |
241 | 241 |
242 Mock::VerifyAndClearExpectations(&backend_); | 242 Mock::VerifyAndClearExpectations(&backend_); |
243 Mock::VerifyAndClearExpectations(&observer_); | 243 Mock::VerifyAndClearExpectations(&observer_); |
244 Mock::VerifyAndClearExpectations(password_dtc); | 244 Mock::VerifyAndClearExpectations(password_dtc); |
245 | 245 |
(...skipping 15 matching lines...) Expand all Loading... |
261 | 261 |
262 TEST_F(DataTypeManagerImplTest, ConfigureOneThenAnother) { | 262 TEST_F(DataTypeManagerImplTest, ConfigureOneThenAnother) { |
263 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); | 263 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); |
264 SetStartStopExpectations(bookmark_dtc); | 264 SetStartStopExpectations(bookmark_dtc); |
265 controllers_[syncable::BOOKMARKS] = bookmark_dtc; | 265 controllers_[syncable::BOOKMARKS] = bookmark_dtc; |
266 DataTypeControllerMock* preference_dtc = MakePreferenceDTC(); | 266 DataTypeControllerMock* preference_dtc = MakePreferenceDTC(); |
267 SetStartStopExpectations(preference_dtc); | 267 SetStartStopExpectations(preference_dtc); |
268 controllers_[syncable::PREFERENCES] = preference_dtc; | 268 controllers_[syncable::PREFERENCES] = preference_dtc; |
269 | 269 |
270 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(2); | 270 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(2); |
271 DataTypeManagerImpl dtm(&backend_, controllers_); | 271 DataTypeManagerImpl dtm(&backend_, &controllers_); |
272 types_.insert(syncable::BOOKMARKS); | 272 types_.insert(syncable::BOOKMARKS); |
273 | 273 |
274 SetConfigureStartExpectation(); | 274 SetConfigureStartExpectation(); |
275 SetConfigureDoneExpectation(DataTypeManager::OK); | 275 SetConfigureDoneExpectation(DataTypeManager::OK); |
276 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 276 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
277 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); | 277 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); |
278 | 278 |
279 types_.insert(syncable::PREFERENCES); | 279 types_.insert(syncable::PREFERENCES); |
280 SetConfigureStartExpectation(); | 280 SetConfigureStartExpectation(); |
281 SetConfigureDoneExpectation(DataTypeManager::OK); | 281 SetConfigureDoneExpectation(DataTypeManager::OK); |
282 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 282 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
283 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); | 283 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); |
284 | 284 |
285 dtm.Stop(); | 285 dtm.Stop(); |
286 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); | 286 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); |
287 } | 287 } |
288 | 288 |
289 TEST_F(DataTypeManagerImplTest, ConfigureOneThenSwitch) { | 289 TEST_F(DataTypeManagerImplTest, ConfigureOneThenSwitch) { |
290 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); | 290 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); |
291 SetStartStopExpectations(bookmark_dtc); | 291 SetStartStopExpectations(bookmark_dtc); |
292 controllers_[syncable::BOOKMARKS] = bookmark_dtc; | 292 controllers_[syncable::BOOKMARKS] = bookmark_dtc; |
293 DataTypeControllerMock* preference_dtc = MakePreferenceDTC(); | 293 DataTypeControllerMock* preference_dtc = MakePreferenceDTC(); |
294 SetStartStopExpectations(preference_dtc); | 294 SetStartStopExpectations(preference_dtc); |
295 controllers_[syncable::PREFERENCES] = preference_dtc; | 295 controllers_[syncable::PREFERENCES] = preference_dtc; |
296 | 296 |
297 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(2); | 297 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(2); |
298 DataTypeManagerImpl dtm(&backend_, controllers_); | 298 DataTypeManagerImpl dtm(&backend_, &controllers_); |
299 types_.insert(syncable::BOOKMARKS); | 299 types_.insert(syncable::BOOKMARKS); |
300 | 300 |
301 SetConfigureStartExpectation(); | 301 SetConfigureStartExpectation(); |
302 SetConfigureDoneExpectation(DataTypeManager::OK); | 302 SetConfigureDoneExpectation(DataTypeManager::OK); |
303 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 303 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
304 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); | 304 EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state()); |
305 | 305 |
306 types_.clear(); | 306 types_.clear(); |
307 types_.insert(syncable::PREFERENCES); | 307 types_.insert(syncable::PREFERENCES); |
308 SetConfigureStartExpectation(); | 308 SetConfigureStartExpectation(); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 EXPECT_CALL(*bookmark_dtc, Stop()).Times(1); | 342 EXPECT_CALL(*bookmark_dtc, Stop()).Times(1); |
343 EXPECT_CALL(*bookmark_dtc, state()). | 343 EXPECT_CALL(*bookmark_dtc, state()). |
344 WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); | 344 WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); |
345 } | 345 } |
346 controllers_[syncable::BOOKMARKS] = bookmark_dtc; | 346 controllers_[syncable::BOOKMARKS] = bookmark_dtc; |
347 | 347 |
348 DataTypeControllerMock* preference_dtc = MakePreferenceDTC(); | 348 DataTypeControllerMock* preference_dtc = MakePreferenceDTC(); |
349 SetStartStopExpectations(preference_dtc); | 349 SetStartStopExpectations(preference_dtc); |
350 controllers_[syncable::PREFERENCES] = preference_dtc; | 350 controllers_[syncable::PREFERENCES] = preference_dtc; |
351 | 351 |
352 DataTypeManagerImpl dtm(&backend_, controllers_); | 352 DataTypeManagerImpl dtm(&backend_, &controllers_); |
353 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)) | 353 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)) |
354 .WillOnce(Invoke(DoConfigureDataTypes)) | 354 .WillOnce(Invoke(DoConfigureDataTypes)) |
355 .WillOnce(DoAll(Invoke(DoConfigureDataTypes), | 355 .WillOnce(DoAll(Invoke(DoConfigureDataTypes), |
356 InvokeWithoutArgs(QuitMessageLoop))); | 356 InvokeWithoutArgs(QuitMessageLoop))); |
357 | 357 |
358 types_.insert(syncable::BOOKMARKS); | 358 types_.insert(syncable::BOOKMARKS); |
359 | 359 |
360 SetConfigureStartExpectation(); | 360 SetConfigureStartExpectation(); |
361 SetConfigureDoneExpectation(DataTypeManager::OK); | 361 SetConfigureDoneExpectation(DataTypeManager::OK); |
362 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 362 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
(...skipping 15 matching lines...) Expand all Loading... |
378 | 378 |
379 TEST_F(DataTypeManagerImplTest, OneFailingController) { | 379 TEST_F(DataTypeManagerImplTest, OneFailingController) { |
380 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); | 380 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); |
381 EXPECT_CALL(*bookmark_dtc, Start(_)). | 381 EXPECT_CALL(*bookmark_dtc, Start(_)). |
382 WillOnce(InvokeCallback((DataTypeController::ASSOCIATION_FAILED))); | 382 WillOnce(InvokeCallback((DataTypeController::ASSOCIATION_FAILED))); |
383 EXPECT_CALL(*bookmark_dtc, Stop()).Times(0); | 383 EXPECT_CALL(*bookmark_dtc, Stop()).Times(0); |
384 EXPECT_CALL(*bookmark_dtc, state()). | 384 EXPECT_CALL(*bookmark_dtc, state()). |
385 WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); | 385 WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); |
386 controllers_[syncable::BOOKMARKS] = bookmark_dtc; | 386 controllers_[syncable::BOOKMARKS] = bookmark_dtc; |
387 | 387 |
388 DataTypeManagerImpl dtm(&backend_, controllers_); | 388 DataTypeManagerImpl dtm(&backend_, &controllers_); |
389 SetConfigureStartExpectation(); | 389 SetConfigureStartExpectation(); |
390 SetConfigureDoneExpectation(DataTypeManager::ASSOCIATION_FAILED); | 390 SetConfigureDoneExpectation(DataTypeManager::ASSOCIATION_FAILED); |
391 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); | 391 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); |
392 | 392 |
393 types_.insert(syncable::BOOKMARKS); | 393 types_.insert(syncable::BOOKMARKS); |
394 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 394 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
395 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); | 395 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); |
396 } | 396 } |
397 | 397 |
398 TEST_F(DataTypeManagerImplTest, StopWhileInFlight) { | 398 TEST_F(DataTypeManagerImplTest, StopWhileInFlight) { |
399 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); | 399 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); |
400 SetStartStopExpectations(bookmark_dtc); | 400 SetStartStopExpectations(bookmark_dtc); |
401 controllers_[syncable::BOOKMARKS] = bookmark_dtc; | 401 controllers_[syncable::BOOKMARKS] = bookmark_dtc; |
402 | 402 |
403 DataTypeControllerMock* preference_dtc = MakePreferenceDTC(); | 403 DataTypeControllerMock* preference_dtc = MakePreferenceDTC(); |
404 // Save the callback here so we can interrupt startup. | 404 // Save the callback here so we can interrupt startup. |
405 DataTypeController::StartCallback* callback; | 405 DataTypeController::StartCallback* callback; |
406 EXPECT_CALL(*preference_dtc, Start(_)). | 406 EXPECT_CALL(*preference_dtc, Start(_)). |
407 WillOnce(SaveArg<0>(&callback)); | 407 WillOnce(SaveArg<0>(&callback)); |
408 EXPECT_CALL(*preference_dtc, state()). | 408 EXPECT_CALL(*preference_dtc, state()). |
409 WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); | 409 WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); |
410 controllers_[syncable::PREFERENCES] = preference_dtc; | 410 controllers_[syncable::PREFERENCES] = preference_dtc; |
411 | 411 |
412 DataTypeManagerImpl dtm(&backend_, controllers_); | 412 DataTypeManagerImpl dtm(&backend_, &controllers_); |
413 SetConfigureStartExpectation(); | 413 SetConfigureStartExpectation(); |
414 SetConfigureDoneExpectation(DataTypeManager::ABORTED); | 414 SetConfigureDoneExpectation(DataTypeManager::ABORTED); |
415 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); | 415 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); |
416 | 416 |
417 types_.insert(syncable::BOOKMARKS); | 417 types_.insert(syncable::BOOKMARKS); |
418 types_.insert(syncable::PREFERENCES); | 418 types_.insert(syncable::PREFERENCES); |
419 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 419 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
420 // Configure should stop in the CONFIGURING state because we are | 420 // Configure should stop in the CONFIGURING state because we are |
421 // waiting for the preferences callback to be invoked. | 421 // waiting for the preferences callback to be invoked. |
422 EXPECT_EQ(DataTypeManager::CONFIGURING, dtm.state()); | 422 EXPECT_EQ(DataTypeManager::CONFIGURING, dtm.state()); |
(...skipping 11 matching lines...) Expand all Loading... |
434 controllers_[syncable::BOOKMARKS] = bookmark_dtc; | 434 controllers_[syncable::BOOKMARKS] = bookmark_dtc; |
435 | 435 |
436 DataTypeControllerMock* preference_dtc = MakePreferenceDTC(); | 436 DataTypeControllerMock* preference_dtc = MakePreferenceDTC(); |
437 EXPECT_CALL(*preference_dtc, Start(_)). | 437 EXPECT_CALL(*preference_dtc, Start(_)). |
438 WillOnce(InvokeCallback((DataTypeController::ASSOCIATION_FAILED))); | 438 WillOnce(InvokeCallback((DataTypeController::ASSOCIATION_FAILED))); |
439 EXPECT_CALL(*preference_dtc, Stop()).Times(0); | 439 EXPECT_CALL(*preference_dtc, Stop()).Times(0); |
440 EXPECT_CALL(*preference_dtc, state()). | 440 EXPECT_CALL(*preference_dtc, state()). |
441 WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); | 441 WillRepeatedly(Return(DataTypeController::NOT_RUNNING)); |
442 controllers_[syncable::PREFERENCES] = preference_dtc; | 442 controllers_[syncable::PREFERENCES] = preference_dtc; |
443 | 443 |
444 DataTypeManagerImpl dtm(&backend_, controllers_); | 444 DataTypeManagerImpl dtm(&backend_, &controllers_); |
445 SetConfigureStartExpectation(); | 445 SetConfigureStartExpectation(); |
446 SetConfigureDoneExpectation(DataTypeManager::ASSOCIATION_FAILED); | 446 SetConfigureDoneExpectation(DataTypeManager::ASSOCIATION_FAILED); |
447 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); | 447 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)).Times(1); |
448 | 448 |
449 types_.insert(syncable::BOOKMARKS); | 449 types_.insert(syncable::BOOKMARKS); |
450 types_.insert(syncable::PREFERENCES); | 450 types_.insert(syncable::PREFERENCES); |
451 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 451 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
452 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); | 452 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); |
453 } | 453 } |
454 | 454 |
455 TEST_F(DataTypeManagerImplTest, ConfigureWhileDownloadPending) { | 455 TEST_F(DataTypeManagerImplTest, ConfigureWhileDownloadPending) { |
456 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); | 456 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); |
457 SetStartStopExpectations(bookmark_dtc); | 457 SetStartStopExpectations(bookmark_dtc); |
458 controllers_[syncable::BOOKMARKS] = bookmark_dtc; | 458 controllers_[syncable::BOOKMARKS] = bookmark_dtc; |
459 | 459 |
460 DataTypeControllerMock* preference_dtc = MakePreferenceDTC(); | 460 DataTypeControllerMock* preference_dtc = MakePreferenceDTC(); |
461 SetStartStopExpectations(preference_dtc); | 461 SetStartStopExpectations(preference_dtc); |
462 controllers_[syncable::PREFERENCES] = preference_dtc; | 462 controllers_[syncable::PREFERENCES] = preference_dtc; |
463 | 463 |
464 DataTypeManagerImpl dtm(&backend_, controllers_); | 464 DataTypeManagerImpl dtm(&backend_, &controllers_); |
465 SetConfigureStartExpectation(); | 465 SetConfigureStartExpectation(); |
466 SetConfigureDoneExpectation(DataTypeManager::OK); | 466 SetConfigureDoneExpectation(DataTypeManager::OK); |
467 base::Callback<void(bool)> task; | 467 base::Callback<void(bool)> task; |
468 // Grab the task the first time this is called so we can configure | 468 // Grab the task the first time this is called so we can configure |
469 // before it is finished. | 469 // before it is finished. |
470 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)). | 470 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)). |
471 WillOnce(SaveArg<3>(&task)). | 471 WillOnce(SaveArg<3>(&task)). |
472 WillOnce(DoDefault()); | 472 WillOnce(DoDefault()); |
473 | 473 |
474 types_.insert(syncable::BOOKMARKS); | 474 types_.insert(syncable::BOOKMARKS); |
(...skipping 13 matching lines...) Expand all Loading... |
488 | 488 |
489 dtm.Stop(); | 489 dtm.Stop(); |
490 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); | 490 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); |
491 } | 491 } |
492 | 492 |
493 TEST_F(DataTypeManagerImplTest, StopWhileDownloadPending) { | 493 TEST_F(DataTypeManagerImplTest, StopWhileDownloadPending) { |
494 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); | 494 DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC(); |
495 SetNotUsedExpectations(bookmark_dtc); | 495 SetNotUsedExpectations(bookmark_dtc); |
496 controllers_[syncable::BOOKMARKS] = bookmark_dtc; | 496 controllers_[syncable::BOOKMARKS] = bookmark_dtc; |
497 | 497 |
498 DataTypeManagerImpl dtm(&backend_, controllers_); | 498 DataTypeManagerImpl dtm(&backend_, &controllers_); |
499 SetConfigureStartExpectation(); | 499 SetConfigureStartExpectation(); |
500 SetConfigureDoneExpectation(DataTypeManager::ABORTED); | 500 SetConfigureDoneExpectation(DataTypeManager::ABORTED); |
501 base::Callback<void(bool)> task; | 501 base::Callback<void(bool)> task; |
502 // Grab the task the first time this is called so we can stop | 502 // Grab the task the first time this is called so we can stop |
503 // before it is finished. | 503 // before it is finished. |
504 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)). | 504 EXPECT_CALL(backend_, ConfigureDataTypes(_, _, _, _, _)). |
505 WillOnce(SaveArg<3>(&task)); | 505 WillOnce(SaveArg<3>(&task)); |
506 | 506 |
507 types_.insert(syncable::BOOKMARKS); | 507 types_.insert(syncable::BOOKMARKS); |
508 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); | 508 dtm.Configure(types_, sync_api::CONFIGURE_REASON_RECONFIGURATION); |
509 // Configure should stop in the DOWNLOAD_PENDING state because we | 509 // Configure should stop in the DOWNLOAD_PENDING state because we |
510 // are waiting for the download ready task to be run. | 510 // are waiting for the download ready task to be run. |
511 EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm.state()); | 511 EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm.state()); |
512 | 512 |
513 dtm.Stop(); | 513 dtm.Stop(); |
514 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); | 514 EXPECT_EQ(DataTypeManager::STOPPED, dtm.state()); |
515 | 515 |
516 // It should be perfectly safe to run this task even though the DTM | 516 // It should be perfectly safe to run this task even though the DTM |
517 // has been stopped. | 517 // has been stopped. |
518 task.Run(true); | 518 task.Run(true); |
519 } | 519 } |
OLD | NEW |