diff options
author | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-21 15:32:25 +0000 |
---|---|---|
committer | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-21 15:32:25 +0000 |
commit | 1a64720b93157872ed53e6fbf1a6f3eb08a6751b (patch) | |
tree | d892beb0b1d1658cba111c905a9a7daff8279112 | |
parent | ffc0c2d51b01e5ea248ffd13d3c158b65d987afd (diff) | |
download | chromium_src-1a64720b93157872ed53e6fbf1a6f3eb08a6751b.zip chromium_src-1a64720b93157872ed53e6fbf1a6f3eb08a6751b.tar.gz chromium_src-1a64720b93157872ed53e6fbf1a6f3eb08a6751b.tar.bz2 |
ReadDirectory should return NOT_A_DIRECTORY error if the target is a file
BUG=54309
TEST=LocalFileSystemOperationTest.TestReadDirFailure,ObfuscatedFileUtilTest.TestReadDirectoryOnFile
Review URL: https://chromiumcodereview.appspot.com/11953011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@177921 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | webkit/fileapi/file_util_helper.cc | 11 | ||||
-rw-r--r-- | webkit/fileapi/local_file_system_operation_unittest.cc | 3 | ||||
-rw-r--r-- | webkit/fileapi/obfuscated_file_util_unittest.cc | 2 |
3 files changed, 10 insertions, 6 deletions
diff --git a/webkit/fileapi/file_util_helper.cc b/webkit/fileapi/file_util_helper.cc index a11664f..550b19b 100644 --- a/webkit/fileapi/file_util_helper.cc +++ b/webkit/fileapi/file_util_helper.cc @@ -364,9 +364,14 @@ base::PlatformFileError FileUtilHelper::ReadDirectory( std::vector<base::FileUtilProxy::Entry>* entries) { DCHECK(entries); - // TODO(kkanetkar): Implement directory read in multiple chunks. - if (!DirectoryExists(context, file_util, url)) - return base::PLATFORM_FILE_ERROR_NOT_FOUND; + base::PlatformFileInfo file_info; + FilePath platform_path; + PlatformFileError error = file_util->GetFileInfo( + context, url, &file_info, &platform_path); + if (error != base::PLATFORM_FILE_OK) + return error; + if (!file_info.is_directory) + return base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY; scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> file_enum( file_util->CreateFileEnumerator(context, url, false /* recursive */)); diff --git a/webkit/fileapi/local_file_system_operation_unittest.cc b/webkit/fileapi/local_file_system_operation_unittest.cc index d45be9d..9aab4d6 100644 --- a/webkit/fileapi/local_file_system_operation_unittest.cc +++ b/webkit/fileapi/local_file_system_operation_unittest.cc @@ -955,8 +955,7 @@ TEST_F(LocalFileSystemOperationTest, TestReadDirFailure) { operation()->ReadDirectory(URLForPath(file_path), RecordReadDirectoryCallback()); MessageLoop::current()->RunUntilIdle(); - // TODO(kkanetkar) crbug.com/54309 to change the error code. - EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); + EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY, status()); EXPECT_TRUE(change_observer()->HasNoChange()); } diff --git a/webkit/fileapi/obfuscated_file_util_unittest.cc b/webkit/fileapi/obfuscated_file_util_unittest.cc index 3f11572..3de146e 100644 --- a/webkit/fileapi/obfuscated_file_util_unittest.cc +++ b/webkit/fileapi/obfuscated_file_util_unittest.cc @@ -1085,7 +1085,7 @@ TEST_F(ObfuscatedFileUtilTest, TestReadDirectoryOnFile) { context.reset(NewContext(NULL)); std::vector<base::FileUtilProxy::Entry> entries; - EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, + EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY, FileUtilHelper::ReadDirectory( context.get(), ofu(), url, &entries)); |