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 0eb1c24c47763c2f8f59fa071be150b6d1b1db36..5df638f65e57232fdc6867367a3bbb9f90a20958 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,42 @@ void DidReadDirectory(FileSystemOperation::FileEntryList* contents, |
*contents = file_list; |
} |
+void ReadDirectoryTestCallback( |
+ base::RunLoop* run_loop, |
+ base::PlatformFileError* error_result, |
+ fileapi::AsyncFileUtil::EntryList* file_list_result, |
+ base::PlatformFileError error, |
+ const fileapi::AsyncFileUtil::EntryList& file_list, |
+ bool /*has_more*/) { |
+ DCHECK(error_result); |
+ DCHECK(file_list_result); |
+ *error_result = error; |
+ *file_list_result = file_list; |
+ 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; |
+ file_util->ReadDirectory( |
+ operation_context, |
+ url, |
+ base::Bind(&ReadDirectoryTestCallback, &run_loop, &result, file_list)); |
+ 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 +218,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 +225,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 +355,7 @@ class PicasaFileUtilTest : public testing::Test { |
private: |
base::MessageLoop message_loop_; |
+ content::TestBrowserThread io_thread_; |
base::ScopedTempDir profile_dir_; |
@@ -375,31 +406,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)); |
+ |
+ ASSERT_EQ(expected_names.size(), file_list.size()); |
+ for (size_t i = 0; i < file_list.size(); ++i) { |
+ 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); |
} |
} |