Index: content/browser/loader/resource_loader_unittest.cc |
diff --git a/content/browser/loader/resource_loader_unittest.cc b/content/browser/loader/resource_loader_unittest.cc |
index 8ef2da039db6008339f6750837fed1f2a447339a..c9fbeccb2591b8fe35e81a338b57b43a95f12a9b 100644 |
--- a/content/browser/loader/resource_loader_unittest.cc |
+++ b/content/browser/loader/resource_loader_unittest.cc |
@@ -798,6 +798,7 @@ TEST_F(ResourceLoaderTest, AsyncResourceHandler) { |
raw_ptr_resource_handler_->set_defer_on_will_start(true); |
raw_ptr_resource_handler_->set_defer_on_request_redirected(true); |
raw_ptr_resource_handler_->set_defer_on_response_started(true); |
+ raw_ptr_resource_handler_->set_defer_on_will_read(true); |
raw_ptr_resource_handler_->set_defer_on_read_completed(true); |
raw_ptr_resource_handler_->set_defer_on_read_eof(true); |
raw_ptr_resource_handler_->set_defer_on_response_completed(true); |
@@ -844,6 +845,18 @@ TEST_F(ResourceLoaderTest, AsyncResourceHandler) { |
EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called()); |
EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); |
+ // Resume and run until OnWillRead. |
+ raw_ptr_resource_handler_->Resume(); |
+ raw_ptr_resource_handler_->WaitUntilDeferred(); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called()); |
+ |
+ // Spinning the message loop should not advance the state further. |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof_called()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); |
+ |
// Resume and run until OnReadCompleted. |
raw_ptr_resource_handler_->Resume(); |
raw_ptr_resource_handler_->WaitUntilDeferred(); |
@@ -853,17 +866,32 @@ TEST_F(ResourceLoaderTest, AsyncResourceHandler) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called()); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); |
- EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof_called()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); |
+ |
+ // Defer on the next OnWillRead call, for the EOF. |
+ raw_ptr_resource_handler_->set_defer_on_will_read(true); |
+ |
+ // Resume and run until the next OnWillRead call. |
+ raw_ptr_resource_handler_->Resume(); |
+ raw_ptr_resource_handler_->WaitUntilDeferred(); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); |
+ |
+ // Spinning the message loop should not advance the state further. |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(2, raw_ptr_resource_handler_->on_will_read_called()); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof_called()); |
EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); |
// Resume and run until the final 0-byte read, signaling EOF. |
raw_ptr_resource_handler_->Resume(); |
raw_ptr_resource_handler_->WaitUntilDeferred(); |
- EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof_called()); |
// Spinning the message loop should not advance the state further. |
base::RunLoop().RunUntilIdle(); |
- EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof_called()); |
EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); |
EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); |
@@ -895,6 +923,7 @@ TEST_F(ResourceLoaderTest, AsyncResourceHandlerAsyncReads) { |
raw_ptr_resource_handler_->set_defer_on_will_start(true); |
raw_ptr_resource_handler_->set_defer_on_response_started(true); |
+ raw_ptr_resource_handler_->set_defer_on_will_read(true); |
raw_ptr_resource_handler_->set_defer_on_read_completed(true); |
raw_ptr_resource_handler_->set_defer_on_read_eof(true); |
raw_ptr_resource_handler_->set_defer_on_response_completed(true); |
@@ -926,6 +955,18 @@ TEST_F(ResourceLoaderTest, AsyncResourceHandlerAsyncReads) { |
EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called()); |
EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); |
+ // Resume and run until OnWillRead. |
+ raw_ptr_resource_handler_->Resume(); |
+ raw_ptr_resource_handler_->WaitUntilDeferred(); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called()); |
+ |
+ // Spinning the message loop should not advance the state further. |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof_called()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); |
+ |
// Resume and run until OnReadCompleted. |
raw_ptr_resource_handler_->Resume(); |
raw_ptr_resource_handler_->WaitUntilDeferred(); |
@@ -935,17 +976,32 @@ TEST_F(ResourceLoaderTest, AsyncResourceHandlerAsyncReads) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called()); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); |
- EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof_called()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); |
+ |
+ // Defer on the next OnWillRead call, for the EOF. |
+ raw_ptr_resource_handler_->set_defer_on_will_read(true); |
+ |
+ // Resume and run until the next OnWillRead. |
+ raw_ptr_resource_handler_->Resume(); |
+ raw_ptr_resource_handler_->WaitUntilDeferred(); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); |
+ |
+ // Spinning the message loop should not advance the state further. |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(2, raw_ptr_resource_handler_->on_will_read_called()); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof_called()); |
EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); |
// Resume and run until the final 0-byte read, signalling EOF. |
raw_ptr_resource_handler_->Resume(); |
raw_ptr_resource_handler_->WaitUntilDeferred(); |
- EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof_called()); |
// Spinning the message loop should not advance the state further. |
base::RunLoop().RunUntilIdle(); |
- EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof_called()); |
EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); |
EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); |
@@ -1054,7 +1110,7 @@ TEST_F(ResourceLoaderTest, SyncCancelOnReadCompleted) { |
EXPECT_EQ(1, did_receive_response_); |
EXPECT_EQ(1, did_finish_loading_); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); |
- EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof_called()); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); |
EXPECT_EQ(net::ERR_ABORTED, |
@@ -1070,7 +1126,7 @@ TEST_F(ResourceLoaderTest, SyncCancelOnReceivedEof) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, did_receive_response_); |
EXPECT_EQ(1, did_finish_loading_); |
- EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof_called()); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); |
EXPECT_EQ(net::ERR_ABORTED, |
@@ -1088,7 +1144,7 @@ TEST_F(ResourceLoaderTest, SyncCancelOnAsyncReadCompleted) { |
EXPECT_EQ(1, did_receive_response_); |
EXPECT_EQ(1, did_finish_loading_); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); |
- EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof_called()); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); |
EXPECT_EQ(net::ERR_ABORTED, |
@@ -1105,7 +1161,7 @@ TEST_F(ResourceLoaderTest, SyncCancelOnAsyncReceivedEof) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, did_receive_response_); |
EXPECT_EQ(1, did_finish_loading_); |
- EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof_called()); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); |
EXPECT_EQ(net::ERR_ABORTED, |
@@ -1170,6 +1226,23 @@ TEST_F(ResourceLoaderTest, AsyncCancelOnResponseStarted) { |
EXPECT_EQ("", raw_ptr_resource_handler_->body()); |
} |
+TEST_F(ResourceLoaderTest, AsyncCancelOnWillRead) { |
+ raw_ptr_resource_handler_->set_defer_on_will_read(true); |
+ |
+ loader_->StartRequest(); |
+ raw_ptr_resource_handler_->WaitUntilDeferred(); |
+ raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(1, did_receive_response_); |
+ EXPECT_EQ(1, did_finish_loading_); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof_called()); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); |
+ |
+ EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); |
+} |
+ |
TEST_F(ResourceLoaderTest, AsyncCancelOnReadCompleted) { |
raw_ptr_resource_handler_->set_defer_on_read_completed(true); |
@@ -1180,7 +1253,7 @@ TEST_F(ResourceLoaderTest, AsyncCancelOnReadCompleted) { |
EXPECT_EQ(1, did_receive_response_); |
EXPECT_EQ(1, did_finish_loading_); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); |
- EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof_called()); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); |
EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); |
@@ -1196,7 +1269,7 @@ TEST_F(ResourceLoaderTest, AsyncCancelOnReceivedEof) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, did_receive_response_); |
EXPECT_EQ(1, did_finish_loading_); |
- EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof_called()); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); |
EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); |
@@ -1214,7 +1287,7 @@ TEST_F(ResourceLoaderTest, AsyncCancelOnAsyncReadCompleted) { |
EXPECT_EQ(1, did_receive_response_); |
EXPECT_EQ(1, did_finish_loading_); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); |
- EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof_called()); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); |
EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); |
@@ -1231,7 +1304,7 @@ TEST_F(ResourceLoaderTest, AsyncCancelOnAsyncReceivedEof) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, did_receive_response_); |
EXPECT_EQ(1, did_finish_loading_); |
- EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); |
+ EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof_called()); |
EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); |
EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); |