operation_test_base.cc revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
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/threading/sequenced_worker_pool.h" 8#include "chrome/browser/chromeos/drive/change_list_loader.h" 9#include "chrome/browser/chromeos/drive/fake_free_disk_space_getter.h" 10#include "chrome/browser/chromeos/drive/file_cache.h" 11#include "chrome/browser/chromeos/drive/file_system/operation_observer.h" 12#include "chrome/browser/chromeos/drive/job_scheduler.h" 13#include "chrome/browser/chromeos/drive/resource_metadata.h" 14#include "chrome/browser/chromeos/drive/test_util.h" 15#include "chrome/browser/google_apis/fake_drive_service.h" 16#include "chrome/browser/google_apis/test_util.h" 17#include "chrome/test/base/testing_profile.h" 18 19namespace drive { 20namespace file_system { 21 22namespace { 23const int64 kLotsOfSpace = internal::kMinFreeSpace * 10; 24} 25 26OperationTestBase::LoggingObserver::LoggingObserver() { 27} 28 29OperationTestBase::LoggingObserver::~LoggingObserver() { 30} 31 32void OperationTestBase::LoggingObserver::OnDirectoryChangedByOperation( 33 const base::FilePath& path) { 34 changed_paths_.insert(path); 35} 36 37OperationTestBase::OperationTestBase() 38 : ui_thread_(content::BrowserThread::UI, &message_loop_) { 39} 40 41OperationTestBase::~OperationTestBase() { 42} 43 44void OperationTestBase::SetUp() { 45 scoped_refptr<base::SequencedWorkerPool> pool = 46 content::BrowserThread::GetBlockingPool(); 47 blocking_task_runner_ = 48 pool->GetSequencedTaskRunner(pool->GetSequenceToken()); 49 50 profile_.reset(new TestingProfile); 51 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 52 53 fake_drive_service_.reset(new google_apis::FakeDriveService); 54 fake_drive_service_->LoadResourceListForWapi( 55 "chromeos/gdata/root_feed.json"); 56 fake_drive_service_->LoadAccountMetadataForWapi( 57 "chromeos/gdata/account_metadata.json"); 58 59 scheduler_.reset( 60 new JobScheduler(profile_.get(), fake_drive_service_.get())); 61 62 metadata_.reset(new internal::ResourceMetadata(temp_dir_.path(), 63 blocking_task_runner_)); 64 65 FileError error = FILE_ERROR_FAILED; 66 metadata_->Initialize( 67 google_apis::test_util::CreateCopyResultCallback(&error)); 68 google_apis::test_util::RunBlockingPoolTask(); 69 ASSERT_EQ(FILE_ERROR_OK, error); 70 71 fake_free_disk_space_getter_.reset(new FakeFreeDiskSpaceGetter); 72 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); 73 cache_.reset(new internal::FileCache(temp_dir_.path(), 74 blocking_task_runner_, 75 fake_free_disk_space_getter_.get())); 76 cache_->RequestInitializeForTesting(); 77 google_apis::test_util::RunBlockingPoolTask(); 78 79 // Makes sure the FakeDriveService's content is loaded to the metadata_. 80 internal::ChangeListLoader change_list_loader( 81 blocking_task_runner_, metadata_.get(), scheduler_.get()); 82 83 change_list_loader.LoadIfNeeded( 84 DirectoryFetchInfo(), 85 google_apis::test_util::CreateCopyResultCallback(&error)); 86 google_apis::test_util::RunBlockingPoolTask(); 87 ASSERT_EQ(FILE_ERROR_OK, error); 88} 89 90void OperationTestBase::TearDown() { 91 cache_.reset(); 92 fake_free_disk_space_getter_.reset(); 93 metadata_.reset(); 94 scheduler_.reset(); 95 fake_drive_service_.reset(); 96 profile_.reset(); 97 98 blocking_task_runner_ = NULL; 99} 100 101FileError OperationTestBase::GetLocalResourceEntry(const base::FilePath& path, 102 ResourceEntry* entry) { 103 FileError error = FILE_ERROR_FAILED; 104 base::PostTaskAndReplyWithResult( 105 blocking_task_runner(), 106 FROM_HERE, 107 base::Bind(&internal::ResourceMetadata::GetResourceEntryByPath, 108 base::Unretained(metadata()), path, entry), 109 base::Bind(google_apis::test_util::CreateCopyResultCallback(&error))); 110 google_apis::test_util::RunBlockingPoolTask(); 111 return error; 112} 113 114} // namespace file_system 115} // namespace drive 116