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,
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,
NoProxyUsedWhenBlockOnceHeaderSent) {
net::EmbeddedTestServer test_server;
......
......@@ -252,8 +252,10 @@ void DataReductionProxyIOData::SetProxyPrefs(bool enabled, bool at_startup) {
// If Data Saver is disabled, reset data reduction proxy state.
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 =
url_request_context_getter_->GetURLRequestContext()
->proxy_resolution_service();
......
......@@ -239,6 +239,8 @@ class TestCustomProxyConfigClient
const net::ProxyList& bad_proxies,
MarkProxiesAsBadCallback callback) override {}
void ClearBadProxiesCache() override {}
network::mojom::CustomProxyConfigPtr config;
private:
......
......@@ -212,6 +212,10 @@ void NetworkServiceProxyDelegate::MarkProxiesAsBad(
std::move(callback).Run();
}
void NetworkServiceProxyDelegate::ClearBadProxiesCache() {
proxy_resolution_service_->ClearBadProxiesCache();
}
bool NetworkServiceProxyDelegate::IsInProxyConfig(
const net::ProxyServer& proxy_server) const {
if (!proxy_server.is_valid() || proxy_server.is_direct())
......
......@@ -78,6 +78,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkServiceProxyDelegate
void MarkProxiesAsBad(base::TimeDelta bypass_duration,
const net::ProxyList& bad_proxies,
MarkProxiesAsBadCallback callback) override;
void ClearBadProxiesCache() override;
mojom::CustomProxyConfigPtr proxy_config_;
mojo::Binding<mojom::CustomProxyConfigClient> binding_;
......
......@@ -79,6 +79,10 @@ interface CustomProxyConfigClient {
// not layered onto the proxy resolution results for subsequent requests.
MarkProxiesAsBad(mojo_base.mojom.TimeDelta bypass_duration,
ProxyList bad_proxies) => ();
// Clears the list of bad proxy servers that has been cached in the proxy
// resolution service.
ClearBadProxiesCache();
};
[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