| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_bookmarks/bookmark_data_type_controller.h" | 5 #include "components/sync_bookmarks/bookmark_data_type_controller.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 using sync_bookmarks::BookmarkDataTypeController; | 32 using sync_bookmarks::BookmarkDataTypeController; |
| 33 using syncer::ChangeProcessorMock; | 33 using syncer::ChangeProcessorMock; |
| 34 using syncer::DataTypeController; | 34 using syncer::DataTypeController; |
| 35 using syncer::ModelAssociatorMock; | 35 using syncer::ModelAssociatorMock; |
| 36 using syncer::ModelLoadCallbackMock; | 36 using syncer::ModelLoadCallbackMock; |
| 37 using syncer::StartCallbackMock; | 37 using syncer::StartCallbackMock; |
| 38 using testing::_; | 38 using testing::_; |
| 39 using testing::DoAll; | 39 using testing::DoAll; |
| 40 using testing::InvokeWithoutArgs; | 40 using testing::InvokeWithoutArgs; |
| 41 using testing::Return; | 41 using testing::Return; |
| 42 using testing::SetArgumentPointee; | 42 using testing::SetArgPointee; |
| 43 | 43 |
| 44 namespace { | 44 namespace { |
| 45 | 45 |
| 46 class HistoryMock : public history::HistoryService { | 46 class HistoryMock : public history::HistoryService { |
| 47 public: | 47 public: |
| 48 HistoryMock() : history::HistoryService() {} | 48 HistoryMock() : history::HistoryService() {} |
| 49 MOCK_METHOD0(BackendLoaded, bool(void)); | 49 MOCK_METHOD0(BackendLoaded, bool(void)); |
| 50 | 50 |
| 51 ~HistoryMock() override {} | 51 ~HistoryMock() override {} |
| 52 }; | 52 }; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 | 99 |
| 100 void SetStartExpectations() { | 100 void SetStartExpectations() { |
| 101 EXPECT_CALL(*history_service_.get(), BackendLoaded()) | 101 EXPECT_CALL(*history_service_.get(), BackendLoaded()) |
| 102 .WillRepeatedly(Return(true)); | 102 .WillRepeatedly(Return(true)); |
| 103 EXPECT_CALL(model_load_callback_, Run(_, _)); | 103 EXPECT_CALL(model_load_callback_, Run(_, _)); |
| 104 } | 104 } |
| 105 | 105 |
| 106 void SetAssociateExpectations() { | 106 void SetAssociateExpectations() { |
| 107 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). | 107 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). |
| 108 WillRepeatedly(Return(true)); | 108 WillRepeatedly(Return(true)); |
| 109 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). | 109 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)) |
| 110 WillRepeatedly(DoAll(SetArgumentPointee<0>(true), Return(true))); | 110 .WillRepeatedly(DoAll(SetArgPointee<0>(true), Return(true))); |
| 111 EXPECT_CALL(*model_associator_, AssociateModels(_, _)). | 111 EXPECT_CALL(*model_associator_, AssociateModels(_, _)). |
| 112 WillRepeatedly(Return(syncer::SyncError())); | 112 WillRepeatedly(Return(syncer::SyncError())); |
| 113 } | 113 } |
| 114 | 114 |
| 115 void SetStopExpectations() { | 115 void SetStopExpectations() { |
| 116 EXPECT_CALL(*model_associator_, DisassociateModels()). | 116 EXPECT_CALL(*model_associator_, DisassociateModels()). |
| 117 WillOnce(Return(syncer::SyncError())); | 117 WillOnce(Return(syncer::SyncError())); |
| 118 } | 118 } |
| 119 | 119 |
| 120 void Start() { | 120 void Start() { |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 | 198 |
| 199 // Send the notification that the history service has finished loading the db. | 199 // Send the notification that the history service has finished loading the db. |
| 200 NotifyHistoryServiceLoaded(); | 200 NotifyHistoryServiceLoaded(); |
| 201 EXPECT_EQ(DataTypeController::MODEL_LOADED, bookmark_dtc_->state()); | 201 EXPECT_EQ(DataTypeController::MODEL_LOADED, bookmark_dtc_->state()); |
| 202 } | 202 } |
| 203 | 203 |
| 204 TEST_F(SyncBookmarkDataTypeControllerTest, StartFirstRun) { | 204 TEST_F(SyncBookmarkDataTypeControllerTest, StartFirstRun) { |
| 205 CreateBookmarkModel(LOAD_MODEL); | 205 CreateBookmarkModel(LOAD_MODEL); |
| 206 SetStartExpectations(); | 206 SetStartExpectations(); |
| 207 SetAssociateExpectations(); | 207 SetAssociateExpectations(); |
| 208 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). | 208 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)) |
| 209 WillRepeatedly(DoAll(SetArgumentPointee<0>(false), Return(true))); | 209 .WillRepeatedly(DoAll(SetArgPointee<0>(false), Return(true))); |
| 210 EXPECT_CALL(start_callback_, Run(DataTypeController::OK_FIRST_RUN, _, _)); | 210 EXPECT_CALL(start_callback_, Run(DataTypeController::OK_FIRST_RUN, _, _)); |
| 211 Start(); | 211 Start(); |
| 212 } | 212 } |
| 213 | 213 |
| 214 TEST_F(SyncBookmarkDataTypeControllerTest, StartBusy) { | 214 TEST_F(SyncBookmarkDataTypeControllerTest, StartBusy) { |
| 215 CreateBookmarkModel(LOAD_MODEL); | 215 CreateBookmarkModel(LOAD_MODEL); |
| 216 EXPECT_CALL(*history_service_.get(), BackendLoaded()) | 216 EXPECT_CALL(*history_service_.get(), BackendLoaded()) |
| 217 .WillRepeatedly(Return(false)); | 217 .WillRepeatedly(Return(false)); |
| 218 | 218 |
| 219 EXPECT_CALL(model_load_callback_, Run(_, _)); | 219 EXPECT_CALL(model_load_callback_, Run(_, _)); |
| 220 bookmark_dtc_->LoadModels( | 220 bookmark_dtc_->LoadModels( |
| 221 base::Bind(&ModelLoadCallbackMock::Run, | 221 base::Bind(&ModelLoadCallbackMock::Run, |
| 222 base::Unretained(&model_load_callback_))); | 222 base::Unretained(&model_load_callback_))); |
| 223 bookmark_dtc_->LoadModels( | 223 bookmark_dtc_->LoadModels( |
| 224 base::Bind(&ModelLoadCallbackMock::Run, | 224 base::Bind(&ModelLoadCallbackMock::Run, |
| 225 base::Unretained(&model_load_callback_))); | 225 base::Unretained(&model_load_callback_))); |
| 226 } | 226 } |
| 227 | 227 |
| 228 TEST_F(SyncBookmarkDataTypeControllerTest, StartOk) { | 228 TEST_F(SyncBookmarkDataTypeControllerTest, StartOk) { |
| 229 CreateBookmarkModel(LOAD_MODEL); | 229 CreateBookmarkModel(LOAD_MODEL); |
| 230 SetStartExpectations(); | 230 SetStartExpectations(); |
| 231 SetAssociateExpectations(); | 231 SetAssociateExpectations(); |
| 232 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). | 232 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)) |
| 233 WillRepeatedly(DoAll(SetArgumentPointee<0>(true), Return(true))); | 233 .WillRepeatedly(DoAll(SetArgPointee<0>(true), Return(true))); |
| 234 | 234 |
| 235 EXPECT_CALL(start_callback_, Run(DataTypeController::OK, _, _)); | 235 EXPECT_CALL(start_callback_, Run(DataTypeController::OK, _, _)); |
| 236 Start(); | 236 Start(); |
| 237 } | 237 } |
| 238 | 238 |
| 239 TEST_F(SyncBookmarkDataTypeControllerTest, StartAssociationFailed) { | 239 TEST_F(SyncBookmarkDataTypeControllerTest, StartAssociationFailed) { |
| 240 CreateBookmarkModel(LOAD_MODEL); | 240 CreateBookmarkModel(LOAD_MODEL); |
| 241 SetStartExpectations(); | 241 SetStartExpectations(); |
| 242 // Set up association to fail. | 242 // Set up association to fail. |
| 243 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). | 243 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). |
| 244 WillRepeatedly(Return(true)); | 244 WillRepeatedly(Return(true)); |
| 245 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). | 245 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)) |
| 246 WillRepeatedly(DoAll(SetArgumentPointee<0>(true), Return(true))); | 246 .WillRepeatedly(DoAll(SetArgPointee<0>(true), Return(true))); |
| 247 EXPECT_CALL(*model_associator_, AssociateModels(_, _)). | 247 EXPECT_CALL(*model_associator_, AssociateModels(_, _)). |
| 248 WillRepeatedly(Return(syncer::SyncError(FROM_HERE, | 248 WillRepeatedly(Return(syncer::SyncError(FROM_HERE, |
| 249 syncer::SyncError::DATATYPE_ERROR, | 249 syncer::SyncError::DATATYPE_ERROR, |
| 250 "error", | 250 "error", |
| 251 syncer::BOOKMARKS))); | 251 syncer::BOOKMARKS))); |
| 252 | 252 |
| 253 EXPECT_CALL(start_callback_, | 253 EXPECT_CALL(start_callback_, |
| 254 Run(DataTypeController::ASSOCIATION_FAILED, _, _)); | 254 Run(DataTypeController::ASSOCIATION_FAILED, _, _)); |
| 255 Start(); | 255 Start(); |
| 256 EXPECT_EQ(DataTypeController::DISABLED, bookmark_dtc_->state()); | 256 EXPECT_EQ(DataTypeController::DISABLED, bookmark_dtc_->state()); |
| 257 } | 257 } |
| 258 | 258 |
| 259 TEST_F(SyncBookmarkDataTypeControllerTest, | 259 TEST_F(SyncBookmarkDataTypeControllerTest, |
| 260 StartAssociationTriggersUnrecoverableError) { | 260 StartAssociationTriggersUnrecoverableError) { |
| 261 CreateBookmarkModel(LOAD_MODEL); | 261 CreateBookmarkModel(LOAD_MODEL); |
| 262 SetStartExpectations(); | 262 SetStartExpectations(); |
| 263 // Set up association to fail with an unrecoverable error. | 263 // Set up association to fail with an unrecoverable error. |
| 264 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). | 264 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). |
| 265 WillRepeatedly(Return(true)); | 265 WillRepeatedly(Return(true)); |
| 266 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). | 266 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)) |
| 267 WillRepeatedly(DoAll(SetArgumentPointee<0>(false), Return(false))); | 267 .WillRepeatedly(DoAll(SetArgPointee<0>(false), Return(false))); |
| 268 EXPECT_CALL(start_callback_, | 268 EXPECT_CALL(start_callback_, |
| 269 Run(DataTypeController::UNRECOVERABLE_ERROR, _, _)); | 269 Run(DataTypeController::UNRECOVERABLE_ERROR, _, _)); |
| 270 Start(); | 270 Start(); |
| 271 EXPECT_EQ(DataTypeController::NOT_RUNNING, bookmark_dtc_->state()); | 271 EXPECT_EQ(DataTypeController::NOT_RUNNING, bookmark_dtc_->state()); |
| 272 } | 272 } |
| 273 | 273 |
| 274 TEST_F(SyncBookmarkDataTypeControllerTest, StartAborted) { | 274 TEST_F(SyncBookmarkDataTypeControllerTest, StartAborted) { |
| 275 CreateBookmarkModel(LOAD_MODEL); | 275 CreateBookmarkModel(LOAD_MODEL); |
| 276 EXPECT_CALL(*history_service_.get(), BackendLoaded()) | 276 EXPECT_CALL(*history_service_.get(), BackendLoaded()) |
| 277 .WillRepeatedly(Return(false)); | 277 .WillRepeatedly(Return(false)); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 291 SetStopExpectations(); | 291 SetStopExpectations(); |
| 292 | 292 |
| 293 EXPECT_EQ(DataTypeController::NOT_RUNNING, bookmark_dtc_->state()); | 293 EXPECT_EQ(DataTypeController::NOT_RUNNING, bookmark_dtc_->state()); |
| 294 | 294 |
| 295 EXPECT_CALL(start_callback_, Run(DataTypeController::OK, _, _)); | 295 EXPECT_CALL(start_callback_, Run(DataTypeController::OK, _, _)); |
| 296 Start(); | 296 Start(); |
| 297 EXPECT_EQ(DataTypeController::RUNNING, bookmark_dtc_->state()); | 297 EXPECT_EQ(DataTypeController::RUNNING, bookmark_dtc_->state()); |
| 298 bookmark_dtc_->Stop(); | 298 bookmark_dtc_->Stop(); |
| 299 EXPECT_EQ(DataTypeController::NOT_RUNNING, bookmark_dtc_->state()); | 299 EXPECT_EQ(DataTypeController::NOT_RUNNING, bookmark_dtc_->state()); |
| 300 } | 300 } |
| OLD | NEW |