#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
#include "base/tracked_objects.h"
-#include "chrome/browser/sync/glue/change_processor_mock.h"
-#include "chrome/browser/sync/glue/data_type_controller_mock.h"
#include "chrome/browser/sync/glue/frontend_data_type_controller.h"
#include "chrome/browser/sync/glue/frontend_data_type_controller_mock.h"
-#include "chrome/browser/sync/glue/model_associator_mock.h"
#include "chrome/browser/sync/profile_sync_components_factory_mock.h"
#include "chrome/browser/sync/profile_sync_service_mock.h"
#include "chrome/test/base/profile_mock.h"
-#include "content/public/test/test_browser_thread.h"
+#include "components/sync_driver/change_processor_mock.h"
+#include "components/sync_driver/data_type_controller_mock.h"
+#include "components/sync_driver/model_associator_mock.h"
+#include "content/public/test/test_browser_thread_bundle.h"
-using browser_sync::ChangeProcessorMock;
-using browser_sync::DataTypeController;
using browser_sync::FrontendDataTypeController;
using browser_sync::FrontendDataTypeControllerMock;
-using browser_sync::ModelAssociatorMock;
-using browser_sync::ModelLoadCallbackMock;
-using browser_sync::StartCallbackMock;
-using content::BrowserThread;
+using sync_driver::ChangeProcessorMock;
+using sync_driver::DataTypeController;
+using sync_driver::ModelAssociatorMock;
+using sync_driver::ModelLoadCallbackMock;
+using sync_driver::StartCallbackMock;
using testing::_;
using testing::DoAll;
using testing::InvokeWithoutArgs;
Profile* profile,
ProfileSyncService* sync_service,
FrontendDataTypeControllerMock* mock)
- : FrontendDataTypeController(profile_sync_factory,
+ : FrontendDataTypeController(base::MessageLoopProxy::current(),
+ base::Closure(),
+ profile_sync_factory,
profile,
sync_service),
mock_(mock) {}
mock_->RecordAssociationTime(time);
}
virtual void RecordStartFailure(
- DataTypeController::StartResult result) OVERRIDE {
+ DataTypeController::ConfigureResult result) OVERRIDE {
mock_->RecordStartFailure(result);
}
private:
class SyncFrontendDataTypeControllerTest : public testing::Test {
public:
SyncFrontendDataTypeControllerTest()
- : ui_thread_(BrowserThread::UI, &message_loop_),
+ : thread_bundle_(content::TestBrowserThreadBundle::DEFAULT),
service_(&profile_) {}
virtual void SetUp() {
EXPECT_CALL(*dtc_mock_.get(), RecordAssociationTime(_));
}
- void SetActivateExpectations(DataTypeController::StartResult result) {
- EXPECT_CALL(service_, ActivateDataType(_, _, _));
+ void SetActivateExpectations(DataTypeController::ConfigureResult result) {
EXPECT_CALL(start_callback_, Run(result, _, _));
}
WillOnce(Return(syncer::SyncError()));
}
- void SetStartFailExpectations(DataTypeController::StartResult result) {
+ void SetStartFailExpectations(DataTypeController::ConfigureResult result) {
if (DataTypeController::IsUnrecoverableResult(result))
EXPECT_CALL(*dtc_mock_.get(), RecordUnrecoverableError(_, _));
EXPECT_CALL(*dtc_mock_.get(), CleanUpState());
base::Unretained(&start_callback_)));
}
- void PumpLoop() {
- message_loop_.RunUntilIdle();
- }
+ void PumpLoop() { base::MessageLoop::current()->RunUntilIdle(); }
- base::MessageLoopForUI message_loop_;
- content::TestBrowserThread ui_thread_;
+ content::TestBrowserThreadBundle thread_bundle_;
scoped_refptr<FrontendDataTypeControllerFake> frontend_dtc_;
scoped_ptr<ProfileSyncComponentsFactoryMock> profile_sync_factory_;
scoped_refptr<FrontendDataTypeControllerMock> dtc_mock_;
TEST_F(SyncFrontendDataTypeControllerTest, AbortDuringStartModels) {
EXPECT_CALL(*dtc_mock_.get(), StartModels()).WillOnce(Return(false));
EXPECT_CALL(*dtc_mock_.get(), CleanUpState());
- EXPECT_CALL(model_load_callback_, Run(_, _));
EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state());
frontend_dtc_->LoadModels(
base::Bind(&ModelLoadCallbackMock::Run,
frontend_dtc_->Stop();
EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state());
}
-
-TEST_F(SyncFrontendDataTypeControllerTest, OnSingleDatatypeUnrecoverableError) {
- SetStartExpectations();
- SetAssociateExpectations();
- SetActivateExpectations(DataTypeController::OK);
- EXPECT_CALL(*dtc_mock_.get(), RecordUnrecoverableError(_, "Test"));
- EXPECT_CALL(service_, DisableBrokenDatatype(_, _, _))
- .WillOnce(InvokeWithoutArgs(frontend_dtc_.get(),
- &FrontendDataTypeController::Stop));
- SetStopExpectations();
- EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state());
- Start();
- EXPECT_EQ(DataTypeController::RUNNING, frontend_dtc_->state());
- // This should cause frontend_dtc_->Stop() to be called.
- frontend_dtc_->OnSingleDatatypeUnrecoverableError(FROM_HERE, "Test");
- PumpLoop();
- EXPECT_EQ(DataTypeController::NOT_RUNNING, frontend_dtc_->state());
-}