summaryrefslogtreecommitdiffstats
path: root/components/browser_sync/browser/profile_sync_test_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'components/browser_sync/browser/profile_sync_test_util.h')
-rw-r--r--components/browser_sync/browser/profile_sync_test_util.h71
1 files changed, 68 insertions, 3 deletions
diff --git a/components/browser_sync/browser/profile_sync_test_util.h b/components/browser_sync/browser/profile_sync_test_util.h
index b6bf4e7..485e7dd 100644
--- a/components/browser_sync/browser/profile_sync_test_util.h
+++ b/components/browser_sync/browser/profile_sync_test_util.h
@@ -5,12 +5,15 @@
#ifndef COMPONENTS_BROWSER_SYNC_BROWSER_PROFILE_SYNC_TEST_UTIL_H_
#define COMPONENTS_BROWSER_SYNC_BROWSER_PROFILE_SYNC_TEST_UTIL_H_
+#include "base/callback.h"
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
+#include "base/message_loop/message_loop.h"
#include "base/test/sequenced_worker_pool_owner.h"
#include "base/time/time.h"
#include "components/browser_sync/browser/profile_sync_service.h"
+#include "components/invalidation/impl/fake_invalidation_service.h"
#include "components/signin/core/browser/account_tracker_service.h"
#include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
#include "components/signin/core/browser/fake_signin_manager.h"
@@ -25,6 +28,10 @@ class Time;
class TimeDelta;
}
+namespace history {
+class HistoryService;
+}
+
namespace net {
class URLRequestContextGetter;
}
@@ -46,7 +53,8 @@ void RegisterPrefsForProfileSyncService(
user_prefs::PrefRegistrySyncable* registry);
// Aggregate this class to get all necessary support for creating a
-// ProfileSyncService in tests.
+// ProfileSyncService in tests. The test still needs to have its own
+// MessageLoop, though.
class ProfileSyncServiceBundle {
public:
#if defined(OS_CHROMEOS)
@@ -55,7 +63,15 @@ class ProfileSyncServiceBundle {
typedef FakeSigninManager FakeSigninManagerType;
#endif
+ // Use this if you don't care about threads.
ProfileSyncServiceBundle();
+
+ // Use this to inject threads directly.
+ ProfileSyncServiceBundle(
+ const scoped_refptr<base::SingleThreadTaskRunner>& db_thread,
+ const scoped_refptr<base::SingleThreadTaskRunner>& file_thread,
+ base::SequencedWorkerPool* worker_pool);
+
~ProfileSyncServiceBundle();
// Builders
@@ -70,10 +86,28 @@ class ProfileSyncServiceBundle {
~SyncClientBuilder();
- // Set the clear browsing data callback for the client to return.
+ // Setters for the various additional data for the client to return.
void SetClearBrowsingDataCallback(
sync_driver::ClearBrowsingDataCallback clear_browsing_data_callback);
+ void SetPersonalDataManager(
+ autofill::PersonalDataManager* personal_data_manager);
+
+ // The client will call this callback to produce the SyncableService
+ // specific to |type|.
+ void SetSyncableServiceCallback(
+ const base::Callback<base::WeakPtr<syncer::SyncableService>(
+ syncer::ModelType type)>& get_syncable_service_callback);
+
+ // The client will call this callback to produce the SyncService for the
+ // current Profile.
+ void SetSyncServiceCallback(const base::Callback<sync_driver::SyncService*(
+ void)>& get_sync_service_callback);
+
+ void SetHistoryService(history::HistoryService* history_service);
+
+ void set_activate_model_creation() { activate_model_creation_ = true; }
+
scoped_ptr<sync_driver::FakeSyncClient> Build();
private:
@@ -81,6 +115,15 @@ class ProfileSyncServiceBundle {
ProfileSyncServiceBundle* const bundle_;
sync_driver::ClearBrowsingDataCallback clear_browsing_data_callback_;
+ autofill::PersonalDataManager* personal_data_manager_;
+ base::Callback<base::WeakPtr<syncer::SyncableService>(
+ syncer::ModelType type)>
+ get_syncable_service_callback_;
+ base::Callback<sync_driver::SyncService*(void)> get_sync_service_callback_;
+ history::HistoryService* history_service_ = nullptr;
+ // If set, the built client will be able to build some ModelSafeWorker
+ // instances.
+ bool activate_model_creation_ = false;
DISALLOW_COPY_AND_ASSIGN(SyncClientBuilder);
};
@@ -116,8 +159,29 @@ class ProfileSyncServiceBundle {
return &sync_sessions_client_;
}
+ invalidation::FakeInvalidationService* fake_invalidation_service() {
+ return &fake_invalidation_service_;
+ }
+
+ base::SingleThreadTaskRunner* db_thread() { return db_thread_.get(); }
+
+ base::SingleThreadTaskRunner* file_thread() { return file_thread_.get(); }
+
private:
- base::SequencedWorkerPoolOwner worker_pool_owner_;
+ struct ThreadProvider; // Helper to create threads and worker pool.
+
+ // Either |thread_provider| must be null and or the other arguments non-null,
+ // or vice versa.
+ ProfileSyncServiceBundle(
+ scoped_ptr<ThreadProvider> thread_provider,
+ scoped_refptr<base::SingleThreadTaskRunner> db_thread,
+ scoped_refptr<base::SingleThreadTaskRunner> file_thread,
+ base::SequencedWorkerPool* worker_pool);
+
+ scoped_ptr<ThreadProvider> thread_provider_;
+ const scoped_refptr<base::SingleThreadTaskRunner> db_thread_;
+ const scoped_refptr<base::SingleThreadTaskRunner> file_thread_;
+ base::SequencedWorkerPool* const worker_pool_;
syncable_prefs::TestingPrefServiceSyncable pref_service_;
TestSigninClient signin_client_;
AccountTrackerService account_tracker_;
@@ -125,6 +189,7 @@ class ProfileSyncServiceBundle {
FakeProfileOAuth2TokenService auth_service_;
SyncApiComponentFactoryMock component_factory_;
sync_sessions::FakeSyncSessionsClient sync_sessions_client_;
+ invalidation::FakeInvalidationService fake_invalidation_service_;
scoped_refptr<net::URLRequestContextGetter> url_request_context_;
DISALLOW_COPY_AND_ASSIGN(ProfileSyncServiceBundle);