| Index: components/sync_driver/shared_change_processor_unittest.cc
|
| diff --git a/components/sync_driver/shared_change_processor_unittest.cc b/components/sync_driver/shared_change_processor_unittest.cc
|
| deleted file mode 100644
|
| index 9e2bc20ccb2114264f6d34762bdd3ee62e0a1c72..0000000000000000000000000000000000000000
|
| --- a/components/sync_driver/shared_change_processor_unittest.cc
|
| +++ /dev/null
|
| @@ -1,238 +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/shared_change_processor.h"
|
| -
|
| -#include <cstddef>
|
| -#include <string>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/bind_helpers.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/location.h"
|
| -#include "base/single_thread_task_runner.h"
|
| -#include "base/synchronization/waitable_event.h"
|
| -#include "base/threading/thread.h"
|
| -#include "components/sync/api/attachments/attachment_id.h"
|
| -#include "components/sync/api/attachments/attachment_store.h"
|
| -#include "components/sync/api/fake_syncable_service.h"
|
| -#include "components/sync/base/model_type.h"
|
| -#include "components/sync/core/attachments/attachment_service_impl.h"
|
| -#include "components/sync/core/test/data_type_error_handler_mock.h"
|
| -#include "components/sync/core/test/test_user_share.h"
|
| -#include "components/sync_driver/fake_sync_client.h"
|
| -#include "components/sync_driver/generic_change_processor.h"
|
| -#include "components/sync_driver/generic_change_processor_factory.h"
|
| -#include "components/sync_driver/local_device_info_provider.h"
|
| -#include "components/sync_driver/sync_api_component_factory.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace sync_driver {
|
| -
|
| -namespace {
|
| -
|
| -using ::testing::NiceMock;
|
| -using ::testing::StrictMock;
|
| -
|
| -class TestSyncApiComponentFactory : public SyncApiComponentFactory {
|
| - public:
|
| - TestSyncApiComponentFactory() {}
|
| - ~TestSyncApiComponentFactory() override {}
|
| -
|
| - // SyncApiComponentFactory implementation.
|
| - void RegisterDataTypes(
|
| - sync_driver::SyncService* sync_service,
|
| - const RegisterDataTypesMethod& register_platform_types_method) override {}
|
| - sync_driver::DataTypeManager* CreateDataTypeManager(
|
| - const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>&
|
| - debug_info_listener,
|
| - const sync_driver::DataTypeController::TypeMap* controllers,
|
| - const sync_driver::DataTypeEncryptionHandler* encryption_handler,
|
| - browser_sync::SyncBackendHost* backend,
|
| - sync_driver::DataTypeManagerObserver* observer) override {
|
| - return nullptr;
|
| - }
|
| - browser_sync::SyncBackendHost* CreateSyncBackendHost(
|
| - const std::string& name,
|
| - invalidation::InvalidationService* invalidator,
|
| - const base::WeakPtr<sync_driver::SyncPrefs>& sync_prefs,
|
| - const base::FilePath& sync_folder) override {
|
| - return nullptr;
|
| - }
|
| - std::unique_ptr<sync_driver::LocalDeviceInfoProvider>
|
| - CreateLocalDeviceInfoProvider() override {
|
| - return nullptr;
|
| - }
|
| - SyncApiComponentFactory::SyncComponents CreateBookmarkSyncComponents(
|
| - sync_driver::SyncService* sync_service,
|
| - syncer::DataTypeErrorHandler* error_handler) override {
|
| - return SyncApiComponentFactory::SyncComponents(nullptr, nullptr);
|
| - }
|
| - std::unique_ptr<syncer::AttachmentService> CreateAttachmentService(
|
| - std::unique_ptr<syncer::AttachmentStoreForSync> attachment_store,
|
| - const syncer::UserShare& user_share,
|
| - const std::string& store_birthday,
|
| - syncer::ModelType model_type,
|
| - syncer::AttachmentService::Delegate* delegate) override {
|
| - return syncer::AttachmentServiceImpl::CreateForTest();
|
| - }
|
| -};
|
| -
|
| -class SyncSharedChangeProcessorTest :
|
| - public testing::Test,
|
| - public FakeSyncClient {
|
| - public:
|
| - SyncSharedChangeProcessorTest()
|
| - : FakeSyncClient(&factory_),
|
| - backend_thread_("dbthread"),
|
| - did_connect_(false),
|
| - has_attachment_service_(false) {}
|
| -
|
| - ~SyncSharedChangeProcessorTest() override {
|
| - EXPECT_FALSE(db_syncable_service_.get());
|
| - }
|
| -
|
| - // FakeSyncClient override.
|
| - base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType(
|
| - syncer::ModelType type) override {
|
| - return db_syncable_service_->AsWeakPtr();
|
| - }
|
| -
|
| - protected:
|
| - void SetUp() override {
|
| - test_user_share_.SetUp();
|
| - shared_change_processor_ = new SharedChangeProcessor();
|
| - ASSERT_TRUE(backend_thread_.Start());
|
| - ASSERT_TRUE(backend_thread_.task_runner()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&SyncSharedChangeProcessorTest::SetUpDBSyncableService,
|
| - base::Unretained(this))));
|
| - }
|
| -
|
| - void TearDown() override {
|
| - EXPECT_TRUE(backend_thread_.task_runner()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&SyncSharedChangeProcessorTest::TearDownDBSyncableService,
|
| - base::Unretained(this))));
|
| - // This must happen before the DB thread is stopped since
|
| - // |shared_change_processor_| may post tasks to delete its members
|
| - // on the correct thread.
|
| - //
|
| - // TODO(akalin): Write deterministic tests for the destruction of
|
| - // |shared_change_processor_| on the UI and DB threads.
|
| - shared_change_processor_ = NULL;
|
| - backend_thread_.Stop();
|
| -
|
| - // Note: Stop() joins the threads, and that barrier prevents this read
|
| - // from being moved (e.g by compiler optimization) in such a way that it
|
| - // would race with the write in ConnectOnDBThread (because by this time,
|
| - // everything that could have run on |backend_thread_| has done so).
|
| - ASSERT_TRUE(did_connect_);
|
| - test_user_share_.TearDown();
|
| - }
|
| -
|
| - // Connect |shared_change_processor_| on the DB thread.
|
| - void Connect() {
|
| - EXPECT_TRUE(backend_thread_.task_runner()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&SyncSharedChangeProcessorTest::ConnectOnDBThread,
|
| - base::Unretained(this), shared_change_processor_)));
|
| - }
|
| -
|
| - void SetAttachmentStore() {
|
| - EXPECT_TRUE(backend_thread_.task_runner()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&SyncSharedChangeProcessorTest::SetAttachmentStoreOnDBThread,
|
| - base::Unretained(this))));
|
| - }
|
| -
|
| - bool HasAttachmentService() {
|
| - base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC,
|
| - base::WaitableEvent::InitialState::NOT_SIGNALED);
|
| - EXPECT_TRUE(backend_thread_.task_runner()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(
|
| - &SyncSharedChangeProcessorTest::CheckAttachmentServiceOnDBThread,
|
| - base::Unretained(this), base::Unretained(&event))));
|
| - event.Wait();
|
| - return has_attachment_service_;
|
| - }
|
| -
|
| - private:
|
| - // Used by SetUp().
|
| - void SetUpDBSyncableService() {
|
| - DCHECK(backend_thread_.task_runner()->BelongsToCurrentThread());
|
| - DCHECK(!db_syncable_service_.get());
|
| - db_syncable_service_.reset(new syncer::FakeSyncableService());
|
| - }
|
| -
|
| - // Used by TearDown().
|
| - void TearDownDBSyncableService() {
|
| - DCHECK(backend_thread_.task_runner()->BelongsToCurrentThread());
|
| - DCHECK(db_syncable_service_.get());
|
| - db_syncable_service_.reset();
|
| - }
|
| -
|
| - void SetAttachmentStoreOnDBThread() {
|
| - DCHECK(backend_thread_.task_runner()->BelongsToCurrentThread());
|
| - DCHECK(db_syncable_service_.get());
|
| - db_syncable_service_->set_attachment_store(
|
| - syncer::AttachmentStore::CreateInMemoryStore());
|
| - }
|
| -
|
| - // Used by Connect(). The SharedChangeProcessor is passed in
|
| - // because we modify |shared_change_processor_| on the main thread
|
| - // (in TearDown()).
|
| - void ConnectOnDBThread(
|
| - const scoped_refptr<SharedChangeProcessor>& shared_change_processor) {
|
| - DCHECK(backend_thread_.task_runner()->BelongsToCurrentThread());
|
| - EXPECT_TRUE(shared_change_processor->Connect(
|
| - this, &processor_factory_, test_user_share_.user_share(),
|
| - &error_handler_, syncer::AUTOFILL,
|
| - base::WeakPtr<syncer::SyncMergeResult>()));
|
| - did_connect_ = true;
|
| - }
|
| -
|
| - void CheckAttachmentServiceOnDBThread(base::WaitableEvent* event) {
|
| - DCHECK(backend_thread_.task_runner()->BelongsToCurrentThread());
|
| - DCHECK(db_syncable_service_.get());
|
| - has_attachment_service_ = !!db_syncable_service_->attachment_service();
|
| - event->Signal();
|
| - }
|
| -
|
| - base::MessageLoop frontend_loop_;
|
| - base::Thread backend_thread_;
|
| - syncer::TestUserShare test_user_share_;
|
| - TestSyncApiComponentFactory factory_;
|
| -
|
| - scoped_refptr<SharedChangeProcessor> shared_change_processor_;
|
| - StrictMock<syncer::DataTypeErrorHandlerMock> error_handler_;
|
| -
|
| - GenericChangeProcessorFactory processor_factory_;
|
| - bool did_connect_;
|
| - bool has_attachment_service_;
|
| -
|
| - // Used only on DB thread.
|
| - std::unique_ptr<syncer::FakeSyncableService> db_syncable_service_;
|
| -};
|
| -
|
| -// Simply connect the shared change processor. It should succeed, and
|
| -// nothing further should happen.
|
| -TEST_F(SyncSharedChangeProcessorTest, Basic) {
|
| - Connect();
|
| -}
|
| -
|
| -// Connect the shared change processor to a syncable service with
|
| -// AttachmentStore. Verify that shared change processor implementation
|
| -// creates AttachmentService and passes it back to the syncable service.
|
| -TEST_F(SyncSharedChangeProcessorTest, ConnectWithAttachmentStore) {
|
| - SetAttachmentStore();
|
| - Connect();
|
| - EXPECT_TRUE(HasAttachmentService());
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -} // namespace sync_driver
|
|
|