| Index: content/browser/loader/mojo_async_resource_handler_unittest.cc
|
| diff --git a/content/browser/loader/mojo_async_resource_handler_unittest.cc b/content/browser/loader/mojo_async_resource_handler_unittest.cc
|
| index 4ad1ba638feee4d4cf1e26c56b1bddcb22ef3832..d0150105c73b22bb876e2f35915ffc0b086680eb 100644
|
| --- a/content/browser/loader/mojo_async_resource_handler_unittest.cc
|
| +++ b/content/browser/loader/mojo_async_resource_handler_unittest.cc
|
| @@ -178,7 +178,7 @@ class TestResourceController : public ResourceController {
|
| TestResourceController() {}
|
| ~TestResourceController() override {}
|
|
|
| - void Cancel() override { ADD_FAILURE() << "Cancel should not be called."; }
|
| + void Cancel() override { CancelWithError(net::ERR_ABORTED); }
|
|
|
| void CancelAndIgnore() override {
|
| ADD_FAILURE() << "CancelAndIgnore should not be called.";
|
| @@ -371,13 +371,14 @@ class MojoAsyncResourceHandlerTestBase {
|
|
|
| // Returns false if something bad happens.
|
| bool CallOnWillStart() {
|
| - bool defer = false;
|
| - if (!handler_->OnWillStart(request_->url(), &defer)) {
|
| - ADD_FAILURE() << "OnWillStart returns false.";
|
| + bool defer_or_cancel = false;
|
| + handler_->OnWillStart(request_->url(), &defer_or_cancel);
|
| + if (resource_controller_.is_cancel_with_error_called()) {
|
| + ADD_FAILURE() << "OnWillStart canceled the request.";
|
| return false;
|
| }
|
| - if (defer) {
|
| - ADD_FAILURE() << "OnWillStart sets |defer| true.";
|
| + if (defer_or_cancel) {
|
| + ADD_FAILURE() << "OnResponseStarted set |defer_or_cancel| to true.";
|
| return false;
|
| }
|
| return true;
|
| @@ -390,17 +391,18 @@ class MojoAsyncResourceHandlerTestBase {
|
| return false;
|
|
|
| scoped_refptr<ResourceResponse> response = new ResourceResponse();
|
| - bool defer = false;
|
| - if (!handler_->OnResponseStarted(response.get(), &defer)) {
|
| - ADD_FAILURE() << "OnResponseStarted returns false.";
|
| + bool defer_or_cancel = false;
|
| + handler_->OnResponseStarted(response.get(), &defer_or_cancel);
|
| + if (resource_controller_.is_cancel_with_error_called()) {
|
| + ADD_FAILURE() << "OnResponseStarted canceled the request.";
|
| return false;
|
| }
|
| - if (defer) {
|
| - ADD_FAILURE() << "OnResponseStarted sets |defer| true.";
|
| + if (defer_or_cancel) {
|
| + ADD_FAILURE() << "OnResponseStarted set |defer_or_cancel| to true.";
|
| return false;
|
| }
|
| if (url_loader_client_.has_received_response()) {
|
| - ADD_FAILURE() << "URLLoaderClient unexpectedly gets a response.";
|
| + ADD_FAILURE() << "URLLoaderClient unexpectedly received a response.";
|
| return false;
|
| }
|
| url_loader_client_.RunUntilResponseReceived();
|
| @@ -444,9 +446,10 @@ TEST_F(MojoAsyncResourceHandlerTest, InFlightRequests) {
|
| }
|
|
|
| TEST_F(MojoAsyncResourceHandlerTest, OnWillStart) {
|
| - bool defer = false;
|
| - EXPECT_TRUE(handler_->OnWillStart(request_->url(), &defer));
|
| - EXPECT_FALSE(defer);
|
| + bool defer_or_cancel = false;
|
| + handler_->OnWillStart(request_->url(), &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_FALSE(defer_or_cancel);
|
| }
|
|
|
| TEST_F(MojoAsyncResourceHandlerTest, OnResponseStarted) {
|
| @@ -460,14 +463,15 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseStarted) {
|
| response->head.response_start =
|
| base::TimeTicks::UnixEpoch() + base::TimeDelta::FromDays(28);
|
|
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
|
|
| EXPECT_EQ(0, rdh_delegate_.num_on_response_started_calls());
|
| base::TimeTicks now1 = base::TimeTicks::Now();
|
| - ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer));
|
| + handler_->OnResponseStarted(response.get(), &defer_or_cancel);
|
| base::TimeTicks now2 = base::TimeTicks::Now();
|
|
|
| - EXPECT_FALSE(defer);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_FALSE(defer_or_cancel);
|
| EXPECT_EQ(request_->creation_time(), response->head.request_start);
|
| EXPECT_LE(now1, response->head.response_start);
|
| EXPECT_LE(response->head.response_start, now2);
|
| @@ -509,7 +513,7 @@ TEST_F(MojoAsyncResourceHandlerTest, OnWillReadWithInsufficientResource) {
|
| }
|
|
|
| TEST_F(MojoAsyncResourceHandlerTest, OnWillReadAndOnReadCompleted) {
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| scoped_refptr<net::IOBuffer> io_buffer;
|
| int io_buffer_size = 0;
|
|
|
| @@ -524,8 +528,9 @@ TEST_F(MojoAsyncResourceHandlerTest, OnWillReadAndOnReadCompleted) {
|
|
|
| io_buffer->data()[0] = 'A';
|
| io_buffer->data()[1] = 'B';
|
| - ASSERT_TRUE(handler_->OnReadCompleted(2, &defer));
|
| - EXPECT_FALSE(defer);
|
| + handler_->OnReadCompleted(2, &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_FALSE(defer_or_cancel);
|
|
|
| std::string contents;
|
| while (contents.size() < 2) {
|
| @@ -547,7 +552,7 @@ TEST_F(MojoAsyncResourceHandlerTest,
|
| OnWillReadAndOnReadCompletedWithInsufficientInitialCapacity) {
|
| MojoAsyncResourceHandler::SetAllocationSizeForTesting(2);
|
|
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| scoped_refptr<net::IOBuffer> io_buffer;
|
| int io_buffer_size = 0;
|
|
|
| @@ -562,8 +567,9 @@ TEST_F(MojoAsyncResourceHandlerTest,
|
|
|
| const std::string data("abcdefgh");
|
| strcpy(io_buffer->data(), data.c_str());
|
| - ASSERT_TRUE(handler_->OnReadCompleted(data.size(), &defer));
|
| - EXPECT_TRUE(defer);
|
| + handler_->OnReadCompleted(data.size(), &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_TRUE(defer_or_cancel);
|
|
|
| std::string contents;
|
| while (contents.size() < data.size()) {
|
| @@ -603,7 +609,7 @@ TEST_F(MojoAsyncResourceHandlerTest,
|
| }
|
|
|
| TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted) {
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
|
|
|
| ResourceRequestInfoImpl::ForRequest(request_.get())
|
| @@ -611,9 +617,10 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted) {
|
| net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
|
|
|
| base::TimeTicks now1 = base::TimeTicks::Now();
|
| - handler_->OnResponseCompleted(status, &defer);
|
| + handler_->OnResponseCompleted(status, &defer_or_cancel);
|
| base::TimeTicks now2 = base::TimeTicks::Now();
|
| - EXPECT_FALSE(defer);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_FALSE(defer_or_cancel);
|
|
|
| url_loader_client_.RunUntilComplete();
|
| EXPECT_TRUE(url_loader_client_.has_received_completion());
|
| @@ -628,13 +635,14 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted) {
|
| // This test case sets different status values from OnResponseCompleted.
|
| TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted2) {
|
| rdh_.SetDelegate(nullptr);
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| // Don't use CallOnWillStartAndOnResponseStarted as this test case manually
|
| // sets the null delegate.
|
| ASSERT_TRUE(CallOnWillStart());
|
| scoped_refptr<ResourceResponse> response = new ResourceResponse();
|
| - ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer));
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnResponseStarted(response.get(), &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
| ASSERT_FALSE(url_loader_client_.has_received_response());
|
| url_loader_client_.RunUntilResponseReceived();
|
|
|
| @@ -644,9 +652,10 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted2) {
|
| net::ERR_ABORTED);
|
|
|
| base::TimeTicks now1 = base::TimeTicks::Now();
|
| - handler_->OnResponseCompleted(status, &defer);
|
| + handler_->OnResponseCompleted(status, &defer_or_cancel);
|
| base::TimeTicks now2 = base::TimeTicks::Now();
|
| - EXPECT_FALSE(defer);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_FALSE(defer_or_cancel);
|
|
|
| url_loader_client_.RunUntilComplete();
|
| EXPECT_TRUE(url_loader_client_.has_received_completion());
|
| @@ -662,11 +671,12 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted2) {
|
| TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompletedWithCanceledTimedOut) {
|
| net::URLRequestStatus status(net::URLRequestStatus::CANCELED,
|
| net::ERR_TIMED_OUT);
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
|
|
| ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
|
| - handler_->OnResponseCompleted(status, &defer);
|
| - EXPECT_FALSE(defer);
|
| + handler_->OnResponseCompleted(status, &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_FALSE(defer_or_cancel);
|
|
|
| url_loader_client_.RunUntilComplete();
|
| EXPECT_TRUE(url_loader_client_.has_received_completion());
|
| @@ -677,11 +687,12 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompletedWithCanceledTimedOut) {
|
| TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompletedWithFailedTimedOut) {
|
| net::URLRequestStatus status(net::URLRequestStatus::FAILED,
|
| net::ERR_TIMED_OUT);
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
|
|
| ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
|
| - handler_->OnResponseCompleted(status, &defer);
|
| - EXPECT_FALSE(defer);
|
| + handler_->OnResponseCompleted(status, &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_FALSE(defer_or_cancel);
|
|
|
| url_loader_client_.RunUntilComplete();
|
| EXPECT_TRUE(url_loader_client_.has_received_completion());
|
| @@ -694,16 +705,18 @@ TEST_F(MojoAsyncResourceHandlerTest, ResponseCompletionShouldCloseDataPipe) {
|
|
|
| scoped_refptr<net::IOBuffer> io_buffer;
|
| int io_buffer_size = 0;
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
|
| url_loader_client_.RunUntilResponseBodyArrived();
|
| ASSERT_TRUE(url_loader_client_.response_body().is_valid());
|
| - ASSERT_TRUE(handler_->OnReadCompleted(0, &defer));
|
| - EXPECT_FALSE(defer);
|
| + handler_->OnReadCompleted(0, &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_FALSE(defer_or_cancel);
|
|
|
| net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
|
| - handler_->OnResponseCompleted(status, &defer);
|
| - EXPECT_FALSE(defer);
|
| + handler_->OnResponseCompleted(status, &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_FALSE(defer_or_cancel);
|
|
|
| url_loader_client_.RunUntilComplete();
|
| EXPECT_TRUE(url_loader_client_.has_received_completion());
|
| @@ -734,14 +747,16 @@ TEST_F(MojoAsyncResourceHandlerTest, ResponseErrorDuringBodyTransmission) {
|
| ASSERT_TRUE(url_loader_client_.response_body().is_valid());
|
| ASSERT_GT(io_buffer_size, 0);
|
| memset(io_buffer->data(), 'a', io_buffer_size);
|
| - bool defer = false;
|
| - ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer));
|
| - // We don't care |defer|'s value here.
|
| + bool defer_or_cancel = false;
|
| + handler_->OnReadCompleted(io_buffer_size, &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
|
|
| - defer = false;
|
| + // Don't care about |defer_or_cancel|'s value here.
|
| + defer_or_cancel = false;
|
| net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED);
|
| - handler_->OnResponseCompleted(status, &defer);
|
| - EXPECT_FALSE(defer);
|
| + handler_->OnResponseCompleted(status, &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_FALSE(defer_or_cancel);
|
|
|
| url_loader_client_.RunUntilComplete();
|
| EXPECT_TRUE(url_loader_client_.has_received_completion());
|
| @@ -778,10 +793,11 @@ TEST_F(MojoAsyncResourceHandlerTest, ResponseErrorDuringBodyTransmission2) {
|
| ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
|
| url_loader_client_.RunUntilResponseBodyArrived();
|
| ASSERT_TRUE(url_loader_client_.response_body().is_valid());
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED);
|
| - handler_->OnResponseCompleted(status, &defer);
|
| - EXPECT_FALSE(defer);
|
| + handler_->OnResponseCompleted(status, &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_FALSE(defer_or_cancel);
|
|
|
| url_loader_client_.RunUntilComplete();
|
| EXPECT_TRUE(url_loader_client_.has_received_completion());
|
| @@ -835,9 +851,10 @@ TEST_F(MojoAsyncResourceHandlerTest,
|
| EXPECT_GT(io_buffer_size, 0);
|
| memset(io_buffer->data(), 'X', io_buffer_size);
|
| written += io_buffer_size;
|
| - bool defer = false;
|
| - ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer));
|
| - if (defer)
|
| + bool defer_or_cancel = false;
|
| + handler_->OnReadCompleted(io_buffer_size, &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + if (defer_or_cancel)
|
| break;
|
| }
|
|
|
| @@ -876,12 +893,15 @@ TEST_F(MojoAsyncResourceHandlerTest,
|
| TEST_F(MojoAsyncResourceHandlerTest, EndWriteFailsOnReadCompleted) {
|
| scoped_refptr<net::IOBuffer> io_buffer;
|
| int io_buffer_size = 0;
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
|
| ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
|
|
|
| handler_->set_end_write_expectation(MOJO_RESULT_SHOULD_WAIT);
|
| - ASSERT_FALSE(handler_->OnReadCompleted(io_buffer_size, &defer));
|
| + handler_->OnReadCompleted(io_buffer_size, &defer_or_cancel);
|
| + EXPECT_TRUE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_EQ(net::ERR_ABORTED, resource_controller_.error());
|
| + EXPECT_TRUE(defer_or_cancel);
|
| }
|
|
|
| TEST_F(MojoAsyncResourceHandlerTest,
|
| @@ -889,12 +909,15 @@ TEST_F(MojoAsyncResourceHandlerTest,
|
| MojoAsyncResourceHandler::SetAllocationSizeForTesting(2);
|
| scoped_refptr<net::IOBuffer> io_buffer;
|
| int io_buffer_size = 0;
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
|
| ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
|
|
|
| handler_->set_end_write_expectation(MOJO_RESULT_SHOULD_WAIT);
|
| - ASSERT_FALSE(handler_->OnReadCompleted(io_buffer_size, &defer));
|
| + handler_->OnReadCompleted(io_buffer_size, &defer_or_cancel);
|
| + EXPECT_TRUE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_EQ(net::ERR_ABORTED, resource_controller_.error());
|
| + EXPECT_TRUE(defer_or_cancel);
|
| }
|
|
|
| TEST_F(MojoAsyncResourceHandlerTest,
|
| @@ -908,10 +931,11 @@ TEST_F(MojoAsyncResourceHandlerTest,
|
| ASSERT_TRUE(url_loader_client_.response_body().is_valid());
|
|
|
| while (true) {
|
| - bool defer = false;
|
| - ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer));
|
| + bool defer_or_cancel = false;
|
| + handler_->OnReadCompleted(io_buffer_size, &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| ASSERT_GE(io_buffer_size, 0);
|
| - if (defer)
|
| + if (defer_or_cancel)
|
| break;
|
| ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
|
| }
|
| @@ -936,7 +960,7 @@ TEST_F(MojoAsyncResourceHandlerTest,
|
|
|
| TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
|
| OnWillReadWithLongContents) {
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| scoped_refptr<net::IOBuffer> io_buffer;
|
| int io_buffer_size = 0;
|
|
|
| @@ -949,8 +973,9 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
|
| for (int i = 0; i < 3 * io_buffer_size + 2; ++i)
|
| expected += ('A' + i % 26);
|
|
|
| - ASSERT_TRUE(handler_->OnReadCompleted(0, &defer));
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnReadCompleted(0, &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
|
|
| url_loader_client_.RunUntilResponseBodyArrived();
|
| ASSERT_TRUE(url_loader_client_.response_body().is_valid());
|
| @@ -958,12 +983,13 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
|
| size_t written = 0;
|
| std::string actual;
|
| while (actual.size() < expected.size()) {
|
| - while (written < expected.size() && !defer) {
|
| + while (written < expected.size() && !defer_or_cancel) {
|
| ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
|
| const size_t to_be_written = std::min(static_cast<size_t>(io_buffer_size),
|
| expected.size() - written);
|
| memcpy(io_buffer->data(), &expected[written], to_be_written);
|
| - ASSERT_TRUE(handler_->OnReadCompleted(to_be_written, &defer));
|
| + handler_->OnReadCompleted(to_be_written, &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| written += to_be_written;
|
| }
|
|
|
| @@ -979,7 +1005,7 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
|
| int resume_count = resource_controller_.num_resume_calls();
|
| base::RunLoop().RunUntilIdle();
|
| // Continue writing if controller->Resume() is called.
|
| - defer = (resume_count == resource_controller_.num_resume_calls());
|
| + defer_or_cancel = (resume_count == resource_controller_.num_resume_calls());
|
| }
|
| EXPECT_EQ(expected, actual);
|
| }
|
| @@ -988,43 +1014,49 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
|
| BeginWriteFailsOnReadCompleted) {
|
| scoped_refptr<net::IOBuffer> io_buffer;
|
| int io_buffer_size = 0;
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
|
| ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
|
|
|
| handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN);
|
| - ASSERT_FALSE(handler_->OnReadCompleted(io_buffer_size, &defer));
|
| + handler_->OnReadCompleted(io_buffer_size, &defer_or_cancel);
|
| + EXPECT_TRUE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_EQ(net::ERR_ABORTED, resource_controller_.error());
|
| + EXPECT_TRUE(defer_or_cancel);
|
| }
|
|
|
| TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
|
| BeginWriteReturnsShouldWaitOnReadCompleted) {
|
| scoped_refptr<net::IOBuffer> io_buffer;
|
| int io_buffer_size = 0;
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
|
| ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
|
|
|
| handler_->set_begin_write_expectation(MOJO_RESULT_SHOULD_WAIT);
|
| - ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer));
|
| - EXPECT_TRUE(defer);
|
| + handler_->OnReadCompleted(io_buffer_size, &defer_or_cancel);
|
| + EXPECT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + EXPECT_TRUE(defer_or_cancel);
|
| }
|
|
|
| TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
|
| BeginWriteFailsOnResume) {
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| int io_buffer_size = 0;
|
| scoped_refptr<net::IOBuffer> io_buffer;
|
|
|
| ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
|
| ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
|
| - ASSERT_TRUE(handler_->OnReadCompleted(0, &defer));
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnReadCompleted(0, &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
| url_loader_client_.RunUntilResponseBodyArrived();
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| ASSERT_TRUE(url_loader_client_.response_body().is_valid());
|
|
|
| - while (!defer) {
|
| + while (!defer_or_cancel) {
|
| ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
|
| - ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer));
|
| + handler_->OnReadCompleted(io_buffer_size, &defer_or_cancel);
|
| }
|
| handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN);
|
|
|
| @@ -1044,23 +1076,25 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
|
| }
|
|
|
| TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, CancelWhileWaiting) {
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
| ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
|
|
|
| - while (!defer) {
|
| + while (!defer_or_cancel) {
|
| scoped_refptr<net::IOBuffer> io_buffer;
|
| int io_buffer_size = 0;
|
| ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
|
| - ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer));
|
| + handler_->OnReadCompleted(io_buffer_size, &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| }
|
|
|
| url_loader_client_.RunUntilResponseBodyArrived();
|
| ASSERT_TRUE(url_loader_client_.response_body().is_valid());
|
|
|
| - defer = false;
|
| + defer_or_cancel = false;
|
| net::URLRequestStatus status(net::URLRequestStatus::CANCELED,
|
| net::ERR_ABORTED);
|
| - handler_->OnResponseCompleted(status, &defer);
|
| + handler_->OnResponseCompleted(status, &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
|
|
| ASSERT_FALSE(url_loader_client_.has_received_completion());
|
| url_loader_client_.RunUntilComplete();
|
| @@ -1085,16 +1119,18 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, CancelWhileWaiting) {
|
|
|
| TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, RedirectHandling) {
|
| rdh_delegate_.set_num_on_response_started_calls_expectation(1);
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
|
|
| - ASSERT_TRUE(handler_->OnWillStart(request_->url(), &defer));
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnWillStart(request_->url(), &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
| scoped_refptr<ResourceResponse> response = new ResourceResponse();
|
| net::RedirectInfo redirect_info;
|
| redirect_info.status_code = 301;
|
| - ASSERT_TRUE(
|
| - handler_->OnRequestRedirected(redirect_info, response.get(), &defer));
|
| - ASSERT_TRUE(defer);
|
| + handler_->OnRequestRedirected(redirect_info, response.get(),
|
| + &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_TRUE(defer_or_cancel);
|
|
|
| ASSERT_FALSE(url_loader_client_.has_received_response());
|
| ASSERT_FALSE(url_loader_client_.has_received_redirect());
|
| @@ -1110,11 +1146,12 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, RedirectHandling) {
|
|
|
| url_loader_client_.ClearHasReceivedRedirect();
|
| // Redirect once more.
|
| - defer = false;
|
| + defer_or_cancel = false;
|
| redirect_info.status_code = 302;
|
| - ASSERT_TRUE(
|
| - handler_->OnRequestRedirected(redirect_info, response.get(), &defer));
|
| - ASSERT_TRUE(defer);
|
| + handler_->OnRequestRedirected(redirect_info, response.get(),
|
| + &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_TRUE(defer_or_cancel);
|
|
|
| ASSERT_FALSE(url_loader_client_.has_received_response());
|
| ASSERT_FALSE(url_loader_client_.has_received_redirect());
|
| @@ -1129,13 +1166,15 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, RedirectHandling) {
|
| EXPECT_EQ(2, resource_controller_.num_resume_calls());
|
|
|
| // Give the final response.
|
| - defer = false;
|
| - ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer));
|
| - ASSERT_FALSE(defer);
|
| + defer_or_cancel = false;
|
| + handler_->OnResponseStarted(response.get(), &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
|
|
| net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
|
| - handler_->OnResponseCompleted(status, &defer);
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnResponseCompleted(status, &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
|
|
| ASSERT_FALSE(url_loader_client_.has_received_completion());
|
| url_loader_client_.RunUntilComplete();
|
| @@ -1158,13 +1197,15 @@ TEST_P(
|
| MojoAsyncResourceHandlerWithAllocationSizeTest,
|
| OnWillStartThenOnResponseStartedThenOnWillReadThenOnReadCompletedThenOnResponseCompleted) {
|
| rdh_delegate_.set_num_on_response_started_calls_expectation(1);
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
|
|
| - ASSERT_TRUE(handler_->OnWillStart(request_->url(), &defer));
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnWillStart(request_->url(), &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
| scoped_refptr<ResourceResponse> response = new ResourceResponse();
|
| - ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer));
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnResponseStarted(response.get(), &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
|
|
| ASSERT_FALSE(url_loader_client_.has_received_response());
|
| url_loader_client_.RunUntilResponseReceived();
|
| @@ -1180,11 +1221,13 @@ TEST_P(
|
| url_loader_client_.RunUntilResponseBodyArrived();
|
| ASSERT_TRUE(url_loader_client_.response_body().is_valid());
|
|
|
| - ASSERT_TRUE(handler_->OnReadCompleted(1, &defer));
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnReadCompleted(1, &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
| net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
|
| - handler_->OnResponseCompleted(status, &defer);
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnResponseCompleted(status, &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
|
|
| ASSERT_FALSE(url_loader_client_.has_received_completion());
|
| url_loader_client_.RunUntilComplete();
|
| @@ -1217,10 +1260,11 @@ TEST_P(
|
| MojoAsyncResourceHandlerWithAllocationSizeTest,
|
| OnWillStartThenOnWillReadThenOnResponseStartedThenOnReadCompletedThenOnResponseCompleted) {
|
| rdh_delegate_.set_num_on_response_started_calls_expectation(1);
|
| - bool defer = false;
|
| + bool defer_or_cancel = false;
|
|
|
| - ASSERT_TRUE(handler_->OnWillStart(request_->url(), &defer));
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnWillStart(request_->url(), &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
|
|
| int io_buffer_size = 0;
|
| scoped_refptr<net::IOBuffer> io_buffer;
|
| @@ -1234,17 +1278,20 @@ TEST_P(
|
| ASSERT_TRUE(url_loader_client_.response_body().is_valid());
|
|
|
| scoped_refptr<ResourceResponse> response = new ResourceResponse();
|
| - ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer));
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnResponseStarted(response.get(), &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
|
|
| ASSERT_FALSE(url_loader_client_.has_received_response());
|
| url_loader_client_.RunUntilResponseReceived();
|
|
|
| - ASSERT_TRUE(handler_->OnReadCompleted(1, &defer));
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnReadCompleted(1, &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
| net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
|
| - handler_->OnResponseCompleted(status, &defer);
|
| - ASSERT_FALSE(defer);
|
| + handler_->OnResponseCompleted(status, &defer_or_cancel);
|
| + ASSERT_FALSE(resource_controller_.is_cancel_with_error_called());
|
| + ASSERT_FALSE(defer_or_cancel);
|
|
|
| ASSERT_FALSE(url_loader_client_.has_received_completion());
|
| url_loader_client_.RunUntilComplete();
|
|
|