Index: net/url_request/url_fetcher_response_writer_unittest.cc |
diff --git a/net/url_request/url_fetcher_response_writer_unittest.cc b/net/url_request/url_fetcher_response_writer_unittest.cc |
index 54763187cc0a16e24fec480ef3078a668e5eeb08..23369fadb812d2a905eeb194f480ba3ec55fb69f 100644 |
--- a/net/url_request/url_fetcher_response_writer_unittest.cc |
+++ b/net/url_request/url_fetcher_response_writer_unittest.cc |
@@ -44,7 +44,7 @@ TEST_F(URLFetcherStringWriterTest, Basic) { |
EXPECT_THAT(callback.GetResult(rv), IsOk()); |
rv = writer_->Write(buf_.get(), buf_->size(), callback.callback()); |
EXPECT_EQ(buf_->size(), callback.GetResult(rv)); |
- rv = writer_->Finish(callback.callback()); |
+ rv = writer_->Finish(OK, callback.callback()); |
EXPECT_THAT(callback.GetResult(rv), IsOk()); |
// Verify the result. |
@@ -80,7 +80,7 @@ TEST_F(URLFetcherFileWriterTest, WriteToFile) { |
EXPECT_THAT(callback.GetResult(rv), IsOk()); |
rv = writer_->Write(buf_.get(), buf_->size(), callback.callback()); |
EXPECT_EQ(buf_->size(), callback.GetResult(rv)); |
- rv = writer_->Finish(callback.callback()); |
+ rv = writer_->Finish(OK, callback.callback()); |
EXPECT_THAT(callback.GetResult(rv), IsOk()); |
// Verify the result. |
@@ -103,7 +103,7 @@ TEST_F(URLFetcherFileWriterTest, InitializeAgain) { |
EXPECT_THAT(callback.GetResult(rv), IsOk()); |
rv = writer_->Write(buf_.get(), buf_->size(), callback.callback()); |
EXPECT_EQ(buf_->size(), callback.GetResult(rv)); |
- rv = writer_->Finish(callback.callback()); |
+ rv = writer_->Finish(OK, callback.callback()); |
EXPECT_THAT(callback.GetResult(rv), IsOk()); |
// Verify the result. |
@@ -119,7 +119,7 @@ TEST_F(URLFetcherFileWriterTest, InitializeAgain) { |
EXPECT_THAT(callback.GetResult(rv), IsOk()); |
rv = writer_->Write(buf2.get(), buf2->size(), callback.callback()); |
EXPECT_EQ(buf2->size(), callback.GetResult(rv)); |
- rv = writer_->Finish(callback.callback()); |
+ rv = writer_->Finish(OK, callback.callback()); |
EXPECT_THAT(callback.GetResult(rv), IsOk()); |
// Verify the result. |
@@ -128,13 +128,71 @@ TEST_F(URLFetcherFileWriterTest, InitializeAgain) { |
EXPECT_EQ(data2, file_contents); |
} |
+TEST_F(URLFetcherFileWriterTest, FinishWhileWritePending) { |
+ int rv = 0; |
+ // Initialize(), Write() and Finish(). |
+ TestCompletionCallback callback; |
+ rv = writer_->Initialize(callback.callback()); |
+ EXPECT_EQ(ERR_IO_PENDING, rv); |
+ EXPECT_THAT(callback.WaitForResult(), IsOk()); |
+ TestCompletionCallback callback2; |
+ rv = writer_->Write(buf_.get(), buf_->size(), callback2.callback()); |
+ EXPECT_EQ(ERR_IO_PENDING, rv); |
+ TestCompletionCallback callback3; |
+ rv = writer_->Finish(ERR_FAILED, callback3.callback()); |
+ EXPECT_EQ(OK, rv); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ // Verify the result. |
+ EXPECT_FALSE(base::PathExists(file_path_)); |
+} |
+ |
+TEST_F(URLFetcherFileWriterTest, FinishWhileOpenPending) { |
+ int rv = 0; |
+ // Initialize() and Finish(). |
+ TestCompletionCallback callback; |
+ rv = writer_->Initialize(callback.callback()); |
+ EXPECT_EQ(ERR_IO_PENDING, rv); |
+ TestCompletionCallback callback2; |
+ rv = writer_->Finish(ERR_FAILED, callback2.callback()); |
+ EXPECT_EQ(OK, rv); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ // Verify the result. |
+ EXPECT_FALSE(base::PathExists(file_path_)); |
+} |
+ |
+TEST_F(URLFetcherFileWriterTest, InitializeAgainAfterFinishWithError) { |
+ int rv = 0; |
+ // Initialize(), Write() and Finish(). |
+ TestCompletionCallback callback; |
+ rv = writer_->Initialize(callback.callback()); |
+ EXPECT_EQ(ERR_IO_PENDING, rv); |
+ EXPECT_THAT(callback.WaitForResult(), IsOk()); |
+ TestCompletionCallback callback2; |
+ rv = writer_->Write(buf_.get(), buf_->size(), callback2.callback()); |
+ EXPECT_EQ(ERR_IO_PENDING, rv); |
+ TestCompletionCallback callback3; |
+ rv = writer_->Finish(ERR_FAILED, callback3.callback()); |
+ EXPECT_EQ(OK, rv); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ // Initialize() again and wait for it to complete. |
+ TestCompletionCallback callback4; |
+ rv = writer_->Initialize(callback4.callback()); |
+ EXPECT_EQ(ERR_IO_PENDING, rv); |
+ EXPECT_THAT(callback4.WaitForResult(), IsOk()); |
+ // Verify the result. |
+ EXPECT_TRUE(base::PathExists(file_path_)); |
+} |
+ |
TEST_F(URLFetcherFileWriterTest, DisownFile) { |
int rv = 0; |
// Initialize() and Finish() to create a file. |
TestCompletionCallback callback; |
rv = writer_->Initialize(callback.callback()); |
EXPECT_THAT(callback.GetResult(rv), IsOk()); |
- rv = writer_->Finish(callback.callback()); |
+ rv = writer_->Finish(OK, callback.callback()); |
EXPECT_THAT(callback.GetResult(rv), IsOk()); |
// Disown file. |
@@ -166,7 +224,7 @@ TEST_F(URLFetcherFileWriterTemporaryFileTest, WriteToTemporaryFile) { |
EXPECT_THAT(callback.GetResult(rv), IsOk()); |
rv = writer_->Write(buf_.get(), buf_->size(), callback.callback()); |
EXPECT_EQ(buf_->size(), callback.GetResult(rv)); |
- rv = writer_->Finish(callback.callback()); |
+ rv = writer_->Finish(OK, callback.callback()); |
EXPECT_THAT(callback.GetResult(rv), IsOk()); |
// Verify the result. |