| Index: net/proxy/proxy_service_unittest.cc
|
| diff --git a/net/proxy/proxy_service_unittest.cc b/net/proxy/proxy_service_unittest.cc
|
| index 97f9a15232052bab5fc2bbb2c75acdf738216468..e525ead750c72ea3616f0fbc825e6ba2d794d4c5 100644
|
| --- a/net/proxy/proxy_service_unittest.cc
|
| +++ b/net/proxy/proxy_service_unittest.cc
|
| @@ -8,21 +8,20 @@
|
| #include <string>
|
| #include <vector>
|
|
|
| #include "base/format_macros.h"
|
| #include "base/logging.h"
|
| #include "base/macros.h"
|
| #include "base/memory/ptr_util.h"
|
| #include "base/run_loop.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"
|
| #include "net/base/test_completion_callback.h"
|
| #include "net/log/net_log.h"
|
| #include "net/log/test_net_log.h"
|
| #include "net/log/test_net_log_entry.h"
|
| #include "net/log/test_net_log_util.h"
|
| #include "net/proxy/dhcp_proxy_script_fetcher.h"
|
| #include "net/proxy/mock_proxy_resolver.h"
|
| #include "net/proxy/mock_proxy_script_fetcher.h"
|
| @@ -173,21 +172,20 @@ class MockProxyConfigService: public ProxyConfigService {
|
| 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();
|
| @@ -236,21 +234,20 @@ class TestResolveProxyDelegate : public ProxyDelegate {
|
|
|
| // 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;
|
| }
|
| @@ -355,23 +352,22 @@ TEST_F(ProxyServiceTest, Direct) {
|
| new MockAsyncProxyResolverFactory(false);
|
| ProxyService service(
|
| base::WrapUnique(new MockProxyConfigService(ProxyConfig::CreateDirect())),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://www.google.com/");
|
|
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| BoundTestNetLog log;
|
| - int rv =
|
| - service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback.callback(), nullptr, nullptr, log.bound());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback.callback(),
|
| + nullptr, nullptr, log.bound());
|
| EXPECT_THAT(rv, IsOk());
|
| 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);
|
| @@ -396,55 +392,53 @@ TEST_F(ProxyServiceTest, OnResolveProxyCallbackAddProxy) {
|
| 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, std::string(), LOAD_NORMAL, &info,
|
| - callback.callback(), nullptr, nullptr, log.bound());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback.callback(),
|
| + nullptr, nullptr, log.bound());
|
| EXPECT_THAT(rv, IsOk());
|
|
|
| // Verify that network delegate is invoked.
|
| TestResolveProxyDelegate delegate;
|
| - rv = service.ResolveProxy(url, "GET", LOAD_NORMAL, &info, callback.callback(),
|
| - nullptr, &delegate, log.bound());
|
| + rv = service.ResolveProxy(url, "GET", &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, "GET", LOAD_NORMAL, &info, callback.callback(),
|
| - nullptr, &delegate, log.bound());
|
| + rv = service.ResolveProxy(url, "GET", &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, "GET", LOAD_NORMAL, &info, callback.callback(),
|
| - nullptr, &delegate, log.bound());
|
| + rv = service.ResolveProxy(url, "GET", &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, "GET", LOAD_NORMAL, &info,
|
| - callback.callback(), nullptr, &delegate,
|
| - log.bound());
|
| + rv = service.ResolveProxy(bypass_url, "GET", &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);
|
| @@ -454,44 +448,42 @@ TEST_F(ProxyServiceTest, OnResolveProxyCallbackRemoveProxy) {
|
| 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, std::string(), LOAD_NORMAL, &info,
|
| - callback.callback(), nullptr, nullptr, log.bound());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback.callback(),
|
| + nullptr, nullptr, log.bound());
|
| EXPECT_THAT(rv, IsOk());
|
|
|
| TestResolveProxyDelegate delegate;
|
| delegate.set_remove_proxy(true);
|
|
|
| // Callback should interpose:
|
| - rv = service.ResolveProxy(url, "GET", LOAD_NORMAL, &info, callback.callback(),
|
| - nullptr, &delegate, log.bound());
|
| + rv = service.ResolveProxy(url, "GET", &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, "GET", LOAD_NORMAL, &info, callback.callback(),
|
| - nullptr, &delegate, log.bound());
|
| + rv = service.ResolveProxy(url, "GET", &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, "GET", LOAD_NORMAL, &info,
|
| - callback.callback(), nullptr, &delegate,
|
| - log.bound());
|
| + rv = service.ResolveProxy(bypass_url, "GET", &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);
|
| @@ -499,23 +491,22 @@ TEST_F(ProxyServiceTest, PAC) {
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://www.google.com/");
|
|
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| ProxyService::PacRequest* request;
|
| BoundTestNetLog log;
|
|
|
| - int rv =
|
| - service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback.callback(), &request, nullptr, log.bound());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback.callback(),
|
| + &request, nullptr, log.bound());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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());
|
| @@ -559,23 +550,22 @@ TEST_F(ProxyServiceTest, PAC_NoIdentityOrHash) {
|
| MockAsyncProxyResolverFactory* factory =
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://username:password@www.google.com/?ref#hash#hash");
|
|
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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());
|
| @@ -591,23 +581,22 @@ TEST_F(ProxyServiceTest, PAC_FailoverWithoutDirect) {
|
| MockAsyncProxyResolverFactory* factory =
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://www.google.com/");
|
|
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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.
|
| @@ -623,22 +612,22 @@ 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, "GET", LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| - callback2.callback(), nullptr, &proxy_delegate, BoundNetLog());
|
| + url, "GET", ERR_PROXY_CONNECTION_FAILED, &info, callback2.callback(),
|
| + nullptr, &proxy_delegate, BoundNetLog());
|
| // ReconsiderProxyAfterError returns error indicating nothing left.
|
| EXPECT_THAT(rv, IsError(ERR_FAILED));
|
| 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");
|
| @@ -646,23 +635,22 @@ TEST_F(ProxyServiceTest, PAC_RuntimeError) {
|
| MockAsyncProxyResolverFactory* factory =
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://this-causes-js-error/");
|
|
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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.
|
| @@ -705,75 +693,74 @@ TEST_F(ProxyServiceTest, PAC_FailoverAfterDirect) {
|
| MockAsyncProxyResolverFactory* factory =
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://www.google.com/");
|
|
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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_THAT(callback1.WaitForResult(), IsOk());
|
| EXPECT_TRUE(info.is_direct());
|
|
|
| // Fallback 1.
|
| TestCompletionCallback callback2;
|
| rv = service.ReconsiderProxyAfterError(
|
| - url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info,
|
| callback2.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| 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, "GET", LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| - callback3.callback(), nullptr, &proxy_delegate, BoundNetLog());
|
| + url, "GET", ERR_PROXY_CONNECTION_FAILED, &info, callback3.callback(),
|
| + nullptr, &proxy_delegate, BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| EXPECT_TRUE(info.is_direct());
|
|
|
| // Fallback 3.
|
| ProxyServer expected_proxy_server4 = info.proxy_server();
|
| TestCompletionCallback callback4;
|
| rv = service.ReconsiderProxyAfterError(
|
| - url, "GET", LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| - callback4.callback(), nullptr, &proxy_delegate, BoundNetLog());
|
| + url, "GET", ERR_PROXY_CONNECTION_FAILED, &info, callback4.callback(),
|
| + nullptr, &proxy_delegate, BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| 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, "GET", LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| - callback5.callback(), nullptr, &proxy_delegate, BoundNetLog());
|
| + url, "GET", ERR_PROXY_CONNECTION_FAILED, &info, callback5.callback(),
|
| + nullptr, &proxy_delegate, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_FAILED));
|
| 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);
|
| @@ -782,23 +769,22 @@ TEST_F(ProxyServiceTest, PAC_ConfigSourcePropagates) {
|
| MockAsyncProxyResolver resolver;
|
| MockAsyncProxyResolverFactory* factory =
|
| new MockAsyncProxyResolverFactory(false);
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| // Resolve something.
|
| GURL url("http://www.google.com/");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| ASSERT_THAT(rv, IsError(ERR_IO_PENDING));
|
| 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_THAT(callback.WaitForResult(), IsOk());
|
| EXPECT_EQ(PROXY_CONFIG_SOURCE_TEST, info.config_source());
|
| @@ -821,23 +807,22 @@ TEST_F(ProxyServiceTest, ProxyResolverFails) {
|
| MockAsyncProxyResolverFactory* factory =
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| // Start first resolve request.
|
| GURL url("http://www.google.com/");
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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.
|
| @@ -849,23 +834,22 @@ 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, std::string(), LOAD_NORMAL, &info,
|
| - callback2.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url, std::string(), &info, callback2.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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);
|
|
|
| @@ -885,23 +869,22 @@ TEST_F(ProxyServiceTest, ProxyResolverTerminatedDuringRequest) {
|
| MockAsyncProxyResolverFactory* factory =
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| // Start first resolve request.
|
| GURL url("http://www.google.com/");
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url, std::string(), net::LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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());
|
|
|
| @@ -916,23 +899,22 @@ 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, std::string(), net::LOAD_NORMAL, &info,
|
| - callback2.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url, std::string(), &info, callback2.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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());
|
|
|
| @@ -958,28 +940,27 @@ TEST_F(ProxyServiceTest,
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(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, std::string(), net::LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv =
|
| + service.ResolveProxy(url1, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
| TestCompletionCallback callback2;
|
| - rv = service.ResolveProxy(url2, std::string(), net::LOAD_NORMAL, &info,
|
| - callback2.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url2, std::string(), &info, callback2.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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.
|
| @@ -1029,42 +1010,40 @@ TEST_F(ProxyServiceTest, ProxyScriptFetcherFailsDownloadingMandatoryPac) {
|
| MockAsyncProxyResolverFactory* factory =
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| // Start first resolve request.
|
| GURL url("http://www.google.com/");
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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, std::string(), LOAD_NORMAL, &info,
|
| - callback2.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url, std::string(), &info, callback2.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED));
|
| 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(
|
| @@ -1080,23 +1059,22 @@ TEST_F(ProxyServiceTest, ProxyResolverFailsParsingJavaScriptMandatoryPac) {
|
| base::WrapUnique(factory), nullptr);
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start resolve request.
|
| GURL url("http://www.google.com/");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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");
|
|
|
| @@ -1127,23 +1105,22 @@ TEST_F(ProxyServiceTest, ProxyResolverFailsInJavaScriptMandatoryPac) {
|
| MockAsyncProxyResolverFactory* factory =
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| // Start first resolve request.
|
| GURL url("http://www.google.com/");
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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.
|
| @@ -1151,23 +1128,22 @@ 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, std::string(), LOAD_NORMAL, &info,
|
| - callback2.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url, std::string(), &info, callback2.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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);
|
|
|
| @@ -1188,23 +1164,22 @@ TEST_F(ProxyServiceTest, ProxyFallback) {
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://www.google.com/");
|
|
|
| // Get the proxy information.
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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.
|
| @@ -1219,42 +1194,41 @@ 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, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info,
|
| callback2.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
|
|
| // 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, std::string(), LOAD_NORMAL, &info,
|
| - callback3.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url, std::string(), &info, callback3.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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);
|
| @@ -1267,54 +1241,53 @@ 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, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info,
|
| callback4.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| 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, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info,
|
| callback5.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| 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, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info,
|
| callback6.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_FAILED));
|
| 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, std::string(), LOAD_NORMAL, &info,
|
| - callback7.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url, std::string(), &info, callback7.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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);
|
| @@ -1341,23 +1314,22 @@ TEST_F(ProxyServiceTest, ProxyFallbackToDirect) {
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://www.google.com/");
|
|
|
| // Get the proxy information.
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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.
|
| @@ -1366,45 +1338,45 @@ TEST_F(ProxyServiceTest, ProxyFallbackToDirect) {
|
| resolver.pending_requests()[0]->CompleteNow(OK);
|
|
|
| // Get the first result.
|
| EXPECT_THAT(callback1.WaitForResult(), IsOk());
|
| 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, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info,
|
| callback2.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
|
|
| // 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, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info,
|
| callback3.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
|
|
| // 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, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), 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_THAT(rv, IsError(ERR_FAILED));
|
| }
|
|
|
| TEST_F(ProxyServiceTest, ProxyFallback_NewSettings) {
|
| // Test proxy failover when new settings are available.
|
|
|
| MockProxyConfigService* config_service =
|
| @@ -1415,23 +1387,22 @@ TEST_F(ProxyServiceTest, ProxyFallback_NewSettings) {
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://www.google.com/");
|
|
|
| // Get the proxy information.
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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.
|
| @@ -1443,21 +1414,21 @@ TEST_F(ProxyServiceTest, ProxyFallback_NewSettings) {
|
| EXPECT_THAT(callback1.WaitForResult(), IsOk());
|
| 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, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info,
|
| callback2.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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());
|
|
|
| @@ -1465,34 +1436,34 @@ TEST_F(ProxyServiceTest, ProxyFallback_NewSettings) {
|
| "foopy1:8080;foopy2:9090");
|
| resolver.pending_requests()[0]->CompleteNow(OK);
|
|
|
| // The first proxy is still there since the configuration changed.
|
| EXPECT_THAT(callback2.WaitForResult(), IsOk());
|
| 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, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info,
|
| callback3.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| 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, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info,
|
| callback4.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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());
|
|
|
| @@ -1519,78 +1490,76 @@ TEST_F(ProxyServiceTest, ProxyFallback_BadConfig) {
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://www.google.com/");
|
|
|
| // Get the proxy information.
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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_THAT(callback1.WaitForResult(), IsOk());
|
| EXPECT_FALSE(info.is_direct());
|
| EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
|
|
|
| // Fake a proxy error.
|
| TestCompletionCallback callback2;
|
| rv = service.ReconsiderProxyAfterError(
|
| - url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info,
|
| callback2.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
|
|
| // 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, std::string(), LOAD_NORMAL, &info2,
|
| - callback3.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url, std::string(), &info2, callback3.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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_THAT(callback3.WaitForResult(), IsOk());
|
| 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, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info3,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info3,
|
| callback4.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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);
|
|
|
| @@ -1619,57 +1588,55 @@ TEST_F(ProxyServiceTest, ProxyFallback_BadConfigMandatory) {
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://www.google.com/");
|
|
|
| // Get the proxy information.
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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_THAT(callback1.WaitForResult(), IsOk());
|
| EXPECT_FALSE(info.is_direct());
|
| EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
|
|
|
| // Fake a proxy error.
|
| TestCompletionCallback callback2;
|
| rv = service.ReconsiderProxyAfterError(
|
| - url, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info,
|
| callback2.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
|
|
| // 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, std::string(), LOAD_NORMAL, &info2,
|
| - callback3.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url, std::string(), &info2, callback3.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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.
|
| @@ -1677,21 +1644,21 @@ 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, std::string(), LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info3,
|
| + url, std::string(), ERR_PROXY_CONNECTION_FAILED, &info3,
|
| callback4.callback(), nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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);
|
|
|
| @@ -1713,28 +1680,28 @@ TEST_F(ProxyServiceTest, ProxyBypassList) {
|
| config.proxy_rules().bypass_rules.ParseFromString("*.org");
|
|
|
| ProxyService service(base::WrapUnique(new MockProxyConfigService(config)),
|
| 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, std::string(), LOAD_NORMAL, &info[0],
|
| + rv = service.ResolveProxy(url1, std::string(), &info[0],
|
| callback[0].callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| EXPECT_TRUE(info[0].is_direct());
|
|
|
| // Request for a .com domain hits the proxy.
|
| - rv = service.ResolveProxy(url2, std::string(), LOAD_NORMAL, &info[1],
|
| + rv = service.ResolveProxy(url2, std::string(), &info[1],
|
| callback[1].callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| 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");
|
| @@ -1772,61 +1739,61 @@ TEST_F(ProxyServiceTest, MarkProxiesAsBadTests) {
|
| TEST_F(ProxyServiceTest, PerProtocolProxyTests) {
|
| ProxyConfig config;
|
| config.proxy_rules().ParseFromString("http=foopy1:8080;https=foopy2:8080");
|
| config.set_auto_detect(false);
|
| {
|
| ProxyService service(base::WrapUnique(new MockProxyConfigService(config)),
|
| nullptr, nullptr);
|
| GURL test_url("http://www.msn.com");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info,
|
| + int rv = service.ResolveProxy(test_url, std::string(), &info,
|
| callback.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| EXPECT_FALSE(info.is_direct());
|
| EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
|
| }
|
| {
|
| ProxyService service(base::WrapUnique(new MockProxyConfigService(config)),
|
| nullptr, nullptr);
|
| GURL test_url("ftp://ftp.google.com");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info,
|
| + int rv = service.ResolveProxy(test_url, std::string(), &info,
|
| callback.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| EXPECT_TRUE(info.is_direct());
|
| EXPECT_EQ("direct://", info.proxy_server().ToURI());
|
| }
|
| {
|
| ProxyService service(base::WrapUnique(new MockProxyConfigService(config)),
|
| nullptr, nullptr);
|
| GURL test_url("https://webbranch.techcu.com");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info,
|
| + int rv = service.ResolveProxy(test_url, std::string(), &info,
|
| callback.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| EXPECT_FALSE(info.is_direct());
|
| EXPECT_EQ("foopy2:8080", info.proxy_server().ToURI());
|
| }
|
| {
|
| config.proxy_rules().ParseFromString("foopy1:8080");
|
| ProxyService service(base::WrapUnique(new MockProxyConfigService(config)),
|
| nullptr, nullptr);
|
| GURL test_url("http://www.microsoft.com");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info,
|
| + int rv = service.ResolveProxy(test_url, std::string(), &info,
|
| callback.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| 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
|
| @@ -1834,52 +1801,52 @@ TEST_F(ProxyServiceTest, ProxyConfigSourcePropagates) {
|
| // any of the rules were applied.
|
| {
|
| ProxyConfig config;
|
| config.set_source(PROXY_CONFIG_SOURCE_TEST);
|
| config.proxy_rules().ParseFromString("https=foopy2:8080");
|
| ProxyService service(base::WrapUnique(new MockProxyConfigService(config)),
|
| nullptr, nullptr);
|
| GURL test_url("http://www.google.com");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info,
|
| + int rv = service.ResolveProxy(test_url, std::string(), &info,
|
| callback.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| ASSERT_THAT(rv, IsOk());
|
| // 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(base::WrapUnique(new MockProxyConfigService(config)),
|
| nullptr, nullptr);
|
| GURL test_url("https://www.google.com");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info,
|
| + int rv = service.ResolveProxy(test_url, std::string(), &info,
|
| callback.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| ASSERT_THAT(rv, IsOk());
|
| // 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(base::WrapUnique(new MockProxyConfigService(config)),
|
| nullptr, nullptr);
|
| GURL test_url("http://www.google.com");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info,
|
| + int rv = service.ResolveProxy(test_url, std::string(), &info,
|
| callback.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| ASSERT_THAT(rv, IsOk());
|
| // 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.
|
| @@ -1889,60 +1856,60 @@ TEST_F(ProxyServiceTest, DefaultProxyFallbackToSOCKS) {
|
| config.set_auto_detect(false);
|
| EXPECT_EQ(ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| config.proxy_rules().type);
|
|
|
| {
|
| ProxyService service(base::WrapUnique(new MockProxyConfigService(config)),
|
| nullptr, nullptr);
|
| GURL test_url("http://www.msn.com");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info,
|
| + int rv = service.ResolveProxy(test_url, std::string(), &info,
|
| callback.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| EXPECT_FALSE(info.is_direct());
|
| EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
|
| }
|
| {
|
| ProxyService service(base::WrapUnique(new MockProxyConfigService(config)),
|
| nullptr, nullptr);
|
| GURL test_url("ftp://ftp.google.com");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info,
|
| + int rv = service.ResolveProxy(test_url, std::string(), &info,
|
| callback.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| EXPECT_FALSE(info.is_direct());
|
| EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI());
|
| }
|
| {
|
| ProxyService service(base::WrapUnique(new MockProxyConfigService(config)),
|
| nullptr, nullptr);
|
| GURL test_url("https://webbranch.techcu.com");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info,
|
| + int rv = service.ResolveProxy(test_url, std::string(), &info,
|
| callback.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| EXPECT_FALSE(info.is_direct());
|
| EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI());
|
| }
|
| {
|
| ProxyService service(base::WrapUnique(new MockProxyConfigService(config)),
|
| nullptr, nullptr);
|
| GURL test_url("unknown://www.microsoft.com");
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(test_url, std::string(), LOAD_NORMAL, &info,
|
| + int rv = service.ResolveProxy(test_url, std::string(), &info,
|
| callback.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| 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) {
|
| @@ -1956,47 +1923,45 @@ TEST_F(ProxyServiceTest, CancelInProgressRequest) {
|
| MockAsyncProxyResolverFactory* factory =
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| // Start 3 requests.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url1, std::string(), LOAD_NORMAL, &info1,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv =
|
| + service.ResolveProxy(url1, std::string(), &info1, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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, std::string(), LOAD_NORMAL, &info2,
|
| - callback2.callback(), &request2, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url2, std::string(), &info2, callback2.callback(),
|
| + &request2, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| GetPendingRequestsForURLs(resolver, url1, url2);
|
|
|
| ProxyInfo info3;
|
| TestCompletionCallback callback3;
|
| - rv = service.ResolveProxy(url3, std::string(), LOAD_NORMAL, &info3,
|
| - callback3.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url3, std::string(), &info3, callback3.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
| 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.
|
| @@ -2034,43 +1999,41 @@ TEST_F(ProxyServiceTest, InitialPACScriptDownload) {
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 3 requests.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| ProxyService::PacRequest* request1;
|
| - int rv = service.ResolveProxy(url1, std::string(), LOAD_NORMAL, &info1,
|
| - callback1.callback(), &request1, nullptr,
|
| - BoundNetLog());
|
| + int rv =
|
| + service.ResolveProxy(url1, std::string(), &info1, callback1.callback(),
|
| + &request1, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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, std::string(), LOAD_NORMAL, &info2,
|
| - callback2.callback(), &request2, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url2, std::string(), &info2, callback2.callback(),
|
| + &request2, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| ProxyInfo info3;
|
| TestCompletionCallback callback3;
|
| ProxyService::PacRequest* request3;
|
| - rv = service.ResolveProxy(url3, std::string(), LOAD_NORMAL, &info3,
|
| - callback3.callback(), &request3, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url3, std::string(), &info3, callback3.callback(),
|
| + &request3, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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,
|
| @@ -2139,34 +2102,33 @@ TEST_F(ProxyServiceTest, ChangeScriptFetcherWhilePACDownloadInProgress) {
|
| base::WrapUnique(factory), nullptr);
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 2 requests.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url1, std::string(), LOAD_NORMAL, &info1,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv =
|
| + service.ResolveProxy(url1, std::string(), &info1, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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, std::string(), LOAD_NORMAL, &info2,
|
| - callback2.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url2, std::string(), &info2, callback2.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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;
|
| @@ -2201,41 +2163,41 @@ TEST_F(ProxyServiceTest, CancelWhilePACFetching) {
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 3 requests.
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| ProxyService::PacRequest* request1;
|
| BoundTestNetLog log1;
|
| - int rv = service.ResolveProxy(GURL("http://request1"), std::string(),
|
| - LOAD_NORMAL, &info1, callback1.callback(),
|
| - &request1, nullptr, log1.bound());
|
| + int rv = service.ResolveProxy(GURL("http://request1"), std::string(), &info1,
|
| + callback1.callback(), &request1, nullptr,
|
| + log1.bound());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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"), std::string(), LOAD_NORMAL,
|
| - &info2, callback2.callback(), &request2, nullptr,
|
| + rv = service.ResolveProxy(GURL("http://request2"), std::string(), &info2,
|
| + callback2.callback(), &request2, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| ProxyInfo info3;
|
| TestCompletionCallback callback3;
|
| - rv = service.ResolveProxy(GURL("http://request3"), std::string(), LOAD_NORMAL,
|
| - &info3, callback3.callback(), nullptr, nullptr,
|
| + rv = service.ResolveProxy(GURL("http://request3"), std::string(), &info3,
|
| + callback3.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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);
|
|
|
| @@ -2299,31 +2261,30 @@ TEST_F(ProxyServiceTest, FallbackFromAutodetectToCustomPac) {
|
| base::WrapUnique(factory), nullptr);
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 2 requests.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url1, std::string(), LOAD_NORMAL, &info1,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv =
|
| + service.ResolveProxy(url1, std::string(), &info1, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| ProxyInfo info2;
|
| TestCompletionCallback callback2;
|
| ProxyService::PacRequest* request2;
|
| - rv = service.ResolveProxy(url2, std::string(), LOAD_NORMAL, &info2,
|
| - callback2.callback(), &request2, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url2, std::string(), &info2, callback2.callback(),
|
| + &request2, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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());
|
| @@ -2380,31 +2341,30 @@ TEST_F(ProxyServiceTest, FallbackFromAutodetectToCustomPac2) {
|
| base::WrapUnique(factory), nullptr);
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 2 requests.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(url1, std::string(), LOAD_NORMAL, &info1,
|
| - callback1.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv =
|
| + service.ResolveProxy(url1, std::string(), &info1, callback1.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| ProxyInfo info2;
|
| TestCompletionCallback callback2;
|
| ProxyService::PacRequest* request2;
|
| - rv = service.ResolveProxy(url2, std::string(), LOAD_NORMAL, &info2,
|
| - callback2.callback(), &request2, nullptr,
|
| - BoundNetLog());
|
| + rv = service.ResolveProxy(url2, std::string(), &info2, callback2.callback(),
|
| + &request2, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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");
|
|
|
| @@ -2454,30 +2414,30 @@ TEST_F(ProxyServiceTest, FallbackFromAutodetectToCustomToManual) {
|
| base::WrapUnique(factory), nullptr);
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 2 requests.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(GURL("http://request1"), std::string(),
|
| - LOAD_NORMAL, &info1, callback1.callback(),
|
| - nullptr, nullptr, BoundNetLog());
|
| + int rv = service.ResolveProxy(GURL("http://request1"), std::string(), &info1,
|
| + callback1.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| ProxyInfo info2;
|
| TestCompletionCallback callback2;
|
| ProxyService::PacRequest* request2;
|
| - rv = service.ResolveProxy(GURL("http://request2"), std::string(), LOAD_NORMAL,
|
| - &info2, callback2.callback(), &request2, nullptr,
|
| + rv = service.ResolveProxy(GURL("http://request2"), std::string(), &info2,
|
| + callback2.callback(), &request2, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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());
|
| @@ -2517,22 +2477,22 @@ TEST_F(ProxyServiceTest, BypassDoesntApplyToPac) {
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 1 requests.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| int rv = service.ResolveProxy(GURL("http://www.google.com"), std::string(),
|
| - LOAD_NORMAL, &info1, callback1.callback(),
|
| - nullptr, nullptr, BoundNetLog());
|
| + &info1, callback1.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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);
|
|
|
| @@ -2549,22 +2509,22 @@ TEST_F(ProxyServiceTest, BypassDoesntApplyToPac) {
|
| resolver.pending_requests()[0]->CompleteNow(OK);
|
|
|
| // Verify that request ran as expected.
|
| EXPECT_THAT(callback1.WaitForResult(), IsOk());
|
| 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"), std::string(),
|
| - LOAD_NORMAL, &info2, callback2.callback(), nullptr,
|
| - nullptr, BoundNetLog());
|
| + &info2, callback2.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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);
|
|
|
| @@ -2588,22 +2548,22 @@ TEST_F(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingFetch) {
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 1 request.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| int rv = service.ResolveProxy(GURL("http://www.google.com"), std::string(),
|
| - LOAD_NORMAL, &info1, callback1.callback(),
|
| - nullptr, nullptr, BoundNetLog());
|
| + &info1, callback1.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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());
|
| }
|
| @@ -2619,52 +2579,51 @@ TEST_F(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingSet) {
|
| MockAsyncProxyResolverFactory* factory =
|
| new MockAsyncProxyResolverFactory(false);
|
|
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://www.google.com/");
|
|
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service.ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv = service.ResolveProxy(url, std::string(), &info, callback.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| 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(base::WrapUnique(new MockProxyConfigService(config1)),
|
| nullptr, nullptr);
|
|
|
| ProxyInfo info;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(GURL("http://request1"), std::string(),
|
| - LOAD_NORMAL, &info, callback1.callback(),
|
| - nullptr, nullptr, BoundNetLog());
|
| + int rv = service.ResolveProxy(GURL("http://request1"), std::string(), &info,
|
| + callback1.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
|
|
|
| ProxyConfig config2;
|
| config2.proxy_rules().ParseFromString("foopy2:8080");
|
| config2.set_auto_detect(false);
|
| service.ResetConfigService(
|
| base::WrapUnique(new MockProxyConfigService(config2)));
|
| TestCompletionCallback callback2;
|
| - rv = service.ResolveProxy(GURL("http://request2"), std::string(), LOAD_NORMAL,
|
| - &info, callback2.callback(), nullptr, nullptr,
|
| + rv = service.ResolveProxy(GURL("http://request2"), std::string(), &info,
|
| + callback2.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| 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();
|
|
|
| @@ -2673,22 +2632,22 @@ TEST_F(ProxyServiceTest, UpdateConfigFromPACToDirect) {
|
| MockAsyncProxyResolverFactory* factory =
|
| new MockAsyncProxyResolverFactory(false);
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| // Start 1 request.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| int rv = service.ResolveProxy(GURL("http://www.google.com"), std::string(),
|
| - LOAD_NORMAL, &info1, callback1.callback(),
|
| - nullptr, nullptr, BoundNetLog());
|
| + &info1, callback1.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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");
|
| @@ -2702,22 +2661,22 @@ TEST_F(ProxyServiceTest, UpdateConfigFromPACToDirect) {
|
| // (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"), std::string(),
|
| - LOAD_NORMAL, &info2, callback2.callback(), nullptr,
|
| - nullptr, BoundNetLog());
|
| + &info2, callback2.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
|
|
| EXPECT_TRUE(info2.is_direct());
|
| }
|
|
|
| TEST_F(ProxyServiceTest, NetworkChangeTriggersPacRefetch) {
|
| MockProxyConfigService* config_service =
|
| new MockProxyConfigService("http://foopy/proxy.pac");
|
|
|
| MockAsyncProxyResolver resolver;
|
| @@ -2734,23 +2693,23 @@ TEST_F(ProxyServiceTest, NetworkChangeTriggersPacRefetch) {
|
| fetcher, base::WrapUnique(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"), std::string(),
|
| - LOAD_NORMAL, &info1, callback1.callback(),
|
| - nullptr, nullptr, BoundNetLog());
|
| + int rv = service.ResolveProxy(GURL("http://request1"), std::string(), &info1,
|
| + callback1.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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
|
| @@ -2777,22 +2736,22 @@ 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::RunLoop().RunUntilIdle(); // Notification happens async.
|
|
|
| // Start a second request.
|
| ProxyInfo info2;
|
| TestCompletionCallback callback2;
|
| - rv = service.ResolveProxy(GURL("http://request2"), std::string(), LOAD_NORMAL,
|
| - &info2, callback2.callback(), nullptr, nullptr,
|
| + rv = service.ResolveProxy(GURL("http://request2"), std::string(), &info2,
|
| + callback2.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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());
|
| @@ -2852,23 +2811,23 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterFailure) {
|
| base::WrapUnique(factory), nullptr);
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 1 request.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(GURL("http://request1"), std::string(),
|
| - LOAD_NORMAL, &info1, callback1.callback(),
|
| - nullptr, nullptr, BoundNetLog());
|
| + int rv = service.ResolveProxy(GURL("http://request1"), std::string(), &info1,
|
| + callback1.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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
|
| @@ -2913,22 +2872,22 @@ 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"), std::string(), LOAD_NORMAL,
|
| - &info2, callback2.callback(), nullptr, nullptr,
|
| + rv = service.ResolveProxy(GURL("http://request2"), std::string(), &info2,
|
| + callback2.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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);
|
| @@ -2959,23 +2918,23 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterContentChange) {
|
| base::WrapUnique(factory), nullptr);
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 1 request.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(GURL("http://request1"), std::string(),
|
| - LOAD_NORMAL, &info1, callback1.callback(),
|
| - nullptr, nullptr, BoundNetLog());
|
| + int rv = service.ResolveProxy(GURL("http://request1"), std::string(), &info1,
|
| + callback1.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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
|
| @@ -3026,22 +2985,22 @@ 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"), std::string(), LOAD_NORMAL,
|
| - &info2, callback2.callback(), nullptr, nullptr,
|
| + rv = service.ResolveProxy(GURL("http://request2"), std::string(), &info2,
|
| + callback2.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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);
|
| @@ -3072,23 +3031,23 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterContentUnchanged) {
|
| base::WrapUnique(factory), nullptr);
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 1 request.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(GURL("http://request1"), std::string(),
|
| - LOAD_NORMAL, &info1, callback1.callback(),
|
| - nullptr, nullptr, BoundNetLog());
|
| + int rv = service.ResolveProxy(GURL("http://request1"), std::string(), &info1,
|
| + callback1.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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
|
| @@ -3136,22 +3095,22 @@ 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"), std::string(), LOAD_NORMAL,
|
| - &info2, callback2.callback(), nullptr, nullptr,
|
| + rv = service.ResolveProxy(GURL("http://request2"), std::string(), &info2,
|
| + callback2.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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);
|
| @@ -3182,23 +3141,23 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterSuccess) {
|
| base::WrapUnique(factory), nullptr);
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 1 request.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(GURL("http://request1"), std::string(),
|
| - LOAD_NORMAL, &info1, callback1.callback(),
|
| - nullptr, nullptr, BoundNetLog());
|
| + int rv = service.ResolveProxy(GURL("http://request1"), std::string(), &info1,
|
| + callback1.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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
|
| @@ -3243,22 +3202,22 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterSuccess) {
|
| fetcher->NotifyFetchCompletion(ERR_FAILED, std::string());
|
|
|
| base::RunLoop().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"), std::string(), LOAD_NORMAL,
|
| - &info2, callback2.callback(), nullptr, nullptr,
|
| + rv = service.ResolveProxy(GURL("http://request2"), std::string(), &info2,
|
| + callback2.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| 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.
|
| std::unique_ptr<ProxyService::PacPollPolicy> policy =
|
| @@ -3337,23 +3296,23 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterActivity) {
|
| base::WrapUnique(factory), nullptr);
|
|
|
| MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
|
| service.SetProxyScriptFetchers(
|
| fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher()));
|
|
|
| // Start 1 request.
|
|
|
| ProxyInfo info1;
|
| TestCompletionCallback callback1;
|
| - int rv = service.ResolveProxy(GURL("http://request1"), std::string(),
|
| - LOAD_NORMAL, &info1, callback1.callback(),
|
| - nullptr, nullptr, BoundNetLog());
|
| + int rv = service.ResolveProxy(GURL("http://request1"), std::string(), &info1,
|
| + callback1.callback(), nullptr, nullptr,
|
| + BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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
|
| @@ -3382,22 +3341,22 @@ 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"), std::string(), LOAD_NORMAL,
|
| - &info2, callback2.callback(), nullptr, nullptr,
|
| + rv = service.ResolveProxy(GURL("http://request2"), std::string(), &info2,
|
| + callback2.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // 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_THAT(callback2.WaitForResult(), IsOk());
|
| @@ -3413,22 +3372,22 @@ 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::RunLoop().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"), std::string(), LOAD_NORMAL,
|
| - &info3, callback3.callback(), nullptr, nullptr,
|
| + rv = service.ResolveProxy(GURL("http://request3"), std::string(), &info3,
|
| + callback3.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsOk());
|
| 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");
|
|
|
| @@ -3438,21 +3397,21 @@ TEST_F(ProxyServiceTest, SynchronousWithPAC) {
|
| ProxyService service(base::WrapUnique(config_service),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://www.google.com/");
|
|
|
| ProxyInfo info;
|
| info.UseDirect();
|
| BoundTestNetLog log;
|
|
|
| bool synchronous_success = service.TryResolveProxySynchronously(
|
| - url, std::string(), LOAD_NORMAL, &info, nullptr, log.bound());
|
| + url, std::string(), &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;
|
| @@ -3464,21 +3423,21 @@ TEST_F(ProxyServiceTest, SynchronousWithFixedConfiguration) {
|
|
|
| ProxyService service(base::WrapUnique(new MockProxyConfigService(config)),
|
| base::WrapUnique(factory), nullptr);
|
|
|
| GURL url("http://www.google.com/");
|
|
|
| ProxyInfo info;
|
| BoundTestNetLog log;
|
|
|
| bool synchronous_success = service.TryResolveProxySynchronously(
|
| - url, std::string(), LOAD_NORMAL, &info, nullptr, log.bound());
|
| + url, std::string(), &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());
|
| }
|
|
|
| // Helper class to exercise URL sanitization using the different policies. This
|
| // works by submitted URLs to the ProxyService. In turn the ProxyService
|
| @@ -3494,23 +3453,23 @@ class SanitizeUrlHelper {
|
|
|
| service_.reset(new ProxyService(std::move(config_service),
|
| base::WrapUnique(factory), nullptr));
|
|
|
| // Do an initial request to initialize the service (configure the PAC
|
| // script).
|
| GURL url("http://example.com");
|
|
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service_->ResolveProxy(url, std::string(), LOAD_NORMAL, &info,
|
| - callback.callback(), nullptr, nullptr,
|
| - BoundNetLog());
|
| + int rv =
|
| + service_->ResolveProxy(url, std::string(), &info, callback.callback(),
|
| + nullptr, nullptr, BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| // First step is to download the PAC script.
|
| EXPECT_EQ(GURL("http://foopy/proxy.pac"),
|
| factory->pending_requests()[0]->script_data()->url());
|
| factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver);
|
|
|
| EXPECT_EQ(1u, resolver.pending_requests().size());
|
| EXPECT_EQ(url, resolver.pending_requests()[0]->url());
|
|
|
| @@ -3526,21 +3485,21 @@ class SanitizeUrlHelper {
|
| void SetSanitizeUrlPolicy(ProxyService::SanitizeUrlPolicy policy) {
|
| service_->set_sanitize_url_policy(policy);
|
| }
|
|
|
| // Makes a proxy resolution request through the ProxyService, and returns the
|
| // URL that was submitted to the Proxy Resolver.
|
| GURL SanitizeUrl(const GURL& raw_url) {
|
| // Issue a request and see what URL is sent to the proxy resolver.
|
| ProxyInfo info;
|
| TestCompletionCallback callback;
|
| - int rv = service_->ResolveProxy(raw_url, std::string(), LOAD_NORMAL, &info,
|
| + int rv = service_->ResolveProxy(raw_url, std::string(), &info,
|
| callback.callback(), nullptr, nullptr,
|
| BoundNetLog());
|
| EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
|
|
|
| EXPECT_EQ(1u, resolver.pending_requests().size());
|
|
|
| GURL sanitized_url = resolver.pending_requests()[0]->url();
|
|
|
| // Complete the request.
|
| resolver.pending_requests()[0]->results()->UsePacString("DIRECT");
|
|
|