| 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 "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 WillOnce(Return(ProfileSyncComponentsFactory::SyncComponents( | 106 WillOnce(Return(ProfileSyncComponentsFactory::SyncComponents( |
| 107 model_associator_, change_processor_))); | 107 model_associator_, change_processor_))); |
| 108 } | 108 } |
| 109 | 109 |
| 110 void SetAssociateExpectations() { | 110 void SetAssociateExpectations() { |
| 111 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). | 111 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). |
| 112 WillOnce(Return(true)); | 112 WillOnce(Return(true)); |
| 113 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). | 113 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). |
| 114 WillOnce(DoAll(SetArgumentPointee<0>(true), Return(true))); | 114 WillOnce(DoAll(SetArgumentPointee<0>(true), Return(true))); |
| 115 EXPECT_CALL(*model_associator_, AssociateModels()). | 115 EXPECT_CALL(*model_associator_, AssociateModels()). |
| 116 WillOnce(Return(SyncError())); | 116 WillOnce(Return(csync::SyncError())); |
| 117 EXPECT_CALL(*dtc_mock_, RecordAssociationTime(_)); | 117 EXPECT_CALL(*dtc_mock_, RecordAssociationTime(_)); |
| 118 } | 118 } |
| 119 | 119 |
| 120 void SetActivateExpectations(DataTypeController::StartResult result) { | 120 void SetActivateExpectations(DataTypeController::StartResult result) { |
| 121 EXPECT_CALL(service_, ActivateDataType(_, _, _)); | 121 EXPECT_CALL(service_, ActivateDataType(_, _, _)); |
| 122 EXPECT_CALL(start_callback_, Run(result,_)); | 122 EXPECT_CALL(start_callback_, Run(result,_)); |
| 123 } | 123 } |
| 124 | 124 |
| 125 void SetStopExpectations() { | 125 void SetStopExpectations() { |
| 126 EXPECT_CALL(*dtc_mock_, CleanUpState()); | 126 EXPECT_CALL(*dtc_mock_, CleanUpState()); |
| 127 EXPECT_CALL(service_, DeactivateDataType(_)); | 127 EXPECT_CALL(service_, DeactivateDataType(_)); |
| 128 EXPECT_CALL(*model_associator_, DisassociateModels()). | 128 EXPECT_CALL(*model_associator_, DisassociateModels()). |
| 129 WillOnce(Return(SyncError())); | 129 WillOnce(Return(csync::SyncError())); |
| 130 } | 130 } |
| 131 | 131 |
| 132 void SetStartFailExpectations(DataTypeController::StartResult result) { | 132 void SetStartFailExpectations(DataTypeController::StartResult result) { |
| 133 if (DataTypeController::IsUnrecoverableResult(result)) | 133 if (DataTypeController::IsUnrecoverableResult(result)) |
| 134 EXPECT_CALL(*dtc_mock_, RecordUnrecoverableError(_, _)); | 134 EXPECT_CALL(*dtc_mock_, RecordUnrecoverableError(_, _)); |
| 135 EXPECT_CALL(*dtc_mock_, CleanUpState()); | 135 EXPECT_CALL(*dtc_mock_, CleanUpState()); |
| 136 EXPECT_CALL(*dtc_mock_, RecordStartFailure(result)); | 136 EXPECT_CALL(*dtc_mock_, RecordStartFailure(result)); |
| 137 EXPECT_CALL(start_callback_, Run(result,_)); | 137 EXPECT_CALL(start_callback_, Run(result,_)); |
| 138 } | 138 } |
| 139 | 139 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 EXPECT_EQ(DataTypeController::RUNNING, frontend_dtc_->state()); | 172 EXPECT_EQ(DataTypeController::RUNNING, frontend_dtc_->state()); |
| 173 } | 173 } |
| 174 | 174 |
| 175 TEST_F(SyncFrontendDataTypeControllerTest, StartFirstRun) { | 175 TEST_F(SyncFrontendDataTypeControllerTest, StartFirstRun) { |
| 176 SetStartExpectations(); | 176 SetStartExpectations(); |
| 177 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). | 177 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). |
| 178 WillOnce(Return(true)); | 178 WillOnce(Return(true)); |
| 179 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). | 179 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). |
| 180 WillOnce(DoAll(SetArgumentPointee<0>(false), Return(true))); | 180 WillOnce(DoAll(SetArgumentPointee<0>(false), Return(true))); |
| 181 EXPECT_CALL(*model_associator_, AssociateModels()). | 181 EXPECT_CALL(*model_associator_, AssociateModels()). |
| 182 WillOnce(Return(SyncError())); | 182 WillOnce(Return(csync::SyncError())); |
| 183 EXPECT_CALL(*dtc_mock_, RecordAssociationTime(_)); | 183 EXPECT_CALL(*dtc_mock_, RecordAssociationTime(_)); |
| 184 SetActivateExpectations(DataTypeController::OK_FIRST_RUN); | 184 SetActivateExpectations(DataTypeController::OK_FIRST_RUN); |
| 185 EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state()); | 185 EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state()); |
| 186 Start(); | 186 Start(); |
| 187 EXPECT_EQ(DataTypeController::RUNNING, frontend_dtc_->state()); | 187 EXPECT_EQ(DataTypeController::RUNNING, frontend_dtc_->state()); |
| 188 } | 188 } |
| 189 | 189 |
| 190 TEST_F(SyncFrontendDataTypeControllerTest, AbortDuringStartModels) { | 190 TEST_F(SyncFrontendDataTypeControllerTest, AbortDuringStartModels) { |
| 191 EXPECT_CALL(*dtc_mock_, StartModels()).WillOnce(Return(false)); | 191 EXPECT_CALL(*dtc_mock_, StartModels()).WillOnce(Return(false)); |
| 192 EXPECT_CALL(*dtc_mock_, CleanUpState()); | 192 EXPECT_CALL(*dtc_mock_, CleanUpState()); |
| 193 EXPECT_CALL(model_load_callback_, Run(_, _)); | 193 EXPECT_CALL(model_load_callback_, Run(_, _)); |
| 194 EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state()); | 194 EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state()); |
| 195 frontend_dtc_->LoadModels( | 195 frontend_dtc_->LoadModels( |
| 196 base::Bind(&ModelLoadCallbackMock::Run, | 196 base::Bind(&ModelLoadCallbackMock::Run, |
| 197 base::Unretained(&model_load_callback_))); | 197 base::Unretained(&model_load_callback_))); |
| 198 EXPECT_EQ(DataTypeController::MODEL_STARTING, frontend_dtc_->state()); | 198 EXPECT_EQ(DataTypeController::MODEL_STARTING, frontend_dtc_->state()); |
| 199 frontend_dtc_->Stop(); | 199 frontend_dtc_->Stop(); |
| 200 EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state()); | 200 EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state()); |
| 201 } | 201 } |
| 202 | 202 |
| 203 TEST_F(SyncFrontendDataTypeControllerTest, StartAssociationFailed) { | 203 TEST_F(SyncFrontendDataTypeControllerTest, StartAssociationFailed) { |
| 204 SetStartExpectations(); | 204 SetStartExpectations(); |
| 205 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). | 205 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). |
| 206 WillOnce(Return(true)); | 206 WillOnce(Return(true)); |
| 207 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). | 207 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). |
| 208 WillOnce(DoAll(SetArgumentPointee<0>(true), Return(true))); | 208 WillOnce(DoAll(SetArgumentPointee<0>(true), Return(true))); |
| 209 EXPECT_CALL(*model_associator_, AssociateModels()). | 209 EXPECT_CALL(*model_associator_, AssociateModels()). |
| 210 WillOnce(Return(SyncError(FROM_HERE, | 210 WillOnce(Return(csync::SyncError(FROM_HERE, |
| 211 "error", | 211 "error", |
| 212 syncable::PREFERENCES))); | 212 syncable::PREFERENCES))); |
| 213 | 213 |
| 214 EXPECT_CALL(*dtc_mock_, RecordAssociationTime(_)); | 214 EXPECT_CALL(*dtc_mock_, RecordAssociationTime(_)); |
| 215 SetStartFailExpectations(DataTypeController::ASSOCIATION_FAILED); | 215 SetStartFailExpectations(DataTypeController::ASSOCIATION_FAILED); |
| 216 // Set up association to fail with an association failed error. | 216 // Set up association to fail with an association failed error. |
| 217 EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state()); | 217 EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state()); |
| 218 Start(); | 218 Start(); |
| 219 EXPECT_EQ(DataTypeController::DISABLED, frontend_dtc_->state()); | 219 EXPECT_EQ(DataTypeController::DISABLED, frontend_dtc_->state()); |
| 220 } | 220 } |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 &FrontendDataTypeController::Stop)); | 266 &FrontendDataTypeController::Stop)); |
| 267 SetStopExpectations(); | 267 SetStopExpectations(); |
| 268 EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state()); | 268 EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state()); |
| 269 Start(); | 269 Start(); |
| 270 EXPECT_EQ(DataTypeController::RUNNING, frontend_dtc_->state()); | 270 EXPECT_EQ(DataTypeController::RUNNING, frontend_dtc_->state()); |
| 271 // This should cause frontend_dtc_->Stop() to be called. | 271 // This should cause frontend_dtc_->Stop() to be called. |
| 272 frontend_dtc_->OnSingleDatatypeUnrecoverableError(FROM_HERE, "Test"); | 272 frontend_dtc_->OnSingleDatatypeUnrecoverableError(FROM_HERE, "Test"); |
| 273 PumpLoop(); | 273 PumpLoop(); |
| 274 EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state()); | 274 EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state()); |
| 275 } | 275 } |
| OLD | NEW |