| Index: net/http/http_response_body_drainer_unittest.cc
|
| diff --git a/net/http/http_response_body_drainer_unittest.cc b/net/http/http_response_body_drainer_unittest.cc
|
| index 9ee6f84e03a0caec06064266059a31b6ec0faca7..3483a8f2a5fd6e4e175f655f9fb9bd19e4da9d73 100644
|
| --- a/net/http/http_response_body_drainer_unittest.cc
|
| +++ b/net/http/http_response_body_drainer_unittest.cc
|
| @@ -12,6 +12,7 @@
|
| #include "base/compiler_specific.h"
|
| #include "base/location.h"
|
| #include "base/macros.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/single_thread_task_runner.h"
|
| @@ -20,6 +21,7 @@
|
| #include "net/base/net_errors.h"
|
| #include "net/base/test_completion_callback.h"
|
| #include "net/http/http_network_session.h"
|
| +#include "net/http/http_response_info.h"
|
| #include "net/http/http_server_properties_impl.h"
|
| #include "net/http/http_stream.h"
|
| #include "net/http/transport_security_state.h"
|
| @@ -79,6 +81,7 @@ class MockHttpStream : public HttpStream {
|
| is_sync_(false),
|
| is_last_chunk_zero_size_(false),
|
| is_complete_(false),
|
| + can_reuse_connection_(true),
|
| weak_factory_(this) {}
|
| ~MockHttpStream() override {}
|
|
|
| @@ -101,7 +104,7 @@ class MockHttpStream : public HttpStream {
|
|
|
| bool IsConnectionReused() const override { return false; }
|
| void SetConnectionReused() override {}
|
| - bool CanReuseConnection() const override { return false; }
|
| + bool CanReuseConnection() const override { return can_reuse_connection_; }
|
| int64_t GetTotalReceivedBytes() const override { return 0; }
|
| int64_t GetTotalSentBytes() const override { return 0; }
|
| void GetSSLInfo(SSLInfo* ssl_info) override {}
|
| @@ -131,7 +134,8 @@ class MockHttpStream : public HttpStream {
|
| return false;
|
| }
|
|
|
| - void Drain(HttpNetworkSession*) override {}
|
| + void Drain(HttpNetworkSession* session,
|
| + scoped_ptr<HttpResponseInfo> response_info) override {}
|
|
|
| void PopulateNetErrorDetails(NetErrorDetails* details) override { return; }
|
|
|
| @@ -146,6 +150,11 @@ class MockHttpStream : public HttpStream {
|
|
|
| void set_is_last_chunk_zero_size() { is_last_chunk_zero_size_ = true; }
|
|
|
| + // Sets result value of CanReuseConnection. Defaults to true.
|
| + void set_can_reuse_connection(bool can_reuse_connection) {
|
| + can_reuse_connection_ = can_reuse_connection;
|
| + }
|
| +
|
| private:
|
| int ReadResponseBodyImpl(IOBuffer* buf, int buf_len);
|
| void CompleteRead();
|
| @@ -162,7 +171,11 @@ class MockHttpStream : public HttpStream {
|
| bool is_sync_;
|
| bool is_last_chunk_zero_size_;
|
| bool is_complete_;
|
| + bool can_reuse_connection_;
|
| +
|
| base::WeakPtrFactory<MockHttpStream> weak_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MockHttpStream);
|
| };
|
|
|
| int MockHttpStream::ReadResponseBody(IOBuffer* buf,
|
| @@ -223,7 +236,9 @@ class HttpResponseBodyDrainerTest : public testing::Test {
|
| transport_security_state_(new TransportSecurityState()),
|
| session_(CreateNetworkSession()),
|
| mock_stream_(new MockHttpStream(&result_waiter_)),
|
| - drainer_(new HttpResponseBodyDrainer(mock_stream_)) {}
|
| + drainer_(new HttpResponseBodyDrainer(
|
| + mock_stream_,
|
| + make_scoped_ptr(new HttpResponseInfo()))) {}
|
|
|
| ~HttpResponseBodyDrainerTest() override {}
|
|
|
| @@ -315,6 +330,13 @@ TEST_F(HttpResponseBodyDrainerTest, DrainBodyTooLarge) {
|
| EXPECT_TRUE(result_waiter_.WaitForResult());
|
| }
|
|
|
| +TEST_F(HttpResponseBodyDrainerTest, DrainBodyCantReuse) {
|
| + mock_stream_->set_num_chunks(1);
|
| + mock_stream_->set_can_reuse_connection(false);
|
| + drainer_->Start(session_.get());
|
| + EXPECT_TRUE(result_waiter_.WaitForResult());
|
| +}
|
| +
|
| } // namespace
|
|
|
| } // namespace net
|
|
|