operation_test_base.cc revision 7dbb3d5cf0c15f500944d211057644d6a2f37371
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/chromeos/drive/file_system/operation_test_base.h" 6 7#include "base/prefs/testing_pref_service.h" 8#include "base/threading/sequenced_worker_pool.h" 9#include "chrome/browser/chromeos/drive/change_list_loader.h" 10#include "chrome/browser/chromeos/drive/fake_free_disk_space_getter.h" 11#include "chrome/browser/chromeos/drive/file_cache.h" 12#include "chrome/browser/chromeos/drive/file_system/operation_observer.h" 13#include "chrome/browser/chromeos/drive/job_scheduler.h" 14#include "chrome/browser/chromeos/drive/resource_metadata.h" 15#include "chrome/browser/chromeos/drive/test_util.h" 16#include "chrome/browser/drive/fake_drive_service.h" 17#include "chrome/browser/google_apis/test_util.h" 18#include "content/public/browser/browser_thread.h" 19 20namespace drive { 21namespace file_system { 22 23OperationTestBase::LoggingObserver::LoggingObserver() { 24} 25 26OperationTestBase::LoggingObserver::~LoggingObserver() { 27} 28 29void OperationTestBase::LoggingObserver::OnDirectoryChangedByOperation( 30 const base::FilePath& path) { 31 changed_paths_.insert(path); 32} 33 34void OperationTestBase::LoggingObserver::OnCacheFileUploadNeededByOperation( 35 const std::string& resource_id) { 36 upload_needed_resource_ids_.insert(resource_id); 37} 38 39OperationTestBase::OperationTestBase() { 40} 41 42OperationTestBase::~OperationTestBase() { 43} 44 45void OperationTestBase::SetUp() { 46 scoped_refptr<base::SequencedWorkerPool> pool = 47 content::BrowserThread::GetBlockingPool(); 48 blocking_task_runner_ = 49 pool->GetSequencedTaskRunner(pool->GetSequenceToken()); 50 51 pref_service_.reset(new TestingPrefServiceSimple); 52 test_util::RegisterDrivePrefs(pref_service_->registry()); 53 54 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 55 56 fake_drive_service_.reset(new FakeDriveService); 57 fake_drive_service_->LoadResourceListForWapi( 58 "gdata/root_feed.json"); 59 fake_drive_service_->LoadAccountMetadataForWapi( 60 "gdata/account_metadata.json"); 61 62 scheduler_.reset(new JobScheduler( 63 pref_service_.get(), 64 fake_drive_service_.get(), 65 blocking_task_runner_.get())); 66 67 metadata_storage_.reset(new internal::ResourceMetadataStorage( 68 temp_dir_.path(), blocking_task_runner_.get())); 69 bool success = false; 70 base::PostTaskAndReplyWithResult( 71 blocking_task_runner_.get(), 72 FROM_HERE, 73 base::Bind(&internal::ResourceMetadataStorage::Initialize, 74 base::Unretained(metadata_storage_.get())), 75 google_apis::test_util::CreateCopyResultCallback(&success)); 76 test_util::RunBlockingPoolTask(); 77 ASSERT_TRUE(success); 78 79 metadata_.reset(new internal::ResourceMetadata(metadata_storage_.get(), 80 blocking_task_runner_)); 81 82 FileError error = FILE_ERROR_FAILED; 83 base::PostTaskAndReplyWithResult( 84 blocking_task_runner_.get(), 85 FROM_HERE, 86 base::Bind(&internal::ResourceMetadata::Initialize, 87 base::Unretained(metadata_.get())), 88 google_apis::test_util::CreateCopyResultCallback(&error)); 89 test_util::RunBlockingPoolTask(); 90 ASSERT_EQ(FILE_ERROR_OK, error); 91 92 fake_free_disk_space_getter_.reset(new FakeFreeDiskSpaceGetter); 93 cache_.reset(new internal::FileCache(metadata_storage_.get(), 94 temp_dir_.path(), 95 blocking_task_runner_.get(), 96 fake_free_disk_space_getter_.get())); 97 success = false; 98 base::PostTaskAndReplyWithResult( 99 blocking_task_runner_.get(), 100 FROM_HERE, 101 base::Bind(&internal::FileCache::Initialize, 102 base::Unretained(cache_.get())), 103 google_apis::test_util::CreateCopyResultCallback(&success)); 104 test_util::RunBlockingPoolTask(); 105 ASSERT_TRUE(success); 106 107 // Makes sure the FakeDriveService's content is loaded to the metadata_. 108 internal::ChangeListLoader change_list_loader( 109 blocking_task_runner_.get(), metadata_.get(), scheduler_.get()); 110 111 change_list_loader.LoadIfNeeded( 112 DirectoryFetchInfo(), 113 google_apis::test_util::CreateCopyResultCallback(&error)); 114 test_util::RunBlockingPoolTask(); 115 ASSERT_EQ(FILE_ERROR_OK, error); 116} 117 118FileError OperationTestBase::GetLocalResourceEntry(const base::FilePath& path, 119 ResourceEntry* entry) { 120 FileError error = FILE_ERROR_FAILED; 121 base::PostTaskAndReplyWithResult( 122 blocking_task_runner(), 123 FROM_HERE, 124 base::Bind(&internal::ResourceMetadata::GetResourceEntryByPath, 125 base::Unretained(metadata()), path, entry), 126 base::Bind(google_apis::test_util::CreateCopyResultCallback(&error))); 127 test_util::RunBlockingPoolTask(); 128 return error; 129} 130 131} // namespace file_system 132} // namespace drive 133