Chromium Code Reviews| Index: chrome/browser/media_galleries/fileapi/picasa/picasa_file_util_unittest.cc |
| diff --git a/chrome/browser/media_galleries/fileapi/picasa/picasa_file_util_unittest.cc b/chrome/browser/media_galleries/fileapi/picasa/picasa_file_util_unittest.cc |
| index bfa565f5bdd9674b9fd4b3e5a3915101f04d9c32..11c9f1ec8ff699ed14d91dc573a5fd0fb8d9e9f7 100644 |
| --- a/chrome/browser/media_galleries/fileapi/picasa/picasa_file_util_unittest.cc |
| +++ b/chrome/browser/media_galleries/fileapi/picasa/picasa_file_util_unittest.cc |
| @@ -9,6 +9,7 @@ |
| #include "base/files/scoped_temp_dir.h" |
| #include "base/memory/scoped_vector.h" |
| #include "base/message_loop.h" |
| +#include "base/run_loop.h" |
| #include "base/stringprintf.h" |
| #include "base/time.h" |
| #include "chrome/browser/media_galleries/fileapi/media_file_system_mount_point_provider.h" |
| @@ -18,6 +19,7 @@ |
| #include "chrome/browser/media_galleries/fileapi/picasa/picasa_file_util.h" |
| #include "chrome/browser/media_galleries/fileapi/picasa/pmp_constants.h" |
| #include "chrome/browser/media_galleries/fileapi/picasa/pmp_test_helper.h" |
| +#include "content/public/test/test_browser_thread.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "webkit/browser/fileapi/async_file_util_adapter.h" |
| #include "webkit/browser/fileapi/external_mount_points.h" |
| @@ -146,10 +148,9 @@ class TestMediaFileSystemMountPointProvider |
| public: |
| TestMediaFileSystemMountPointProvider( |
| const base::FilePath& profile_path, |
| - scoped_ptr<PicasaFileUtil> picasa_file_util) |
| + PicasaFileUtil* picasa_file_util) |
| : chrome::MediaFileSystemMountPointProvider(profile_path), |
| - test_file_util_(new fileapi::AsyncFileUtilAdapter( |
| - picasa_file_util.release())) { |
| + test_file_util_(picasa_file_util) { |
| } |
| virtual fileapi::AsyncFileUtil* |
| @@ -173,11 +174,47 @@ void DidReadDirectory(FileSystemOperation::FileEntryList* contents, |
| *contents = file_list; |
| } |
| +void ReadDirectoryTestCallback( |
| + base::RunLoop* run_loop, |
| + base::PlatformFileError* error_result, |
| + fileapi::AsyncFileUtil::EntryList* file_list_result, |
| + bool* has_more_result, |
| + base::PlatformFileError error, |
| + const fileapi::AsyncFileUtil::EntryList& file_list, |
| + bool has_more) { |
| + DCHECK(error_result); |
| + DCHECK(file_list_result); |
| + DCHECK(has_more_result); |
| + *error_result = error; |
| + *file_list_result = file_list; |
| + *has_more_result = has_more; |
| + run_loop->Quit(); |
| +} |
| + |
| +base::PlatformFileError ReadDirectoryTestHelper( |
| + fileapi::AsyncFileUtil* file_util, |
| + FileSystemOperationContext* operation_context, |
| + FileSystemURL url, |
| + fileapi::AsyncFileUtil::EntryList* file_list) { |
| + base::RunLoop run_loop; |
| + base::PlatformFileError result; |
| + bool has_more = false; |
|
Lei Zhang
2013/06/03 10:05:46
do you want to make this an out param so the calle
vandebo (ex-Chrome)
2013/06/03 19:15:26
If a caller cares about the result, they can modif
Lei Zhang
2013/06/03 20:52:05
In that case, why not just remove it altogether an
vandebo (ex-Chrome)
2013/06/03 22:31:33
Done.
|
| + file_util->ReadDirectory( |
| + operation_context, |
| + url, |
| + base::Bind(&ReadDirectoryTestCallback, &run_loop, &result, file_list, |
| + &has_more)); |
| + run_loop.Run(); |
| + return result; |
| +} |
| + |
| } // namespace |
| class PicasaFileUtilTest : public testing::Test { |
| public: |
| - PicasaFileUtilTest() {} |
| + PicasaFileUtilTest() |
| + : io_thread_(content::BrowserThread::IO, &message_loop_) { |
| + } |
| virtual ~PicasaFileUtilTest() {} |
| virtual void SetUp() OVERRIDE { |
| @@ -186,8 +223,6 @@ class PicasaFileUtilTest : public testing::Test { |
| scoped_ptr<PicasaDataProvider> data_provider( |
| new PicasaDataProvider(test_helper_->GetTempDirPath())); |
| - scoped_ptr<PicasaFileUtil> file_util(new TestPicasaFileUtil( |
| - data_provider.Pass())); |
| ASSERT_TRUE(profile_dir_.CreateUniqueTempDir()); |
| @@ -195,9 +230,9 @@ class PicasaFileUtilTest : public testing::Test { |
| new quota::MockSpecialStoragePolicy(); |
| ScopedVector<fileapi::FileSystemMountPointProvider> additional_providers; |
| - additional_providers.push_back( |
| - new TestMediaFileSystemMountPointProvider(profile_dir_.path(), |
| - file_util.Pass())); |
| + additional_providers.push_back(new TestMediaFileSystemMountPointProvider( |
| + profile_dir_.path(), |
| + new TestPicasaFileUtil(data_provider.Pass()))); |
| file_system_context_ = new fileapi::FileSystemContext( |
| fileapi::FileSystemTaskRunners::CreateMockTaskRunners(), |
| @@ -325,6 +360,7 @@ class PicasaFileUtilTest : public testing::Test { |
| private: |
| base::MessageLoop message_loop_; |
| + content::TestBrowserThread io_thread_; |
| base::ScopedTempDir profile_dir_; |
| @@ -375,31 +411,31 @@ TEST_F(PicasaFileUtilTest, NameDeduplication) { |
| AlbumInfo("unique_name", test_date, "uuid1", base::FilePath())); |
| expected_names.push_back("unique_name " + test_date_string); |
| - scoped_ptr<FileSystemOperationContext> operation_context( |
| - new FileSystemOperationContext(file_system_context().get())); |
| + FileSystemOperationContext operation_context(file_system_context().get()); |
| scoped_ptr<chrome::MediaPathFilter> media_path_filter( |
| new chrome::MediaPathFilter()); |
| - operation_context->SetUserValue( |
| + operation_context.SetUserValue( |
| chrome::MediaFileSystemMountPointProvider::kMediaPathFilterKey, |
| media_path_filter.get()); |
| scoped_ptr<PicasaDataProvider> data_provider( |
| new TestPicasaDataProvider(std::vector<AlbumInfo>(), folders)); |
| - TestPicasaFileUtil file_util(data_provider.Pass()); |
| - |
| - scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> file_enumerator = |
| - file_util.CreateFileEnumerator(operation_context.get(), |
| - CreateURL("folders")); |
| - |
| - for (unsigned int i = 0; i < expected_names.size(); ++i) { |
| - base::FilePath path = file_enumerator->Next(); |
| - |
| - ASSERT_TRUE(!path.empty()); |
| - EXPECT_EQ(expected_names[i], path.BaseName().AsUTF8Unsafe()); |
| - EXPECT_EQ(folders[i].timestamp, file_enumerator->LastModifiedTime()); |
| - EXPECT_TRUE(file_enumerator->IsDirectory()); |
| + TestPicasaFileUtil test_file_util(data_provider.Pass()); |
| + |
| + fileapi::AsyncFileUtil::EntryList file_list; |
| + ASSERT_EQ(base::PLATFORM_FILE_OK, |
| + ReadDirectoryTestHelper(&test_file_util, &operation_context, |
| + CreateURL(kPicasaDirFolders), |
| + &file_list)); |
| + |
| + for (size_t i = 0; i < file_list.size(); ++i) { |
| + ASSERT_FALSE(file_list[i].name.empty()); |
|
Lei Zhang
2013/06/03 10:05:46
Not sure this is really neeed. What you do need to
vandebo (ex-Chrome)
2013/06/03 19:15:26
Done.
|
| + EXPECT_EQ(expected_names[i], |
| + base::FilePath(file_list[i].name).AsUTF8Unsafe()); |
| + EXPECT_EQ(folders[i].timestamp, file_list[i].last_modified_time); |
| + EXPECT_TRUE(file_list[i].is_directory); |
| } |
| } |