| Index: net/url_request/url_request_unittest.cc
|
| diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
|
| index 35573edef15a690487ef6054a719296fd3cda4da..dcbaf81eac68e409350828a8dae127d882556c24 100644
|
| --- a/net/url_request/url_request_unittest.cc
|
| +++ b/net/url_request/url_request_unittest.cc
|
| @@ -27,6 +27,7 @@
|
| #include "net/base/cookie_monster.h"
|
| #include "net/base/cookie_policy.h"
|
| #include "net/base/load_flags.h"
|
| +#include "net/base/mock_host_resolver.h"
|
| #include "net/base/net_errors.h"
|
| #include "net/base/net_log.h"
|
| #include "net/base/net_log_unittest.h"
|
| @@ -230,6 +231,37 @@ TEST_F(URLRequestTestHTTP, ProxyTunnelRedirectTest) {
|
| }
|
| }
|
|
|
| +// This is the same as the previous test, but checks that the network delegate
|
| +// registers the error.
|
| +TEST_F(URLRequestTestHTTP, NetworkDelegateTunnelConnectionFailed) {
|
| + ASSERT_TRUE(test_server_.Start());
|
| +
|
| + TestDelegate d;
|
| + {
|
| + net::URLRequest r(GURL("https://www.redirect.com/"), &d);
|
| + scoped_refptr<TestURLRequestContext> context(
|
| + new TestURLRequestContext(test_server_.host_port_pair().ToString()));
|
| + TestHttpNetworkDelegate network_delegate;
|
| + context->set_network_delegate(&network_delegate);
|
| + r.set_context(context);
|
| +
|
| + r.Start();
|
| + EXPECT_TRUE(r.is_pending());
|
| +
|
| + MessageLoop::current()->Run();
|
| +
|
| + EXPECT_EQ(net::URLRequestStatus::FAILED, r.status().status());
|
| + EXPECT_EQ(net::ERR_TUNNEL_CONNECTION_FAILED, r.status().os_error());
|
| + EXPECT_EQ(1, d.response_started_count());
|
| + // We should not have followed the redirect.
|
| + EXPECT_EQ(0, d.received_redirect_count());
|
| +
|
| + EXPECT_EQ(1, network_delegate.error_count());
|
| + EXPECT_EQ(net::ERR_TUNNEL_CONNECTION_FAILED,
|
| + network_delegate.last_os_error());
|
| + }
|
| +}
|
| +
|
| // In this unit test, we're using the HTTPTestServer as a proxy server and
|
| // issuing a CONNECT request with the magic host name "www.server-auth.com".
|
| // The HTTPTestServer will return a 401 response, which we should balk at.
|
| @@ -2348,6 +2380,34 @@ TEST_F(URLRequestTest, Identifiers) {
|
| ASSERT_NE(req.identifier(), other_req.identifier());
|
| }
|
|
|
| +// Check that a failure to connect to the proxy is reported to the network
|
| +// delegate.
|
| +TEST_F(URLRequestTest, NetworkDelegateProxyError) {
|
| + TestDelegate d;
|
| + TestURLRequest req(GURL("http://example.com"), &d);
|
| + req.set_method("GET");
|
| +
|
| + scoped_ptr<net::MockHostResolverBase> host_resolver(
|
| + new net::MockHostResolver);
|
| + host_resolver->rules()->AddSimulatedFailure("*");
|
| + scoped_refptr<TestURLRequestContext> context(
|
| + new TestURLRequestContext("myproxy:70", host_resolver.release()));
|
| + TestHttpNetworkDelegate network_delegate;
|
| + context->set_network_delegate(&network_delegate);
|
| + req.set_context(context);
|
| +
|
| + req.Start();
|
| + MessageLoop::current()->Run();
|
| +
|
| + // Check we see a failed request.
|
| + EXPECT_FALSE(req.status().is_success());
|
| + EXPECT_EQ(net::URLRequestStatus::FAILED, req.status().status());
|
| + EXPECT_EQ(net::ERR_PROXY_CONNECTION_FAILED, req.status().os_error());
|
| +
|
| + EXPECT_EQ(1, network_delegate.error_count());
|
| + EXPECT_EQ(net::ERR_PROXY_CONNECTION_FAILED, network_delegate.last_os_error());
|
| +}
|
| +
|
| class URLRequestTestFTP : public URLRequestTest {
|
| public:
|
| URLRequestTestFTP() : test_server_(net::TestServer::TYPE_FTP, FilePath()) {
|
|
|