Commit 79340d0c authored by Clark DuVall's avatar Clark DuVall Committed by Commit Bot

Clear DRP bad proxy cache when DRP is turned off

This adds a test for clearing the bad proxy cache when DRP is turned
off, and implements that functionality with network service.

Bug: 721403
Change-Id: I12f441191de6dfb890c7a042b72a5a87f72e41aa
Reviewed-on: https://chromium-review.googlesource.com/c/1343352Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarrajendrant <rajendrant@chromium.org>
Commit-Queue: Clark DuVall <cduvall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609846}
parent 6472f2d7
...@@ -437,6 +437,23 @@ IN_PROC_BROWSER_TEST_F(DataReductionProxyFallbackBrowsertest, ...@@ -437,6 +437,23 @@ IN_PROC_BROWSER_TEST_F(DataReductionProxyFallbackBrowsertest,
EXPECT_THAT(GetBody(), kSecondaryResponse); EXPECT_THAT(GetBody(), kSecondaryResponse);
} }
IN_PROC_BROWSER_TEST_F(DataReductionProxyFallbackBrowsertest,
BadProxiesResetWhenDisabled) {
SetHeader("bypass=100");
ui_test_utils::NavigateToURL(
browser(), GURL("http://does.not.resolve/echoheader?Chrome-Proxy"));
EXPECT_THAT(GetBody(), kSecondaryResponse);
// Disabling and enabling DRP should clear the bypass.
EnableDataSaver(false);
EnableDataSaver(true);
SetHeader("");
ui_test_utils::NavigateToURL(
browser(), GURL("http://does.not.resolve/echoheader?Chrome-Proxy"));
EXPECT_THAT(GetBody(), kPrimaryResponse);
}
IN_PROC_BROWSER_TEST_F(DataReductionProxyFallbackBrowsertest, IN_PROC_BROWSER_TEST_F(DataReductionProxyFallbackBrowsertest,
NoProxyUsedWhenBlockOnceHeaderSent) { NoProxyUsedWhenBlockOnceHeaderSent) {
net::EmbeddedTestServer test_server; net::EmbeddedTestServer test_server;
......
...@@ -252,8 +252,10 @@ void DataReductionProxyIOData::SetProxyPrefs(bool enabled, bool at_startup) { ...@@ -252,8 +252,10 @@ void DataReductionProxyIOData::SetProxyPrefs(bool enabled, bool at_startup) {
// If Data Saver is disabled, reset data reduction proxy state. // If Data Saver is disabled, reset data reduction proxy state.
if (!enabled) { if (!enabled) {
// TODO(crbug.com/721403): Make DRP work with network service. if (base::FeatureList::IsEnabled(network::features::kNetworkService)) {
if (!base::FeatureList::IsEnabled(network::features::kNetworkService)) { if (proxy_config_client_)
proxy_config_client_->ClearBadProxiesCache();
} else {
net::ProxyResolutionService* proxy_resolution_service = net::ProxyResolutionService* proxy_resolution_service =
url_request_context_getter_->GetURLRequestContext() url_request_context_getter_->GetURLRequestContext()
->proxy_resolution_service(); ->proxy_resolution_service();
......
...@@ -239,6 +239,8 @@ class TestCustomProxyConfigClient ...@@ -239,6 +239,8 @@ class TestCustomProxyConfigClient
const net::ProxyList& bad_proxies, const net::ProxyList& bad_proxies,
MarkProxiesAsBadCallback callback) override {} MarkProxiesAsBadCallback callback) override {}
void ClearBadProxiesCache() override {}
network::mojom::CustomProxyConfigPtr config; network::mojom::CustomProxyConfigPtr config;
private: private:
......
...@@ -212,6 +212,10 @@ void NetworkServiceProxyDelegate::MarkProxiesAsBad( ...@@ -212,6 +212,10 @@ void NetworkServiceProxyDelegate::MarkProxiesAsBad(
std::move(callback).Run(); std::move(callback).Run();
} }
void NetworkServiceProxyDelegate::ClearBadProxiesCache() {
proxy_resolution_service_->ClearBadProxiesCache();
}
bool NetworkServiceProxyDelegate::IsInProxyConfig( bool NetworkServiceProxyDelegate::IsInProxyConfig(
const net::ProxyServer& proxy_server) const { const net::ProxyServer& proxy_server) const {
if (!proxy_server.is_valid() || proxy_server.is_direct()) if (!proxy_server.is_valid() || proxy_server.is_direct())
......
...@@ -78,6 +78,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkServiceProxyDelegate ...@@ -78,6 +78,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkServiceProxyDelegate
void MarkProxiesAsBad(base::TimeDelta bypass_duration, void MarkProxiesAsBad(base::TimeDelta bypass_duration,
const net::ProxyList& bad_proxies, const net::ProxyList& bad_proxies,
MarkProxiesAsBadCallback callback) override; MarkProxiesAsBadCallback callback) override;
void ClearBadProxiesCache() override;
mojom::CustomProxyConfigPtr proxy_config_; mojom::CustomProxyConfigPtr proxy_config_;
mojo::Binding<mojom::CustomProxyConfigClient> binding_; mojo::Binding<mojom::CustomProxyConfigClient> binding_;
......
...@@ -79,6 +79,10 @@ interface CustomProxyConfigClient { ...@@ -79,6 +79,10 @@ interface CustomProxyConfigClient {
// not layered onto the proxy resolution results for subsequent requests. // not layered onto the proxy resolution results for subsequent requests.
MarkProxiesAsBad(mojo_base.mojom.TimeDelta bypass_duration, MarkProxiesAsBad(mojo_base.mojom.TimeDelta bypass_duration,
ProxyList bad_proxies) => (); ProxyList bad_proxies) => ();
// Clears the list of bad proxy servers that has been cached in the proxy
// resolution service.
ClearBadProxiesCache();
}; };
[EnableIf=is_chromeos] [EnableIf=is_chromeos]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment