From f5f09882760ef0829346d5a5c6747f2820db3248 Mon Sep 17 00:00:00 2001 From: "rtenneti@chromium.org" Date: Sat, 23 Feb 2013 04:37:44 +0000 Subject: Revert 184257 > Fix net::FileStream to handle all errors correctly. > > This CL adds FileStream::Context::IOResult struct that's used to pass > results of IO operations inside FileStream::Context. Following bugs are > fixes: > > 1. On POSIX net::FileStream::Read() and net::FileStream::Write() would > return a positive result in case of an error. This happens because > POSIX errors are positive integers and FileStream was written with > assumption that they are negative. > 2. On Windows Seek() and Flush() errors were not handled correctly. > This is because CheckForIOError() was assuming that all error codes > are negative, but RecordAndMapError() was mapping positive errors. > 3. On Windows results of asynchronous ReadFile() and WriteFile() were > not handled correctly - ERR_IO_PENDING would be returned even when > operation completes synchronously. > > Also added unittests to check that error codes are handled correctly > now. > > Review URL: https://chromiumcodereview.appspot.com/12320003 TBR=sergeyu@chromium.org Review URL: https://codereview.chromium.org/12328071 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184278 0039d316-1c4b-4281-b951-d872f2087c98 --- net/base/file_stream_unittest.cc | 38 -------------------------------------- 1 file changed, 38 deletions(-) (limited to 'net/base/file_stream_unittest.cc') diff --git a/net/base/file_stream_unittest.cc b/net/base/file_stream_unittest.cc index 1f79747..1757918 100644 --- a/net/base/file_stream_unittest.cc +++ b/net/base/file_stream_unittest.cc @@ -1031,44 +1031,6 @@ TEST_F(FileStreamTest, AsyncOpenAndDelete) { EXPECT_FALSE(open_callback.have_result()); } -// Verify that async Write() errors are mapped correctly. -TEST_F(FileStreamTest, AsyncWriteError) { - scoped_ptr stream(new FileStream(NULL)); - int flags = base::PLATFORM_FILE_CREATE_ALWAYS | - base::PLATFORM_FILE_WRITE | - base::PLATFORM_FILE_ASYNC; - int rv = stream->OpenSync(temp_file_path(), flags); - EXPECT_EQ(OK, rv); - - TestCompletionCallback callback; - - // Try passing NULL buffer to Write() and check that it fails. - scoped_refptr buf = new WrappedIOBuffer(NULL); - rv = stream->Write(buf, 1, callback.callback()); - if (rv == ERR_IO_PENDING) - rv = callback.WaitForResult(); - EXPECT_LT(rv, 0); -} - -// Verify that async Read() errors are mapped correctly. -TEST_F(FileStreamTest, AsyncReadError) { - scoped_ptr stream(new FileStream(NULL)); - int flags = base::PLATFORM_FILE_OPEN | - base::PLATFORM_FILE_READ | - base::PLATFORM_FILE_ASYNC; - int rv = stream->OpenSync(temp_file_path(), flags); - EXPECT_EQ(OK, rv); - - TestCompletionCallback callback; - - // Try passing NULL buffer to Read() and check that it fails. - scoped_refptr buf = new WrappedIOBuffer(NULL); - rv = stream->Read(buf, 1, callback.callback()); - if (rv == ERR_IO_PENDING) - rv = callback.WaitForResult(); - EXPECT_LT(rv, 0); -} - } // namespace } // namespace net -- cgit v1.1