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

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

Issue 2581393002: Update MojoAsyncResourceHandler tests to use MockResourceLoader. (Closed)
Patch Set: Created 4 years 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
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 e67713a24c73f6e085a63444c40c8314861cfb67..766b63edf6ccfa2f8012ccdf314f190dcef11b01 100644
--- a/content/browser/loader/mojo_async_resource_handler_unittest.cc
+++ b/content/browser/loader/mojo_async_resource_handler_unittest.cc
@@ -15,6 +15,7 @@
#include "base/memory/scoped_vector.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"
@@ -173,55 +174,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:
@@ -359,7 +311,7 @@ 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() {
@@ -370,35 +322,20 @@ class MojoAsyncResourceHandlerTestBase {
}
// 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.get());
+ 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;
@@ -413,12 +350,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_;
std::unique_ptr<net::URLRequest> request_;
std::unique_ptr<MojoAsyncResourceHandlerWithCustomDataPipeOperations>
handler_;
+ std::unique_ptr<MockResourceLoader> mock_loader_;
DISALLOW_COPY_AND_ASSIGN(MojoAsyncResourceHandlerTestBase);
};
@@ -444,14 +381,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;
@@ -460,14 +397,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.get()));
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);
@@ -484,9 +419,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());
@@ -496,36 +429,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).
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) {
@@ -547,23 +470,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()) {
@@ -580,30 +498,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())
@@ -611,9 +526,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());
@@ -628,13 +543,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.get()));
ASSERT_FALSE(url_loader_client_.has_received_response());
url_loader_client_.RunUntilResponseReceived();
@@ -644,9 +559,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());
@@ -662,11 +577,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());
@@ -677,11 +591,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());
@@ -692,25 +605,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.
- io_buffer = nullptr;
+ mock_loader_->ReleaseIOBuffer();
while (true) {
char buffer[16];
@@ -724,31 +633,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.
+ const std::string kData(mock_loader_->io_buffer_size(), 'a');
Randy Smith (Not in Mondays) 2016/12/21 16:47:37 If kData is used below, shouldn't it be used here?
mmenke 2017/01/05 18:50:25 This line is the one that declares and initializes
Randy Smith (Not in Mondays) 2017/01/10 23:07:47 Sorry, that looks like a braino on my part. Regar
+ ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
+ mock_loader_->OnReadCompleted(kData));
- 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) {
@@ -766,29 +671,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(kData, 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];
@@ -809,17 +711,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,
@@ -828,17 +725,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();
@@ -860,7 +753,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,
@@ -868,52 +761,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) {
@@ -928,29 +816,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());
@@ -958,12 +838,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;
}
@@ -976,59 +862,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 =
@@ -1039,28 +921,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();
@@ -1080,21 +963,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.get()));
ASSERT_FALSE(url_loader_client_.has_received_response());
ASSERT_FALSE(url_loader_client_.has_received_redirect());
@@ -1104,17 +985,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.get()));
ASSERT_FALSE(url_loader_client_.has_received_response());
ASSERT_FALSE(url_loader_client_.has_received_redirect());
@@ -1124,18 +1004,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.get()));
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();
@@ -1145,12 +1025,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.
@@ -1158,40 +1039,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.get()));
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) {
@@ -1217,41 +1092,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.get()));
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) {

Powered by Google App Engine
This is Rietveld 408576698