summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-21 15:32:25 +0000
committerkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-21 15:32:25 +0000
commit1a64720b93157872ed53e6fbf1a6f3eb08a6751b (patch)
treed892beb0b1d1658cba111c905a9a7daff8279112
parentffc0c2d51b01e5ea248ffd13d3c158b65d987afd (diff)
downloadchromium_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.cc11
-rw-r--r--webkit/fileapi/local_file_system_operation_unittest.cc3
-rw-r--r--webkit/fileapi/obfuscated_file_util_unittest.cc2
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));