Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / net / base / layered_network_delegate.h
blob410dce11cd13b356750bdd4bef0fb5d1b844045a
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef NET_BASE_LAYERED_NETWORK_DELEGATE_H_
6 #define NET_BASE_LAYERED_NETWORK_DELEGATE_H_
8 #include "base/memory/scoped_ptr.h"
9 #include "base/strings/string16.h"
10 #include "net/base/completion_callback.h"
11 #include "net/base/network_delegate.h"
12 #include "net/cookies/canonical_cookie.h"
14 class GURL;
16 namespace base {
17 class FilePath;
20 namespace net {
22 class CookieOptions;
23 class HttpRequestHeaders;
24 class HttpResponseHeaders;
25 class ProxyInfo;
26 class ProxyServer;
27 class ProxyService;
28 class URLRequest;
30 // WrappingNetworkDelegate takes a |network_delegate| and extends it. When
31 // On*() is called, the On*Internal() method of this is first called and then
32 // the On*() of |network_delegate| is called. On*Internal() methods have no
33 // return values, and cannot prevent calling into the nested network delegate.
34 class NET_EXPORT LayeredNetworkDelegate : public NetworkDelegate {
35 public:
36 explicit LayeredNetworkDelegate(
37 scoped_ptr<NetworkDelegate> nested_network_delegate);
38 ~LayeredNetworkDelegate() override;
40 // NetworkDelegate implementation:
41 int OnBeforeURLRequest(URLRequest* request,
42 const CompletionCallback& callback,
43 GURL* new_url) final;
44 void OnResolveProxy(const GURL& url,
45 int load_flags,
46 const ProxyService& proxy_service,
47 ProxyInfo* result) final;
48 void OnProxyFallback(const ProxyServer& bad_proxy, int net_error) final;
49 int OnBeforeSendHeaders(URLRequest* request,
50 const CompletionCallback& callback,
51 HttpRequestHeaders* headers) final;
52 void OnBeforeSendProxyHeaders(URLRequest* request,
53 const ProxyInfo& proxy_info,
54 HttpRequestHeaders* headers) final;
55 void OnSendHeaders(URLRequest* request,
56 const HttpRequestHeaders& headers) final;
57 int OnHeadersReceived(
58 URLRequest* request,
59 const CompletionCallback& callback,
60 const HttpResponseHeaders* original_response_headers,
61 scoped_refptr<HttpResponseHeaders>* override_response_headers,
62 GURL* allowed_unsafe_redirect_url) final;
63 void OnBeforeRedirect(URLRequest* request, const GURL& new_location) final;
64 void OnResponseStarted(URLRequest* request) final;
65 void OnRawBytesRead(const URLRequest& request, int bytes_read) final;
66 void OnCompleted(URLRequest* request, bool started) final;
67 void OnURLRequestDestroyed(URLRequest* request) final;
68 void OnPACScriptError(int line_number, const base::string16& error) final;
69 AuthRequiredResponse OnAuthRequired(URLRequest* request,
70 const AuthChallengeInfo& auth_info,
71 const AuthCallback& callback,
72 AuthCredentials* credentials) final;
73 bool OnCanGetCookies(const URLRequest& request,
74 const CookieList& cookie_list) final;
75 bool OnCanSetCookie(const URLRequest& request,
76 const std::string& cookie_line,
77 CookieOptions* options) final;
78 bool OnCanAccessFile(const URLRequest& request,
79 const base::FilePath& path) const final;
80 bool OnCanEnablePrivacyMode(const GURL& url,
81 const GURL& first_party_for_cookies) const final;
82 bool OnFirstPartyOnlyCookieExperimentEnabled() const final;
83 bool OnCancelURLRequestWithPolicyViolatingReferrerHeader(
84 const URLRequest& request,
85 const GURL& target_url,
86 const GURL& referrer_url) const final;
88 protected:
89 virtual void OnBeforeURLRequestInternal(URLRequest* request,
90 const CompletionCallback& callback,
91 GURL* new_url);
93 virtual void OnResolveProxyInternal(const GURL& url,
94 int load_flags,
95 const ProxyService& proxy_service,
96 ProxyInfo* result);
98 virtual void OnProxyFallbackInternal(const ProxyServer& bad_proxy,
99 int net_error);
101 virtual void OnBeforeSendHeadersInternal(URLRequest* request,
102 const CompletionCallback& callback,
103 HttpRequestHeaders* headers);
105 virtual void OnBeforeSendProxyHeadersInternal(URLRequest* request,
106 const ProxyInfo& proxy_info,
107 HttpRequestHeaders* headers);
109 virtual void OnSendHeadersInternal(URLRequest* request,
110 const HttpRequestHeaders& headers);
112 virtual void OnHeadersReceivedInternal(
113 URLRequest* request,
114 const CompletionCallback& callback,
115 const HttpResponseHeaders* original_response_headers,
116 scoped_refptr<HttpResponseHeaders>* override_response_headers,
117 GURL* allowed_unsafe_redirect_url);
119 virtual void OnBeforeRedirectInternal(URLRequest* request,
120 const GURL& new_location);
122 virtual void OnResponseStartedInternal(URLRequest* request);
124 virtual void OnRawBytesReadInternal(const URLRequest& request,
125 int bytes_read);
127 virtual void OnCompletedInternal(URLRequest* request, bool started);
129 virtual void OnURLRequestDestroyedInternal(URLRequest* request);
131 virtual void OnPACScriptErrorInternal(int line_number,
132 const base::string16& error);
134 virtual void OnCanGetCookiesInternal(const URLRequest& request,
135 const CookieList& cookie_list);
137 virtual void OnCanSetCookieInternal(const URLRequest& request,
138 const std::string& cookie_line,
139 CookieOptions* options);
141 virtual void OnAuthRequiredInternal(URLRequest* request,
142 const AuthChallengeInfo& auth_info,
143 const AuthCallback& callback,
144 AuthCredentials* credentials);
146 virtual void OnCanAccessFileInternal(const URLRequest& request,
147 const base::FilePath& path) const;
149 virtual void OnCanEnablePrivacyModeInternal(
150 const GURL& url,
151 const GURL& first_party_for_cookies) const;
153 virtual void OnFirstPartyOnlyCookieExperimentEnabledInternal() const;
155 virtual void OnCancelURLRequestWithPolicyViolatingReferrerHeaderInternal(
156 const URLRequest& request,
157 const GURL& target_url,
158 const GURL& referrer_url) const;
160 private:
161 scoped_ptr<NetworkDelegate> nested_network_delegate_;
164 } // namespace net
166 #endif // NET_BASE_LAYERED_NETWORK_DELEGATE_H_