| // Copyright (c) 2012 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. |
| |
| #ifndef COMPONENTS_BROWSER_SYNC_BROWSER_ABSTRACT_PROFILE_SYNC_SERVICE_TEST_H_ |
| #define COMPONENTS_BROWSER_SYNC_BROWSER_ABSTRACT_PROFILE_SYNC_SERVICE_TEST_H_ |
| |
| #include <stdint.h> |
| |
| #include <string> |
| |
| #include "base/callback.h" |
| #include "base/files/scoped_temp_dir.h" |
| #include "base/macros.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "components/browser_sync/browser/profile_sync_test_util.h" |
| #include "sync/internal_api/public/base/model_type.h" |
| #include "sync/internal_api/public/change_record.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| class TestProfileSyncService; |
| |
| namespace syncer { |
| struct UserShare; |
| } // namespace syncer |
| |
| class ProfileSyncServiceTestHelper { |
| public: |
| static syncer::ImmutableChangeRecordList MakeSingletonChangeRecordList( |
| int64_t node_id, |
| syncer::ChangeRecord::Action action); |
| |
| // Deletions must provide an EntitySpecifics for the deleted data. |
| static syncer::ImmutableChangeRecordList |
| MakeSingletonDeletionChangeRecordList( |
| int64_t node_id, |
| const sync_pb::EntitySpecifics& specifics); |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(ProfileSyncServiceTestHelper); |
| }; |
| |
| class AbstractProfileSyncServiceTest : public testing::Test { |
| public: |
| AbstractProfileSyncServiceTest(); |
| ~AbstractProfileSyncServiceTest() override; |
| |
| bool CreateRoot(syncer::ModelType model_type); |
| |
| protected: |
| // Creates a TestProfileSyncService instance based on |
| // |profile_sync_service_bundle_|, with start behavior |
| // browser_sync::AUTO_START. Passes |callback| down to |
| // SyncManagerForProfileSyncTest to be used by NotifyInitializationSuccess. |
| // |sync_client| is passed to the service. The created service is stored in |
| // |sync_service_|. |
| void CreateSyncService(scoped_ptr<sync_driver::SyncClient> sync_client, |
| const base::Closure& initialization_success_callback); |
| |
| base::Thread* data_type_thread() { return &data_type_thread_; } |
| |
| TestProfileSyncService* sync_service() { return sync_service_.get(); } |
| |
| // Returns the callback for the FakeSyncClient builder. It is not possible to |
| // just Bind() sync_service(), because of Callback not understanding the |
| // inheritance of its template arguments. |
| base::Callback<sync_driver::SyncService*(void)> GetSyncServiceCallback(); |
| |
| browser_sync::ProfileSyncServiceBundle* profile_sync_service_bundle() { |
| return &profile_sync_service_bundle_; |
| } |
| |
| private: |
| // Use |data_type_thread_| for code disallowed on the UI thread. |
| base::Thread data_type_thread_; |
| |
| base::MessageLoop message_loop_; |
| browser_sync::ProfileSyncServiceBundle profile_sync_service_bundle_; |
| scoped_ptr<TestProfileSyncService> sync_service_; |
| |
| base::ScopedTempDir temp_dir_; // To pass to the backend host. |
| |
| DISALLOW_COPY_AND_ASSIGN(AbstractProfileSyncServiceTest); |
| }; |
| |
| class CreateRootHelper { |
| public: |
| CreateRootHelper(AbstractProfileSyncServiceTest* test, |
| syncer::ModelType model_type); |
| virtual ~CreateRootHelper(); |
| |
| const base::Closure& callback() const; |
| bool success(); |
| |
| private: |
| void CreateRootCallback(); |
| |
| base::Closure callback_; |
| AbstractProfileSyncServiceTest* test_; |
| syncer::ModelType model_type_; |
| bool success_; |
| |
| DISALLOW_COPY_AND_ASSIGN(CreateRootHelper); |
| }; |
| |
| #endif // COMPONENTS_BROWSER_SYNC_BROWSER_ABSTRACT_PROFILE_SYNC_SERVICE_TEST_H_ |