// Feed the DTC test_util_'s profile so it is reused later.
// This allows us to control the associated TemplateURLService.
search_engine_dtc_ =
- new SearchEngineDataTypeController(profile_sync_factory_.get(),
- test_util_.profile(),
- service_.get());
+ new SearchEngineDataTypeController(
+ profile_sync_factory_.get(), test_util_.profile(),
+ DataTypeController::DisableTypeCallback());
}
virtual void TearDown() {
void SetStartExpectations() {
search_engine_dtc_->SetGenericChangeProcessorFactoryForTest(
make_scoped_ptr<GenericChangeProcessorFactory>(
- new FakeGenericChangeProcessorFactory(
- make_scoped_ptr(new FakeGenericChangeProcessor()))));
+ new FakeGenericChangeProcessorFactory(make_scoped_ptr(
+ new FakeGenericChangeProcessor(profile_sync_factory_.get())))));
EXPECT_CALL(model_load_callback_, Run(_, _));
EXPECT_CALL(*profile_sync_factory_,
GetSyncableServiceForType(syncer::SEARCH_ENGINES)).
WillOnce(Return(syncable_service_.AsWeakPtr()));
}
- void SetStopExpectations() {
- EXPECT_CALL(*service_.get(),
- DeactivateDataType(syncer::SEARCH_ENGINES));
- }
-
void Start() {
search_engine_dtc_->LoadModels(
base::Bind(&ModelLoadCallbackMock::Run,
search_engine_dtc_->LoadModels(
base::Bind(&ModelLoadCallbackMock::Run,
base::Unretained(&model_load_callback_)));
+ EXPECT_TRUE(search_engine_dtc_->GetSubscriptionForTesting());
EXPECT_EQ(DataTypeController::MODEL_STARTING, search_engine_dtc_->state());
EXPECT_FALSE(syncable_service_.syncing());
// Send the notification that the TemplateURLService has started.
PreloadTemplateURLService();
+ EXPECT_EQ(NULL, search_engine_dtc_->GetSubscriptionForTesting());
EXPECT_EQ(DataTypeController::MODEL_LOADED, search_engine_dtc_->state());
// Wait until WebDB is loaded before we shut it down.
TEST_F(SyncSearchEngineDataTypeControllerTest, StartAssociationFailed) {
SetStartExpectations();
PreloadTemplateURLService();
- SetStopExpectations();
EXPECT_CALL(start_callback_,
Run(DataTypeController::ASSOCIATION_FAILED, _, _));
syncable_service_.set_merge_data_and_start_syncing_error(
TEST_F(SyncSearchEngineDataTypeControllerTest, Stop) {
SetStartExpectations();
PreloadTemplateURLService();
- SetStopExpectations();
EXPECT_CALL(start_callback_, Run(DataTypeController::OK, _, _));
EXPECT_EQ(DataTypeController::NOT_RUNNING, search_engine_dtc_->state());
EXPECT_FALSE(syncable_service_.syncing());
}
-TEST_F(SyncSearchEngineDataTypeControllerTest,
- OnSingleDatatypeUnrecoverableError) {
- SetStartExpectations();
- PreloadTemplateURLService();
- EXPECT_CALL(*service_.get(), DisableBrokenDatatype(_, _, _)).
- WillOnce(InvokeWithoutArgs(search_engine_dtc_.get(),
- &SearchEngineDataTypeController::Stop));
- SetStopExpectations();
-
- EXPECT_CALL(start_callback_, Run(DataTypeController::OK, _, _));
- Start();
- // This should cause search_engine_dtc_->Stop() to be called.
- search_engine_dtc_->OnSingleDatatypeUnrecoverableError(FROM_HERE, "Test");
- base::RunLoop().RunUntilIdle();
+TEST_F(SyncSearchEngineDataTypeControllerTest, StopBeforeLoaded) {
+ EXPECT_CALL(model_load_callback_, Run(_, _));
+ EXPECT_FALSE(syncable_service_.syncing());
+ search_engine_dtc_->LoadModels(
+ base::Bind(&ModelLoadCallbackMock::Run,
+ base::Unretained(&model_load_callback_)));
+ EXPECT_TRUE(search_engine_dtc_->GetSubscriptionForTesting());
+ EXPECT_EQ(DataTypeController::MODEL_STARTING, search_engine_dtc_->state());
+ EXPECT_FALSE(syncable_service_.syncing());
+ search_engine_dtc_->Stop();
+ EXPECT_EQ(NULL, search_engine_dtc_->GetSubscriptionForTesting());
EXPECT_EQ(DataTypeController::NOT_RUNNING, search_engine_dtc_->state());
EXPECT_FALSE(syncable_service_.syncing());
}