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

Side by Side Diff: net/http/http_network_transaction_unittest.cc

Issue 8549004: base::Bind: Convert HostResolver::Resolve. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 9 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 5795 matching lines...) Expand 10 before | Expand all | Expand 10 after
5806 SessionDependencies session_deps; 5806 SessionDependencies session_deps;
5807 5807
5808 // Select a host resolver that does caching. 5808 // Select a host resolver that does caching.
5809 session_deps.host_resolver.reset(new MockCachingHostResolver); 5809 session_deps.host_resolver.reset(new MockCachingHostResolver);
5810 5810
5811 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( 5811 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
5812 CreateSession(&session_deps))); 5812 CreateSession(&session_deps)));
5813 5813
5814 // Warm up the host cache so it has an entry for "www.google.com". 5814 // Warm up the host cache so it has an entry for "www.google.com".
5815 AddressList addrlist; 5815 AddressList addrlist;
5816 TestOldCompletionCallback callback; 5816 TestCompletionCallback callback;
5817 TestOldCompletionCallback old_callback;
5817 int rv = session_deps.host_resolver->Resolve( 5818 int rv = session_deps.host_resolver->Resolve(
5818 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), &addrlist, 5819 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), &addrlist,
5819 &callback, NULL, BoundNetLog()); 5820 callback.callback(), NULL, BoundNetLog());
5820 EXPECT_EQ(ERR_IO_PENDING, rv); 5821 EXPECT_EQ(ERR_IO_PENDING, rv);
5821 rv = callback.WaitForResult(); 5822 rv = callback.WaitForResult();
5822 EXPECT_EQ(OK, rv); 5823 EXPECT_EQ(OK, rv);
5823 5824
5824 // Verify that it was added to host cache, by doing a subsequent async lookup 5825 // Verify that it was added to host cache, by doing a subsequent async lookup
5825 // and confirming it completes synchronously. 5826 // and confirming it completes synchronously.
5826 rv = session_deps.host_resolver->Resolve( 5827 rv = session_deps.host_resolver->Resolve(
5827 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), &addrlist, 5828 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), &addrlist,
5828 &callback, NULL, BoundNetLog()); 5829 callback.callback(), NULL, BoundNetLog());
5829 ASSERT_EQ(OK, rv); 5830 ASSERT_EQ(OK, rv);
5830 5831
5831 // Inject a failure the next time that "www.google.com" is resolved. This way 5832 // Inject a failure the next time that "www.google.com" is resolved. This way
5832 // we can tell if the next lookup hit the cache, or the "network". 5833 // we can tell if the next lookup hit the cache, or the "network".
5833 // (cache --> success, "network" --> failure). 5834 // (cache --> success, "network" --> failure).
5834 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com"); 5835 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com");
5835 5836
5836 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the 5837 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the
5837 // first read -- this won't be reached as the host resolution will fail first. 5838 // first read -- this won't be reached as the host resolution will fail first.
5838 MockRead data_reads[] = { MockRead(false, ERR_UNEXPECTED) }; 5839 MockRead data_reads[] = { MockRead(false, ERR_UNEXPECTED) };
5839 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 5840 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
5840 session_deps.socket_factory.AddSocketDataProvider(&data); 5841 session_deps.socket_factory.AddSocketDataProvider(&data);
5841 5842
5842 // Run the request. 5843 // Run the request.
5843 rv = trans->Start(&request, &callback, BoundNetLog()); 5844 rv = trans->Start(&request, &old_callback, BoundNetLog());
5844 ASSERT_EQ(ERR_IO_PENDING, rv); 5845 ASSERT_EQ(ERR_IO_PENDING, rv);
5845 rv = callback.WaitForResult(); 5846 rv = old_callback.WaitForResult();
5846 5847
5847 // If we bypassed the cache, we would have gotten a failure while resolving 5848 // If we bypassed the cache, we would have gotten a failure while resolving
5848 // "www.google.com". 5849 // "www.google.com".
5849 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, rv); 5850 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, rv);
5850 } 5851 }
5851 5852
5852 // There are multiple load flags that should trigger the host cache bypass. 5853 // There are multiple load flags that should trigger the host cache bypass.
5853 // Test each in isolation: 5854 // Test each in isolation:
5854 TEST_F(HttpNetworkTransactionTest, BypassHostCacheOnRefresh1) { 5855 TEST_F(HttpNetworkTransactionTest, BypassHostCacheOnRefresh1) {
5855 BypassHostCacheOnRefreshHelper(LOAD_BYPASS_CACHE); 5856 BypassHostCacheOnRefreshHelper(LOAD_BYPASS_CACHE);
(...skipping 3038 matching lines...) Expand 10 before | Expand all | Expand 10 after
8894 host_resolver->rules()->AddIPLiteralRule(host, iplist, ""); 8895 host_resolver->rules()->AddIPLiteralRule(host, iplist, "");
8895 8896
8896 // Setup a HostPortProxyPair. 8897 // Setup a HostPortProxyPair.
8897 HostPortPair host_port_pair(host, port); 8898 HostPortPair host_port_pair(host, port);
8898 HostPortProxyPair pair = HostPortProxyPair(host_port_pair, 8899 HostPortProxyPair pair = HostPortProxyPair(host_port_pair,
8899 ProxyServer::Direct()); 8900 ProxyServer::Direct());
8900 8901
8901 // Resolve the host and port. 8902 // Resolve the host and port.
8902 AddressList addresses; 8903 AddressList addresses;
8903 HostResolver::RequestInfo info(host_port_pair); 8904 HostResolver::RequestInfo info(host_port_pair);
8904 TestOldCompletionCallback callback; 8905 TestCompletionCallback callback;
8905 int rv = host_resolver->Resolve(info, &addresses, &callback, NULL, 8906 int rv = host_resolver->Resolve(info, &addresses, callback.callback(), NULL,
8906 BoundNetLog()); 8907 BoundNetLog());
8907 if (rv == ERR_IO_PENDING) 8908 if (rv == ERR_IO_PENDING)
8908 rv = callback.WaitForResult(); 8909 rv = callback.WaitForResult();
8909 DCHECK_EQ(OK, rv); 8910 DCHECK_EQ(OK, rv);
8910 8911
8911 // Add the first address as an alias. It would have been better to call 8912 // Add the first address as an alias. It would have been better to call
8912 // MockClientSocket::GetPeerAddress but that returns 192.0.2.33 whereas 8913 // MockClientSocket::GetPeerAddress but that returns 192.0.2.33 whereas
8913 // MockHostResolver returns 127.0.0.1 (MockHostResolverBase::Reset). So we use 8914 // MockHostResolver returns 127.0.0.1 (MockHostResolverBase::Reset). So we use
8914 // the first address (127.0.0.1) returned by MockHostResolver as an alias for 8915 // the first address (127.0.0.1) returned by MockHostResolver as an alias for
8915 // the |pair|. 8916 // the |pair|.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
8963 CreateMockRead(*host2_resp_body, 6), 8964 CreateMockRead(*host2_resp_body, 6),
8964 MockRead(true, 0, 7), 8965 MockRead(true, 0, 7),
8965 }; 8966 };
8966 8967
8967 scoped_refptr<OrderedSocketData> spdy_data( 8968 scoped_refptr<OrderedSocketData> spdy_data(
8968 new OrderedSocketData( 8969 new OrderedSocketData(
8969 spdy_reads, arraysize(spdy_reads), 8970 spdy_reads, arraysize(spdy_reads),
8970 spdy_writes, arraysize(spdy_writes))); 8971 spdy_writes, arraysize(spdy_writes)));
8971 session_deps.socket_factory.AddSocketDataProvider(spdy_data); 8972 session_deps.socket_factory.AddSocketDataProvider(spdy_data);
8972 8973
8973 TestOldCompletionCallback callback; 8974 TestCompletionCallback callback;
8975 TestOldCompletionCallback old_callback;
8974 HttpRequestInfo request1; 8976 HttpRequestInfo request1;
8975 request1.method = "GET"; 8977 request1.method = "GET";
8976 request1.url = GURL("https://www.google.com/"); 8978 request1.url = GURL("https://www.google.com/");
8977 request1.load_flags = 0; 8979 request1.load_flags = 0;
8978 HttpNetworkTransaction trans1(session); 8980 HttpNetworkTransaction trans1(session);
8979 8981
8980 int rv = trans1.Start(&request1, &callback, BoundNetLog()); 8982 int rv = trans1.Start(&request1, &old_callback, BoundNetLog());
8981 EXPECT_EQ(ERR_IO_PENDING, rv); 8983 EXPECT_EQ(ERR_IO_PENDING, rv);
8982 EXPECT_EQ(OK, callback.WaitForResult()); 8984 EXPECT_EQ(OK, old_callback.WaitForResult());
8983 8985
8984 const HttpResponseInfo* response = trans1.GetResponseInfo(); 8986 const HttpResponseInfo* response = trans1.GetResponseInfo();
8985 ASSERT_TRUE(response != NULL); 8987 ASSERT_TRUE(response != NULL);
8986 ASSERT_TRUE(response->headers != NULL); 8988 ASSERT_TRUE(response->headers != NULL);
8987 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 8989 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
8988 8990
8989 std::string response_data; 8991 std::string response_data;
8990 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data)); 8992 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data));
8991 EXPECT_EQ("hello!", response_data); 8993 EXPECT_EQ("hello!", response_data);
8992 8994
8993 // Preload www.gmail.com into HostCache. 8995 // Preload www.gmail.com into HostCache.
8994 HostPortPair host_port("www.gmail.com", 443); 8996 HostPortPair host_port("www.gmail.com", 443);
8995 HostResolver::RequestInfo resolve_info(host_port); 8997 HostResolver::RequestInfo resolve_info(host_port);
8996 AddressList ignored; 8998 AddressList ignored;
8997 rv = host_resolver.Resolve(resolve_info, &ignored, &callback, NULL, 8999 rv = host_resolver.Resolve(resolve_info, &ignored, callback.callback(), NULL,
8998 BoundNetLog()); 9000 BoundNetLog());
8999 EXPECT_EQ(ERR_IO_PENDING, rv); 9001 EXPECT_EQ(ERR_IO_PENDING, rv);
9000 rv = callback.WaitForResult(); 9002 rv = callback.WaitForResult();
9001 EXPECT_EQ(OK, rv); 9003 EXPECT_EQ(OK, rv);
9002 9004
9003 // MockHostResolver returns 127.0.0.1, port 443 for https://www.google.com/ 9005 // MockHostResolver returns 127.0.0.1, port 443 for https://www.google.com/
9004 // and https://www.gmail.com/. Add 127.0.0.1 as alias for host_port_pair: 9006 // and https://www.gmail.com/. Add 127.0.0.1 as alias for host_port_pair:
9005 // (www.google.com, 443). 9007 // (www.google.com, 443).
9006 IPPoolingAddAlias(&host_resolver, &pool_peer, "www.google.com", 443, 9008 IPPoolingAddAlias(&host_resolver, &pool_peer, "www.google.com", 443,
9007 "127.0.0.1"); 9009 "127.0.0.1");
9008 9010
9009 HttpRequestInfo request2; 9011 HttpRequestInfo request2;
9010 request2.method = "GET"; 9012 request2.method = "GET";
9011 request2.url = GURL("https://www.gmail.com/"); 9013 request2.url = GURL("https://www.gmail.com/");
9012 request2.load_flags = 0; 9014 request2.load_flags = 0;
9013 HttpNetworkTransaction trans2(session); 9015 HttpNetworkTransaction trans2(session);
9014 9016
9015 rv = trans2.Start(&request2, &callback, BoundNetLog()); 9017 rv = trans2.Start(&request2, &old_callback, BoundNetLog());
9016 EXPECT_EQ(ERR_IO_PENDING, rv); 9018 EXPECT_EQ(ERR_IO_PENDING, rv);
9017 EXPECT_EQ(OK, callback.WaitForResult()); 9019 EXPECT_EQ(OK, old_callback.WaitForResult());
9018 9020
9019 response = trans2.GetResponseInfo(); 9021 response = trans2.GetResponseInfo();
9020 ASSERT_TRUE(response != NULL); 9022 ASSERT_TRUE(response != NULL);
9021 ASSERT_TRUE(response->headers != NULL); 9023 ASSERT_TRUE(response->headers != NULL);
9022 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 9024 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
9023 EXPECT_TRUE(response->was_fetched_via_spdy); 9025 EXPECT_TRUE(response->was_fetched_via_spdy);
9024 EXPECT_TRUE(response->was_npn_negotiated); 9026 EXPECT_TRUE(response->was_npn_negotiated);
9025 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); 9027 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data));
9026 EXPECT_EQ("hello!", response_data); 9028 EXPECT_EQ("hello!", response_data);
9027 9029
9028 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 9030 HttpStreamFactory::set_next_protos(std::vector<std::string>());
9029 HttpStreamFactory::set_use_alternate_protocols(false); 9031 HttpStreamFactory::set_use_alternate_protocols(false);
9030 } 9032 }
9031 9033
9032 class OneTimeCachingHostResolver : public net::HostResolver { 9034 class OneTimeCachingHostResolver : public net::HostResolver {
9033 public: 9035 public:
9034 explicit OneTimeCachingHostResolver(const HostPortPair& host_port) 9036 explicit OneTimeCachingHostResolver(const HostPortPair& host_port)
9035 : host_port_(host_port) {} 9037 : host_port_(host_port) {}
9036 virtual ~OneTimeCachingHostResolver() {} 9038 virtual ~OneTimeCachingHostResolver() {}
9037 9039
9038 RuleBasedHostResolverProc* rules() { return host_resolver_.rules(); } 9040 RuleBasedHostResolverProc* rules() { return host_resolver_.rules(); }
9039 9041
9040 // HostResolver methods: 9042 // HostResolver methods:
9041 virtual int Resolve(const RequestInfo& info, 9043 virtual int Resolve(const RequestInfo& info,
9042 AddressList* addresses, 9044 AddressList* addresses,
9043 OldCompletionCallback* callback, 9045 const CompletionCallback& callback,
9044 RequestHandle* out_req, 9046 RequestHandle* out_req,
9045 const BoundNetLog& net_log) OVERRIDE { 9047 const BoundNetLog& net_log) OVERRIDE {
9046 return host_resolver_.Resolve( 9048 return host_resolver_.Resolve(
9047 info, addresses, callback, out_req, net_log); 9049 info, addresses, callback, out_req, net_log);
9048 } 9050 }
9049 9051
9050 virtual int ResolveFromCache(const RequestInfo& info, 9052 virtual int ResolveFromCache(const RequestInfo& info,
9051 AddressList* addresses, 9053 AddressList* addresses,
9052 const BoundNetLog& net_log) OVERRIDE { 9054 const BoundNetLog& net_log) OVERRIDE {
9053 int rv = host_resolver_.ResolveFromCache(info, addresses, net_log); 9055 int rv = host_resolver_.ResolveFromCache(info, addresses, net_log);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
9116 CreateMockRead(*host2_resp_body, 6), 9118 CreateMockRead(*host2_resp_body, 6),
9117 MockRead(true, 0, 7), 9119 MockRead(true, 0, 7),
9118 }; 9120 };
9119 9121
9120 scoped_refptr<OrderedSocketData> spdy_data( 9122 scoped_refptr<OrderedSocketData> spdy_data(
9121 new OrderedSocketData( 9123 new OrderedSocketData(
9122 spdy_reads, arraysize(spdy_reads), 9124 spdy_reads, arraysize(spdy_reads),
9123 spdy_writes, arraysize(spdy_writes))); 9125 spdy_writes, arraysize(spdy_writes)));
9124 session_deps.socket_factory.AddSocketDataProvider(spdy_data); 9126 session_deps.socket_factory.AddSocketDataProvider(spdy_data);
9125 9127
9126 TestOldCompletionCallback callback; 9128 TestCompletionCallback callback;
9127 HttpRequestInfo request1; 9129 HttpRequestInfo request1;
9128 request1.method = "GET"; 9130 request1.method = "GET";
9129 request1.url = GURL("https://www.google.com/"); 9131 request1.url = GURL("https://www.google.com/");
9130 request1.load_flags = 0; 9132 request1.load_flags = 0;
9131 HttpNetworkTransaction trans1(session); 9133 HttpNetworkTransaction trans1(session);
9132 9134
9133 int rv = trans1.Start(&request1, &callback, BoundNetLog()); 9135 TestOldCompletionCallback old_callback;
9136 int rv = trans1.Start(&request1, &old_callback, BoundNetLog());
9134 EXPECT_EQ(ERR_IO_PENDING, rv); 9137 EXPECT_EQ(ERR_IO_PENDING, rv);
9135 EXPECT_EQ(OK, callback.WaitForResult()); 9138 EXPECT_EQ(OK, old_callback.WaitForResult());
9136 9139
9137 const HttpResponseInfo* response = trans1.GetResponseInfo(); 9140 const HttpResponseInfo* response = trans1.GetResponseInfo();
9138 ASSERT_TRUE(response != NULL); 9141 ASSERT_TRUE(response != NULL);
9139 ASSERT_TRUE(response->headers != NULL); 9142 ASSERT_TRUE(response->headers != NULL);
9140 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 9143 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
9141 9144
9142 std::string response_data; 9145 std::string response_data;
9143 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data)); 9146 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data));
9144 EXPECT_EQ("hello!", response_data); 9147 EXPECT_EQ("hello!", response_data);
9145 9148
9146 // Preload cache entries into HostCache. 9149 // Preload cache entries into HostCache.
9147 HostResolver::RequestInfo resolve_info(HostPortPair("www.gmail.com", 443)); 9150 HostResolver::RequestInfo resolve_info(HostPortPair("www.gmail.com", 443));
9148 AddressList ignored; 9151 AddressList ignored;
9149 rv = host_resolver.Resolve(resolve_info, &ignored, &callback, NULL, 9152 rv = host_resolver.Resolve(resolve_info, &ignored, callback.callback(), NULL,
9150 BoundNetLog()); 9153 BoundNetLog());
9151 EXPECT_EQ(ERR_IO_PENDING, rv); 9154 EXPECT_EQ(ERR_IO_PENDING, rv);
9152 rv = callback.WaitForResult(); 9155 rv = callback.WaitForResult();
9153 EXPECT_EQ(OK, rv); 9156 EXPECT_EQ(OK, rv);
9154 9157
9155 HttpRequestInfo request2; 9158 HttpRequestInfo request2;
9156 request2.method = "GET"; 9159 request2.method = "GET";
9157 request2.url = GURL("https://www.gmail.com/"); 9160 request2.url = GURL("https://www.gmail.com/");
9158 request2.load_flags = 0; 9161 request2.load_flags = 0;
9159 HttpNetworkTransaction trans2(session); 9162 HttpNetworkTransaction trans2(session);
9160 9163
9161 // MockHostResolver returns 127.0.0.1, port 443 for https://www.google.com/ 9164 // MockHostResolver returns 127.0.0.1, port 443 for https://www.google.com/
9162 // and https://www.gmail.com/. Add 127.0.0.1 as alias for host_port_pair: 9165 // and https://www.gmail.com/. Add 127.0.0.1 as alias for host_port_pair:
9163 // (www.google.com, 443). 9166 // (www.google.com, 443).
9164 IPPoolingAddAlias(host_resolver.GetMockHostResolver(), &pool_peer, 9167 IPPoolingAddAlias(host_resolver.GetMockHostResolver(), &pool_peer,
9165 "www.google.com", 443, "127.0.0.1"); 9168 "www.google.com", 443, "127.0.0.1");
9166 9169
9167 rv = trans2.Start(&request2, &callback, BoundNetLog()); 9170 rv = trans2.Start(&request2, &old_callback, BoundNetLog());
9168 EXPECT_EQ(ERR_IO_PENDING, rv); 9171 EXPECT_EQ(ERR_IO_PENDING, rv);
9169 EXPECT_EQ(OK, callback.WaitForResult()); 9172 EXPECT_EQ(OK, old_callback.WaitForResult());
9170 9173
9171 response = trans2.GetResponseInfo(); 9174 response = trans2.GetResponseInfo();
9172 ASSERT_TRUE(response != NULL); 9175 ASSERT_TRUE(response != NULL);
9173 ASSERT_TRUE(response->headers != NULL); 9176 ASSERT_TRUE(response->headers != NULL);
9174 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 9177 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
9175 EXPECT_TRUE(response->was_fetched_via_spdy); 9178 EXPECT_TRUE(response->was_fetched_via_spdy);
9176 EXPECT_TRUE(response->was_npn_negotiated); 9179 EXPECT_TRUE(response->was_npn_negotiated);
9177 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); 9180 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data));
9178 EXPECT_EQ("hello!", response_data); 9181 EXPECT_EQ("hello!", response_data);
9179 9182
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
9222 StaticSocketDataProvider* data[] = { &data1, &data2 }; 9225 StaticSocketDataProvider* data[] = { &data1, &data2 };
9223 9226
9224 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); 9227 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data));
9225 9228
9226 EXPECT_EQ(OK, out.rv); 9229 EXPECT_EQ(OK, out.rv);
9227 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); 9230 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line);
9228 EXPECT_EQ("hello world", out.response_data); 9231 EXPECT_EQ("hello world", out.response_data);
9229 } 9232 }
9230 9233
9231 } // namespace net 9234 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_auth_handler_negotiate.cc ('k') | net/proxy/proxy_resolver_js_bindings_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698