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_ |