• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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