| Index: trunk/src/chrome/browser/sync/test_profile_sync_service.h
|
| ===================================================================
|
| --- trunk/src/chrome/browser/sync/test_profile_sync_service.h (revision 238367)
|
| +++ trunk/src/chrome/browser/sync/test_profile_sync_service.h (working copy)
|
| @@ -10,18 +10,21 @@
|
| #include "base/callback.h"
|
| #include "base/compiler_specific.h"
|
| #include "base/memory/weak_ptr.h"
|
| +#include "chrome/browser/invalidation/invalidator_storage.h"
|
| #include "chrome/browser/signin/profile_oauth2_token_service.h"
|
| +#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
|
| #include "chrome/browser/sync/glue/data_type_manager_impl.h"
|
| #include "chrome/browser/sync/glue/sync_backend_host_impl.h"
|
| +#include "chrome/browser/sync/profile_sync_components_factory_mock.h"
|
| #include "chrome/browser/sync/profile_sync_service.h"
|
| #include "chrome/browser/sync/sync_prefs.h"
|
| +#include "chrome/test/base/profile_mock.h"
|
| +#include "google_apis/gaia/oauth2_token_service.h"
|
| +#include "sync/internal_api/public/test/test_internal_components_factory.h"
|
| #include "sync/test/engine/test_id_factory.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
|
|
| class Profile;
|
| -class ProfileOAuth2TokenService;
|
| -class ProfileSyncComponentsFactory;
|
| -class ProfileSyncComponentsFactoryMock;
|
|
|
| ACTION(ReturnNewDataTypeManager) {
|
| return new browser_sync::DataTypeManagerImpl(arg0,
|
| @@ -36,12 +39,24 @@
|
|
|
| class SyncBackendHostForProfileSyncTest : public SyncBackendHostImpl {
|
| public:
|
| + // |synchronous_init| causes initialization to block until the syncapi has
|
| + // completed setting itself up and called us back.
|
| + // TOOD(akalin): Remove |synchronous_init| (http://crbug.com/140354).
|
| SyncBackendHostForProfileSyncTest(
|
| Profile* profile,
|
| const base::WeakPtr<SyncPrefs>& sync_prefs,
|
| - base::Closure& callback);
|
| + base::Closure& callback,
|
| + bool set_initial_sync_ended_on_init,
|
| + bool synchronous_init,
|
| + bool fail_initial_download,
|
| + syncer::StorageOption storage_option);
|
| virtual ~SyncBackendHostForProfileSyncTest();
|
|
|
| + MOCK_METHOD1(RequestNudge, void(const tracked_objects::Location&));
|
| +
|
| + virtual void UpdateCredentials(
|
| + const syncer::SyncCredentials& credentials) OVERRIDE;
|
| +
|
| virtual void RequestConfigureSyncer(
|
| syncer::ConfigureReason reason,
|
| syncer::ModelTypeSet to_download,
|
| @@ -54,31 +69,67 @@
|
| syncer::ModelTypeSet)>& ready_task,
|
| const base::Closure& retry_callback) OVERRIDE;
|
|
|
| + virtual void HandleInitializationSuccessOnFrontendLoop(
|
| + const syncer::WeakHandle<syncer::JsBackend> js_backend,
|
| + const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>
|
| + debug_info_listener) OVERRIDE;
|
| +
|
| protected:
|
| virtual void InitCore(scoped_ptr<DoInitializeOptions> options) OVERRIDE;
|
|
|
| private:
|
| +
|
| +
|
| // Invoked at the start of HandleSyncManagerInitializationOnFrontendLoop.
|
| // Allows extra initialization work to be performed before the backend comes
|
| // up.
|
| base::Closure& callback_;
|
| +
|
| + // Saved closure in case we failed the initial download but then received
|
| + // new credentials. Holds the results of
|
| + // HandleSyncManagerInitializationOnFrontendLoop, and if
|
| + // |fail_initial_download_| was true, finishes the initialization process
|
| + // once we receive new credentials.
|
| + base::Closure initial_download_closure_;
|
| + bool fail_initial_download_;
|
| +
|
| + bool set_initial_sync_ended_on_init_;
|
| + bool synchronous_init_;
|
| + syncer::StorageOption storage_option_;
|
| +
|
| + base::WeakPtrFactory<SyncBackendHostForProfileSyncTest> weak_ptr_factory_;
|
| };
|
|
|
| } // namespace browser_sync
|
|
|
| class TestProfileSyncService : public ProfileSyncService {
|
| public:
|
| - // TODO(tim): Add ability to inject TokenService alongside SigninManager.
|
| + // TODO(tim): Remove |synchronous_backend_initialization|, and add ability to
|
| + // inject TokenService alongside SigninManager.
|
| // TODO(rogerta): what does above comment mean?
|
| TestProfileSyncService(
|
| ProfileSyncComponentsFactory* factory,
|
| Profile* profile,
|
| SigninManagerBase* signin,
|
| ProfileOAuth2TokenService* oauth2_token_service,
|
| - ProfileSyncService::StartBehavior behavior);
|
| + ProfileSyncService::StartBehavior behavior,
|
| + bool synchronous_backend_initialization);
|
|
|
| virtual ~TestProfileSyncService();
|
|
|
| + virtual void RequestAccessToken() OVERRIDE;
|
| + virtual void OnGetTokenSuccess(const OAuth2TokenService::Request* request,
|
| + const std::string& access_token,
|
| + const base::Time& expiration_time) OVERRIDE;
|
| + virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request,
|
| + const GoogleServiceAuthError& error) OVERRIDE;
|
| +
|
| + virtual void OnBackendInitialized(
|
| + const syncer::WeakHandle<syncer::JsBackend>& backend,
|
| + const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>&
|
| + debug_info_listener,
|
| + bool success) OVERRIDE;
|
| +
|
| virtual void OnConfigureDone(
|
| const browser_sync::DataTypeManager::ConfigureResult& result) OVERRIDE;
|
|
|
| @@ -90,6 +141,16 @@
|
|
|
| ProfileSyncComponentsFactoryMock* components_factory_mock();
|
|
|
| + // 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();
|
| +
|
| + // Fails initial download until a new auth token is provided.
|
| + void fail_initial_download();
|
| +
|
| + void set_storage_option(syncer::StorageOption option);
|
| +
|
| // |callback| can be used to populate nodes before the OnBackendInitialized
|
| // callback fires.
|
| void set_backend_init_callback(const base::Closure& callback) {
|
| @@ -98,6 +159,12 @@
|
|
|
| syncer::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() OVERRIDE;
|
| +
|
| protected:
|
| virtual void CreateBackend() OVERRIDE;
|
|
|
| @@ -110,7 +177,17 @@
|
| private:
|
| syncer::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_;
|
| +
|
| base::Closure callback_;
|
| + bool set_initial_sync_ended_on_init_;
|
| +
|
| + bool fail_initial_download_;
|
| + syncer::StorageOption storage_option_;
|
| };
|
|
|
| #endif // CHROME_BROWSER_SYNC_TEST_PROFILE_SYNC_SERVICE_H_
|
|
|