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 |