| // Copyright 2016 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "net/base/test_proxy_delegate.h" | |
| #include "net/proxy_resolution/proxy_info.h" | |
| #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" | |
| #include "testing/gtest/include/gtest/gtest.h" | |
| namespace net { | |
| TestProxyDelegate::TestProxyDelegate() = default; | |
| TestProxyDelegate::~TestProxyDelegate() = default; | |
| void TestProxyDelegate::OnResolveProxy( | |
| const GURL& url, | |
| const std::string& method, | |
| const ProxyRetryInfoMap& proxy_retry_info, | |
| ProxyInfo* result) { | |
| if (trusted_spdy_proxy_.is_valid()) { | |
| ProxyList new_proxy_list; | |
| for (const auto& proxy_server : result->proxy_list().GetAll()) { | |
| if (proxy_server == trusted_spdy_proxy_) { | |
| new_proxy_list.AddProxyServer(ProxyServer( | |
| proxy_server.scheme(), proxy_server.host_port_pair(), true)); | |
| } else { | |
| new_proxy_list.AddProxyServer(proxy_server); | |
| } | |
| } | |
| result->UseProxyList(new_proxy_list); | |
| result->set_traffic_annotation( | |
| MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS)); | |
| } | |
| // Only set |alternative_proxy_server_| as the alternative proxy if the | |
| // ProxyService has not marked it as bad. | |
| ProxyInfo alternative_proxy_info; | |
| alternative_proxy_info.UseProxyServer(alternative_proxy_server_); | |
| alternative_proxy_info.DeprioritizeBadProxies(proxy_retry_info); | |
| if (!alternative_proxy_info.is_empty()) | |
| result->SetAlternativeProxy(alternative_proxy_info.proxy_server()); | |
| result->set_traffic_annotation( | |
| MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS)); | |
| } | |
| void TestProxyDelegate::OnFallback(const ProxyServer& bad_proxy, | |
| int net_error) {} | |
| } // namespace net |