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

Unified Diff: net/proxy/proxy_service_unittest.cc

Issue 1680893002: Moving proxy resolution logic out of NetworkDelegate and into ProxyDelegate for DataReductionProxy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/proxy/proxy_service_unittest.cc
diff --git a/net/proxy/proxy_service_unittest.cc b/net/proxy/proxy_service_unittest.cc
index 3d23b583345cf2d533307e9b410d4acf2597ee3a..4b4528d880eb55d910f337412812e69190a61e74 100644
--- a/net/proxy/proxy_service_unittest.cc
+++ b/net/proxy/proxy_service_unittest.cc
@@ -7,21 +7,21 @@
#include <cstdarg>
#include <vector>
#include "base/format_macros.h"
#include "base/logging.h"
#include "base/macros.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "net/base/load_flags.h"
#include "net/base/net_errors.h"
-#include "net/base/network_delegate_impl.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"
#include "net/proxy/proxy_config_service.h"
#include "net/proxy/proxy_resolver.h"
@@ -155,28 +155,27 @@ class MockProxyConfigService: public ProxyConfigService {
OnProxyConfigChanged(config_, availability_));
}
private:
ConfigAvailability availability_;
ProxyConfig config_;
base::ObserverList<Observer, true> observers_;
};
// A test network delegate that exercises the OnResolveProxy callback.
-class TestResolveProxyNetworkDelegate : public NetworkDelegateImpl {
+class TestResolveProxyDelegate : public ProxyDelegate {
public:
- TestResolveProxyNetworkDelegate()
+ TestResolveProxyDelegate()
: on_resolve_proxy_called_(false),
add_proxy_(false),
remove_proxy_(false),
- proxy_service_(NULL) {
- }
+ proxy_service_(NULL) {}
void OnResolveProxy(const GURL& url,
int load_flags,
const ProxyService& proxy_service,
ProxyInfo* result) override {
on_resolve_proxy_called_ = true;
proxy_service_ = &proxy_service;
DCHECK(!add_proxy_ || !remove_proxy_);
if (add_proxy_) {
result->UseNamedProxy("delegate_proxy.com");
@@ -194,41 +193,74 @@ class TestResolveProxyNetworkDelegate : public NetworkDelegateImpl {
}
void set_remove_proxy(bool remove_proxy) {
remove_proxy_ = remove_proxy;
}
const ProxyService* proxy_service() const {
return proxy_service_;
}
+ void OnTunnelConnectCompleted(const HostPortPair& endpoint,
+ const HostPortPair& proxy_server,
+ int net_error) override {}
+ void OnFallback(const ProxyServer& bad_proxy, int net_error) override {}
+ void OnBeforeSendHeaders(URLRequest* request,
+ const ProxyInfo& proxy_info,
+ HttpRequestHeaders* headers) override {}
+ void OnBeforeTunnelRequest(const HostPortPair& proxy_server,
+ HttpRequestHeaders* extra_headers) override {}
+ void OnTunnelHeadersReceived(
+ const HostPortPair& origin,
+ const HostPortPair& proxy_server,
+ const HttpResponseHeaders& response_headers) override {}
+ bool IsTrustedSpdyProxy(const net::ProxyServer& proxy_server) override {
+ return true;
+ }
+
private:
bool on_resolve_proxy_called_;
bool add_proxy_;
bool remove_proxy_;
const ProxyService* proxy_service_;
};
// A test network delegate that exercises the OnProxyFallback callback.
-class TestProxyFallbackNetworkDelegate : public NetworkDelegateImpl {
+class TestProxyFallbackProxyDelegate : public ProxyDelegate {
public:
- TestProxyFallbackNetworkDelegate()
- : on_proxy_fallback_called_(false),
- proxy_fallback_net_error_(OK) {
- }
-
- void OnProxyFallback(const ProxyServer& proxy_server,
- int net_error) override {
- proxy_server_ = proxy_server;
+ TestProxyFallbackProxyDelegate()
+ : on_proxy_fallback_called_(false), proxy_fallback_net_error_(OK) {}
+ // ProxyDelegate implementation:
+ void OnResolveProxy(const GURL& url,
+ 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;
}
+ void OnBeforeSendHeaders(URLRequest* request,
+ const ProxyInfo& proxy_info,
+ HttpRequestHeaders* headers) override {}
+ void OnBeforeTunnelRequest(const HostPortPair& proxy_server,
+ HttpRequestHeaders* extra_headers) override {}
+ void OnTunnelHeadersReceived(
+ const HostPortPair& origin,
+ const HostPortPair& proxy_server,
+ const HttpResponseHeaders& response_headers) override {}
+ bool IsTrustedSpdyProxy(const net::ProxyServer& proxy_server) override {
+ return true;
+ }
bool on_proxy_fallback_called() const {
return on_proxy_fallback_called_;
}
const ProxyServer& proxy_server() const {
return proxy_server_;
}
int proxy_fallback_net_error() const {
@@ -359,27 +391,27 @@ TEST_F(ProxyServiceTest, OnResolveProxyCallbackAddProxy) {
ProxyInfo info;
TestCompletionCallback callback;
BoundTestNetLog log;
// First, warm up the ProxyService.
int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(),
NULL, NULL, log.bound());
EXPECT_EQ(OK, rv);
// Verify that network delegate is invoked.
- TestResolveProxyNetworkDelegate delegate;
+ TestResolveProxyDelegate delegate;
rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), NULL,
&delegate, log.bound());
EXPECT_TRUE(delegate.on_resolve_proxy_called());
EXPECT_EQ(&service, delegate.proxy_service());
- // Verify that the NetworkDelegate's behavior is stateless across
+ // Verify that the ProxyDelegate's behavior is stateless across
// invocations of ResolveProxy. Start by having the callback add a proxy
// and checking that subsequent requests are not affected.
delegate.set_add_proxy(true);
// Callback should interpose:
rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), NULL,
&delegate, log.bound());
EXPECT_FALSE(info.is_direct());
EXPECT_EQ(info.proxy_server().host_port_pair().host(), "delegate_proxy.com");
delegate.set_add_proxy(false);
@@ -391,21 +423,21 @@ TEST_F(ProxyServiceTest, OnResolveProxyCallbackAddProxy) {
EXPECT_EQ(info.proxy_server().host_port_pair().host(), "foopy1");
// Check bypassed URL:
rv = service.ResolveProxy(bypass_url, LOAD_NORMAL, &info, callback.callback(),
NULL, &delegate, log.bound());
EXPECT_TRUE(info.is_direct());
}
TEST_F(ProxyServiceTest, OnResolveProxyCallbackRemoveProxy) {
// Same as OnResolveProxyCallbackAddProxy, but verify that the
- // NetworkDelegate's behavior is stateless across invocations after it
+ // ProxyDelegate's behavior is stateless across invocations after it
// *removes* a proxy.
ProxyConfig config;
config.proxy_rules().ParseFromString("foopy1:8080");
config.set_auto_detect(false);
config.proxy_rules().bypass_rules.ParseFromString("*.org");
ProxyService service(make_scoped_ptr(new MockProxyConfigService(config)),
nullptr, NULL);
GURL url("http://www.google.com/");
@@ -413,21 +445,21 @@ TEST_F(ProxyServiceTest, OnResolveProxyCallbackRemoveProxy) {
ProxyInfo info;
TestCompletionCallback callback;
BoundTestNetLog log;
// First, warm up the ProxyService.
int rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(),
NULL, NULL, log.bound());
EXPECT_EQ(OK, rv);
- TestResolveProxyNetworkDelegate delegate;
+ TestResolveProxyDelegate delegate;
delegate.set_remove_proxy(true);
// Callback should interpose:
rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), NULL,
&delegate, log.bound());
EXPECT_TRUE(info.is_direct());
delegate.set_remove_proxy(false);
// Check non-bypassed URL:
rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback.callback(), NULL,
@@ -569,26 +601,26 @@ TEST_F(ProxyServiceTest, PAC_FailoverWithoutDirect) {
EXPECT_EQ("foopy:8080", info.proxy_server().ToURI());
EXPECT_TRUE(info.did_use_pac_script());
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, imagine that connecting to foopy:8080 fails: there is nothing
// left to fallback to, since our proxy list was NOT terminated by
// DIRECT.
- NetworkDelegateImpl network_delegate;
+ TestResolveProxyDelegate proxy_delegate;
TestCompletionCallback callback2;
ProxyServer expected_proxy_server = info.proxy_server();
rv = service.ReconsiderProxyAfterError(
url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
- callback2.callback(), NULL, &network_delegate, BoundNetLog());
+ callback2.callback(), NULL, &proxy_delegate, BoundNetLog());
// ReconsiderProxyAfterError returns error indicating nothing left.
EXPECT_EQ(ERR_FAILED, rv);
EXPECT_TRUE(info.is_empty());
}
// Test that if the execution of the PAC script fails (i.e. javascript runtime
// error), and the PAC settings are non-mandatory, that we fall-back to direct.
TEST_F(ProxyServiceTest, PAC_RuntimeError) {
MockProxyConfigService* config_service =
new MockProxyConfigService("http://foopy/proxy.pac");
@@ -683,45 +715,45 @@ TEST_F(ProxyServiceTest, PAC_FailoverAfterDirect) {
// Fallback 1.
TestCompletionCallback callback2;
rv = service.ReconsiderProxyAfterError(
url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
callback2.callback(), NULL, NULL, BoundNetLog());
EXPECT_EQ(OK, rv);
EXPECT_FALSE(info.is_direct());
EXPECT_EQ("foobar:10", info.proxy_server().ToURI());
// Fallback 2.
- NetworkDelegateImpl network_delegate;
+ TestResolveProxyDelegate proxy_delegate;
ProxyServer expected_proxy_server3 = info.proxy_server();
TestCompletionCallback callback3;
rv = service.ReconsiderProxyAfterError(
url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
- callback3.callback(), NULL, &network_delegate, BoundNetLog());
+ callback3.callback(), NULL, &proxy_delegate, BoundNetLog());
EXPECT_EQ(OK, rv);
EXPECT_TRUE(info.is_direct());
// Fallback 3.
ProxyServer expected_proxy_server4 = info.proxy_server();
TestCompletionCallback callback4;
rv = service.ReconsiderProxyAfterError(
url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
- callback4.callback(), NULL, &network_delegate, BoundNetLog());
+ callback4.callback(), NULL, &proxy_delegate, BoundNetLog());
EXPECT_EQ(OK, rv);
EXPECT_FALSE(info.is_direct());
EXPECT_EQ("foobar:20", info.proxy_server().ToURI());
// Fallback 4 -- Nothing to fall back to!
ProxyServer expected_proxy_server5 = info.proxy_server();
TestCompletionCallback callback5;
rv = service.ReconsiderProxyAfterError(
url, LOAD_NORMAL, ERR_PROXY_CONNECTION_FAILED, &info,
- callback5.callback(), NULL, &network_delegate, BoundNetLog());
+ callback5.callback(), NULL, &proxy_delegate, BoundNetLog());
EXPECT_EQ(ERR_FAILED, rv);
EXPECT_TRUE(info.is_empty());
}
TEST_F(ProxyServiceTest, PAC_ConfigSourcePropagates) {
// Test whether the ProxyConfigSource set by the ProxyConfigService is applied
// to ProxyInfo after the proxy is resolved via a PAC script.
ProxyConfig config =
ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac"));
config.set_source(PROXY_CONFIG_SOURCE_TEST);
@@ -1168,21 +1200,21 @@ TEST_F(ProxyServiceTest, ProxyFallback) {
EXPECT_EQ(OK, rv);
// Proxy times should not have been modified by fallback.
EXPECT_EQ(proxy_resolve_start_time, info.proxy_resolve_start_time());
EXPECT_EQ(proxy_resolve_end_time, info.proxy_resolve_end_time());
// The second proxy should be specified.
EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI());
// Report back that the second proxy worked. This will globally mark the
// first proxy as bad.
- TestProxyFallbackNetworkDelegate test_delegate;
+ TestProxyFallbackProxyDelegate test_delegate;
service.ReportSuccess(info, &test_delegate);
EXPECT_EQ("foopy1:8080", test_delegate.proxy_server().ToURI());
EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED,
test_delegate.proxy_fallback_net_error());
TestCompletionCallback callback3;
rv = service.ResolveProxy(url, LOAD_NORMAL, &info, callback3.callback(), NULL,
NULL, BoundNetLog());
EXPECT_EQ(ERR_IO_PENDING, rv);

Powered by Google App Engine
This is Rietveld 408576698