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

Side by Side Diff: chrome/browser/sync/glue/non_frontend_data_type_controller_unittest.cc

Issue 11275088: Remove implicit scoped_refptr operator T* Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 8 years, 1 month 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 (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/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 &service_, 127 &service_,
128 dtc_mock_.get()); 128 dtc_mock_.get());
129 } 129 }
130 130
131 virtual void TearDown() { 131 virtual void TearDown() {
132 db_thread_.Stop(); 132 db_thread_.Stop();
133 } 133 }
134 134
135 protected: 135 protected:
136 void SetStartExpectations() { 136 void SetStartExpectations() {
137 EXPECT_CALL(*dtc_mock_, StartModels()).WillOnce(Return(true)); 137 EXPECT_CALL(*dtc_mock_.get(), StartModels()).WillOnce(Return(true));
138 EXPECT_CALL(model_load_callback_, Run(_, _)); 138 EXPECT_CALL(model_load_callback_, Run(_, _));
139 model_associator_ = new ModelAssociatorMock(); 139 model_associator_ = new ModelAssociatorMock();
140 change_processor_ = new ChangeProcessorMock(); 140 change_processor_ = new ChangeProcessorMock();
141 EXPECT_CALL(*profile_sync_factory_, CreateBookmarkSyncComponents(_, _)). 141 EXPECT_CALL(*profile_sync_factory_, CreateBookmarkSyncComponents(_, _)).
142 WillOnce(Return(ProfileSyncComponentsFactory::SyncComponents( 142 WillOnce(Return(ProfileSyncComponentsFactory::SyncComponents(
143 model_associator_, change_processor_))); 143 model_associator_, change_processor_)));
144 } 144 }
145 145
146 void SetAssociateExpectations() { 146 void SetAssociateExpectations() {
147 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). 147 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()).
148 WillOnce(Return(true)); 148 WillOnce(Return(true));
149 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). 149 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)).
150 WillOnce(DoAll(SetArgumentPointee<0>(true), Return(true))); 150 WillOnce(DoAll(SetArgumentPointee<0>(true), Return(true)));
151 EXPECT_CALL(*model_associator_, AssociateModels()). 151 EXPECT_CALL(*model_associator_, AssociateModels()).
152 WillOnce(Return(syncer::SyncError())); 152 WillOnce(Return(syncer::SyncError()));
153 EXPECT_CALL(*dtc_mock_, RecordAssociationTime(_)); 153 EXPECT_CALL(*dtc_mock_.get(), RecordAssociationTime(_));
154 } 154 }
155 155
156 void SetActivateExpectations(DataTypeController::StartResult result) { 156 void SetActivateExpectations(DataTypeController::StartResult result) {
157 EXPECT_CALL(service_, ActivateDataType(_, _, _)); 157 EXPECT_CALL(service_, ActivateDataType(_, _, _));
158 EXPECT_CALL(start_callback_, Run(result,_)); 158 EXPECT_CALL(start_callback_, Run(result,_));
159 } 159 }
160 160
161 void SetStopExpectations() { 161 void SetStopExpectations() {
162 EXPECT_CALL(*dtc_mock_, StopModels()); 162 EXPECT_CALL(*dtc_mock_.get(), StopModels());
163 EXPECT_CALL(service_, DeactivateDataType(_)); 163 EXPECT_CALL(service_, DeactivateDataType(_));
164 EXPECT_CALL(*model_associator_, DisassociateModels()). 164 EXPECT_CALL(*model_associator_, DisassociateModels()).
165 WillOnce(Return(syncer::SyncError())); 165 WillOnce(Return(syncer::SyncError()));
166 } 166 }
167 167
168 void SetStartFailExpectations(DataTypeController::StartResult result) { 168 void SetStartFailExpectations(DataTypeController::StartResult result) {
169 EXPECT_CALL(*dtc_mock_, StopModels()); 169 EXPECT_CALL(*dtc_mock_.get(), StopModels());
170 if (DataTypeController::IsUnrecoverableResult(result)) 170 if (DataTypeController::IsUnrecoverableResult(result))
171 EXPECT_CALL(*dtc_mock_, RecordUnrecoverableError(_, _)); 171 EXPECT_CALL(*dtc_mock_.get(), RecordUnrecoverableError(_, _));
172 if (model_associator_) { 172 if (model_associator_) {
173 EXPECT_CALL(*model_associator_, DisassociateModels()). 173 EXPECT_CALL(*model_associator_, DisassociateModels()).
174 WillOnce(Return(syncer::SyncError())); 174 WillOnce(Return(syncer::SyncError()));
175 } 175 }
176 EXPECT_CALL(*dtc_mock_, RecordStartFailure(result)); 176 EXPECT_CALL(*dtc_mock_.get(), RecordStartFailure(result));
177 EXPECT_CALL(start_callback_, Run(result,_)); 177 EXPECT_CALL(start_callback_, Run(result,_));
178 } 178 }
179 179
180 static void SignalDone(WaitableEvent* done) { 180 static void SignalDone(WaitableEvent* done) {
181 done->Signal(); 181 done->Signal();
182 } 182 }
183 183
184 void WaitForDTC() { 184 void WaitForDTC() {
185 WaitableEvent done(true, false); 185 WaitableEvent done(true, false);
186 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, 186 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 } 226 }
227 227
228 TEST_F(SyncNonFrontendDataTypeControllerTest, StartFirstRun) { 228 TEST_F(SyncNonFrontendDataTypeControllerTest, StartFirstRun) {
229 SetStartExpectations(); 229 SetStartExpectations();
230 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). 230 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()).
231 WillOnce(Return(true)); 231 WillOnce(Return(true));
232 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). 232 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)).
233 WillOnce(DoAll(SetArgumentPointee<0>(false), Return(true))); 233 WillOnce(DoAll(SetArgumentPointee<0>(false), Return(true)));
234 EXPECT_CALL(*model_associator_, AssociateModels()). 234 EXPECT_CALL(*model_associator_, AssociateModels()).
235 WillOnce(Return(syncer::SyncError())); 235 WillOnce(Return(syncer::SyncError()));
236 EXPECT_CALL(*dtc_mock_, RecordAssociationTime(_)); 236 EXPECT_CALL(*dtc_mock_.get(), RecordAssociationTime(_));
237 SetActivateExpectations(DataTypeController::OK_FIRST_RUN); 237 SetActivateExpectations(DataTypeController::OK_FIRST_RUN);
238 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state()); 238 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
239 Start(); 239 Start();
240 WaitForDTC(); 240 WaitForDTC();
241 EXPECT_EQ(DataTypeController::RUNNING, non_frontend_dtc_->state()); 241 EXPECT_EQ(DataTypeController::RUNNING, non_frontend_dtc_->state());
242 } 242 }
243 243
244 TEST_F(SyncNonFrontendDataTypeControllerTest, StartAssociationFailed) { 244 TEST_F(SyncNonFrontendDataTypeControllerTest, StartAssociationFailed) {
245 SetStartExpectations(); 245 SetStartExpectations();
246 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). 246 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()).
247 WillOnce(Return(true)); 247 WillOnce(Return(true));
248 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). 248 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)).
249 WillOnce(DoAll(SetArgumentPointee<0>(true), Return(true))); 249 WillOnce(DoAll(SetArgumentPointee<0>(true), Return(true)));
250 EXPECT_CALL(*model_associator_, AssociateModels()). 250 EXPECT_CALL(*model_associator_, AssociateModels()).
251 WillOnce( 251 WillOnce(
252 Return(syncer::SyncError(FROM_HERE, "Error", syncer::AUTOFILL))); 252 Return(syncer::SyncError(FROM_HERE, "Error", syncer::AUTOFILL)));
253 EXPECT_CALL(*dtc_mock_, RecordAssociationTime(_)); 253 EXPECT_CALL(*dtc_mock_.get(), RecordAssociationTime(_));
254 SetStartFailExpectations(DataTypeController::ASSOCIATION_FAILED); 254 SetStartFailExpectations(DataTypeController::ASSOCIATION_FAILED);
255 // Set up association to fail with an association failed error. 255 // Set up association to fail with an association failed error.
256 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state()); 256 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
257 Start(); 257 Start();
258 WaitForDTC(); 258 WaitForDTC();
259 EXPECT_EQ(DataTypeController::DISABLED, non_frontend_dtc_->state()); 259 EXPECT_EQ(DataTypeController::DISABLED, non_frontend_dtc_->state());
260 } 260 }
261 261
262 TEST_F(SyncNonFrontendDataTypeControllerTest, 262 TEST_F(SyncNonFrontendDataTypeControllerTest,
263 StartAssociationTriggersUnrecoverableError) { 263 StartAssociationTriggersUnrecoverableError) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). 298 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)).
299 WillOnce(DoAll( 299 WillOnce(DoAll(
300 SignalEvent(&wait_for_db_thread_pause), 300 SignalEvent(&wait_for_db_thread_pause),
301 WaitOnEvent(&pause_db_thread), 301 WaitOnEvent(&pause_db_thread),
302 SetArgumentPointee<0>(true), 302 SetArgumentPointee<0>(true),
303 Return(true))); 303 Return(true)));
304 EXPECT_CALL(*model_associator_, AbortAssociation()).WillOnce( 304 EXPECT_CALL(*model_associator_, AbortAssociation()).WillOnce(
305 SignalEvent(&pause_db_thread)); 305 SignalEvent(&pause_db_thread));
306 EXPECT_CALL(*model_associator_, AssociateModels()). 306 EXPECT_CALL(*model_associator_, AssociateModels()).
307 WillOnce(Return(syncer::SyncError())); 307 WillOnce(Return(syncer::SyncError()));
308 EXPECT_CALL(*dtc_mock_, RecordAssociationTime(_)); 308 EXPECT_CALL(*dtc_mock_.get(), RecordAssociationTime(_));
309 EXPECT_CALL(service_, ActivateDataType(_, _, _)); 309 EXPECT_CALL(service_, ActivateDataType(_, _, _));
310 EXPECT_CALL(start_callback_, Run(DataTypeController::ABORTED,_)); 310 EXPECT_CALL(start_callback_, Run(DataTypeController::ABORTED,_));
311 EXPECT_CALL(*dtc_mock_, RecordStartFailure(DataTypeController::ABORTED)); 311 EXPECT_CALL(
312 *dtc_mock_.get(), RecordStartFailure(DataTypeController::ABORTED));
312 SetStopExpectations(); 313 SetStopExpectations();
313 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state()); 314 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
314 Start(); 315 Start();
315 wait_for_db_thread_pause.Wait(); 316 wait_for_db_thread_pause.Wait();
316 non_frontend_dtc_->Stop(); 317 non_frontend_dtc_->Stop();
317 WaitForDTC(); 318 WaitForDTC();
318 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state()); 319 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
319 } 320 }
320 321
321 // Same as above but abort during the Activate call. 322 // Same as above but abort during the Activate call.
322 TEST_F(SyncNonFrontendDataTypeControllerTest, AbortDuringAssociationActivated) { 323 TEST_F(SyncNonFrontendDataTypeControllerTest, AbortDuringAssociationActivated) {
323 WaitableEvent wait_for_db_thread_pause(false, false); 324 WaitableEvent wait_for_db_thread_pause(false, false);
324 WaitableEvent pause_db_thread(false, false); 325 WaitableEvent pause_db_thread(false, false);
325 326
326 SetStartExpectations(); 327 SetStartExpectations();
327 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()). 328 EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()).
328 WillOnce(Return(true)); 329 WillOnce(Return(true));
329 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)). 330 EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)).
330 WillOnce(DoAll( 331 WillOnce(DoAll(
331 SetArgumentPointee<0>(true), 332 SetArgumentPointee<0>(true),
332 Return(true))); 333 Return(true)));
333 EXPECT_CALL(*model_associator_, AbortAssociation()).WillOnce( 334 EXPECT_CALL(*model_associator_, AbortAssociation()).WillOnce(
334 SignalEvent(&pause_db_thread)); 335 SignalEvent(&pause_db_thread));
335 EXPECT_CALL(*model_associator_, AssociateModels()). 336 EXPECT_CALL(*model_associator_, AssociateModels()).
336 WillOnce(Return(syncer::SyncError())); 337 WillOnce(Return(syncer::SyncError()));
337 EXPECT_CALL(*dtc_mock_, RecordAssociationTime(_)); 338 EXPECT_CALL(*dtc_mock_.get(), RecordAssociationTime(_));
338 EXPECT_CALL(service_, ActivateDataType(_, _, _)).WillOnce(DoAll( 339 EXPECT_CALL(service_, ActivateDataType(_, _, _)).WillOnce(DoAll(
339 SignalEvent(&wait_for_db_thread_pause), 340 SignalEvent(&wait_for_db_thread_pause),
340 WaitOnEvent(&pause_db_thread))); 341 WaitOnEvent(&pause_db_thread)));
341 EXPECT_CALL(start_callback_, Run(DataTypeController::ABORTED,_)); 342 EXPECT_CALL(start_callback_, Run(DataTypeController::ABORTED,_));
342 EXPECT_CALL(*dtc_mock_, RecordStartFailure(DataTypeController::ABORTED)); 343 EXPECT_CALL(
344 *dtc_mock_.get(), RecordStartFailure(DataTypeController::ABORTED));
343 SetStopExpectations(); 345 SetStopExpectations();
344 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state()); 346 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
345 Start(); 347 Start();
346 wait_for_db_thread_pause.Wait(); 348 wait_for_db_thread_pause.Wait();
347 non_frontend_dtc_->Stop(); 349 non_frontend_dtc_->Stop();
348 WaitForDTC(); 350 WaitForDTC();
349 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state()); 351 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
350 } 352 }
351 353
352 TEST_F(SyncNonFrontendDataTypeControllerTest, Stop) { 354 TEST_F(SyncNonFrontendDataTypeControllerTest, Stop) {
353 SetStartExpectations(); 355 SetStartExpectations();
354 SetAssociateExpectations(); 356 SetAssociateExpectations();
355 SetActivateExpectations(DataTypeController::OK); 357 SetActivateExpectations(DataTypeController::OK);
356 SetStopExpectations(); 358 SetStopExpectations();
357 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state()); 359 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
358 Start(); 360 Start();
359 WaitForDTC(); 361 WaitForDTC();
360 EXPECT_EQ(DataTypeController::RUNNING, non_frontend_dtc_->state()); 362 EXPECT_EQ(DataTypeController::RUNNING, non_frontend_dtc_->state());
361 non_frontend_dtc_->Stop(); 363 non_frontend_dtc_->Stop();
362 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state()); 364 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
363 } 365 }
364 366
365 TEST_F(SyncNonFrontendDataTypeControllerTest, 367 TEST_F(SyncNonFrontendDataTypeControllerTest,
366 OnSingleDatatypeUnrecoverableError) { 368 OnSingleDatatypeUnrecoverableError) {
367 SetStartExpectations(); 369 SetStartExpectations();
368 SetAssociateExpectations(); 370 SetAssociateExpectations();
369 SetActivateExpectations(DataTypeController::OK); 371 SetActivateExpectations(DataTypeController::OK);
370 EXPECT_CALL(*dtc_mock_, RecordUnrecoverableError(_, "Test")); 372 EXPECT_CALL(*dtc_mock_.get(), RecordUnrecoverableError(_, "Test"));
371 EXPECT_CALL(service_, DisableBrokenDatatype(_,_,_)).WillOnce( 373 EXPECT_CALL(service_, DisableBrokenDatatype(_,_,_)).WillOnce(
372 InvokeWithoutArgs(non_frontend_dtc_.get(), 374 InvokeWithoutArgs(non_frontend_dtc_.get(),
373 &NonFrontendDataTypeController::Stop)); 375 &NonFrontendDataTypeController::Stop));
374 SetStopExpectations(); 376 SetStopExpectations();
375 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state()); 377 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
376 Start(); 378 Start();
377 WaitForDTC(); 379 WaitForDTC();
378 EXPECT_EQ(DataTypeController::RUNNING, non_frontend_dtc_->state()); 380 EXPECT_EQ(DataTypeController::RUNNING, non_frontend_dtc_->state());
379 // This should cause non_frontend_dtc_->Stop() to be called. 381 // This should cause non_frontend_dtc_->Stop() to be called.
380 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, base::Bind( 382 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, base::Bind(
381 &NonFrontendDataTypeControllerFake::OnSingleDatatypeUnrecoverableError, 383 &NonFrontendDataTypeControllerFake::OnSingleDatatypeUnrecoverableError,
382 non_frontend_dtc_.get(), 384 non_frontend_dtc_.get(),
383 FROM_HERE, 385 FROM_HERE,
384 std::string("Test"))); 386 std::string("Test")));
385 WaitForDTC(); 387 WaitForDTC();
386 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state()); 388 EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
387 } 389 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/glue/bookmark_data_type_controller.cc ('k') | chrome/browser/sync/glue/typed_url_data_type_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698