| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/http/http_network_transaction.h" | 5 #include "net/http/http_network_transaction.h" |
| 6 | 6 |
| 7 #include <math.h> // ceil | 7 #include <math.h> // ceil |
| 8 #include <stdarg.h> | 8 #include <stdarg.h> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 5874 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5885 SessionDependencies session_deps; | 5885 SessionDependencies session_deps; |
| 5886 | 5886 |
| 5887 // Select a host resolver that does caching. | 5887 // Select a host resolver that does caching. |
| 5888 session_deps.host_resolver.reset(new MockCachingHostResolver); | 5888 session_deps.host_resolver.reset(new MockCachingHostResolver); |
| 5889 | 5889 |
| 5890 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( | 5890 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( |
| 5891 CreateSession(&session_deps))); | 5891 CreateSession(&session_deps))); |
| 5892 | 5892 |
| 5893 // Warm up the host cache so it has an entry for "www.google.com". | 5893 // Warm up the host cache so it has an entry for "www.google.com". |
| 5894 AddressList addrlist; | 5894 AddressList addrlist; |
| 5895 TestOldCompletionCallback callback; | 5895 TestCompletionCallback callback; |
| 5896 TestOldCompletionCallback old_callback; |
| 5896 int rv = session_deps.host_resolver->Resolve( | 5897 int rv = session_deps.host_resolver->Resolve( |
| 5897 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), &addrlist, | 5898 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), &addrlist, |
| 5898 &callback, NULL, BoundNetLog()); | 5899 callback.callback(), NULL, BoundNetLog()); |
| 5899 EXPECT_EQ(ERR_IO_PENDING, rv); | 5900 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 5900 rv = callback.WaitForResult(); | 5901 rv = callback.WaitForResult(); |
| 5901 EXPECT_EQ(OK, rv); | 5902 EXPECT_EQ(OK, rv); |
| 5902 | 5903 |
| 5903 // Verify that it was added to host cache, by doing a subsequent async lookup | 5904 // Verify that it was added to host cache, by doing a subsequent async lookup |
| 5904 // and confirming it completes synchronously. | 5905 // and confirming it completes synchronously. |
| 5905 rv = session_deps.host_resolver->Resolve( | 5906 rv = session_deps.host_resolver->Resolve( |
| 5906 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), &addrlist, | 5907 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), &addrlist, |
| 5907 &callback, NULL, BoundNetLog()); | 5908 callback.callback(), NULL, BoundNetLog()); |
| 5908 ASSERT_EQ(OK, rv); | 5909 ASSERT_EQ(OK, rv); |
| 5909 | 5910 |
| 5910 // Inject a failure the next time that "www.google.com" is resolved. This way | 5911 // Inject a failure the next time that "www.google.com" is resolved. This way |
| 5911 // we can tell if the next lookup hit the cache, or the "network". | 5912 // we can tell if the next lookup hit the cache, or the "network". |
| 5912 // (cache --> success, "network" --> failure). | 5913 // (cache --> success, "network" --> failure). |
| 5913 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com"); | 5914 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com"); |
| 5914 | 5915 |
| 5915 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the | 5916 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the |
| 5916 // first read -- this won't be reached as the host resolution will fail first. | 5917 // first read -- this won't be reached as the host resolution will fail first. |
| 5917 MockRead data_reads[] = { MockRead(false, ERR_UNEXPECTED) }; | 5918 MockRead data_reads[] = { MockRead(false, ERR_UNEXPECTED) }; |
| 5918 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 5919 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 5919 session_deps.socket_factory.AddSocketDataProvider(&data); | 5920 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5920 | 5921 |
| 5921 // Run the request. | 5922 // Run the request. |
| 5922 rv = trans->Start(&request, &callback, BoundNetLog()); | 5923 rv = trans->Start(&request, &old_callback, BoundNetLog()); |
| 5923 ASSERT_EQ(ERR_IO_PENDING, rv); | 5924 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 5924 rv = callback.WaitForResult(); | 5925 rv = old_callback.WaitForResult(); |
| 5925 | 5926 |
| 5926 // If we bypassed the cache, we would have gotten a failure while resolving | 5927 // If we bypassed the cache, we would have gotten a failure while resolving |
| 5927 // "www.google.com". | 5928 // "www.google.com". |
| 5928 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, rv); | 5929 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, rv); |
| 5929 } | 5930 } |
| 5930 | 5931 |
| 5931 // There are multiple load flags that should trigger the host cache bypass. | 5932 // There are multiple load flags that should trigger the host cache bypass. |
| 5932 // Test each in isolation: | 5933 // Test each in isolation: |
| 5933 TEST_F(HttpNetworkTransactionTest, BypassHostCacheOnRefresh1) { | 5934 TEST_F(HttpNetworkTransactionTest, BypassHostCacheOnRefresh1) { |
| 5934 BypassHostCacheOnRefreshHelper(LOAD_BYPASS_CACHE); | 5935 BypassHostCacheOnRefreshHelper(LOAD_BYPASS_CACHE); |
| (...skipping 3038 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8973 host_resolver->rules()->AddIPLiteralRule(host, iplist, ""); | 8974 host_resolver->rules()->AddIPLiteralRule(host, iplist, ""); |
| 8974 | 8975 |
| 8975 // Setup a HostPortProxyPair. | 8976 // Setup a HostPortProxyPair. |
| 8976 HostPortPair host_port_pair(host, port); | 8977 HostPortPair host_port_pair(host, port); |
| 8977 HostPortProxyPair pair = HostPortProxyPair(host_port_pair, | 8978 HostPortProxyPair pair = HostPortProxyPair(host_port_pair, |
| 8978 ProxyServer::Direct()); | 8979 ProxyServer::Direct()); |
| 8979 | 8980 |
| 8980 // Resolve the host and port. | 8981 // Resolve the host and port. |
| 8981 AddressList addresses; | 8982 AddressList addresses; |
| 8982 HostResolver::RequestInfo info(host_port_pair); | 8983 HostResolver::RequestInfo info(host_port_pair); |
| 8983 TestOldCompletionCallback callback; | 8984 TestCompletionCallback callback; |
| 8984 int rv = host_resolver->Resolve(info, &addresses, &callback, NULL, | 8985 int rv = host_resolver->Resolve(info, &addresses, callback.callback(), NULL, |
| 8985 BoundNetLog()); | 8986 BoundNetLog()); |
| 8986 if (rv == ERR_IO_PENDING) | 8987 if (rv == ERR_IO_PENDING) |
| 8987 rv = callback.WaitForResult(); | 8988 rv = callback.WaitForResult(); |
| 8988 DCHECK_EQ(OK, rv); | 8989 DCHECK_EQ(OK, rv); |
| 8989 | 8990 |
| 8990 // Add the first address as an alias. It would have been better to call | 8991 // Add the first address as an alias. It would have been better to call |
| 8991 // MockClientSocket::GetPeerAddress but that returns 192.0.2.33 whereas | 8992 // MockClientSocket::GetPeerAddress but that returns 192.0.2.33 whereas |
| 8992 // MockHostResolver returns 127.0.0.1 (MockHostResolverBase::Reset). So we use | 8993 // MockHostResolver returns 127.0.0.1 (MockHostResolverBase::Reset). So we use |
| 8993 // the first address (127.0.0.1) returned by MockHostResolver as an alias for | 8994 // the first address (127.0.0.1) returned by MockHostResolver as an alias for |
| 8994 // the |pair|. | 8995 // the |pair|. |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9042 CreateMockRead(*host2_resp_body, 6), | 9043 CreateMockRead(*host2_resp_body, 6), |
| 9043 MockRead(true, 0, 7), | 9044 MockRead(true, 0, 7), |
| 9044 }; | 9045 }; |
| 9045 | 9046 |
| 9046 scoped_refptr<OrderedSocketData> spdy_data( | 9047 scoped_refptr<OrderedSocketData> spdy_data( |
| 9047 new OrderedSocketData( | 9048 new OrderedSocketData( |
| 9048 spdy_reads, arraysize(spdy_reads), | 9049 spdy_reads, arraysize(spdy_reads), |
| 9049 spdy_writes, arraysize(spdy_writes))); | 9050 spdy_writes, arraysize(spdy_writes))); |
| 9050 session_deps.socket_factory.AddSocketDataProvider(spdy_data); | 9051 session_deps.socket_factory.AddSocketDataProvider(spdy_data); |
| 9051 | 9052 |
| 9052 TestOldCompletionCallback callback; | 9053 TestCompletionCallback callback; |
| 9054 TestOldCompletionCallback old_callback; |
| 9053 HttpRequestInfo request1; | 9055 HttpRequestInfo request1; |
| 9054 request1.method = "GET"; | 9056 request1.method = "GET"; |
| 9055 request1.url = GURL("https://www.google.com/"); | 9057 request1.url = GURL("https://www.google.com/"); |
| 9056 request1.load_flags = 0; | 9058 request1.load_flags = 0; |
| 9057 HttpNetworkTransaction trans1(session); | 9059 HttpNetworkTransaction trans1(session); |
| 9058 | 9060 |
| 9059 int rv = trans1.Start(&request1, &callback, BoundNetLog()); | 9061 int rv = trans1.Start(&request1, &old_callback, BoundNetLog()); |
| 9060 EXPECT_EQ(ERR_IO_PENDING, rv); | 9062 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 9061 EXPECT_EQ(OK, callback.WaitForResult()); | 9063 EXPECT_EQ(OK, old_callback.WaitForResult()); |
| 9062 | 9064 |
| 9063 const HttpResponseInfo* response = trans1.GetResponseInfo(); | 9065 const HttpResponseInfo* response = trans1.GetResponseInfo(); |
| 9064 ASSERT_TRUE(response != NULL); | 9066 ASSERT_TRUE(response != NULL); |
| 9065 ASSERT_TRUE(response->headers != NULL); | 9067 ASSERT_TRUE(response->headers != NULL); |
| 9066 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9068 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 9067 | 9069 |
| 9068 std::string response_data; | 9070 std::string response_data; |
| 9069 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data)); | 9071 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data)); |
| 9070 EXPECT_EQ("hello!", response_data); | 9072 EXPECT_EQ("hello!", response_data); |
| 9071 | 9073 |
| 9072 // Preload www.gmail.com into HostCache. | 9074 // Preload www.gmail.com into HostCache. |
| 9073 HostPortPair host_port("www.gmail.com", 443); | 9075 HostPortPair host_port("www.gmail.com", 443); |
| 9074 HostResolver::RequestInfo resolve_info(host_port); | 9076 HostResolver::RequestInfo resolve_info(host_port); |
| 9075 AddressList ignored; | 9077 AddressList ignored; |
| 9076 rv = host_resolver.Resolve(resolve_info, &ignored, &callback, NULL, | 9078 rv = host_resolver.Resolve(resolve_info, &ignored, callback.callback(), NULL, |
| 9077 BoundNetLog()); | 9079 BoundNetLog()); |
| 9078 EXPECT_EQ(ERR_IO_PENDING, rv); | 9080 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 9079 rv = callback.WaitForResult(); | 9081 rv = callback.WaitForResult(); |
| 9080 EXPECT_EQ(OK, rv); | 9082 EXPECT_EQ(OK, rv); |
| 9081 | 9083 |
| 9082 // MockHostResolver returns 127.0.0.1, port 443 for https://www.google.com/ | 9084 // MockHostResolver returns 127.0.0.1, port 443 for https://www.google.com/ |
| 9083 // and https://www.gmail.com/. Add 127.0.0.1 as alias for host_port_pair: | 9085 // and https://www.gmail.com/. Add 127.0.0.1 as alias for host_port_pair: |
| 9084 // (www.google.com, 443). | 9086 // (www.google.com, 443). |
| 9085 IPPoolingAddAlias(&host_resolver, &pool_peer, "www.google.com", 443, | 9087 IPPoolingAddAlias(&host_resolver, &pool_peer, "www.google.com", 443, |
| 9086 "127.0.0.1"); | 9088 "127.0.0.1"); |
| 9087 | 9089 |
| 9088 HttpRequestInfo request2; | 9090 HttpRequestInfo request2; |
| 9089 request2.method = "GET"; | 9091 request2.method = "GET"; |
| 9090 request2.url = GURL("https://www.gmail.com/"); | 9092 request2.url = GURL("https://www.gmail.com/"); |
| 9091 request2.load_flags = 0; | 9093 request2.load_flags = 0; |
| 9092 HttpNetworkTransaction trans2(session); | 9094 HttpNetworkTransaction trans2(session); |
| 9093 | 9095 |
| 9094 rv = trans2.Start(&request2, &callback, BoundNetLog()); | 9096 rv = trans2.Start(&request2, &old_callback, BoundNetLog()); |
| 9095 EXPECT_EQ(ERR_IO_PENDING, rv); | 9097 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 9096 EXPECT_EQ(OK, callback.WaitForResult()); | 9098 EXPECT_EQ(OK, old_callback.WaitForResult()); |
| 9097 | 9099 |
| 9098 response = trans2.GetResponseInfo(); | 9100 response = trans2.GetResponseInfo(); |
| 9099 ASSERT_TRUE(response != NULL); | 9101 ASSERT_TRUE(response != NULL); |
| 9100 ASSERT_TRUE(response->headers != NULL); | 9102 ASSERT_TRUE(response->headers != NULL); |
| 9101 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9103 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 9102 EXPECT_TRUE(response->was_fetched_via_spdy); | 9104 EXPECT_TRUE(response->was_fetched_via_spdy); |
| 9103 EXPECT_TRUE(response->was_npn_negotiated); | 9105 EXPECT_TRUE(response->was_npn_negotiated); |
| 9104 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); | 9106 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); |
| 9105 EXPECT_EQ("hello!", response_data); | 9107 EXPECT_EQ("hello!", response_data); |
| 9106 | 9108 |
| 9107 HttpStreamFactory::set_next_protos(std::vector<std::string>()); | 9109 HttpStreamFactory::set_next_protos(std::vector<std::string>()); |
| 9108 HttpStreamFactory::set_use_alternate_protocols(false); | 9110 HttpStreamFactory::set_use_alternate_protocols(false); |
| 9109 } | 9111 } |
| 9110 | 9112 |
| 9111 class OneTimeCachingHostResolver : public net::HostResolver { | 9113 class OneTimeCachingHostResolver : public net::HostResolver { |
| 9112 public: | 9114 public: |
| 9113 explicit OneTimeCachingHostResolver(const HostPortPair& host_port) | 9115 explicit OneTimeCachingHostResolver(const HostPortPair& host_port) |
| 9114 : host_port_(host_port) {} | 9116 : host_port_(host_port) {} |
| 9115 virtual ~OneTimeCachingHostResolver() {} | 9117 virtual ~OneTimeCachingHostResolver() {} |
| 9116 | 9118 |
| 9117 RuleBasedHostResolverProc* rules() { return host_resolver_.rules(); } | 9119 RuleBasedHostResolverProc* rules() { return host_resolver_.rules(); } |
| 9118 | 9120 |
| 9119 // HostResolver methods: | 9121 // HostResolver methods: |
| 9120 virtual int Resolve(const RequestInfo& info, | 9122 virtual int Resolve(const RequestInfo& info, |
| 9121 AddressList* addresses, | 9123 AddressList* addresses, |
| 9122 OldCompletionCallback* callback, | 9124 const CompletionCallback& callback, |
| 9123 RequestHandle* out_req, | 9125 RequestHandle* out_req, |
| 9124 const BoundNetLog& net_log) OVERRIDE { | 9126 const BoundNetLog& net_log) OVERRIDE { |
| 9125 return host_resolver_.Resolve( | 9127 return host_resolver_.Resolve( |
| 9126 info, addresses, callback, out_req, net_log); | 9128 info, addresses, callback, out_req, net_log); |
| 9127 } | 9129 } |
| 9128 | 9130 |
| 9129 virtual int ResolveFromCache(const RequestInfo& info, | 9131 virtual int ResolveFromCache(const RequestInfo& info, |
| 9130 AddressList* addresses, | 9132 AddressList* addresses, |
| 9131 const BoundNetLog& net_log) OVERRIDE { | 9133 const BoundNetLog& net_log) OVERRIDE { |
| 9132 int rv = host_resolver_.ResolveFromCache(info, addresses, net_log); | 9134 int rv = host_resolver_.ResolveFromCache(info, addresses, net_log); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9203 CreateMockRead(*host2_resp_body, 6), | 9205 CreateMockRead(*host2_resp_body, 6), |
| 9204 MockRead(true, 0, 7), | 9206 MockRead(true, 0, 7), |
| 9205 }; | 9207 }; |
| 9206 | 9208 |
| 9207 scoped_refptr<OrderedSocketData> spdy_data( | 9209 scoped_refptr<OrderedSocketData> spdy_data( |
| 9208 new OrderedSocketData( | 9210 new OrderedSocketData( |
| 9209 spdy_reads, arraysize(spdy_reads), | 9211 spdy_reads, arraysize(spdy_reads), |
| 9210 spdy_writes, arraysize(spdy_writes))); | 9212 spdy_writes, arraysize(spdy_writes))); |
| 9211 session_deps.socket_factory.AddSocketDataProvider(spdy_data); | 9213 session_deps.socket_factory.AddSocketDataProvider(spdy_data); |
| 9212 | 9214 |
| 9213 TestOldCompletionCallback callback; | 9215 TestCompletionCallback callback; |
| 9214 HttpRequestInfo request1; | 9216 HttpRequestInfo request1; |
| 9215 request1.method = "GET"; | 9217 request1.method = "GET"; |
| 9216 request1.url = GURL("https://www.google.com/"); | 9218 request1.url = GURL("https://www.google.com/"); |
| 9217 request1.load_flags = 0; | 9219 request1.load_flags = 0; |
| 9218 HttpNetworkTransaction trans1(session); | 9220 HttpNetworkTransaction trans1(session); |
| 9219 | 9221 |
| 9220 int rv = trans1.Start(&request1, &callback, BoundNetLog()); | 9222 TestOldCompletionCallback old_callback; |
| 9223 int rv = trans1.Start(&request1, &old_callback, BoundNetLog()); |
| 9221 EXPECT_EQ(ERR_IO_PENDING, rv); | 9224 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 9222 EXPECT_EQ(OK, callback.WaitForResult()); | 9225 EXPECT_EQ(OK, old_callback.WaitForResult()); |
| 9223 | 9226 |
| 9224 const HttpResponseInfo* response = trans1.GetResponseInfo(); | 9227 const HttpResponseInfo* response = trans1.GetResponseInfo(); |
| 9225 ASSERT_TRUE(response != NULL); | 9228 ASSERT_TRUE(response != NULL); |
| 9226 ASSERT_TRUE(response->headers != NULL); | 9229 ASSERT_TRUE(response->headers != NULL); |
| 9227 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9230 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 9228 | 9231 |
| 9229 std::string response_data; | 9232 std::string response_data; |
| 9230 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data)); | 9233 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data)); |
| 9231 EXPECT_EQ("hello!", response_data); | 9234 EXPECT_EQ("hello!", response_data); |
| 9232 | 9235 |
| 9233 // Preload cache entries into HostCache. | 9236 // Preload cache entries into HostCache. |
| 9234 HostResolver::RequestInfo resolve_info(HostPortPair("www.gmail.com", 443)); | 9237 HostResolver::RequestInfo resolve_info(HostPortPair("www.gmail.com", 443)); |
| 9235 AddressList ignored; | 9238 AddressList ignored; |
| 9236 rv = host_resolver.Resolve(resolve_info, &ignored, &callback, NULL, | 9239 rv = host_resolver.Resolve(resolve_info, &ignored, callback.callback(), NULL, |
| 9237 BoundNetLog()); | 9240 BoundNetLog()); |
| 9238 EXPECT_EQ(ERR_IO_PENDING, rv); | 9241 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 9239 rv = callback.WaitForResult(); | 9242 rv = callback.WaitForResult(); |
| 9240 EXPECT_EQ(OK, rv); | 9243 EXPECT_EQ(OK, rv); |
| 9241 | 9244 |
| 9242 HttpRequestInfo request2; | 9245 HttpRequestInfo request2; |
| 9243 request2.method = "GET"; | 9246 request2.method = "GET"; |
| 9244 request2.url = GURL("https://www.gmail.com/"); | 9247 request2.url = GURL("https://www.gmail.com/"); |
| 9245 request2.load_flags = 0; | 9248 request2.load_flags = 0; |
| 9246 HttpNetworkTransaction trans2(session); | 9249 HttpNetworkTransaction trans2(session); |
| 9247 | 9250 |
| 9248 // MockHostResolver returns 127.0.0.1, port 443 for https://www.google.com/ | 9251 // MockHostResolver returns 127.0.0.1, port 443 for https://www.google.com/ |
| 9249 // and https://www.gmail.com/. Add 127.0.0.1 as alias for host_port_pair: | 9252 // and https://www.gmail.com/. Add 127.0.0.1 as alias for host_port_pair: |
| 9250 // (www.google.com, 443). | 9253 // (www.google.com, 443). |
| 9251 IPPoolingAddAlias(host_resolver.GetMockHostResolver(), &pool_peer, | 9254 IPPoolingAddAlias(host_resolver.GetMockHostResolver(), &pool_peer, |
| 9252 "www.google.com", 443, "127.0.0.1"); | 9255 "www.google.com", 443, "127.0.0.1"); |
| 9253 | 9256 |
| 9254 rv = trans2.Start(&request2, &callback, BoundNetLog()); | 9257 rv = trans2.Start(&request2, &old_callback, BoundNetLog()); |
| 9255 EXPECT_EQ(ERR_IO_PENDING, rv); | 9258 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 9256 EXPECT_EQ(OK, callback.WaitForResult()); | 9259 EXPECT_EQ(OK, old_callback.WaitForResult()); |
| 9257 | 9260 |
| 9258 response = trans2.GetResponseInfo(); | 9261 response = trans2.GetResponseInfo(); |
| 9259 ASSERT_TRUE(response != NULL); | 9262 ASSERT_TRUE(response != NULL); |
| 9260 ASSERT_TRUE(response->headers != NULL); | 9263 ASSERT_TRUE(response->headers != NULL); |
| 9261 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9264 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 9262 EXPECT_TRUE(response->was_fetched_via_spdy); | 9265 EXPECT_TRUE(response->was_fetched_via_spdy); |
| 9263 EXPECT_TRUE(response->was_npn_negotiated); | 9266 EXPECT_TRUE(response->was_npn_negotiated); |
| 9264 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); | 9267 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); |
| 9265 EXPECT_EQ("hello!", response_data); | 9268 EXPECT_EQ("hello!", response_data); |
| 9266 | 9269 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9309 StaticSocketDataProvider* data[] = { &data1, &data2 }; | 9312 StaticSocketDataProvider* data[] = { &data1, &data2 }; |
| 9310 | 9313 |
| 9311 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); | 9314 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); |
| 9312 | 9315 |
| 9313 EXPECT_EQ(OK, out.rv); | 9316 EXPECT_EQ(OK, out.rv); |
| 9314 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); | 9317 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); |
| 9315 EXPECT_EQ("hello world", out.response_data); | 9318 EXPECT_EQ("hello world", out.response_data); |
| 9316 } | 9319 } |
| 9317 | 9320 |
| 9318 } // namespace net | 9321 } // namespace net |
| OLD | NEW |