Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Unified Diff: content/browser/loader/mojo_async_resource_handler_unittest.cc

Issue 2581393002: Update MojoAsyncResourceHandler tests to use MockResourceLoader. (Closed)
Patch Set: Remove use of URLRequestFilter (Which wasn't being set up correctly, anyways) Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/loader/mock_resource_loader.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « content/browser/loader/mock_resource_loader.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698