Index: net/http/http_network_transaction_unittest.cc |
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc |
index 01756a196547574976bdbc50bf10eb4a0318a3dd..e4bff1b9f42ad6df62b70c9ccdd0db76eb92c093 100644 |
--- a/net/http/http_network_transaction_unittest.cc |
+++ b/net/http/http_network_transaction_unittest.cc |
@@ -433,6 +433,31 @@ class BeforeNetworkStartHandler { |
DISALLOW_COPY_AND_ASSIGN(BeforeNetworkStartHandler); |
}; |
+class BeforeProxyHeadersSentHandler { |
+ public: |
+ BeforeProxyHeadersSentHandler() |
+ : observed_before_proxy_headers_sent_(false) {} |
+ |
+ void OnBeforeProxyHeadersSent(const ProxyInfo* proxy_info) { |
+ observed_before_proxy_headers_sent_ = true; |
+ observed_proxy_server_uri_ = proxy_info->proxy_server().ToURI(); |
+ } |
+ |
+ bool observed_before_proxy_headers_sent() const { |
+ return observed_before_proxy_headers_sent_; |
+ } |
+ |
+ std::string observed_proxy_server_uri() const { |
+ return observed_proxy_server_uri_; |
+ } |
+ |
+ private: |
+ bool observed_before_proxy_headers_sent_; |
+ std::string observed_proxy_server_uri_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(BeforeProxyHeadersSentHandler); |
+}; |
+ |
// Fill |str| with a long header list that consumes >= |size| bytes. |
void FillLargeHeadersString(std::string* str, int size) { |
const char* row = |
@@ -974,6 +999,10 @@ TEST_P(HttpNetworkTransactionTest, Head) { |
scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
scoped_ptr<HttpTransaction> trans( |
new HttpNetworkTransaction(DEFAULT_PRIORITY, session)); |
+ BeforeProxyHeadersSentHandler proxy_headers_handler; |
+ trans->SetBeforeProxyHeadersSentCallback( |
+ base::Bind(&BeforeProxyHeadersSentHandler::OnBeforeProxyHeadersSent, |
+ base::Unretained(&proxy_headers_handler))); |
MockWrite data_writes1[] = { |
MockWrite("HEAD / HTTP/1.1\r\n" |
@@ -1010,6 +1039,7 @@ TEST_P(HttpNetworkTransactionTest, Head) { |
EXPECT_EQ(1234, response->headers->GetContentLength()); |
EXPECT_EQ("HTTP/1.1 404 Not Found", response->headers->GetStatusLine()); |
EXPECT_TRUE(response->proxy_server.IsEmpty()); |
+ EXPECT_FALSE(proxy_headers_handler.observed_before_proxy_headers_sent()); |
std::string server_header; |
void* iter = NULL; |
@@ -10340,6 +10370,10 @@ TEST_P(HttpNetworkTransactionTest, ProxyGet) { |
scoped_ptr<HttpTransaction> trans( |
new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
+ BeforeProxyHeadersSentHandler proxy_headers_handler; |
+ trans->SetBeforeProxyHeadersSentCallback( |
+ base::Bind(&BeforeProxyHeadersSentHandler::OnBeforeProxyHeadersSent, |
+ base::Unretained(&proxy_headers_handler))); |
int rv = trans->Start(&request, callback1.callback(), log.bound()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
@@ -10356,6 +10390,8 @@ TEST_P(HttpNetworkTransactionTest, ProxyGet) { |
EXPECT_TRUE(response->was_fetched_via_proxy); |
EXPECT_TRUE( |
response->proxy_server.Equals(HostPortPair::FromString("myproxy:70"))); |
+ EXPECT_TRUE(proxy_headers_handler.observed_before_proxy_headers_sent()); |
+ EXPECT_EQ("myproxy:70", proxy_headers_handler.observed_proxy_server_uri()); |
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); |
LoadTimingInfo load_timing_info; |