summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi
diff options
context:
space:
mode:
authoradamk@chromium.org <adamk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-25 21:19:29 +0000
committeradamk@chromium.org <adamk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-25 21:19:29 +0000
commit525ea6d7060f2ac5a4f8ad5c94f4d312f16925f6 (patch)
tree404d7267b2c181aff5cb69a1daaa0f79f315c5ec /webkit/fileapi
parent636cb26c2495b180e8a861df5d94d6b0ac8f32ba (diff)
downloadchromium_src-525ea6d7060f2ac5a4f8ad5c94f4d312f16925f6.zip
chromium_src-525ea6d7060f2ac5a4f8ad5c94f4d312f16925f6.tar.gz
chromium_src-525ea6d7060f2ac5a4f8ad5c94f4d312f16925f6.tar.bz2
Properly return TYPE_MISMATCH_ERR for DirectoryExists/FileExists
operation when the target isn't a directory/file, respectively. This matches what the File API spec says about error codes: http://dev.w3.org/2009/dap/file-system/file-dir-sys.html#error-code-descriptions BUG=none TEST=none Review URL: http://codereview.chromium.org/6591013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76098 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi')
-rw-r--r--webkit/fileapi/file_system_operation.cc4
-rw-r--r--webkit/fileapi/file_system_operation_unittest.cc14
2 files changed, 16 insertions, 2 deletions
diff --git a/webkit/fileapi/file_system_operation.cc b/webkit/fileapi/file_system_operation.cc
index 5e66453..b01f4d5 100644
--- a/webkit/fileapi/file_system_operation.cc
+++ b/webkit/fileapi/file_system_operation.cc
@@ -326,7 +326,7 @@ void FileSystemOperation::DidDirectoryExists(
if (file_info.is_directory)
dispatcher_->DidSucceed();
else
- dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_FAILED);
+ dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY);
} else {
dispatcher_->DidFail(rv);
}
@@ -338,7 +338,7 @@ void FileSystemOperation::DidFileExists(
const base::PlatformFileInfo& file_info) {
if (rv == base::PLATFORM_FILE_OK) {
if (file_info.is_directory)
- dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_FAILED);
+ dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_NOT_A_FILE);
else
dispatcher_->DidSucceed();
} else {
diff --git a/webkit/fileapi/file_system_operation_unittest.cc b/webkit/fileapi/file_system_operation_unittest.cc
index b535676..7e3a177 100644
--- a/webkit/fileapi/file_system_operation_unittest.cc
+++ b/webkit/fileapi/file_system_operation_unittest.cc
@@ -570,6 +570,20 @@ TEST_F(FileSystemOperationTest, TestExistsAndMetadataSuccess) {
EXPECT_FALSE(info().is_directory);
}
+TEST_F(FileSystemOperationTest, TestTypeMismatchErrors) {
+ ScopedTempDir dir;
+ ASSERT_TRUE(dir.CreateUniqueTempDir());
+ operation()->FileExists(dir.path());
+ MessageLoop::current()->RunAllPending();
+ EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_FILE, status());
+
+ FilePath file;
+ ASSERT_TRUE(file_util::CreateTemporaryFileInDir(dir.path(), &file));
+ operation()->DirectoryExists(file);
+ MessageLoop::current()->RunAllPending();
+ EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY, status());
+}
+
TEST_F(FileSystemOperationTest, TestReadDirFailure) {
// Path doesn't exists
FilePath nonexisting_dir_path(base_.path().Append(