summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-15 16:41:12 +0000
committertzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-15 17:17:55 +0000
commit5ca41a47d57e545450b8d94641ac04e4044d5b75 (patch)
tree000a6913ba4968338013054e8247429d841770ce
parentade7d2100e3321f53070956243ef1ecae724cde8 (diff)
downloadchromium_src-5ca41a47d57e545450b8d94641ac04e4044d5b75.zip
chromium_src-5ca41a47d57e545450b8d94641ac04e4044d5b75.tar.gz
chromium_src-5ca41a47d57e545450b8d94641ac04e4044d5b75.tar.bz2
[SyncFS] Add an injection point to DriveService creation at SyncEngine::Initialize
Add an injection point for testing. BUG=402356 Review URL: https://codereview.chromium.org/476053002 Cr-Commit-Position: refs/heads/master@{#289918} git-svn-id: svn://svn.chromium.org/chrome/trunk/src@289918 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/sync_file_system/drive_backend/drive_backend_sync_unittest.cc1
-rw-r--r--chrome/browser/sync_file_system/drive_backend/sync_engine.cc38
-rw-r--r--chrome/browser/sync_file_system/drive_backend/sync_engine.h22
-rw-r--r--chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc1
4 files changed, 47 insertions, 15 deletions
diff --git a/chrome/browser/sync_file_system/drive_backend/drive_backend_sync_unittest.cc b/chrome/browser/sync_file_system/drive_backend/drive_backend_sync_unittest.cc
index 537a628..d04e358 100644
--- a/chrome/browser/sync_file_system/drive_backend/drive_backend_sync_unittest.cc
+++ b/chrome/browser/sync_file_system/drive_backend/drive_backend_sync_unittest.cc
@@ -123,6 +123,7 @@ class DriveBackendSyncTest : public testing::Test,
NULL, // signin_manager
NULL, // token_service
NULL, // request_context
+ scoped_ptr<SyncEngine::DriveServiceFactory>(),
in_memory_env_.get()));
remote_sync_service_->AddServiceObserver(this);
remote_sync_service_->InitializeForTesting(
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
index 511f131..f85825f 100644
--- a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
+++ b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
@@ -63,6 +63,23 @@ class RemoteChangeProcessor;
namespace drive_backend {
+scoped_ptr<drive::DriveServiceInterface>
+SyncEngine::DriveServiceFactory::CreateDriveService(
+ OAuth2TokenService* oauth2_token_service,
+ net::URLRequestContextGetter* url_request_context_getter,
+ base::SequencedTaskRunner* blocking_task_runner) {
+ return scoped_ptr<drive::DriveServiceInterface>(
+ new drive::DriveAPIService(
+ oauth2_token_service,
+ url_request_context_getter,
+ blocking_task_runner,
+ GURL(google_apis::DriveApiUrlGenerator::kBaseUrlForProduction),
+ GURL(google_apis::DriveApiUrlGenerator::
+ kBaseDownloadUrlForProduction),
+ GURL(google_apis::GDataWapiUrlGenerator::kBaseUrlForProduction),
+ std::string() /* custom_user_agent */));
+}
+
class SyncEngine::WorkerObserver : public SyncWorkerInterface::Observer {
public:
WorkerObserver(base::SequencedTaskRunner* ui_task_runner,
@@ -193,7 +210,7 @@ scoped_ptr<SyncEngine> SyncEngine::CreateForBrowserContext(
extensions::ExtensionSystem::Get(context)->extension_service();
SigninManagerBase* signin_manager =
SigninManagerFactory::GetForProfile(profile);
- ProfileOAuth2TokenService* token_service =
+ OAuth2TokenService* token_service =
ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
scoped_refptr<net::URLRequestContextGetter> request_context =
context->GetRequestContext();
@@ -209,6 +226,7 @@ scoped_ptr<SyncEngine> SyncEngine::CreateForBrowserContext(
signin_manager,
token_service,
request_context,
+ make_scoped_ptr(new DriveServiceFactory()),
NULL /* env_override */));
sync_engine->Initialize();
@@ -259,16 +277,10 @@ void SyncEngine::Initialize() {
signin_manager_->GetAuthenticatedAccountId().empty())
return;
- scoped_ptr<drive::DriveServiceInterface> drive_service(
- new drive::DriveAPIService(
- token_service_,
- request_context_,
- drive_task_runner_,
- GURL(google_apis::DriveApiUrlGenerator::kBaseUrlForProduction),
- GURL(google_apis::DriveApiUrlGenerator::
- kBaseDownloadUrlForProduction),
- GURL(google_apis::GDataWapiUrlGenerator::kBaseUrlForProduction),
- std::string() /* custom_user_agent */));
+ DCHECK(drive_service_factory_);
+ scoped_ptr<drive::DriveServiceInterface> drive_service =
+ drive_service_factory_->CreateDriveService(
+ token_service_, request_context_, drive_task_runner_);
scoped_ptr<drive::DriveUploaderInterface> drive_uploader(
new drive::DriveUploader(drive_service.get(), drive_task_runner_));
@@ -713,8 +725,9 @@ SyncEngine::SyncEngine(
drive::DriveNotificationManager* notification_manager,
ExtensionServiceInterface* extension_service,
SigninManagerBase* signin_manager,
- ProfileOAuth2TokenService* token_service,
+ OAuth2TokenService* token_service,
net::URLRequestContextGetter* request_context,
+ scoped_ptr<DriveServiceFactory> drive_service_factory,
leveldb::Env* env_override)
: ui_task_runner_(ui_task_runner),
worker_task_runner_(worker_task_runner),
@@ -726,6 +739,7 @@ SyncEngine::SyncEngine(
signin_manager_(signin_manager),
token_service_(token_service),
request_context_(request_context),
+ drive_service_factory_(drive_service_factory.Pass()),
remote_change_processor_(NULL),
service_state_(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE),
has_refresh_token_(false),
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_engine.h b/chrome/browser/sync_file_system/drive_backend/sync_engine.h
index 8fb91a3..e8e354a 100644
--- a/chrome/browser/sync_file_system/drive_backend/sync_engine.h
+++ b/chrome/browser/sync_file_system/drive_backend/sync_engine.h
@@ -22,7 +22,7 @@
#include "net/base/network_change_notifier.h"
class ExtensionServiceInterface;
-class ProfileOAuth2TokenService;
+class OAuth2TokenService;
namespace base {
class SequencedTaskRunner;
@@ -65,6 +65,19 @@ class SyncEngine : public RemoteFileSyncService,
public:
typedef RemoteFileSyncService::Observer SyncServiceObserver;
+ class DriveServiceFactory {
+ public:
+ DriveServiceFactory() {}
+ virtual ~DriveServiceFactory() {}
+ virtual scoped_ptr<drive::DriveServiceInterface> CreateDriveService(
+ OAuth2TokenService* oauth2_token_service,
+ net::URLRequestContextGetter* url_request_context_getter,
+ base::SequencedTaskRunner* blocking_task_runner);
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(DriveServiceFactory);
+ };
+
static scoped_ptr<SyncEngine> CreateForBrowserContext(
content::BrowserContext* context,
TaskLogger* task_logger);
@@ -154,8 +167,9 @@ class SyncEngine : public RemoteFileSyncService,
drive::DriveNotificationManager* notification_manager,
ExtensionServiceInterface* extension_service,
SigninManagerBase* signin_manager,
- ProfileOAuth2TokenService* token_service,
+ OAuth2TokenService* token_service,
net::URLRequestContextGetter* request_context,
+ scoped_ptr<DriveServiceFactory> drive_service_factory,
leveldb::Env* env_override);
// Called by WorkerObserver.
@@ -183,10 +197,12 @@ class SyncEngine : public RemoteFileSyncService,
drive::DriveNotificationManager* notification_manager_;
ExtensionServiceInterface* extension_service_;
SigninManagerBase* signin_manager_;
- ProfileOAuth2TokenService* token_service_;
+ OAuth2TokenService* token_service_;
scoped_refptr<net::URLRequestContextGetter> request_context_;
+ scoped_ptr<DriveServiceFactory> drive_service_factory_;
+
scoped_ptr<drive::DriveServiceInterface> drive_service_;
scoped_ptr<DriveServiceWrapper> drive_service_wrapper_;
scoped_ptr<drive::DriveUploaderInterface> drive_uploader_;
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc b/chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc
index ec7649d..d4d85f1 100644
--- a/chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc
+++ b/chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc
@@ -55,6 +55,7 @@ class SyncEngineTest : public testing::Test,
NULL /* signin_manager */,
NULL /* token_service */,
NULL /* request_context */,
+ scoped_ptr<SyncEngine::DriveServiceFactory>(),
NULL /* in_memory_env */));
sync_engine_->InitializeForTesting(