From 525ea6d7060f2ac5a4f8ad5c94f4d312f16925f6 Mon Sep 17 00:00:00 2001 From: "adamk@chromium.org" Date: Fri, 25 Feb 2011 21:19:29 +0000 Subject: 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 --- webkit/fileapi/file_system_operation.cc | 4 ++-- webkit/fileapi/file_system_operation_unittest.cc | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'webkit/fileapi') 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( -- cgit v1.1