1 // Copyright 2016 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef NET_BASE_TEST_PROXY_DELEGATE_H_ 6 #define NET_BASE_TEST_PROXY_DELEGATE_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/memory/scoped_refptr.h" 12 #include "net/base/proxy_chain.h" 13 #include "net/base/proxy_delegate.h" 14 15 class GURL; 16 17 namespace net { 18 19 class ProxyInfo; 20 21 class TestProxyDelegate : public ProxyDelegate { 22 public: 23 TestProxyDelegate(); 24 ~TestProxyDelegate() override; 25 26 constexpr static char kTestHeaderName[] = "Foo"; 27 // Note: `kTestSpdyHeaderName` should be a lowercase version of 28 // `kTestHeaderName`. 29 constexpr static char kTestSpdyHeaderName[] = "foo"; 30 on_before_tunnel_request_called()31 bool on_before_tunnel_request_called() const { 32 return on_before_tunnel_request_called_; 33 } 34 on_tunnel_headers_received_call_count()35 size_t on_tunnel_headers_received_call_count() { 36 return on_tunnel_headers_received_headers_.size(); 37 } 38 39 void VerifyOnTunnelHeadersReceived(const ProxyChain& proxy_chain, 40 size_t chain_index, 41 const std::string& response_header_name, 42 const std::string& response_header_value, 43 size_t call_index = 0) const; 44 45 // ProxyDelegate implementation: 46 void OnResolveProxy(const GURL& url, 47 const NetworkAnonymizationKey& network_anonymization_key, 48 const std::string& method, 49 const ProxyRetryInfoMap& proxy_retry_info, 50 ProxyInfo* result) override; 51 void OnFallback(const ProxyChain& bad_chain, int net_error) override; 52 void OnBeforeTunnelRequest(const ProxyChain& proxy_chain, 53 size_t chain_index, 54 HttpRequestHeaders* extra_headers) override; 55 Error OnTunnelHeadersReceived( 56 const ProxyChain& proxy_chain, 57 size_t chain_index, 58 const HttpResponseHeaders& response_headers) override; 59 60 private: 61 bool on_before_tunnel_request_called_ = false; 62 std::vector<ProxyChain> on_tunnel_headers_received_proxy_chains_; 63 std::vector<size_t> on_tunnel_headers_received_chain_indices_; 64 std::vector<scoped_refptr<HttpResponseHeaders>> 65 on_tunnel_headers_received_headers_; 66 }; 67 68 } // namespace net 69 70 #endif // NET_BASE_TEST_PROXY_DELEGATE_H_ 71