| Index: chrome/browser/chromeos/gdata/gdata_system_service.cc
|
| diff --git a/chrome/browser/chromeos/gdata/gdata_system_service.cc b/chrome/browser/chromeos/gdata/gdata_system_service.cc
|
| index 777ee9c964ef9859d9c2bac41025aaa197207670..98bc1ea74788519a7325a40141742db90b442663 100644
|
| --- a/chrome/browser/chromeos/gdata/gdata_system_service.cc
|
| +++ b/chrome/browser/chromeos/gdata/gdata_system_service.cc
|
| @@ -29,6 +29,10 @@ using content::BrowserThread;
|
|
|
| namespace {
|
|
|
| +// Used in test to setup system service.
|
| +gdata::DocumentsServiceInterface* g_test_documents_service = NULL;
|
| +const std::string* g_test_cache_root = NULL;
|
| +
|
| scoped_refptr<base::SequencedTaskRunner> GetTaskRunner(
|
| const base::SequencedWorkerPool::SequenceToken& sequence_token) {
|
| return BrowserThread::GetBlockingPool()->GetSequencedTaskRunner(
|
| @@ -53,12 +57,13 @@ GDataSystemService::~GDataSystemService() {
|
| }
|
|
|
| void GDataSystemService::Initialize(
|
| - DocumentsServiceInterface* documents_service) {
|
| + DocumentsServiceInterface* documents_service,
|
| + const FilePath& cache_root) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
|
|
| documents_service_.reset(documents_service);
|
| cache_ = GDataCache::CreateGDataCacheOnUIThread(
|
| - GDataCache::GetCacheRootPath(profile_),
|
| + cache_root,
|
| GetTaskRunner(sequence_token_));
|
| uploader_.reset(new GDataUploader(docs_service()));
|
| webapps_registry_.reset(new DriveWebAppsRegistry);
|
| @@ -153,27 +158,37 @@ GDataSystemServiceFactory::~GDataSystemServiceFactory() {
|
| }
|
|
|
| // static
|
| -ProfileKeyedService* GDataSystemServiceFactory::CreateInstance(
|
| - Profile* profile) {
|
| - return new GDataSystemService(profile);
|
| +void GDataSystemServiceFactory::set_documents_service_for_test(
|
| + DocumentsServiceInterface* documents_service) {
|
| + if (g_test_documents_service)
|
| + delete g_test_documents_service;
|
| + g_test_documents_service = documents_service;
|
| }
|
|
|
| -GDataSystemService*
|
| -GDataSystemServiceFactory::GetWithCustomDocumentsServiceForTesting(
|
| - Profile* profile,
|
| - DocumentsServiceInterface* documents_service) {
|
| - GDataSystemService* service =
|
| - static_cast<GDataSystemService*>(GetInstance()->SetTestingFactoryAndUse(
|
| - profile,
|
| - &GDataSystemServiceFactory::CreateInstance));
|
| - service->Initialize(documents_service);
|
| - return service;
|
| +// static
|
| +void GDataSystemServiceFactory::set_cache_root_for_test(
|
| + const std::string& cache_root) {
|
| + if (g_test_cache_root)
|
| + delete g_test_cache_root;
|
| + g_test_cache_root = !cache_root.empty() ? new std::string(cache_root) : NULL;
|
| }
|
|
|
| ProfileKeyedService* GDataSystemServiceFactory::BuildServiceInstanceFor(
|
| Profile* profile) const {
|
| GDataSystemService* service = new GDataSystemService(profile);
|
| - service->Initialize(new DocumentsService);
|
| +
|
| + DocumentsServiceInterface* documents_service =
|
| + g_test_documents_service ? g_test_documents_service :
|
| + new DocumentsService();
|
| + g_test_documents_service = NULL;
|
| +
|
| + FilePath cache_root =
|
| + g_test_cache_root ? FilePath(*g_test_cache_root) :
|
| + GDataCache::GetCacheRootPath(profile);
|
| + delete g_test_cache_root;
|
| + g_test_cache_root = NULL;
|
| +
|
| + service->Initialize(documents_service, cache_root);
|
| return service;
|
| }
|
|
|
|
|