Index: net/proxy/proxy_service_unittest.cc |
diff --git a/net/proxy/proxy_service_unittest.cc b/net/proxy/proxy_service_unittest.cc |
index a9cb9ed5acf5a12d6e73ca1a269ecb8daae1eb12..c595f4564c1c55de78547a80c7337883158518e7 100644 |
--- a/net/proxy/proxy_service_unittest.cc |
+++ b/net/proxy/proxy_service_unittest.cc |
@@ -1,17 +1,18 @@ |
// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
#include "net/proxy/proxy_service.h" |
#include <cstdarg> |
+#include <string> |
#include <vector> |
#include "base/format_macros.h" |
#include "base/logging.h" |
#include "base/macros.h" |
#include "base/strings/string_util.h" |
#include "base/strings/utf_string_conversions.h" |
#include "net/base/load_flags.h" |
#include "net/base/net_errors.h" |
#include "net/base/proxy_delegate.h" |
@@ -164,37 +165,41 @@ class MockProxyConfigService: public ProxyConfigService { |
// A test network delegate that exercises the OnResolveProxy callback. |
class TestResolveProxyDelegate : public ProxyDelegate { |
public: |
TestResolveProxyDelegate() |
: on_resolve_proxy_called_(false), |
add_proxy_(false), |
remove_proxy_(false), |
proxy_service_(nullptr) {} |
void OnResolveProxy(const GURL& url, |
+ const std::string& method, |
int load_flags, |
const ProxyService& proxy_service, |
ProxyInfo* result) override { |
+ method_ = method; |
on_resolve_proxy_called_ = true; |
proxy_service_ = &proxy_service; |
DCHECK(!add_proxy_ || !remove_proxy_); |
if (add_proxy_) { |
result->UseNamedProxy("delegate_proxy.com"); |
} else if (remove_proxy_) { |
result->UseDirect(); |
} |
} |
bool on_resolve_proxy_called() const { |
return on_resolve_proxy_called_; |
} |
+ const std::string& method() const { return method_; } |
+ |
void set_add_proxy(bool add_proxy) { |
add_proxy_ = add_proxy; |
} |
void set_remove_proxy(bool remove_proxy) { |
remove_proxy_ = remove_proxy; |
} |
const ProxyService* proxy_service() const { |
return proxy_service_; |
@@ -214,31 +219,33 @@ class TestResolveProxyDelegate : public ProxyDelegate { |
const HostPortPair& proxy_server, |
const HttpResponseHeaders& response_headers) override {} |
bool IsTrustedSpdyProxy(const net::ProxyServer& proxy_server) override { |
return true; |
} |
private: |
bool on_resolve_proxy_called_; |
bool add_proxy_; |
bool remove_proxy_; |
+ std::string method_; |
const ProxyService* proxy_service_; |
}; |
// A test network delegate that exercises the OnProxyFallback callback. |
class TestProxyFallbackProxyDelegate : public ProxyDelegate { |
public: |
TestProxyFallbackProxyDelegate() |
: on_proxy_fallback_called_(false), proxy_fallback_net_error_(OK) {} |
// ProxyDelegate implementation: |
void OnResolveProxy(const GURL& url, |
+ const std::string& method, |
int load_flags, |
const ProxyService& proxy_service, |
ProxyInfo* result) override {} |
void OnTunnelConnectCompleted(const HostPortPair& endpoint, |
const HostPortPair& proxy_server, |
int net_error) override {} |
void OnFallback(const ProxyServer& bad_proxy, int net_error) override { |
proxy_server_ = bad_proxy; |
proxy_fallback_net_error_ = net_error; |
on_proxy_fallback_called_ = true; |
@@ -340,29 +347,30 @@ RequestMap GetCancelledRequestsForURLs(const MockAsyncProxyResolver& resolver, |
return GetRequestsForURLs(resolver.cancelled_requests(), urls); |
} |
} // namespace |
TEST_F(ProxyServiceTest, Direct) { |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service( |
make_scoped_ptr(new MockProxyConfigService(ProxyConfig::CreateDirect())), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
TestCompletionCallback callback; |
BoundTestNetLog log; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, log.bound()); |
+ int rv = |
+ service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, log.bound()); |
EXPECT_EQ(OK, rv); |
EXPECT_TRUE(factory->pending_requests().empty()); |
EXPECT_TRUE(info.is_direct()); |
EXPECT_TRUE(info.proxy_resolve_start_time().is_null()); |
EXPECT_TRUE(info.proxy_resolve_end_time().is_null()); |
// Check the NetLog was filled correctly. |
TestNetLogEntry::List entries; |
log.GetEntries(&entries); |
@@ -377,130 +385,136 @@ TEST_F(ProxyServiceTest, Direct) { |
entries, 2, NetLog::TYPE_PROXY_SERVICE)); |
} |
TEST_F(ProxyServiceTest, OnResolveProxyCallbackAddProxy) { |
ProxyConfig config; |
config.proxy_rules().ParseFromString("foopy1:8080"); |
config.set_auto_detect(false); |
config.proxy_rules().bypass_rules.ParseFromString("*.org"); |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL url("http://www.google.com/"); |
GURL bypass_url("http://internet.org"); |
ProxyInfo info; |
TestCompletionCallback callback; |
BoundTestNetLog log; |
// First, warm up the ProxyService. |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, log.bound()); |
+ int rv = |
+ service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, log.bound()); |
EXPECT_EQ(OK, rv); |
// Verify that network delegate is invoked. |
TestResolveProxyDelegate delegate; |
- rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), NULL, |
- &delegate, log.bound()); |
+ rv = service.ResolveProxy(url, "GET", LOAD_NORMAL, &info, callback.callback(), |
+ nullptr, &delegate, log.bound()); |
EXPECT_TRUE(delegate.on_resolve_proxy_called()); |
EXPECT_EQ(&service, delegate.proxy_service()); |
+ EXPECT_EQ(delegate.method(), "GET"); |
// Verify that the ProxyDelegate's behavior is stateless across |
// invocations of ResolveProxy. Start by having the callback add a proxy |
// and checking that subsequent requests are not affected. |
delegate.set_add_proxy(true); |
// Callback should interpose: |
- rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), NULL, |
- &delegate, log.bound()); |
+ rv = service.ResolveProxy(url, "GET", LOAD_NORMAL, &info, callback.callback(), |
+ nullptr, &delegate, log.bound()); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ(info.proxy_server().host_port_pair().host(), "delegate_proxy.com"); |
delegate.set_add_proxy(false); |
// Check non-bypassed URL: |
- rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), NULL, |
- &delegate, log.bound()); |
+ rv = service.ResolveProxy(url, "GET", LOAD_NORMAL, &info, callback.callback(), |
+ nullptr, &delegate, log.bound()); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ(info.proxy_server().host_port_pair().host(), "foopy1"); |
// Check bypassed URL: |
- rv = service.ResolveProxy(bypass_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, &delegate, log.bound()); |
+ rv = service.ResolveProxy(bypass_url, "GET", LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, &delegate, |
+ log.bound()); |
EXPECT_TRUE(info.is_direct()); |
} |
TEST_F(ProxyServiceTest, OnResolveProxyCallbackRemoveProxy) { |
// Same as OnResolveProxyCallbackAddProxy, but verify that the |
// ProxyDelegate's behavior is stateless across invocations after it |
// *removes* a proxy. |
ProxyConfig config; |
config.proxy_rules().ParseFromString("foopy1:8080"); |
config.set_auto_detect(false); |
config.proxy_rules().bypass_rules.ParseFromString("*.org"); |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL url("http://www.google.com/"); |
GURL bypass_url("http://internet.org"); |
ProxyInfo info; |
TestCompletionCallback callback; |
BoundTestNetLog log; |
// First, warm up the ProxyService. |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, log.bound()); |
+ int rv = |
+ service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, log.bound()); |
EXPECT_EQ(OK, rv); |
TestResolveProxyDelegate delegate; |
delegate.set_remove_proxy(true); |
// Callback should interpose: |
- rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), NULL, |
- &delegate, log.bound()); |
+ rv = service.ResolveProxy(url, "GET", LOAD_NORMAL, &info, callback.callback(), |
+ nullptr, &delegate, log.bound()); |
EXPECT_TRUE(info.is_direct()); |
delegate.set_remove_proxy(false); |
// Check non-bypassed URL: |
- rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), NULL, |
- &delegate, log.bound()); |
+ rv = service.ResolveProxy(url, "GET", LOAD_NORMAL, &info, callback.callback(), |
+ nullptr, &delegate, log.bound()); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ(info.proxy_server().host_port_pair().host(), "foopy1"); |
// Check bypassed URL: |
- rv = service.ResolveProxy(bypass_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, &delegate, log.bound()); |
+ rv = service.ResolveProxy(bypass_url, "GET", LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, &delegate, |
+ log.bound()); |
EXPECT_TRUE(info.is_direct()); |
} |
TEST_F(ProxyServiceTest, PAC) { |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
TestCompletionCallback callback; |
ProxyService::PacRequest* request; |
BoundTestNetLog log; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), |
- &request, NULL, log.bound()); |
+ int rv = |
+ service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), &request, nullptr, log.bound()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(LOAD_STATE_RESOLVING_PROXY_FOR_URL, service.GetLoadState(request)); |
ASSERT_EQ(1u, factory->pending_requests().size()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
@@ -538,28 +552,29 @@ TEST_F(ProxyServiceTest, PAC) { |
// or its reference section. |
TEST_F(ProxyServiceTest, PAC_NoIdentityOrHash) { |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://username:password@www.google.com/?ref#hash#hash"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
// The URL should have been simplified, stripping the username/password/hash. |
EXPECT_EQ(GURL("http://www.google.com/?ref"), |
resolver.pending_requests()[0]->url()); |
@@ -569,28 +584,29 @@ TEST_F(ProxyServiceTest, PAC_NoIdentityOrHash) { |
} |
TEST_F(ProxyServiceTest, PAC_FailoverWithoutDirect) { |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// Set the result in proxy resolver. |
@@ -606,45 +622,46 @@ TEST_F(ProxyServiceTest, PAC_FailoverWithoutDirect) { |
EXPECT_FALSE(info.proxy_resolve_end_time().is_null()); |
EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time()); |
// Now, imagine that connecting to foopy:8080 fails: there is nothing |
// left to fallback to, since our proxy list was NOT terminated by |
// DIRECT. |
TestResolveProxyDelegate proxy_delegate; |
TestCompletionCallback callback2; |
ProxyServer expected_proxy_server = info.proxy_server(); |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback2.callback(), NULL, &proxy_delegate, BoundNetLog()); |
+ url, "GET", LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback2.callback(), nullptr, &proxy_delegate, BoundNetLog()); |
// ReconsiderProxyAfterError returns error indicating nothing left. |
EXPECT_EQ(ERR_FAILED, rv); |
EXPECT_TRUE(info.is_empty()); |
} |
// Test that if the execution of the PAC script fails (i.e. javascript runtime |
// error), and the PAC settings are non-mandatory, that we fall-back to direct. |
TEST_F(ProxyServiceTest, PAC_RuntimeError) { |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://this-causes-js-error/"); |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// Simulate a failure in the PAC executor. |
@@ -681,104 +698,106 @@ TEST_F(ProxyServiceTest, PAC_RuntimeError) { |
// The important check of this test is to make sure that DIRECT is not somehow |
// cached as being a bad proxy. |
TEST_F(ProxyServiceTest, PAC_FailoverAfterDirect) { |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// Set the result in proxy resolver. |
resolver.pending_requests()[0]->results()->UsePacString( |
"DIRECT ; PROXY foobar:10 ; DIRECT ; PROXY foobar:20"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
EXPECT_EQ(OK, callback1.WaitForResult()); |
EXPECT_TRUE(info.is_direct()); |
// Fallback 1. |
TestCompletionCallback callback2; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback2.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foobar:10", info.proxy_server().ToURI()); |
// Fallback 2. |
TestResolveProxyDelegate proxy_delegate; |
ProxyServer expected_proxy_server3 = info.proxy_server(); |
TestCompletionCallback callback3; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback3.callback(), NULL, &proxy_delegate, BoundNetLog()); |
+ url, "GET", LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback3.callback(), nullptr, &proxy_delegate, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_TRUE(info.is_direct()); |
// Fallback 3. |
ProxyServer expected_proxy_server4 = info.proxy_server(); |
TestCompletionCallback callback4; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback4.callback(), NULL, &proxy_delegate, BoundNetLog()); |
+ url, "GET", LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback4.callback(), nullptr, &proxy_delegate, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foobar:20", info.proxy_server().ToURI()); |
// Fallback 4 -- Nothing to fall back to! |
ProxyServer expected_proxy_server5 = info.proxy_server(); |
TestCompletionCallback callback5; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback5.callback(), NULL, &proxy_delegate, BoundNetLog()); |
+ url, "GET", LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback5.callback(), nullptr, &proxy_delegate, BoundNetLog()); |
EXPECT_EQ(ERR_FAILED, rv); |
EXPECT_TRUE(info.is_empty()); |
} |
TEST_F(ProxyServiceTest, PAC_ConfigSourcePropagates) { |
// Test whether the ProxyConfigSource set by the ProxyConfigService is applied |
// to ProxyInfo after the proxy is resolved via a PAC script. |
ProxyConfig config = |
ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac")); |
config.set_source(PROXY_CONFIG_SOURCE_TEST); |
MockProxyConfigService* config_service = new MockProxyConfigService(config); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
// Resolve something. |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
ASSERT_EQ(ERR_IO_PENDING, rv); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
// Set the result in proxy resolver. |
resolver.pending_requests()[0]->results()->UseNamedProxy("foopy"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
EXPECT_EQ(OK, callback.WaitForResult()); |
EXPECT_EQ(PROXY_CONFIG_SOURCE_TEST, info.config_source()); |
@@ -795,28 +814,29 @@ TEST_F(ProxyServiceTest, ProxyResolverFails) { |
// javascript runtime error while calling FindProxyForURL(). |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
// Start first resolve request. |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// Fail the first resolve request in MockAsyncProxyResolver. |
@@ -828,22 +848,23 @@ TEST_F(ProxyServiceTest, ProxyResolverFails) { |
EXPECT_TRUE(info.is_direct()); |
// Failed PAC executions still have proxy resolution times. |
EXPECT_FALSE(info.proxy_resolve_start_time().is_null()); |
EXPECT_FALSE(info.proxy_resolve_end_time().is_null()); |
EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time()); |
// The second resolve request will try to run through the proxy resolver, |
// regardless of whether the first request failed in it. |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback2.callback(), NULL, |
- NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// This time we will have the resolver succeed (perhaps the PAC script has |
// a dependency on the current time). |
resolver.pending_requests()[0]->results()->UseNamedProxy("foopy_valid:8080"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
@@ -863,23 +884,23 @@ TEST_F(ProxyServiceTest, ProxyResolverTerminatedDuringRequest) { |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
make_scoped_ptr(factory), nullptr); |
// Start first resolve request. |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(url, net::LOAD_NORMAL, &info, callback1.callback(), |
- nullptr, nullptr, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), net::LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ASSERT_EQ(1u, factory->pending_requests().size()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
@@ -894,22 +915,23 @@ TEST_F(ProxyServiceTest, ProxyResolverTerminatedDuringRequest) { |
// Failed PAC executions still have proxy resolution times. |
EXPECT_FALSE(info.proxy_resolve_start_time().is_null()); |
EXPECT_FALSE(info.proxy_resolve_end_time().is_null()); |
EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time()); |
// With no other requests, the ProxyService waits for a new request before |
// initializing a new ProxyResolver. |
EXPECT_TRUE(factory->pending_requests().empty()); |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(url, net::LOAD_NORMAL, &info, callback2.callback(), |
- nullptr, nullptr, BoundNetLog()); |
+ rv = service.ResolveProxy(url, std::string(), net::LOAD_NORMAL, &info, |
+ callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ASSERT_EQ(1u, factory->pending_requests().size()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
@@ -935,27 +957,28 @@ TEST_F(ProxyServiceTest, |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
make_scoped_ptr(factory), nullptr); |
// Start two resolve requests. |
GURL url1("http://www.google.com/"); |
GURL url2("https://www.google.com/"); |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(url1, net::LOAD_NORMAL, &info, callback1.callback(), |
- nullptr, nullptr, BoundNetLog()); |
+ int rv = service.ResolveProxy(url1, std::string(), net::LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(url2, net::LOAD_NORMAL, &info, callback2.callback(), |
- nullptr, nullptr, BoundNetLog()); |
+ rv = service.ResolveProxy(url2, std::string(), net::LOAD_NORMAL, &info, |
+ callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ASSERT_EQ(1u, factory->pending_requests().size()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
RequestMap requests = GetPendingRequestsForURLs(resolver, url1, url2); |
// Fail the first resolve request in MockAsyncProxyResolver. |
@@ -999,77 +1022,80 @@ TEST_F(ProxyServiceTest, ProxyScriptFetcherFailsDownloadingMandatoryPac) { |
ProxyConfig config( |
ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac"))); |
config.set_pac_mandatory(true); |
MockProxyConfigService* config_service = new MockProxyConfigService(config); |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
// Start first resolve request. |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNow(ERR_FAILED, nullptr); |
ASSERT_EQ(0u, factory->pending_requests().size()); |
// As the proxy resolver factory failed the request and is configured for a |
// mandatory PAC script, ProxyService must not implicitly fall-back to DIRECT. |
EXPECT_EQ(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED, |
callback1.WaitForResult()); |
EXPECT_FALSE(info.is_direct()); |
// As the proxy resolver factory failed the request and is configured for a |
// mandatory PAC script, ProxyService must not implicitly fall-back to DIRECT. |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback2.callback(), NULL, |
- NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED, rv); |
EXPECT_FALSE(info.is_direct()); |
} |
TEST_F(ProxyServiceTest, ProxyResolverFailsParsingJavaScriptMandatoryPac) { |
// Test what happens when the ProxyResolver fails that is configured to use a |
// mandatory PAC script. The download of the PAC script has already |
// succeeded but the PAC script contains no valid javascript. |
ProxyConfig config( |
ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac"))); |
config.set_pac_mandatory(true); |
MockProxyConfigService* config_service = new MockProxyConfigService(config); |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start resolve request. |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Check that nothing has been sent to the proxy resolver factory yet. |
ASSERT_EQ(0u, factory->pending_requests().size()); |
// Downloading the PAC script succeeds. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
fetcher->NotifyFetchCompletion(OK, "invalid-script-contents"); |
@@ -1094,28 +1120,29 @@ TEST_F(ProxyServiceTest, ProxyResolverFailsInJavaScriptMandatoryPac) { |
ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac"))); |
config.set_pac_mandatory(true); |
MockProxyConfigService* config_service = new MockProxyConfigService(config); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
// Start first resolve request. |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// Fail the first resolve request in MockAsyncProxyResolver. |
@@ -1123,22 +1150,23 @@ TEST_F(ProxyServiceTest, ProxyResolverFailsInJavaScriptMandatoryPac) { |
// As the proxy resolver failed the request and is configured for a mandatory |
// PAC script, ProxyService must not implicitly fall-back to DIRECT. |
EXPECT_EQ(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED, |
callback1.WaitForResult()); |
EXPECT_FALSE(info.is_direct()); |
// The second resolve request will try to run through the proxy resolver, |
// regardless of whether the first request failed in it. |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback2.callback(), NULL, |
- NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// This time we will have the resolver succeed (perhaps the PAC script has |
// a dependency on the current time). |
resolver.pending_requests()[0]->results()->UseNamedProxy("foopy_valid:8080"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
@@ -1152,29 +1180,30 @@ TEST_F(ProxyServiceTest, ProxyFallback) { |
// are bad. |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://www.google.com/"); |
// Get the proxy information. |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// Set the result in proxy resolver. |
@@ -1189,41 +1218,42 @@ TEST_F(ProxyServiceTest, ProxyFallback) { |
EXPECT_FALSE(info.proxy_resolve_start_time().is_null()); |
EXPECT_FALSE(info.proxy_resolve_end_time().is_null()); |
EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time()); |
base::TimeTicks proxy_resolve_start_time = info.proxy_resolve_start_time(); |
base::TimeTicks proxy_resolve_end_time = info.proxy_resolve_end_time(); |
// Fake an error on the proxy. |
TestCompletionCallback callback2; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback2.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
// Proxy times should not have been modified by fallback. |
EXPECT_EQ(proxy_resolve_start_time, info.proxy_resolve_start_time()); |
EXPECT_EQ(proxy_resolve_end_time, info.proxy_resolve_end_time()); |
// The second proxy should be specified. |
EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); |
// Report back that the second proxy worked. This will globally mark the |
// first proxy as bad. |
TestProxyFallbackProxyDelegate test_delegate; |
service.ReportSuccess(info, &test_delegate); |
EXPECT_EQ("foopy1:8080", test_delegate.proxy_server().ToURI()); |
EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, |
test_delegate.proxy_fallback_net_error()); |
TestCompletionCallback callback3; |
- rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback3.callback(), NULL, |
- NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback3.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// Set the result in proxy resolver -- the second result is already known |
// to be bad, so we will not try to use it initially. |
resolver.pending_requests()[0]->results()->UseNamedProxy( |
"foopy3:7070;foopy1:8080;foopy2:9090"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
@@ -1236,53 +1266,54 @@ TEST_F(ProxyServiceTest, ProxyFallback) { |
EXPECT_LE(proxy_resolve_end_time, info.proxy_resolve_start_time()); |
EXPECT_FALSE(info.proxy_resolve_start_time().is_null()); |
EXPECT_FALSE(info.proxy_resolve_end_time().is_null()); |
EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time()); |
proxy_resolve_start_time = info.proxy_resolve_start_time(); |
proxy_resolve_end_time = info.proxy_resolve_end_time(); |
// We fake another error. It should now try the third one. |
TestCompletionCallback callback4; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback4.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback4.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); |
// We fake another error. At this point we have tried all of the |
// proxy servers we thought were valid; next we try the proxy server |
// that was in our bad proxies map (foopy1:8080). |
TestCompletionCallback callback5; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback5.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback5.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
// Fake another error, the last proxy is gone, the list should now be empty, |
// so there is nothing left to try. |
TestCompletionCallback callback6; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback6.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback6.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_FAILED, rv); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_TRUE(info.is_empty()); |
// Proxy times should not have been modified by fallback. |
EXPECT_EQ(proxy_resolve_start_time, info.proxy_resolve_start_time()); |
EXPECT_EQ(proxy_resolve_end_time, info.proxy_resolve_end_time()); |
// Look up proxies again |
TestCompletionCallback callback7; |
- rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback7.callback(), NULL, |
- NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback7.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// This time, the first 3 results have been found to be bad, but only the |
// first proxy has been confirmed ... |
resolver.pending_requests()[0]->results()->UseNamedProxy( |
"foopy1:8080;foopy3:7070;foopy2:9090;foopy4:9091"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
@@ -1302,29 +1333,30 @@ TEST_F(ProxyServiceTest, ProxyFallback) { |
// fallback choice to DIRECT. |
TEST_F(ProxyServiceTest, ProxyFallbackToDirect) { |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://www.google.com/"); |
// Get the proxy information. |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// Set the result in proxy resolver. |
@@ -1333,71 +1365,72 @@ TEST_F(ProxyServiceTest, ProxyFallbackToDirect) { |
resolver.pending_requests()[0]->CompleteNow(OK); |
// Get the first result. |
EXPECT_EQ(OK, callback1.WaitForResult()); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
// Fake an error on the proxy. |
TestCompletionCallback callback2; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback2.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
// Now we get back the second proxy. |
EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); |
// Fake an error on this proxy as well. |
TestCompletionCallback callback3; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback3.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback3.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
// Finally, we get back DIRECT. |
EXPECT_TRUE(info.is_direct()); |
EXPECT_FALSE(info.proxy_resolve_start_time().is_null()); |
EXPECT_FALSE(info.proxy_resolve_end_time().is_null()); |
EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time()); |
// Now we tell the proxy service that even DIRECT failed. |
TestCompletionCallback callback4; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback4.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback4.callback(), nullptr, nullptr, BoundNetLog()); |
// There was nothing left to try after DIRECT, so we are out of |
// choices. |
EXPECT_EQ(ERR_FAILED, rv); |
} |
TEST_F(ProxyServiceTest, ProxyFallback_NewSettings) { |
// Test proxy failover when new settings are available. |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://www.google.com/"); |
// Get the proxy information. |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// Set the result in proxy resolver. |
@@ -1409,57 +1442,57 @@ TEST_F(ProxyServiceTest, ProxyFallback_NewSettings) { |
EXPECT_EQ(OK, callback1.WaitForResult()); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
// Fake an error on the proxy, and also a new configuration on the proxy. |
config_service->SetConfig( |
ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy-new/proxy.pac"))); |
TestCompletionCallback callback2; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback2.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy-new/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
resolver.pending_requests()[0]->results()->UseNamedProxy( |
"foopy1:8080;foopy2:9090"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
// The first proxy is still there since the configuration changed. |
EXPECT_EQ(OK, callback2.WaitForResult()); |
EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
// We fake another error. It should now ignore the first one. |
TestCompletionCallback callback3; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback3.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback3.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); |
// We simulate a new configuration. |
config_service->SetConfig( |
ProxyConfig::CreateFromCustomPacURL( |
GURL("http://foopy-new2/proxy.pac"))); |
// We fake another error. It should go back to the first proxy. |
TestCompletionCallback callback4; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback4.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback4.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy-new2/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
resolver.pending_requests()[0]->results()->UseNamedProxy( |
@@ -1478,84 +1511,86 @@ TEST_F(ProxyServiceTest, ProxyFallback_BadConfig) { |
// Test proxy failover when the configuration is bad. |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://www.google.com/"); |
// Get the proxy information. |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
resolver.pending_requests()[0]->results()->UseNamedProxy( |
"foopy1:8080;foopy2:9090"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
// The first item is valid. |
EXPECT_EQ(OK, callback1.WaitForResult()); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
// Fake a proxy error. |
TestCompletionCallback callback2; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback2.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
// The first proxy is ignored, and the second one is selected. |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); |
// Fake a PAC failure. |
ProxyInfo info2; |
TestCompletionCallback callback3; |
- rv = service.ResolveProxy(url, LOAD_NORMAL, &info2, callback3.callback(), |
- NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info2, |
+ callback3.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// This simulates a javascript runtime error in the PAC script. |
resolver.pending_requests()[0]->CompleteNow(ERR_FAILED); |
// Although the resolver failed, the ProxyService will implicitly fall-back |
// to a DIRECT connection. |
EXPECT_EQ(OK, callback3.WaitForResult()); |
EXPECT_TRUE(info2.is_direct()); |
EXPECT_FALSE(info2.is_empty()); |
// The PAC script will work properly next time and successfully return a |
// proxy list. Since we have not marked the configuration as bad, it should |
// "just work" the next time we call it. |
ProxyInfo info3; |
TestCompletionCallback callback4; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info3, |
- callback4.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info3, |
+ callback4.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
resolver.pending_requests()[0]->results()->UseNamedProxy( |
"foopy1:8080;foopy2:9090"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
// The first proxy is not there since the it was added to the bad proxies |
@@ -1576,62 +1611,64 @@ TEST_F(ProxyServiceTest, ProxyFallback_BadConfigMandatory) { |
ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac"))); |
config.set_pac_mandatory(true); |
MockProxyConfigService* config_service = new MockProxyConfigService(config); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://www.google.com/"); |
// Get the proxy information. |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
resolver.pending_requests()[0]->results()->UseNamedProxy( |
"foopy1:8080;foopy2:9090"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
// The first item is valid. |
EXPECT_EQ(OK, callback1.WaitForResult()); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
// Fake a proxy error. |
TestCompletionCallback callback2; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info, |
+ callback2.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
// The first proxy is ignored, and the second one is selected. |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); |
// Fake a PAC failure. |
ProxyInfo info2; |
TestCompletionCallback callback3; |
- rv = service.ResolveProxy(url, LOAD_NORMAL, &info2, callback3.callback(), |
- NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info2, |
+ callback3.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
// This simulates a javascript runtime error in the PAC script. |
resolver.pending_requests()[0]->CompleteNow(ERR_FAILED); |
// Although the resolver failed, the ProxyService will NOT fall-back |
// to a DIRECT connection as it is configured as mandatory. |
@@ -1639,22 +1676,22 @@ TEST_F(ProxyServiceTest, ProxyFallback_BadConfigMandatory) { |
callback3.WaitForResult()); |
EXPECT_FALSE(info2.is_direct()); |
EXPECT_TRUE(info2.is_empty()); |
// The PAC script will work properly next time and successfully return a |
// proxy list. Since we have not marked the configuration as bad, it should |
// "just work" the next time we call it. |
ProxyInfo info3; |
TestCompletionCallback callback4; |
rv = service.ReconsiderProxyAfterError( |
- url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info3, |
- callback4.callback(), NULL, NULL, BoundNetLog()); |
+ url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info3, |
+ callback4.callback(), nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(url, resolver.pending_requests()[0]->url()); |
resolver.pending_requests()[0]->results()->UseNamedProxy( |
"foopy1:8080;foopy2:9090"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
// The first proxy is not there since the it was added to the bad proxies |
@@ -1668,35 +1705,37 @@ TEST_F(ProxyServiceTest, ProxyBypassList) { |
// Test that the proxy bypass rules are consulted. |
TestCompletionCallback callback[2]; |
ProxyInfo info[2]; |
ProxyConfig config; |
config.proxy_rules().ParseFromString("foopy1:8080;foopy2:9090"); |
config.set_auto_detect(false); |
config.proxy_rules().bypass_rules.ParseFromString("*.org"); |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
int rv; |
GURL url1("http://www.webkit.org"); |
GURL url2("http://www.webkit.com"); |
// Request for a .org domain should bypass proxy. |
- rv = service.ResolveProxy(url1, LOAD_NORMAL, &info[0], callback[0].callback(), |
- NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url1, std::string(), LOAD_NORMAL, &info[0], |
+ callback[0].callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_TRUE(info[0].is_direct()); |
// Request for a .com domain hits the proxy. |
- rv = service.ResolveProxy(url2, LOAD_NORMAL, &info[1], callback[1].callback(), |
- NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url2, std::string(), LOAD_NORMAL, &info[1], |
+ callback[1].callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_EQ("foopy1:8080", info[1].proxy_server().ToURI()); |
} |
TEST_F(ProxyServiceTest, MarkProxiesAsBadTests) { |
ProxyConfig config; |
config.proxy_rules().ParseFromString( |
"http=foopy1:8080;http=foopy2:8080;http=foopy3.8080;http=foopy4:8080"); |
config.set_auto_detect(false); |
@@ -1707,253 +1746,256 @@ TEST_F(ProxyServiceTest, MarkProxiesAsBadTests) { |
proxy_list.AddProxyServer(proxy_server); |
if (proxy_server == config.proxy_rules().proxies_for_http.Get()) |
continue; |
additional_bad_proxies.push_back(proxy_server); |
} |
EXPECT_EQ(3u, additional_bad_proxies.size()); |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
ProxyInfo proxy_info; |
proxy_info.UseProxyList(proxy_list); |
const ProxyRetryInfoMap& retry_info = service.proxy_retry_info(); |
service.MarkProxiesAsBadUntil(proxy_info, base::TimeDelta::FromSeconds(1), |
additional_bad_proxies, BoundNetLog()); |
ASSERT_EQ(4u, retry_info.size()); |
for (const ProxyServer& proxy_server : |
config.proxy_rules().proxies_for_http.GetAll()) { |
ProxyRetryInfoMap::const_iterator i = |
retry_info.find(proxy_server.host_port_pair().ToString()); |
ASSERT_TRUE(i != retry_info.end()); |
} |
} |
TEST_F(ProxyServiceTest, PerProtocolProxyTests) { |
ProxyConfig config; |
config.proxy_rules().ParseFromString("http=foopy1:8080;https=foopy2:8080"); |
config.set_auto_detect(false); |
{ |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL test_url("http://www.msn.com"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = |
- service.ResolveProxy(test_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
} |
{ |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL test_url("ftp://ftp.google.com"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = |
- service.ResolveProxy(test_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_TRUE(info.is_direct()); |
EXPECT_EQ("direct://", info.proxy_server().ToURI()); |
} |
{ |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL test_url("https://webbranch.techcu.com"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = |
- service.ResolveProxy(test_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foopy2:8080", info.proxy_server().ToURI()); |
} |
{ |
config.proxy_rules().ParseFromString("foopy1:8080"); |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL test_url("http://www.microsoft.com"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = |
- service.ResolveProxy(test_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
} |
} |
TEST_F(ProxyServiceTest, ProxyConfigSourcePropagates) { |
// Test that the proxy config source is set correctly when resolving proxies |
// using manual proxy rules. Namely, the config source should only be set if |
// any of the rules were applied. |
{ |
ProxyConfig config; |
config.set_source(PROXY_CONFIG_SOURCE_TEST); |
config.proxy_rules().ParseFromString("https=foopy2:8080"); |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL test_url("http://www.google.com"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = |
- service.ResolveProxy(test_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
ASSERT_EQ(OK, rv); |
// Should be SOURCE_TEST, even if there are no HTTP proxies configured. |
EXPECT_EQ(PROXY_CONFIG_SOURCE_TEST, info.config_source()); |
} |
{ |
ProxyConfig config; |
config.set_source(PROXY_CONFIG_SOURCE_TEST); |
config.proxy_rules().ParseFromString("https=foopy2:8080"); |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL test_url("https://www.google.com"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = |
- service.ResolveProxy(test_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
ASSERT_EQ(OK, rv); |
// Used the HTTPS proxy. So source should be TEST. |
EXPECT_EQ(PROXY_CONFIG_SOURCE_TEST, info.config_source()); |
} |
{ |
ProxyConfig config; |
config.set_source(PROXY_CONFIG_SOURCE_TEST); |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL test_url("http://www.google.com"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = |
- service.ResolveProxy(test_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
ASSERT_EQ(OK, rv); |
// ProxyConfig is empty. Source should still be TEST. |
EXPECT_EQ(PROXY_CONFIG_SOURCE_TEST, info.config_source()); |
} |
} |
// If only HTTP and a SOCKS proxy are specified, check if ftp/https queries |
// fall back to the SOCKS proxy. |
TEST_F(ProxyServiceTest, DefaultProxyFallbackToSOCKS) { |
ProxyConfig config; |
config.proxy_rules().ParseFromString("http=foopy1:8080;socks=foopy2:1080"); |
config.set_auto_detect(false); |
EXPECT_EQ(ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
config.proxy_rules().type); |
{ |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL test_url("http://www.msn.com"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = |
- service.ResolveProxy(test_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
} |
{ |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL test_url("ftp://ftp.google.com"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = |
- service.ResolveProxy(test_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI()); |
} |
{ |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL test_url("https://webbranch.techcu.com"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = |
- service.ResolveProxy(test_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI()); |
} |
{ |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
GURL test_url("unknown://www.microsoft.com"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = |
- service.ResolveProxy(test_url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI()); |
} |
} |
// Test cancellation of an in-progress request. |
TEST_F(ProxyServiceTest, CancelInProgressRequest) { |
const GURL url1("http://request1"); |
const GURL url2("http://request2"); |
const GURL url3("http://request3"); |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
// Start 3 requests. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url1, LOAD_NORMAL, &info1, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url1, std::string(), LOAD_NORMAL, &info1, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Successfully initialize the PAC script. |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
GetPendingRequestsForURLs(resolver, url1); |
ProxyInfo info2; |
TestCompletionCallback callback2; |
ProxyService::PacRequest* request2; |
- rv = service.ResolveProxy(url2, LOAD_NORMAL, &info2, callback2.callback(), |
- &request2, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url2, std::string(), LOAD_NORMAL, &info2, |
+ callback2.callback(), &request2, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
GetPendingRequestsForURLs(resolver, url1, url2); |
ProxyInfo info3; |
TestCompletionCallback callback3; |
- rv = service.ResolveProxy(url3, LOAD_NORMAL, &info3, callback3.callback(), |
- NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url3, std::string(), LOAD_NORMAL, &info3, |
+ callback3.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
GetPendingRequestsForURLs(resolver, url1, url2, url3); |
// Cancel the second request |
service.CancelPacRequest(request2); |
RequestMap requests = GetPendingRequestsForURLs(resolver, url1, url3); |
// Complete the two un-cancelled requests. |
// We complete the last one first, just to mix it up a bit. |
@@ -1980,51 +2022,54 @@ TEST_F(ProxyServiceTest, InitialPACScriptDownload) { |
const GURL url2("http://request2"); |
const GURL url3("http://request3"); |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 3 requests. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
ProxyService::PacRequest* request1; |
- int rv = service.ResolveProxy(url1, LOAD_NORMAL, &info1, callback1.callback(), |
- &request1, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url1, std::string(), LOAD_NORMAL, &info1, |
+ callback1.callback(), &request1, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// The first request should have triggered download of PAC script. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
ProxyInfo info2; |
TestCompletionCallback callback2; |
ProxyService::PacRequest* request2; |
- rv = service.ResolveProxy(url2, LOAD_NORMAL, &info2, callback2.callback(), |
- &request2, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url2, std::string(), LOAD_NORMAL, &info2, |
+ callback2.callback(), &request2, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ProxyInfo info3; |
TestCompletionCallback callback3; |
ProxyService::PacRequest* request3; |
- rv = service.ResolveProxy(url3, LOAD_NORMAL, &info3, callback3.callback(), |
- &request3, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url3, std::string(), LOAD_NORMAL, &info3, |
+ callback3.callback(), &request3, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Nothing has been sent to the factory yet. |
EXPECT_TRUE(factory->pending_requests().empty()); |
EXPECT_EQ(LOAD_STATE_DOWNLOADING_PROXY_SCRIPT, |
service.GetLoadState(request1)); |
EXPECT_EQ(LOAD_STATE_DOWNLOADING_PROXY_SCRIPT, |
service.GetLoadState(request2)); |
EXPECT_EQ(LOAD_STATE_DOWNLOADING_PROXY_SCRIPT, |
@@ -2083,42 +2128,44 @@ TEST_F(ProxyServiceTest, ChangeScriptFetcherWhilePACDownloadInProgress) { |
const GURL url1("http://request1"); |
const GURL url2("http://request2"); |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 2 requests. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url1, LOAD_NORMAL, &info1, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url1, std::string(), LOAD_NORMAL, &info1, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// The first request should have triggered download of PAC script. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
ProxyInfo info2; |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(url2, LOAD_NORMAL, &info2, callback2.callback(), |
- NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url2, std::string(), LOAD_NORMAL, &info2, |
+ callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// At this point the ProxyService should be waiting for the |
// ProxyScriptFetcher to invoke its completion callback, notifying it of |
// PAC script download completion. |
// We now change out the ProxyService's script fetcher. We should restart |
// the initialization with the new fetcher. |
fetcher = new MockProxyScriptFetcher; |
@@ -2142,52 +2189,53 @@ TEST_F(ProxyServiceTest, ChangeScriptFetcherWhilePACDownloadInProgress) { |
// Test cancellation of a request, while the PAC script is being fetched. |
TEST_F(ProxyServiceTest, CancelWhilePACFetching) { |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 3 requests. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
ProxyService::PacRequest* request1; |
BoundTestNetLog log1; |
- int rv = |
- service.ResolveProxy(GURL("http://request1"), LOAD_NORMAL, &info1, |
- callback1.callback(), &request1, NULL, log1.bound()); |
+ int rv = service.ResolveProxy(GURL("http://request1"), std::string(), |
+ LOAD_NORMAL, &info1, callback1.callback(), |
+ &request1, nullptr, log1.bound()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// The first request should have triggered download of PAC script. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
ProxyInfo info2; |
TestCompletionCallback callback2; |
ProxyService::PacRequest* request2; |
- rv = service.ResolveProxy(GURL("http://request2"), LOAD_NORMAL, &info2, |
- callback2.callback(), &request2, NULL, |
+ rv = service.ResolveProxy(GURL("http://request2"), std::string(), LOAD_NORMAL, |
+ &info2, callback2.callback(), &request2, nullptr, |
BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ProxyInfo info3; |
TestCompletionCallback callback3; |
- rv = service.ResolveProxy(GURL("http://request3"), LOAD_NORMAL, &info3, |
- callback3.callback(), NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(GURL("http://request3"), std::string(), LOAD_NORMAL, |
+ &info3, callback3.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Nothing has been sent to the factory yet. |
EXPECT_TRUE(factory->pending_requests().empty()); |
// Cancel the first 2 requests. |
service.CancelPacRequest(request1); |
service.CancelPacRequest(request2); |
// At this point the ProxyService should be waiting for the |
@@ -2240,39 +2288,41 @@ TEST_F(ProxyServiceTest, FallbackFromAutodetectToCustomPac) { |
ProxyConfig config; |
config.set_auto_detect(true); |
config.set_pac_url(GURL("http://foopy/proxy.pac")); |
config.proxy_rules().ParseFromString("http=foopy:80"); // Won't be used. |
MockProxyConfigService* config_service = new MockProxyConfigService(config); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 2 requests. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url1, LOAD_NORMAL, &info1, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url1, std::string(), LOAD_NORMAL, &info1, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ProxyInfo info2; |
TestCompletionCallback callback2; |
ProxyService::PacRequest* request2; |
- rv = service.ResolveProxy(url2, LOAD_NORMAL, &info2, callback2.callback(), |
- &request2, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url2, std::string(), LOAD_NORMAL, &info2, |
+ callback2.callback(), &request2, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Check that nothing has been sent to the proxy resolver factory yet. |
ASSERT_EQ(0u, factory->pending_requests().size()); |
// It should be trying to auto-detect first -- FAIL the autodetect during |
// the script download. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url()); |
fetcher->NotifyFetchCompletion(ERR_FAILED, std::string()); |
@@ -2319,39 +2369,41 @@ TEST_F(ProxyServiceTest, FallbackFromAutodetectToCustomPac2) { |
ProxyConfig config; |
config.set_auto_detect(true); |
config.set_pac_url(GURL("http://foopy/proxy.pac")); |
config.proxy_rules().ParseFromString("http=foopy:80"); // Won't be used. |
MockProxyConfigService* config_service = new MockProxyConfigService(config); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 2 requests. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = service.ResolveProxy(url1, LOAD_NORMAL, &info1, callback1.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url1, std::string(), LOAD_NORMAL, &info1, |
+ callback1.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ProxyInfo info2; |
TestCompletionCallback callback2; |
ProxyService::PacRequest* request2; |
- rv = service.ResolveProxy(url2, LOAD_NORMAL, &info2, callback2.callback(), |
- &request2, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(url2, std::string(), LOAD_NORMAL, &info2, |
+ callback2.callback(), &request2, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Check that nothing has been sent to the proxy resolver factory yet. |
ASSERT_EQ(0u, factory->pending_requests().size()); |
// It should be trying to auto-detect first -- succeed the download. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url()); |
fetcher->NotifyFetchCompletion(OK, "invalid-script-contents"); |
@@ -2391,40 +2443,40 @@ TEST_F(ProxyServiceTest, FallbackFromAutodetectToCustomPac2) { |
TEST_F(ProxyServiceTest, FallbackFromAutodetectToCustomToManual) { |
ProxyConfig config; |
config.set_auto_detect(true); |
config.set_pac_url(GURL("http://foopy/proxy.pac")); |
config.proxy_rules().ParseFromString("http=foopy:80"); |
MockProxyConfigService* config_service = new MockProxyConfigService(config); |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 2 requests. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(GURL("http://request1"), LOAD_NORMAL, &info1, |
- callback1.callback(), NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(GURL("http://request1"), std::string(), |
+ LOAD_NORMAL, &info1, callback1.callback(), |
+ nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ProxyInfo info2; |
TestCompletionCallback callback2; |
ProxyService::PacRequest* request2; |
- rv = service.ResolveProxy(GURL("http://request2"), LOAD_NORMAL, &info2, |
- callback2.callback(), &request2, NULL, |
+ rv = service.ResolveProxy(GURL("http://request2"), std::string(), LOAD_NORMAL, |
+ &info2, callback2.callback(), &request2, nullptr, |
BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Check that nothing has been sent to the proxy resolver factory yet. |
ASSERT_EQ(0u, factory->pending_requests().size()); |
// It should be trying to auto-detect first -- fail the download. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url()); |
fetcher->NotifyFetchCompletion(ERR_FAILED, std::string()); |
@@ -2453,33 +2505,33 @@ TEST_F(ProxyServiceTest, BypassDoesntApplyToPac) { |
config.set_auto_detect(true); |
config.set_pac_url(GURL("http://foopy/proxy.pac")); |
config.proxy_rules().ParseFromString("http=foopy:80"); // Not used. |
config.proxy_rules().bypass_rules.ParseFromString("www.google.com"); |
MockProxyConfigService* config_service = new MockProxyConfigService(config); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 1 requests. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(GURL("http://www.google.com"), LOAD_NORMAL, &info1, |
- callback1.callback(), NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(GURL("http://www.google.com"), std::string(), |
+ LOAD_NORMAL, &info1, callback1.callback(), |
+ nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Check that nothing has been sent to the proxy resolver factory yet. |
ASSERT_EQ(0u, factory->pending_requests().size()); |
// It should be trying to auto-detect first -- succeed the download. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url()); |
fetcher->NotifyFetchCompletion(OK, kValidPacScript1); |
@@ -2495,22 +2547,23 @@ TEST_F(ProxyServiceTest, BypassDoesntApplyToPac) { |
resolver.pending_requests()[0]->results()->UseNamedProxy("request1:80"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
// Verify that request ran as expected. |
EXPECT_EQ(OK, callback1.WaitForResult()); |
EXPECT_EQ("request1:80", info1.proxy_server().ToURI()); |
// Start another request, it should pickup the bypass item. |
ProxyInfo info2; |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(GURL("http://www.google.com"), LOAD_NORMAL, &info2, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(GURL("http://www.google.com"), std::string(), |
+ LOAD_NORMAL, &info2, callback2.callback(), nullptr, |
+ nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(GURL("http://www.google.com"), |
resolver.pending_requests()[0]->url()); |
// Complete the pending request. |
resolver.pending_requests()[0]->results()->UseNamedProxy("request2:80"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
@@ -2523,33 +2576,33 @@ TEST_F(ProxyServiceTest, BypassDoesntApplyToPac) { |
// have any memory errors (used to be that the ProxyScriptFetcher was |
// being deleted prior to the InitProxyResolver). |
TEST_F(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingFetch) { |
ProxyConfig config = |
ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac")); |
MockProxyConfigService* config_service = new MockProxyConfigService(config); |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 1 request. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(GURL("http://www.google.com"), LOAD_NORMAL, &info1, |
- callback1.callback(), NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(GURL("http://www.google.com"), std::string(), |
+ LOAD_NORMAL, &info1, callback1.callback(), |
+ nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Check that nothing has been sent to the proxy resolver factory yet. |
ASSERT_EQ(0u, factory->pending_requests().size()); |
// InitProxyResolver should have issued a request to the ProxyScriptFetcher |
// and be waiting on that to complete. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
} |
@@ -2559,80 +2612,82 @@ TEST_F(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingFetch) { |
// have any memory errors (used to be that the ProxyResolver was |
// being deleted prior to the InitProxyResolver). |
TEST_F(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingSet) { |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
TestCompletionCallback callback; |
- int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), |
- NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info, |
+ callback.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
factory->pending_requests()[0]->script_data()->url()); |
} |
TEST_F(ProxyServiceTest, ResetProxyConfigService) { |
ProxyConfig config1; |
config1.proxy_rules().ParseFromString("foopy1:8080"); |
config1.set_auto_detect(false); |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config1)), |
- nullptr, NULL); |
+ nullptr, nullptr); |
ProxyInfo info; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(GURL("http://request1"), LOAD_NORMAL, &info, |
- callback1.callback(), NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(GURL("http://request1"), std::string(), |
+ LOAD_NORMAL, &info, callback1.callback(), |
+ nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
ProxyConfig config2; |
config2.proxy_rules().ParseFromString("foopy2:8080"); |
config2.set_auto_detect(false); |
service.ResetConfigService( |
make_scoped_ptr(new MockProxyConfigService(config2))); |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(GURL("http://request2"), LOAD_NORMAL, &info, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(GURL("http://request2"), std::string(), LOAD_NORMAL, |
+ &info, callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_EQ("foopy2:8080", info.proxy_server().ToURI()); |
} |
// Test that when going from a configuration that required PAC to one |
// that does NOT, we unset the variable |should_use_proxy_resolver_|. |
TEST_F(ProxyServiceTest, UpdateConfigFromPACToDirect) { |
ProxyConfig config = ProxyConfig::CreateAutoDetect(); |
MockProxyConfigService* config_service = new MockProxyConfigService(config); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
// Start 1 request. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(GURL("http://www.google.com"), LOAD_NORMAL, &info1, |
- callback1.callback(), NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(GURL("http://www.google.com"), std::string(), |
+ LOAD_NORMAL, &info1, callback1.callback(), |
+ nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Successfully set the autodetect script. |
EXPECT_EQ(ProxyResolverScriptData::TYPE_AUTO_DETECT, |
factory->pending_requests()[0]->script_data()->type()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
// Complete the pending request. |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
resolver.pending_requests()[0]->results()->UseNamedProxy("request1:80"); |
@@ -2645,22 +2700,23 @@ TEST_F(ProxyServiceTest, UpdateConfigFromPACToDirect) { |
// Force the ProxyService to pull down a new proxy configuration. |
// (Even though the configuration isn't old/bad). |
// |
// This new configuration no longer has auto_detect set, so |
// requests should complete synchronously now as direct-connect. |
config_service->SetConfig(ProxyConfig::CreateDirect()); |
// Start another request -- the effective configuration has changed. |
ProxyInfo info2; |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(GURL("http://www.google.com"), LOAD_NORMAL, &info2, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(GURL("http://www.google.com"), std::string(), |
+ LOAD_NORMAL, &info2, callback2.callback(), nullptr, |
+ nullptr, BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_TRUE(info2.is_direct()); |
} |
TEST_F(ProxyServiceTest, NetworkChangeTriggersPacRefetch) { |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
@@ -2677,23 +2733,23 @@ TEST_F(ProxyServiceTest, NetworkChangeTriggersPacRefetch) { |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Disable the "wait after IP address changes" hack, so this unit-test can |
// complete quickly. |
service.set_stall_proxy_auto_config_delay(base::TimeDelta()); |
// Start 1 request. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(GURL("http://request1"), LOAD_NORMAL, &info1, |
- callback1.callback(), NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(GURL("http://request1"), std::string(), |
+ LOAD_NORMAL, &info1, callback1.callback(), |
+ nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// The first request should have triggered initial download of PAC script. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
// Nothing has been sent to the factory yet. |
EXPECT_TRUE(factory->pending_requests().empty()); |
// At this point the ProxyService should be waiting for the |
@@ -2720,22 +2776,23 @@ TEST_F(ProxyServiceTest, NetworkChangeTriggersPacRefetch) { |
// Now simluate a change in the network. The ProxyConfigService is still |
// going to return the same PAC URL as before, but this URL needs to be |
// refetched on the new network. |
NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); |
base::MessageLoop::current()->RunUntilIdle(); // Notification happens async. |
// Start a second request. |
ProxyInfo info2; |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(GURL("http://request2"), LOAD_NORMAL, &info2, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(GURL("http://request2"), std::string(), LOAD_NORMAL, |
+ &info2, callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// This second request should have triggered the re-download of the PAC |
// script (since we marked the network as having changed). |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
// Nothing has been sent to the factory yet. |
EXPECT_TRUE(factory->pending_requests().empty()); |
@@ -2784,33 +2841,33 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterFailure) { |
ProxyService::set_pac_script_poll_policy(&poll_policy); |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 1 request. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(GURL("http://request1"), LOAD_NORMAL, &info1, |
- callback1.callback(), NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(GURL("http://request1"), std::string(), |
+ LOAD_NORMAL, &info1, callback1.callback(), |
+ nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// The first request should have triggered initial download of PAC script. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
// Nothing has been sent to the factory yet. |
EXPECT_TRUE(factory->pending_requests().empty()); |
// At this point the ProxyService should be waiting for the |
@@ -2855,22 +2912,23 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterFailure) { |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
// At this point the ProxyService should have re-configured itself to use the |
// PAC script (thereby recovering from the initial fetch failure). We will |
// verify that the next Resolve request uses the resolver rather than |
// DIRECT. |
// Start a second request. |
ProxyInfo info2; |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(GURL("http://request2"), LOAD_NORMAL, &info2, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(GURL("http://request2"), std::string(), LOAD_NORMAL, |
+ &info2, callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Check that it was sent to the resolver. |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(GURL("http://request2"), resolver.pending_requests()[0]->url()); |
// Complete the pending second request. |
resolver.pending_requests()[0]->results()->UseNamedProxy("request2:80"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
@@ -2890,33 +2948,33 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterContentChange) { |
ProxyService::set_pac_script_poll_policy(&poll_policy); |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 1 request. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(GURL("http://request1"), LOAD_NORMAL, &info1, |
- callback1.callback(), NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(GURL("http://request1"), std::string(), |
+ LOAD_NORMAL, &info1, callback1.callback(), |
+ nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// The first request should have triggered initial download of PAC script. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
// Nothing has been sent to the factory yet. |
EXPECT_TRUE(factory->pending_requests().empty()); |
// At this point the ProxyService should be waiting for the |
@@ -2967,22 +3025,23 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterContentChange) { |
EXPECT_EQ(ASCIIToUTF16(kValidPacScript2), |
factory->pending_requests()[0]->script_data()->utf16()); |
factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); |
// At this point the ProxyService should have re-configured itself to use the |
// new PAC script. |
// Start a second request. |
ProxyInfo info2; |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(GURL("http://request2"), LOAD_NORMAL, &info2, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(GURL("http://request2"), std::string(), LOAD_NORMAL, |
+ &info2, callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Check that it was sent to the resolver. |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(GURL("http://request2"), resolver.pending_requests()[0]->url()); |
// Complete the pending second request. |
resolver.pending_requests()[0]->results()->UseNamedProxy("request2:80"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
@@ -3002,33 +3061,33 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterContentUnchanged) { |
ProxyService::set_pac_script_poll_policy(&poll_policy); |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 1 request. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(GURL("http://request1"), LOAD_NORMAL, &info1, |
- callback1.callback(), NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(GURL("http://request1"), std::string(), |
+ LOAD_NORMAL, &info1, callback1.callback(), |
+ nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// The first request should have triggered initial download of PAC script. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
// Nothing has been sent to the factory yet. |
EXPECT_TRUE(factory->pending_requests().empty()); |
// At this point the ProxyService should be waiting for the |
@@ -3076,22 +3135,23 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterContentUnchanged) { |
ASSERT_TRUE(factory->pending_requests().empty()); |
ASSERT_TRUE(resolver.pending_requests().empty()); |
// At this point the ProxyService is still running the same PAC script as |
// before. |
// Start a second request. |
ProxyInfo info2; |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(GURL("http://request2"), LOAD_NORMAL, &info2, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(GURL("http://request2"), std::string(), LOAD_NORMAL, |
+ &info2, callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// Check that it was sent to the resolver. |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(GURL("http://request2"), resolver.pending_requests()[0]->url()); |
// Complete the pending second request. |
resolver.pending_requests()[0]->results()->UseNamedProxy("request2:80"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
@@ -3111,33 +3171,33 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterSuccess) { |
ProxyService::set_pac_script_poll_policy(&poll_policy); |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 1 request. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(GURL("http://request1"), LOAD_NORMAL, &info1, |
- callback1.callback(), NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(GURL("http://request1"), std::string(), |
+ LOAD_NORMAL, &info1, callback1.callback(), |
+ nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// The first request should have triggered initial download of PAC script. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
// Nothing has been sent to the factory yet. |
EXPECT_TRUE(factory->pending_requests().empty()); |
// At this point the ProxyService should be waiting for the |
@@ -3182,22 +3242,23 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterSuccess) { |
fetcher->NotifyFetchCompletion(ERR_FAILED, std::string()); |
base::MessageLoop::current()->RunUntilIdle(); |
// At this point the ProxyService should have re-configured itself to use |
// DIRECT connections rather than the given proxy resolver. |
// Start a second request. |
ProxyInfo info2; |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(GURL("http://request2"), LOAD_NORMAL, &info2, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(GURL("http://request2"), std::string(), LOAD_NORMAL, |
+ &info2, callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_TRUE(info2.is_direct()); |
} |
// Tests that the code which decides at what times to poll the PAC |
// script follows the expected policy. |
TEST_F(ProxyServiceTest, PACScriptPollingPolicy) { |
// Retrieve the internal polling policy implementation used by ProxyService. |
scoped_ptr<ProxyService::PacPollPolicy> policy = |
ProxyService::CreateDefaultPacPollPolicy(); |
@@ -3265,33 +3326,33 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterActivity) { |
ProxyService::set_pac_script_poll_policy(&poll_policy); |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolver resolver; |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(true); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
service.SetProxyScriptFetchers( |
fetcher, make_scoped_ptr(new DoNothingDhcpProxyScriptFetcher())); |
// Start 1 request. |
ProxyInfo info1; |
TestCompletionCallback callback1; |
- int rv = |
- service.ResolveProxy(GURL("http://request1"), LOAD_NORMAL, &info1, |
- callback1.callback(), NULL, NULL, BoundNetLog()); |
+ int rv = service.ResolveProxy(GURL("http://request1"), std::string(), |
+ LOAD_NORMAL, &info1, callback1.callback(), |
+ nullptr, nullptr, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// The first request should have triggered initial download of PAC script. |
EXPECT_TRUE(fetcher->has_pending_request()); |
EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
// Nothing has been sent to the factory yet. |
EXPECT_TRUE(factory->pending_requests().empty()); |
// At this point the ProxyService should be waiting for the |
@@ -3320,22 +3381,23 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterActivity) { |
// Our PAC poller is set to update ONLY in response to network activity, |
// (i.e. another call to ResolveProxy()). |
ASSERT_FALSE(fetcher->has_pending_request()); |
ASSERT_TRUE(factory->pending_requests().empty()); |
ASSERT_TRUE(resolver.pending_requests().empty()); |
// Start a second request. |
ProxyInfo info2; |
TestCompletionCallback callback2; |
- rv = service.ResolveProxy(GURL("http://request2"), LOAD_NORMAL, &info2, |
- callback2.callback(), NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(GURL("http://request2"), std::string(), LOAD_NORMAL, |
+ &info2, callback2.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, rv); |
// This request should have sent work to the resolver; complete it. |
ASSERT_EQ(1u, resolver.pending_requests().size()); |
EXPECT_EQ(GURL("http://request2"), resolver.pending_requests()[0]->url()); |
resolver.pending_requests()[0]->results()->UseNamedProxy("request2:80"); |
resolver.pending_requests()[0]->CompleteNow(OK); |
EXPECT_EQ(OK, callback2.WaitForResult()); |
EXPECT_EQ("request2:80", info2.proxy_server().ToURI()); |
@@ -3350,70 +3412,71 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterActivity) { |
fetcher->NotifyFetchCompletion(ERR_FAILED, std::string()); |
// Drain the message loop, so ProxyService is notified of the change |
// and has a chance to re-configure itself. |
base::MessageLoop::current()->RunUntilIdle(); |
// Start a third request -- this time we expect to get a direct connection |
// since the PAC script poller experienced a failure. |
ProxyInfo info3; |
TestCompletionCallback callback3; |
- rv = service.ResolveProxy(GURL("http://request3"), LOAD_NORMAL, &info3, |
- callback3.callback(), NULL, NULL, BoundNetLog()); |
+ rv = service.ResolveProxy(GURL("http://request3"), std::string(), LOAD_NORMAL, |
+ &info3, callback3.callback(), nullptr, nullptr, |
+ BoundNetLog()); |
EXPECT_EQ(OK, rv); |
EXPECT_TRUE(info3.is_direct()); |
} |
// Test that the synchronous resolution fails when a PAC script is active. |
TEST_F(ProxyServiceTest, SynchronousWithPAC) { |
MockProxyConfigService* config_service = |
new MockProxyConfigService("http://foopy/proxy.pac"); |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(config_service), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
info.UseDirect(); |
BoundTestNetLog log; |
bool synchronous_success = service.TryResolveProxySynchronously( |
- url, LOAD_NORMAL, &info, NULL, log.bound()); |
+ url, std::string(), LOAD_NORMAL, &info, nullptr, log.bound()); |
EXPECT_FALSE(synchronous_success); |
// |info| should not have been modified. |
EXPECT_TRUE(info.is_direct()); |
} |
// Test that synchronous results are returned correctly if a fixed proxy |
// configuration is active. |
TEST_F(ProxyServiceTest, SynchronousWithFixedConfiguration) { |
ProxyConfig config; |
config.proxy_rules().ParseFromString("foopy1:8080"); |
config.set_auto_detect(false); |
MockAsyncProxyResolverFactory* factory = |
new MockAsyncProxyResolverFactory(false); |
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)), |
- make_scoped_ptr(factory), NULL); |
+ make_scoped_ptr(factory), nullptr); |
GURL url("http://www.google.com/"); |
ProxyInfo info; |
BoundTestNetLog log; |
bool synchronous_success = service.TryResolveProxySynchronously( |
- url, LOAD_NORMAL, &info, NULL, log.bound()); |
+ url, std::string(), LOAD_NORMAL, &info, nullptr, log.bound()); |
EXPECT_TRUE(synchronous_success); |
EXPECT_FALSE(info.is_direct()); |
EXPECT_EQ("foopy1", info.proxy_server().host_port_pair().host()); |
// No request should have been queued. |
EXPECT_EQ(0u, factory->pending_requests().size()); |
} |
} // namespace net |