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