operation_test_base.cc revision 424c4d7b64af9d0d8fd9624f381f469654d5e3d2
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_processor.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& local_id) { 36 upload_needed_local_ids_.insert(local_id); 37} 38 39OperationTestBase::OperationTestBase() { 40} 41 42OperationTestBase::OperationTestBase(int test_thread_bundle_options) 43 : thread_bundle_(test_thread_bundle_options) { 44} 45 46OperationTestBase::~OperationTestBase() { 47} 48 49void OperationTestBase::SetUp() { 50 scoped_refptr<base::SequencedWorkerPool> pool = 51 content::BrowserThread::GetBlockingPool(); 52 blocking_task_runner_ = 53 pool->GetSequencedTaskRunner(pool->GetSequenceToken()); 54 55 pref_service_.reset(new TestingPrefServiceSimple); 56 test_util::RegisterDrivePrefs(pref_service_->registry()); 57 58 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 59 60 fake_drive_service_.reset(new FakeDriveService); 61 fake_drive_service_->LoadResourceListForWapi( 62 "gdata/root_feed.json"); 63 fake_drive_service_->LoadAccountMetadataForWapi( 64 "gdata/account_metadata.json"); 65 66 scheduler_.reset(new JobScheduler( 67 pref_service_.get(), 68 fake_drive_service_.get(), 69 blocking_task_runner_.get())); 70 71 metadata_storage_.reset(new internal::ResourceMetadataStorage( 72 temp_dir_.path(), blocking_task_runner_.get())); 73 bool success = false; 74 base::PostTaskAndReplyWithResult( 75 blocking_task_runner_.get(), 76 FROM_HERE, 77 base::Bind(&internal::ResourceMetadataStorage::Initialize, 78 base::Unretained(metadata_storage_.get())), 79 google_apis::test_util::CreateCopyResultCallback(&success)); 80 test_util::RunBlockingPoolTask(); 81 ASSERT_TRUE(success); 82 83 metadata_.reset(new internal::ResourceMetadata(metadata_storage_.get(), 84 blocking_task_runner_)); 85 86 FileError error = FILE_ERROR_FAILED; 87 base::PostTaskAndReplyWithResult( 88 blocking_task_runner_.get(), 89 FROM_HERE, 90 base::Bind(&internal::ResourceMetadata::Initialize, 91 base::Unretained(metadata_.get())), 92 google_apis::test_util::CreateCopyResultCallback(&error)); 93 test_util::RunBlockingPoolTask(); 94 ASSERT_EQ(FILE_ERROR_OK, error); 95 96 fake_free_disk_space_getter_.reset(new FakeFreeDiskSpaceGetter); 97 cache_.reset(new internal::FileCache(metadata_storage_.get(), 98 temp_dir_.path(), 99 blocking_task_runner_.get(), 100 fake_free_disk_space_getter_.get())); 101 success = false; 102 base::PostTaskAndReplyWithResult( 103 blocking_task_runner_.get(), 104 FROM_HERE, 105 base::Bind(&internal::FileCache::Initialize, 106 base::Unretained(cache_.get())), 107 google_apis::test_util::CreateCopyResultCallback(&success)); 108 test_util::RunBlockingPoolTask(); 109 ASSERT_TRUE(success); 110 111 // Makes sure the FakeDriveService's content is loaded to the metadata_. 112 change_list_loader_.reset(new internal::ChangeListLoader( 113 blocking_task_runner_.get(), metadata_.get(), scheduler_.get())); 114 change_list_loader_->LoadIfNeeded( 115 internal::DirectoryFetchInfo(), 116 google_apis::test_util::CreateCopyResultCallback(&error)); 117 test_util::RunBlockingPoolTask(); 118 ASSERT_EQ(FILE_ERROR_OK, error); 119} 120 121FileError OperationTestBase::GetLocalResourceEntry(const base::FilePath& path, 122 ResourceEntry* entry) { 123 FileError error = FILE_ERROR_FAILED; 124 base::PostTaskAndReplyWithResult( 125 blocking_task_runner(), 126 FROM_HERE, 127 base::Bind(&internal::ResourceMetadata::GetResourceEntryByPath, 128 base::Unretained(metadata()), path, entry), 129 base::Bind(google_apis::test_util::CreateCopyResultCallback(&error))); 130 test_util::RunBlockingPoolTask(); 131 return error; 132} 133 134std::string OperationTestBase::GetLocalId(const base::FilePath& path) { 135 std::string local_id; 136 FileError error = FILE_ERROR_FAILED; 137 base::PostTaskAndReplyWithResult( 138 blocking_task_runner(), 139 FROM_HERE, 140 base::Bind(&internal::ResourceMetadata::GetIdByPath, 141 base::Unretained(metadata()), path, &local_id), 142 base::Bind(google_apis::test_util::CreateCopyResultCallback(&error))); 143 test_util::RunBlockingPoolTask(); 144 EXPECT_EQ(FILE_ERROR_OK, error) << path.value(); 145 return local_id; 146} 147 148FileError OperationTestBase::CheckForUpdates() { 149 FileError error = FILE_ERROR_FAILED; 150 change_list_loader_->CheckForUpdates( 151 google_apis::test_util::CreateCopyResultCallback(&error)); 152 test_util::RunBlockingPoolTask(); 153 return error; 154} 155 156} // namespace file_system 157} // namespace drive 158