| // Copyright (c) 2011 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 CHROME_BROWSER_SYNC_TEST_PROFILE_SYNC_SERVICE_H_ |
| #define CHROME_BROWSER_SYNC_TEST_PROFILE_SYNC_SERVICE_H_ |
| #pragma once |
| |
| #include <string> |
| |
| #include "chrome/browser/sync/glue/data_type_manager_impl.h" |
| #include "chrome/browser/sync/js_backend.h" |
| #include "chrome/browser/sync/profile_sync_service.h" |
| #include "chrome/test/profile_mock.h" |
| #include "chrome/test/sync/engine/test_id_factory.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| |
| class Profile; |
| class Task; |
| class TestProfileSyncService; |
| |
| ACTION(ReturnNewDataTypeManager) { |
| return new browser_sync::DataTypeManagerImpl(arg0, arg1); |
| } |
| |
| namespace browser_sync { |
| |
| // Mocks out the SyncerThread operations (Pause/Resume) since no thread is |
| // running in these tests, and allows tests to provide a task on construction |
| // to set up initial nodes to mock out an actual server initial sync |
| // download. |
| class SyncBackendHostForProfileSyncTest |
| : public SyncBackendHost, public JsBackend { |
| public: |
| // |synchronous_init| causes initialization to block until the syncapi has |
| // completed setting itself up and called us back. |
| SyncBackendHostForProfileSyncTest( |
| Profile* profile, |
| bool set_initial_sync_ended_on_init, |
| bool synchronous_init); |
| virtual ~SyncBackendHostForProfileSyncTest(); |
| |
| MOCK_METHOD1(RequestNudge, void(const tracked_objects::Location&)); |
| |
| virtual void ConfigureDataTypes( |
| const DataTypeController::TypeMap& data_type_controllers, |
| const syncable::ModelTypeSet& types, |
| CancelableTask* ready_task); |
| |
| // Called when a nudge comes in. |
| void SimulateSyncCycleCompletedInitialSyncEnded( |
| const tracked_objects::Location&); |
| |
| virtual sync_api::HttpPostProviderFactory* MakeHttpBridgeFactory( |
| net::URLRequestContextGetter* getter); |
| |
| virtual void InitCore(const Core::DoInitializeOptions& options); |
| |
| virtual JsBackend* GetJsBackend(); |
| |
| // JsBackend implementation. |
| virtual void SetParentJsEventRouter(JsEventRouter* router); |
| virtual void RemoveParentJsEventRouter(); |
| virtual const JsEventRouter* GetParentJsEventRouter() const; |
| // Fires an event identical to the message unless the message has |
| // "delay" as a prefix, in which case a task to fire the identical |
| // event is posted instead. |
| virtual void ProcessMessage(const std::string& name, const JsArgList& args, |
| const JsEventHandler* sender); |
| |
| virtual void StartConfiguration(Callback0::Type* callback); |
| |
| static void SetDefaultExpectationsForWorkerCreation(ProfileMock* profile); |
| |
| static void SetHistoryServiceExpectations(ProfileMock* profile); |
| |
| private: |
| bool synchronous_init_; |
| }; |
| |
| } // namespace browser_sync |
| |
| class TestProfileSyncService : public ProfileSyncService { |
| public: |
| // |initial_condition_setup_task| can be used to populate nodes |
| // before the OnBackendInitialized callback fires. |
| TestProfileSyncService(ProfileSyncFactory* factory, |
| Profile* profile, |
| const std::string& test_user, |
| bool synchronous_backend_initialization, |
| Task* initial_condition_setup_task); |
| |
| virtual ~TestProfileSyncService(); |
| |
| void SetInitialSyncEndedForEnabledTypes(); |
| |
| virtual void OnBackendInitialized(); |
| |
| virtual void Observe(NotificationType type, |
| const NotificationSource& source, |
| const NotificationDetails& details); |
| |
| // If this is called, configuring data types will require a syncer |
| // nudge. |
| void dont_set_initial_sync_ended_on_init(); |
| void set_synchronous_sync_configuration(); |
| |
| browser_sync::TestIdFactory* id_factory(); |
| |
| // Override of ProfileSyncService::GetBackendForTest() with a more |
| // specific return type (since C++ supports covariant return types) |
| // that is made public. |
| virtual browser_sync::SyncBackendHostForProfileSyncTest* |
| GetBackendForTest(); |
| |
| protected: |
| virtual void CreateBackend(); |
| |
| private: |
| // When testing under ChromiumOS, this method must not return an empty |
| // value value in order for the profile sync service to start. |
| virtual std::string GetLsidForAuthBootstraping(); |
| |
| browser_sync::TestIdFactory id_factory_; |
| |
| bool synchronous_backend_initialization_; |
| |
| // Set to true when a mock data type manager is being used and the configure |
| // step is performed synchronously. |
| bool synchronous_sync_configuration_; |
| bool set_expect_resume_expectations_; |
| |
| Task* initial_condition_setup_task_; |
| bool set_initial_sync_ended_on_init_; |
| }; |
| |
| |
| |
| #endif // CHROME_BROWSER_SYNC_TEST_PROFILE_SYNC_SERVICE_H_ |