| 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());
|
|
|