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 953095aa69f18c80317277b6394f9fdf57e54ef7..5c56b34a917a30c2e006207773b95cbea3682528 100644 |
--- a/content/browser/loader/mojo_async_resource_handler_unittest.cc |
+++ b/content/browser/loader/mojo_async_resource_handler_unittest.cc |
@@ -14,6 +14,7 @@ |
#include "base/memory/ptr_util.h" |
#include "base/memory/weak_ptr.h" |
#include "base/run_loop.h" |
+#include "content/browser/loader/mock_resource_loader.h" |
#include "content/browser/loader/resource_controller.h" |
#include "content/browser/loader/resource_dispatcher_host_impl.h" |
#include "content/browser/loader/resource_request_info_impl.h" |
@@ -41,10 +42,8 @@ |
#include "net/http/http_status_code.h" |
#include "net/http/http_util.h" |
#include "net/ssl/client_cert_store.h" |
-#include "net/test/url_request/url_request_failed_job.h" |
#include "net/url_request/url_request.h" |
#include "net/url_request/url_request_context.h" |
-#include "net/url_request/url_request_filter.h" |
#include "net/url_request/url_request_status.h" |
#include "net/url_request/url_request_test_util.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -174,55 +173,6 @@ class TestResourceDispatcherHostDelegate final |
DISALLOW_COPY_AND_ASSIGN(TestResourceDispatcherHostDelegate); |
}; |
-class TestResourceController : public ResourceController { |
- public: |
- TestResourceController() {} |
- ~TestResourceController() override {} |
- |
- void Cancel() override { ADD_FAILURE() << "Cancel should not be called."; } |
- |
- void CancelAndIgnore() override { |
- ADD_FAILURE() << "CancelAndIgnore should not be called."; |
- } |
- |
- void CancelWithError(int error_code) override { |
- // While cancelling more than once is legal, none of these tests should do |
- // it. |
- EXPECT_FALSE(is_cancel_with_error_called_); |
- |
- is_cancel_with_error_called_ = true; |
- error_ = error_code; |
- if (quit_closure_) |
- quit_closure_.Run(); |
- } |
- |
- void Resume() override { ++num_resume_calls_; } |
- |
- void RunUntilCancelWithErrorCalled() { |
- base::RunLoop run_loop; |
- quit_closure_ = run_loop.QuitClosure(); |
- run_loop.Run(); |
- } |
- |
- void set_quit_closure(const base::Closure& quit_closure) { |
- quit_closure_ = quit_closure; |
- } |
- |
- bool is_cancel_with_error_called() const { |
- return is_cancel_with_error_called_; |
- } |
- int error() const { return error_; } |
- int num_resume_calls() const { return num_resume_calls_; } |
- |
- private: |
- bool is_cancel_with_error_called_ = false; |
- int error_ = net::OK; |
- int num_resume_calls_ = 0; |
- base::Closure quit_closure_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestResourceController); |
-}; |
- |
class MojoAsyncResourceHandlerWithCustomDataPipeOperations |
: public MojoAsyncResourceHandler { |
public: |
@@ -319,12 +269,12 @@ class MojoAsyncResourceHandlerTestBase { |
MojoAsyncResourceHandler::SetAllocationSizeForTesting(32 * 1024); |
rdh_.SetDelegate(&rdh_delegate_); |
- url_request_delegate_.reset(new net::TestDelegate()); |
+ // Create and initialize |request_|. None of this matters, for these tests, |
+ // just need something non-NULL. |
net::URLRequestContext* request_context = |
browser_context_->GetResourceContext()->GetRequestContext(); |
request_ = request_context->CreateRequest( |
- net::URLRequestFailedJob::GetMockHttpUrl(net::ERR_TIMED_OUT), |
- net::DEFAULT_PRIORITY, url_request_delegate_.get()); |
+ GURL("http://foo/"), net::DEFAULT_PRIORITY, &url_request_delegate_); |
ResourceRequestInfo::AllocateForTesting( |
request_.get(), // request |
RESOURCE_TYPE_XHR, // resource_type |
@@ -360,46 +310,30 @@ class MojoAsyncResourceHandlerTestBase { |
handler_.reset(new MojoAsyncResourceHandlerWithCustomDataPipeOperations( |
request_.get(), &rdh_, factory_impl->PassLoaderRequest(), |
std::move(client_ptr))); |
- handler_->SetController(&resource_controller_); |
+ mock_loader_.reset(new MockResourceLoader(handler_.get())); |
} |
virtual ~MojoAsyncResourceHandlerTestBase() { |
- net::URLRequestFilter::GetInstance()->ClearHandlers(); |
MojoAsyncResourceHandler::SetAllocationSizeForTesting( |
MojoAsyncResourceHandler::kDefaultAllocationSize); |
base::RunLoop().RunUntilIdle(); |
} |
// Returns false if something bad happens. |
- bool CallOnWillStart() { |
- bool defer = false; |
- if (!handler_->OnWillStart(request_->url(), &defer)) { |
- ADD_FAILURE() << "OnWillStart returns false."; |
- return false; |
- } |
- if (defer) { |
- ADD_FAILURE() << "OnWillStart sets |defer| true."; |
- return false; |
- } |
- return true; |
- } |
- |
- // Returns false if something bad happens. |
bool CallOnWillStartAndOnResponseStarted() { |
rdh_delegate_.set_num_on_response_started_calls_expectation(1); |
- if (!CallOnWillStart()) |
+ MockResourceLoader::Status result = |
+ mock_loader_->OnWillStart(request_->url()); |
+ EXPECT_EQ(MockResourceLoader::Status::IDLE, result); |
+ if (result != MockResourceLoader::Status::IDLE) |
return false; |
scoped_refptr<ResourceResponse> response = new ResourceResponse(); |
- bool defer = false; |
- if (!handler_->OnResponseStarted(response.get(), &defer)) { |
- ADD_FAILURE() << "OnResponseStarted returns false."; |
+ result = mock_loader_->OnResponseStarted(response); |
+ EXPECT_EQ(MockResourceLoader::Status::IDLE, result); |
+ if (result != MockResourceLoader::Status::IDLE) |
return false; |
- } |
- if (defer) { |
- ADD_FAILURE() << "OnResponseStarted sets |defer| true."; |
- return false; |
- } |
+ |
if (url_loader_client_.has_received_response()) { |
ADD_FAILURE() << "URLLoaderClient unexpectedly gets a response."; |
return false; |
@@ -414,12 +348,12 @@ class MojoAsyncResourceHandlerTestBase { |
mojom::URLLoaderFactoryPtr url_loader_factory_; |
mojom::URLLoaderAssociatedPtr url_loader_proxy_; |
TestURLLoaderClient url_loader_client_; |
- TestResourceController resource_controller_; |
std::unique_ptr<TestBrowserContext> browser_context_; |
- std::unique_ptr<net::TestDelegate> url_request_delegate_; |
+ net::TestDelegate url_request_delegate_; |
std::unique_ptr<net::URLRequest> request_; |
std::unique_ptr<MojoAsyncResourceHandlerWithCustomDataPipeOperations> |
handler_; |
+ std::unique_ptr<MockResourceLoader> mock_loader_; |
DISALLOW_COPY_AND_ASSIGN(MojoAsyncResourceHandlerTestBase); |
}; |
@@ -445,14 +379,14 @@ TEST_F(MojoAsyncResourceHandlerTest, InFlightRequests) { |
} |
TEST_F(MojoAsyncResourceHandlerTest, OnWillStart) { |
- bool defer = false; |
- EXPECT_TRUE(handler_->OnWillStart(request_->url(), &defer)); |
- EXPECT_FALSE(defer); |
+ EXPECT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnWillStart(request_->url())); |
} |
TEST_F(MojoAsyncResourceHandlerTest, OnResponseStarted) { |
rdh_delegate_.set_num_on_response_started_calls_expectation(1); |
- ASSERT_TRUE(CallOnWillStart()); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnWillStart(request_->url())); |
scoped_refptr<ResourceResponse> response = new ResourceResponse(); |
response->head.content_length = 99; |
@@ -461,14 +395,12 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseStarted) { |
response->head.response_start = |
base::TimeTicks::UnixEpoch() + base::TimeDelta::FromDays(28); |
- bool defer = false; |
- |
EXPECT_EQ(0, rdh_delegate_.num_on_response_started_calls()); |
base::TimeTicks now1 = base::TimeTicks::Now(); |
- ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer)); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseStarted(response)); |
base::TimeTicks now2 = base::TimeTicks::Now(); |
- EXPECT_FALSE(defer); |
EXPECT_EQ(request_->creation_time(), response->head.request_start); |
EXPECT_LE(now1, response->head.response_start); |
EXPECT_LE(response->head.response_start, now2); |
@@ -485,9 +417,7 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseStarted) { |
TEST_F(MojoAsyncResourceHandlerTest, OnWillReadAndInFlightRequests) { |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
EXPECT_EQ(0, rdh_.num_in_flight_requests_for_testing()); |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- EXPECT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
EXPECT_EQ(1, rdh_.num_in_flight_requests_for_testing()); |
handler_ = nullptr; |
EXPECT_EQ(0, rdh_.num_in_flight_requests_for_testing()); |
@@ -497,36 +427,26 @@ TEST_F(MojoAsyncResourceHandlerTest, OnWillReadWithInsufficientResource) { |
rdh_.set_max_num_in_flight_requests_per_process(0); |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- EXPECT_FALSE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
- EXPECT_FALSE(io_buffer); |
- EXPECT_EQ(0, io_buffer_size); |
+ ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead(-1)); |
EXPECT_EQ(1, rdh_.num_in_flight_requests_for_testing()); |
- EXPECT_TRUE(resource_controller_.is_cancel_with_error_called()); |
- EXPECT_EQ(net::ERR_INSUFFICIENT_RESOURCES, resource_controller_.error()); |
+ // TODO(mmenke): Should make sure the class is cancelling with |
+ // ERR_INSUFFICIENT_RESOURCES here (Which it isn't currently doing). |
Randy Smith (Not in Mondays)
2017/01/10 23:07:47
I'm confused by this comment; it *looks* like Mojo
mmenke
2017/01/11 22:12:54
Oops. This CL was copied from the final CL in the
|
handler_ = nullptr; |
EXPECT_EQ(0, rdh_.num_in_flight_requests_for_testing()); |
} |
TEST_F(MojoAsyncResourceHandlerTest, OnWillReadAndOnReadCompleted) { |
- bool defer = false; |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
- ASSERT_TRUE(io_buffer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
// The buffer size that the mime sniffer requires implicitly. |
- ASSERT_GE(io_buffer_size, kSizeMimeSnifferRequiresForFirstOnWillRead); |
+ ASSERT_GE(mock_loader_->io_buffer_size(), |
+ kSizeMimeSnifferRequiresForFirstOnWillRead); |
url_loader_client_.RunUntilResponseBodyArrived(); |
ASSERT_TRUE(url_loader_client_.response_body().is_valid()); |
- io_buffer->data()[0] = 'A'; |
- io_buffer->data()[1] = 'B'; |
- ASSERT_TRUE(handler_->OnReadCompleted(2, &defer)); |
- EXPECT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnReadCompleted("AB")); |
std::string contents; |
while (contents.size() < 2) { |
@@ -548,23 +468,18 @@ TEST_F(MojoAsyncResourceHandlerTest, |
OnWillReadAndOnReadCompletedWithInsufficientInitialCapacity) { |
MojoAsyncResourceHandler::SetAllocationSizeForTesting(2); |
- bool defer = false; |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
- ASSERT_TRUE(io_buffer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
// The buffer size that the mime sniffer requires implicitly. |
- ASSERT_GE(io_buffer_size, kSizeMimeSnifferRequiresForFirstOnWillRead); |
+ ASSERT_GE(mock_loader_->io_buffer_size(), |
+ kSizeMimeSnifferRequiresForFirstOnWillRead); |
url_loader_client_.RunUntilResponseBodyArrived(); |
ASSERT_TRUE(url_loader_client_.response_body().is_valid()); |
const std::string data("abcdefgh"); |
- strcpy(io_buffer->data(), data.c_str()); |
- ASSERT_TRUE(handler_->OnReadCompleted(data.size(), &defer)); |
- EXPECT_TRUE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
+ mock_loader_->OnReadCompleted(data)); |
std::string contents; |
while (contents.size() < data.size()) { |
@@ -581,30 +496,27 @@ TEST_F(MojoAsyncResourceHandlerTest, |
contents.append(buffer, read_size); |
} |
EXPECT_EQ(data, contents); |
- EXPECT_EQ(0, resource_controller_.num_resume_calls()); |
+ EXPECT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
+ mock_loader_->status()); |
} |
TEST_F(MojoAsyncResourceHandlerTest, |
IOBufferFromOnWillReadShouldRemainValidEvenIfHandlerIsGone) { |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
- ASSERT_TRUE(io_buffer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
// The io_buffer size that the mime sniffer requires implicitly. |
- ASSERT_GE(io_buffer_size, kSizeMimeSnifferRequiresForFirstOnWillRead); |
+ ASSERT_GE(mock_loader_->io_buffer_size(), |
+ kSizeMimeSnifferRequiresForFirstOnWillRead); |
handler_ = nullptr; |
url_loader_client_.Unbind(); |
base::RunLoop().RunUntilIdle(); |
// Hopefully ASAN checks this operation's validity. |
- io_buffer->data()[0] = 'A'; |
+ mock_loader_->io_buffer()->data()[0] = 'A'; |
} |
TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted) { |
- bool defer = false; |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
ResourceRequestInfoImpl::ForRequest(request_.get()) |
@@ -612,9 +524,9 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted) { |
net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); |
base::TimeTicks now1 = base::TimeTicks::Now(); |
- handler_->OnResponseCompleted(status, &defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseCompleted(status)); |
base::TimeTicks now2 = base::TimeTicks::Now(); |
- EXPECT_FALSE(defer); |
url_loader_client_.RunUntilComplete(); |
EXPECT_TRUE(url_loader_client_.has_received_completion()); |
@@ -629,13 +541,13 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted) { |
// This test case sets different status values from OnResponseCompleted. |
TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted2) { |
rdh_.SetDelegate(nullptr); |
- bool defer = false; |
// Don't use CallOnWillStartAndOnResponseStarted as this test case manually |
// sets the null delegate. |
- ASSERT_TRUE(CallOnWillStart()); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnWillStart(request_->url())); |
scoped_refptr<ResourceResponse> response = new ResourceResponse(); |
- ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer)); |
- ASSERT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseStarted(response)); |
ASSERT_FALSE(url_loader_client_.has_received_response()); |
url_loader_client_.RunUntilResponseReceived(); |
@@ -645,9 +557,9 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted2) { |
net::ERR_ABORTED); |
base::TimeTicks now1 = base::TimeTicks::Now(); |
- handler_->OnResponseCompleted(status, &defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseCompleted(status)); |
base::TimeTicks now2 = base::TimeTicks::Now(); |
- EXPECT_FALSE(defer); |
url_loader_client_.RunUntilComplete(); |
EXPECT_TRUE(url_loader_client_.has_received_completion()); |
@@ -663,11 +575,10 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted2) { |
TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompletedWithCanceledTimedOut) { |
net::URLRequestStatus status(net::URLRequestStatus::CANCELED, |
net::ERR_TIMED_OUT); |
- bool defer = false; |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- handler_->OnResponseCompleted(status, &defer); |
- EXPECT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseCompleted(status)); |
url_loader_client_.RunUntilComplete(); |
EXPECT_TRUE(url_loader_client_.has_received_completion()); |
@@ -678,11 +589,10 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompletedWithCanceledTimedOut) { |
TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompletedWithFailedTimedOut) { |
net::URLRequestStatus status(net::URLRequestStatus::FAILED, |
net::ERR_TIMED_OUT); |
- bool defer = false; |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- handler_->OnResponseCompleted(status, &defer); |
- EXPECT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseCompleted(status)); |
url_loader_client_.RunUntilComplete(); |
EXPECT_TRUE(url_loader_client_.has_received_completion()); |
@@ -693,25 +603,21 @@ TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompletedWithFailedTimedOut) { |
TEST_F(MojoAsyncResourceHandlerTest, ResponseCompletionShouldCloseDataPipe) { |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- bool defer = false; |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
url_loader_client_.RunUntilResponseBodyArrived(); |
ASSERT_TRUE(url_loader_client_.response_body().is_valid()); |
- ASSERT_TRUE(handler_->OnReadCompleted(0, &defer)); |
- EXPECT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0)); |
net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); |
- handler_->OnResponseCompleted(status, &defer); |
- EXPECT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseCompleted(status)); |
url_loader_client_.RunUntilComplete(); |
EXPECT_TRUE(url_loader_client_.has_received_completion()); |
EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code); |
// This is needed because |*io_buffer| may keep the data producer alive. |
Randy Smith (Not in Mondays)
2017/01/10 23:07:47
Note that this comment (here and elsewhere) is no
|
- io_buffer = nullptr; |
+ mock_loader_->ReleaseIOBuffer(); |
Randy Smith (Not in Mondays)
2017/01/10 23:07:47
Sorry, there's something about this interface that
mmenke
2017/01/11 22:12:54
Ah, you're absolutely correct. I've removed the m
|
while (true) { |
char buffer[16]; |
@@ -725,31 +631,27 @@ TEST_F(MojoAsyncResourceHandlerTest, ResponseCompletionShouldCloseDataPipe) { |
} |
} |
-TEST_F(MojoAsyncResourceHandlerTest, ResponseErrorDuringBodyTransmission) { |
+TEST_F(MojoAsyncResourceHandlerTest, OutOfBandCancelDuringBodyTransmission) { |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
url_loader_client_.RunUntilResponseBodyArrived(); |
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. |
+ std::string data(mock_loader_->io_buffer_size(), 'a'); |
+ ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
+ mock_loader_->OnReadCompleted(data)); |
- defer = false; |
net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED); |
- handler_->OnResponseCompleted(status, &defer); |
- EXPECT_FALSE(defer); |
+ ASSERT_EQ( |
+ MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseCompletedFromExternalOutOfBandCancel(status)); |
url_loader_client_.RunUntilComplete(); |
EXPECT_TRUE(url_loader_client_.has_received_completion()); |
EXPECT_EQ(net::ERR_FAILED, url_loader_client_.completion_status().error_code); |
// This is needed because |*io_buffer| may keep the data producer alive. |
- io_buffer = nullptr; |
+ mock_loader_->ReleaseIOBuffer(); |
std::string actual; |
while (true) { |
@@ -767,29 +669,26 @@ TEST_F(MojoAsyncResourceHandlerTest, ResponseErrorDuringBodyTransmission) { |
EXPECT_EQ(MOJO_RESULT_OK, result); |
actual.append(buf, read_size); |
} |
- EXPECT_EQ(std::string(io_buffer_size, 'a'), actual); |
+ EXPECT_EQ(data, actual); |
} |
// In this case, an error is notified after OnWillRead, before OnReadCompleted. |
TEST_F(MojoAsyncResourceHandlerTest, ResponseErrorDuringBodyTransmission2) { |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
url_loader_client_.RunUntilResponseBodyArrived(); |
ASSERT_TRUE(url_loader_client_.response_body().is_valid()); |
- bool defer = false; |
net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED); |
- handler_->OnResponseCompleted(status, &defer); |
- EXPECT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseCompleted(status)); |
url_loader_client_.RunUntilComplete(); |
EXPECT_TRUE(url_loader_client_.has_received_completion()); |
EXPECT_EQ(net::ERR_FAILED, url_loader_client_.completion_status().error_code); |
// This is needed because |*io_buffer| may keep the data producer alive. |
- io_buffer = nullptr; |
+ mock_loader_->ReleaseIOBuffer(); |
while (true) { |
char buf[16]; |
@@ -810,17 +709,12 @@ TEST_F(MojoAsyncResourceHandlerTest, BeginWriteFailsOnWillRead) { |
int io_buffer_size = 0; |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
ASSERT_FALSE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
- EXPECT_FALSE(resource_controller_.is_cancel_with_error_called()); |
} |
TEST_F(MojoAsyncResourceHandlerTest, BeginWriteReturnsShouldWaitOnWillRead) { |
handler_->set_begin_write_expectation(MOJO_RESULT_SHOULD_WAIT); |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
- EXPECT_TRUE(io_buffer); |
- EXPECT_GT(io_buffer_size, 0); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
} |
TEST_F(MojoAsyncResourceHandlerTest, |
@@ -829,17 +723,13 @@ TEST_F(MojoAsyncResourceHandlerTest, |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
size_t written = 0; |
while (true) { |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
- EXPECT_TRUE(io_buffer); |
- 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) |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
+ MockResourceLoader::Status result = mock_loader_->OnReadCompleted( |
+ std::string(mock_loader_->io_buffer_size(), 'X')); |
+ written += mock_loader_->io_buffer_size(); |
+ if (result == MockResourceLoader::Status::CALLBACK_PENDING) |
break; |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, result); |
} |
url_loader_client_.RunUntilResponseBodyArrived(); |
@@ -861,7 +751,7 @@ TEST_F(MojoAsyncResourceHandlerTest, |
} |
EXPECT_EQ(std::string(written, 'X'), actual); |
- EXPECT_EQ(1, resource_controller_.num_resume_calls()); |
+ EXPECT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status()); |
} |
TEST_F(MojoAsyncResourceHandlerTest, |
@@ -869,52 +759,47 @@ TEST_F(MojoAsyncResourceHandlerTest, |
MojoAsyncResourceHandler::SetAllocationSizeForTesting(2); |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
handler_->set_end_write_expectation(MOJO_RESULT_UNKNOWN); |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- ASSERT_FALSE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
+ ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead(-1)); |
} |
TEST_F(MojoAsyncResourceHandlerTest, EndWriteFailsOnReadCompleted) { |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- bool defer = false; |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
handler_->set_end_write_expectation(MOJO_RESULT_SHOULD_WAIT); |
- ASSERT_FALSE(handler_->OnReadCompleted(io_buffer_size, &defer)); |
+ ASSERT_EQ(MockResourceLoader::Status::CANCELED, |
+ mock_loader_->OnReadCompleted( |
+ std::string(mock_loader_->io_buffer_size(), 'w'))); |
} |
TEST_F(MojoAsyncResourceHandlerTest, |
EndWriteFailsOnReadCompletedWithInsufficientInitialCapacity) { |
MojoAsyncResourceHandler::SetAllocationSizeForTesting(2); |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- bool defer = false; |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
handler_->set_end_write_expectation(MOJO_RESULT_SHOULD_WAIT); |
- ASSERT_FALSE(handler_->OnReadCompleted(io_buffer_size, &defer)); |
+ ASSERT_EQ(MockResourceLoader::Status::CANCELED, |
+ mock_loader_->OnReadCompleted( |
+ std::string(mock_loader_->io_buffer_size(), 'w'))); |
} |
TEST_F(MojoAsyncResourceHandlerTest, |
EndWriteFailsOnResumeWithInsufficientInitialCapacity) { |
MojoAsyncResourceHandler::SetAllocationSizeForTesting(8); |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
url_loader_client_.RunUntilResponseBodyArrived(); |
ASSERT_TRUE(url_loader_client_.response_body().is_valid()); |
while (true) { |
- bool defer = false; |
- ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer)); |
- ASSERT_GE(io_buffer_size, 0); |
- if (defer) |
+ MockResourceLoader::Status result = mock_loader_->OnReadCompleted( |
+ std::string(mock_loader_->io_buffer_size(), 'A')); |
+ if (result == MockResourceLoader::Status::CALLBACK_PENDING) |
break; |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, result); |
+ |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
} |
while (true) { |
@@ -929,29 +814,21 @@ TEST_F(MojoAsyncResourceHandlerTest, |
} |
handler_->set_end_write_expectation(MOJO_RESULT_SHOULD_WAIT); |
- resource_controller_.RunUntilCancelWithErrorCalled(); |
+ mock_loader_->WaitUntilIdleOrCanceled(); |
EXPECT_FALSE(url_loader_client_.has_received_completion()); |
- EXPECT_TRUE(resource_controller_.is_cancel_with_error_called()); |
- EXPECT_EQ(net::ERR_FAILED, resource_controller_.error()); |
+ EXPECT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->status()); |
+ EXPECT_EQ(net::ERR_FAILED, mock_loader_->error_code()); |
} |
TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, |
OnWillReadWithLongContents) { |
- bool defer = false; |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
- ASSERT_TRUE(io_buffer); |
- // The io_buffer size that the mime sniffer requires implicitly. |
- ASSERT_GE(io_buffer_size, kSizeMimeSnifferRequiresForFirstOnWillRead); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
std::string expected; |
- for (int i = 0; i < 3 * io_buffer_size + 2; ++i) |
+ for (int i = 0; i < 3 * mock_loader_->io_buffer_size() + 2; ++i) |
expected += ('A' + i % 26); |
- ASSERT_TRUE(handler_->OnReadCompleted(0, &defer)); |
- ASSERT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0)); |
url_loader_client_.RunUntilResponseBodyArrived(); |
ASSERT_TRUE(url_loader_client_.response_body().is_valid()); |
@@ -959,12 +836,18 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, |
size_t written = 0; |
std::string actual; |
while (actual.size() < expected.size()) { |
- while (written < expected.size() && !defer) { |
- 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)); |
+ while (written < expected.size() && |
+ mock_loader_->status() == MockResourceLoader::Status::IDLE) { |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
+ const size_t to_be_written = |
+ std::min(static_cast<size_t>(mock_loader_->io_buffer_size()), |
+ expected.size() - written); |
+ |
+ // Request should be resumed or paused. |
+ ASSERT_NE(MockResourceLoader::Status::CANCELED, |
+ mock_loader_->OnReadCompleted( |
+ expected.substr(written, to_be_written))); |
+ |
written += to_be_written; |
} |
@@ -977,59 +860,55 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, |
ASSERT_EQ(MOJO_RESULT_OK, result); |
actual.append(buf, read_size); |
} |
- int resume_count = resource_controller_.num_resume_calls(); |
+ |
+ // Give mojo a chance pass data back and forth, and to request more data |
+ // from the handler. |
base::RunLoop().RunUntilIdle(); |
- // Continue writing if controller->Resume() is called. |
- defer = (resume_count == resource_controller_.num_resume_calls()); |
} |
EXPECT_EQ(expected, actual); |
} |
TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, |
BeginWriteFailsOnReadCompleted) { |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- bool defer = false; |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN); |
- ASSERT_FALSE(handler_->OnReadCompleted(io_buffer_size, &defer)); |
+ ASSERT_EQ(MockResourceLoader::Status::CANCELED, |
+ mock_loader_->OnReadCompleted( |
+ std::string(mock_loader_->io_buffer_size(), 'A'))); |
} |
TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, |
BeginWriteReturnsShouldWaitOnReadCompleted) { |
- scoped_refptr<net::IOBuffer> io_buffer; |
- int io_buffer_size = 0; |
- bool defer = false; |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
handler_->set_begin_write_expectation(MOJO_RESULT_SHOULD_WAIT); |
- ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer)); |
- EXPECT_TRUE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
+ mock_loader_->OnReadCompleted( |
+ std::string(mock_loader_->io_buffer_size(), 'A'))); |
} |
TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, |
BeginWriteFailsOnResume) { |
- bool defer = 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); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0)); |
url_loader_client_.RunUntilResponseBodyArrived(); |
ASSERT_TRUE(url_loader_client_.response_body().is_valid()); |
- while (!defer) { |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
- ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer)); |
+ while (true) { |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
+ MockResourceLoader::Status result = mock_loader_->OnReadCompleted( |
+ std::string(mock_loader_->io_buffer_size(), 'A')); |
+ if (result == MockResourceLoader::Status::CALLBACK_PENDING) |
+ break; |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, result); |
} |
handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN); |
- while (!resource_controller_.is_cancel_with_error_called()) { |
+ while (mock_loader_->status() != MockResourceLoader::Status::CANCELED) { |
char buf[256]; |
uint32_t read_size = sizeof(buf); |
MojoResult result = |
@@ -1040,28 +919,29 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, |
} |
EXPECT_FALSE(url_loader_client_.has_received_completion()); |
- EXPECT_EQ(net::ERR_FAILED, resource_controller_.error()); |
- EXPECT_EQ(0, resource_controller_.num_resume_calls()); |
+ EXPECT_EQ(net::ERR_FAILED, mock_loader_->error_code()); |
} |
TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, CancelWhileWaiting) { |
- bool defer = false; |
ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); |
- while (!defer) { |
- 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)); |
+ while (true) { |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
+ MockResourceLoader::Status result = mock_loader_->OnReadCompleted( |
+ std::string(mock_loader_->io_buffer_size(), 'A')); |
+ if (result == MockResourceLoader::Status::CALLBACK_PENDING) |
+ break; |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, result); |
} |
url_loader_client_.RunUntilResponseBodyArrived(); |
ASSERT_TRUE(url_loader_client_.response_body().is_valid()); |
- defer = false; |
net::URLRequestStatus status(net::URLRequestStatus::CANCELED, |
net::ERR_ABORTED); |
- handler_->OnResponseCompleted(status, &defer); |
+ ASSERT_EQ( |
+ MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseCompletedFromExternalOutOfBandCancel(status)); |
ASSERT_FALSE(url_loader_client_.has_received_completion()); |
url_loader_client_.RunUntilComplete(); |
@@ -1081,21 +961,19 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, CancelWhileWaiting) { |
} |
base::RunLoop().RunUntilIdle(); |
- EXPECT_EQ(0, resource_controller_.num_resume_calls()); |
} |
TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, RedirectHandling) { |
rdh_delegate_.set_num_on_response_started_calls_expectation(1); |
- bool defer = false; |
- ASSERT_TRUE(handler_->OnWillStart(request_->url(), &defer)); |
- ASSERT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnWillStart(request_->url())); |
+ |
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); |
+ ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
+ mock_loader_->OnRequestRedirected(redirect_info, response)); |
ASSERT_FALSE(url_loader_client_.has_received_response()); |
ASSERT_FALSE(url_loader_client_.has_received_redirect()); |
@@ -1105,17 +983,16 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, RedirectHandling) { |
ASSERT_TRUE(url_loader_client_.has_received_redirect()); |
EXPECT_EQ(301, url_loader_client_.redirect_info().status_code); |
- EXPECT_EQ(0, resource_controller_.num_resume_calls()); |
+ ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
+ mock_loader_->status()); |
handler_->FollowRedirect(); |
- EXPECT_EQ(1, resource_controller_.num_resume_calls()); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status()); |
url_loader_client_.ClearHasReceivedRedirect(); |
// Redirect once more. |
- defer = false; |
redirect_info.status_code = 302; |
- ASSERT_TRUE( |
- handler_->OnRequestRedirected(redirect_info, response.get(), &defer)); |
- ASSERT_TRUE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
+ mock_loader_->OnRequestRedirected(redirect_info, response)); |
ASSERT_FALSE(url_loader_client_.has_received_response()); |
ASSERT_FALSE(url_loader_client_.has_received_redirect()); |
@@ -1125,18 +1002,18 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, RedirectHandling) { |
ASSERT_TRUE(url_loader_client_.has_received_redirect()); |
EXPECT_EQ(302, url_loader_client_.redirect_info().status_code); |
- EXPECT_EQ(1, resource_controller_.num_resume_calls()); |
+ ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
+ mock_loader_->status()); |
handler_->FollowRedirect(); |
- EXPECT_EQ(2, resource_controller_.num_resume_calls()); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status()); |
// Give the final response. |
- defer = false; |
- ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer)); |
- ASSERT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseStarted(response)); |
net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); |
- handler_->OnResponseCompleted(status, &defer); |
- ASSERT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseCompleted(status)); |
ASSERT_FALSE(url_loader_client_.has_received_completion()); |
url_loader_client_.RunUntilComplete(); |
@@ -1146,12 +1023,13 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, RedirectHandling) { |
EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code); |
} |
+// Test the case where th other process tells the ResourceHandler to follow a |
+// redirect, despite the fact that no redirect has been received yet. |
TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, |
MalformedFollowRedirectRequest) { |
handler_->FollowRedirect(); |
EXPECT_TRUE(handler_->has_received_bad_message()); |
- EXPECT_EQ(0, resource_controller_.num_resume_calls()); |
} |
// Typically ResourceHandler methods are called in this order. |
@@ -1159,40 +1037,34 @@ TEST_P( |
MojoAsyncResourceHandlerWithAllocationSizeTest, |
OnWillStartThenOnResponseStartedThenOnWillReadThenOnReadCompletedThenOnResponseCompleted) { |
rdh_delegate_.set_num_on_response_started_calls_expectation(1); |
- bool defer = false; |
- ASSERT_TRUE(handler_->OnWillStart(request_->url(), &defer)); |
- ASSERT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnWillStart(request_->url())); |
scoped_refptr<ResourceResponse> response = new ResourceResponse(); |
- ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer)); |
- ASSERT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseStarted(response)); |
ASSERT_FALSE(url_loader_client_.has_received_response()); |
url_loader_client_.RunUntilResponseReceived(); |
- int io_buffer_size = 0; |
- scoped_refptr<net::IOBuffer> io_buffer; |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
- ASSERT_TRUE(io_buffer); |
- ASSERT_GT(io_buffer_size, 0); |
- io_buffer->data()[0] = 'A'; |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
ASSERT_FALSE(url_loader_client_.response_body().is_valid()); |
url_loader_client_.RunUntilResponseBodyArrived(); |
ASSERT_TRUE(url_loader_client_.response_body().is_valid()); |
- ASSERT_TRUE(handler_->OnReadCompleted(1, &defer)); |
- ASSERT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnReadCompleted("A")); |
net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); |
- handler_->OnResponseCompleted(status, &defer); |
- ASSERT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseCompleted(status)); |
ASSERT_FALSE(url_loader_client_.has_received_completion()); |
url_loader_client_.RunUntilComplete(); |
EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code); |
// This is needed because |*io_buffer| may keep the data producer alive. |
- io_buffer = nullptr; |
+ mock_loader_->ReleaseIOBuffer(); |
std::string body; |
while (true) { |
@@ -1218,41 +1090,35 @@ TEST_P( |
MojoAsyncResourceHandlerWithAllocationSizeTest, |
OnWillStartThenOnWillReadThenOnResponseStartedThenOnReadCompletedThenOnResponseCompleted) { |
rdh_delegate_.set_num_on_response_started_calls_expectation(1); |
- bool defer = false; |
- ASSERT_TRUE(handler_->OnWillStart(request_->url(), &defer)); |
- ASSERT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnWillStart(request_->url())); |
- int io_buffer_size = 0; |
- scoped_refptr<net::IOBuffer> io_buffer; |
- ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); |
- ASSERT_TRUE(io_buffer); |
- ASSERT_GT(io_buffer_size, 0); |
- io_buffer->data()[0] = 'B'; |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); |
ASSERT_FALSE(url_loader_client_.response_body().is_valid()); |
url_loader_client_.RunUntilResponseBodyArrived(); |
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); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseStarted(response)); |
ASSERT_FALSE(url_loader_client_.has_received_response()); |
url_loader_client_.RunUntilResponseReceived(); |
- ASSERT_TRUE(handler_->OnReadCompleted(1, &defer)); |
- ASSERT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnReadCompleted("B")); |
net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); |
- handler_->OnResponseCompleted(status, &defer); |
- ASSERT_FALSE(defer); |
+ ASSERT_EQ(MockResourceLoader::Status::IDLE, |
+ mock_loader_->OnResponseCompleted(status)); |
ASSERT_FALSE(url_loader_client_.has_received_completion()); |
url_loader_client_.RunUntilComplete(); |
EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code); |
// This is needed because |*io_buffer| may keep the data producer alive. |
- io_buffer = nullptr; |
+ mock_loader_->ReleaseIOBuffer(); |
std::string body; |
while (true) { |