| Index: components/sync_driver/ui_data_type_controller_unittest.cc
|
| diff --git a/components/sync_driver/ui_data_type_controller_unittest.cc b/components/sync_driver/ui_data_type_controller_unittest.cc
|
| deleted file mode 100644
|
| index 98df18a8422c715c914e79988936cf3df6c47990..0000000000000000000000000000000000000000
|
| --- a/components/sync_driver/ui_data_type_controller_unittest.cc
|
| +++ /dev/null
|
| @@ -1,209 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "components/sync_driver/ui_data_type_controller.h"
|
| -
|
| -#include <memory>
|
| -#include <utility>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/location.h"
|
| -#include "base/single_thread_task_runner.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| -#include "base/tracked_objects.h"
|
| -#include "components/sync/api/fake_syncable_service.h"
|
| -#include "components/sync/base/model_type.h"
|
| -#include "components/sync_driver/data_type_controller_mock.h"
|
| -#include "components/sync_driver/fake_generic_change_processor.h"
|
| -#include "components/sync_driver/fake_sync_client.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -using testing::_;
|
| -using testing::Invoke;
|
| -using testing::InvokeWithoutArgs;
|
| -using testing::Return;
|
| -
|
| -namespace sync_driver {
|
| -namespace {
|
| -
|
| -// TODO(zea): Expand this to make the dtc type paramterizable. This will let us
|
| -// test the basic functionality of all UIDataTypeControllers. We'll need to have
|
| -// intelligent default values for the methods queried in the dependent services
|
| -// (e.g. those queried in StartModels).
|
| -class SyncUIDataTypeControllerTest : public testing::Test,
|
| - public FakeSyncClient {
|
| - public:
|
| - SyncUIDataTypeControllerTest()
|
| - : type_(syncer::PREFERENCES),
|
| - change_processor_(NULL) {}
|
| -
|
| - // FakeSyncClient overrides.
|
| - base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType(
|
| - syncer::ModelType type) override {
|
| - return syncable_service_.AsWeakPtr();
|
| - }
|
| -
|
| - void SetUp() override {
|
| - preference_dtc_ =
|
| - new UIDataTypeController(base::ThreadTaskRunnerHandle::Get(),
|
| - base::Closure(), type_, this);
|
| - SetStartExpectations();
|
| - }
|
| -
|
| - void TearDown() override {
|
| - // Must be done before we pump the loop.
|
| - syncable_service_.StopSyncing(type_);
|
| - preference_dtc_ = NULL;
|
| - PumpLoop();
|
| - }
|
| -
|
| - protected:
|
| - void SetStartExpectations() {
|
| - std::unique_ptr<FakeGenericChangeProcessor> p(
|
| - new FakeGenericChangeProcessor(type_, this));
|
| - change_processor_ = p.get();
|
| - std::unique_ptr<GenericChangeProcessorFactory> f(
|
| - new FakeGenericChangeProcessorFactory(std::move(p)));
|
| - preference_dtc_->SetGenericChangeProcessorFactoryForTest(std::move(f));
|
| - EXPECT_CALL(model_load_callback_, Run(_, _));
|
| - }
|
| -
|
| - void Start() {
|
| - preference_dtc_->LoadModels(
|
| - base::Bind(&ModelLoadCallbackMock::Run,
|
| - base::Unretained(&model_load_callback_)));
|
| - preference_dtc_->StartAssociating(
|
| - base::Bind(&StartCallbackMock::Run,
|
| - base::Unretained(&start_callback_)));
|
| - PumpLoop();
|
| - }
|
| -
|
| - void PumpLoop() {
|
| - message_loop_.RunUntilIdle();
|
| - }
|
| -
|
| - base::MessageLoopForUI message_loop_;
|
| - const syncer::ModelType type_;
|
| - StartCallbackMock start_callback_;
|
| - ModelLoadCallbackMock model_load_callback_;
|
| - scoped_refptr<UIDataTypeController> preference_dtc_;
|
| - FakeGenericChangeProcessor* change_processor_;
|
| - syncer::FakeSyncableService syncable_service_;
|
| -};
|
| -
|
| -// Start the DTC. Verify that the callback is called with OK, the
|
| -// service has been told to start syncing and that the DTC is now in RUNNING
|
| -// state.
|
| -TEST_F(SyncUIDataTypeControllerTest, Start) {
|
| - EXPECT_CALL(start_callback_, Run(DataTypeController::OK, _, _));
|
| -
|
| - EXPECT_EQ(DataTypeController::NOT_RUNNING, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| - Start();
|
| - EXPECT_EQ(DataTypeController::RUNNING, preference_dtc_->state());
|
| - EXPECT_TRUE(syncable_service_.syncing());
|
| -}
|
| -
|
| -// Start and then stop the DTC. Verify that the service started and stopped
|
| -// syncing, and that the DTC went from RUNNING to NOT_RUNNING.
|
| -TEST_F(SyncUIDataTypeControllerTest, StartStop) {
|
| - EXPECT_CALL(start_callback_, Run(DataTypeController::OK, _, _));
|
| -
|
| - EXPECT_EQ(DataTypeController::NOT_RUNNING, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| - Start();
|
| - EXPECT_EQ(DataTypeController::RUNNING, preference_dtc_->state());
|
| - EXPECT_TRUE(syncable_service_.syncing());
|
| - preference_dtc_->Stop();
|
| - EXPECT_EQ(DataTypeController::NOT_RUNNING, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| -}
|
| -
|
| -// Start and then stop the DTC before the Start had a chance to perform
|
| -// association. Verify that the service never started and is NOT_RUNNING.
|
| -TEST_F(SyncUIDataTypeControllerTest, StartStopBeforeAssociation) {
|
| - EXPECT_EQ(DataTypeController::NOT_RUNNING, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| - message_loop_.task_runner()->PostTask(
|
| - FROM_HERE, base::Bind(&UIDataTypeController::Stop, preference_dtc_));
|
| - Start();
|
| - EXPECT_EQ(DataTypeController::NOT_RUNNING, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| -}
|
| -
|
| -// Start the DTC when no user nodes are created. Verify that the callback
|
| -// is called with OK_FIRST_RUN. Stop the DTC.
|
| -TEST_F(SyncUIDataTypeControllerTest, StartStopFirstRun) {
|
| - EXPECT_CALL(start_callback_, Run(DataTypeController::OK_FIRST_RUN, _, _));
|
| - change_processor_->set_sync_model_has_user_created_nodes(false);
|
| -
|
| - EXPECT_EQ(DataTypeController::NOT_RUNNING, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| - Start();
|
| - EXPECT_EQ(DataTypeController::RUNNING, preference_dtc_->state());
|
| - EXPECT_TRUE(syncable_service_.syncing());
|
| - preference_dtc_->Stop();
|
| - EXPECT_EQ(DataTypeController::NOT_RUNNING, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| -}
|
| -
|
| -// Start the DTC, but have the service fail association. Verify the callback
|
| -// is called with ASSOCIATION_FAILED, the DTC goes to state DISABLED, and the
|
| -// service is not syncing. Then stop the DTC.
|
| -TEST_F(SyncUIDataTypeControllerTest, StartAssociationFailed) {
|
| - EXPECT_CALL(start_callback_,
|
| - Run(DataTypeController::ASSOCIATION_FAILED, _, _));
|
| - syncable_service_.set_merge_data_and_start_syncing_error(
|
| - syncer::SyncError(FROM_HERE,
|
| - syncer::SyncError::DATATYPE_ERROR,
|
| - "Error",
|
| - type_));
|
| -
|
| - EXPECT_EQ(DataTypeController::NOT_RUNNING, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| - Start();
|
| - EXPECT_EQ(DataTypeController::DISABLED, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| - preference_dtc_->Stop();
|
| - EXPECT_EQ(DataTypeController::NOT_RUNNING, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| -}
|
| -
|
| -// Start the DTC but fail to check if there are user created nodes. Verify the
|
| -// DTC calls the callback with UNRECOVERABLE_ERROR and that it goes into
|
| -// NOT_RUNNING state. Verify the syncable service is not syncing.
|
| -TEST_F(SyncUIDataTypeControllerTest,
|
| - StartAssociationTriggersUnrecoverableError) {
|
| - EXPECT_CALL(start_callback_,
|
| - Run(DataTypeController::UNRECOVERABLE_ERROR, _, _));
|
| - change_processor_->set_sync_model_has_user_created_nodes_success(false);
|
| -
|
| - EXPECT_EQ(DataTypeController::NOT_RUNNING, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| - Start();
|
| - EXPECT_EQ(DataTypeController::NOT_RUNNING, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| -}
|
| -
|
| -// Start the DTC, but then trigger an unrecoverable error. Verify the syncer
|
| -// gets stopped and the DTC is in NOT_RUNNING state.
|
| -TEST_F(SyncUIDataTypeControllerTest, OnSingleDatatypeUnrecoverableError) {
|
| - EXPECT_CALL(start_callback_, Run(DataTypeController::OK, _, _));
|
| -
|
| - EXPECT_EQ(DataTypeController::NOT_RUNNING, preference_dtc_->state());
|
| - EXPECT_FALSE(syncable_service_.syncing());
|
| - Start();
|
| - EXPECT_TRUE(syncable_service_.syncing());
|
| -
|
| - testing::Mock::VerifyAndClearExpectations(&start_callback_);
|
| - EXPECT_CALL(model_load_callback_, Run(_, _));
|
| - syncer::SyncError error(FROM_HERE,
|
| - syncer::SyncError::DATATYPE_ERROR,
|
| - "error",
|
| - syncer::PREFERENCES);
|
| - preference_dtc_->OnSingleDataTypeUnrecoverableError(error);
|
| -}
|
| -
|
| -} // namespace
|
| -} // namespace sync_driver
|
|
|