xref: /aosp_15_r20/external/cronet/net/base/network_delegate_impl.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2014 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_NETWORK_DELEGATE_IMPL_H_
6 #define NET_BASE_NETWORK_DELEGATE_IMPL_H_
7 
8 #include <stdint.h>
9 
10 #include <optional>
11 #include <set>
12 #include <string>
13 
14 #include "net/base/completion_once_callback.h"
15 #include "net/base/net_export.h"
16 #include "net/base/network_delegate.h"
17 #include "net/cookies/canonical_cookie.h"
18 #include "net/cookies/cookie_setting_override.h"
19 #include "net/first_party_sets/first_party_set_metadata.h"
20 #include "net/first_party_sets/first_party_sets_cache_filter.h"
21 #include "net/proxy_resolution/proxy_retry_info.h"
22 
23 class GURL;
24 
25 namespace url {
26 class Origin;
27 }
28 
29 namespace net {
30 
31 class CookieOptions;
32 class CookieInclusionStatus;
33 class HttpRequestHeaders;
34 class HttpResponseHeaders;
35 class URLRequest;
36 
37 class NET_EXPORT NetworkDelegateImpl : public NetworkDelegate {
38  public:
39   NetworkDelegateImpl() = default;
40   NetworkDelegateImpl(const NetworkDelegateImpl&) = delete;
41   NetworkDelegateImpl& operator=(const NetworkDelegateImpl&) = delete;
42   ~NetworkDelegateImpl() override = default;
43 
44  private:
45   int OnBeforeURLRequest(URLRequest* request,
46                          CompletionOnceCallback callback,
47                          GURL* new_url) override;
48 
49   int OnBeforeStartTransaction(
50       URLRequest* request,
51       const HttpRequestHeaders& headers,
52       OnBeforeStartTransactionCallback callback) override;
53 
54   int OnHeadersReceived(
55       URLRequest* request,
56       CompletionOnceCallback callback,
57       const HttpResponseHeaders* original_response_headers,
58       scoped_refptr<HttpResponseHeaders>* override_response_headers,
59       const IPEndPoint& endpoint,
60       std::optional<GURL>* preserve_fragment_on_redirect_url) override;
61 
62   void OnBeforeRedirect(URLRequest* request, const GURL& new_location) override;
63 
64   void OnResponseStarted(URLRequest* request, int net_error) override;
65 
66   void OnCompleted(URLRequest* request, bool started, int net_error) override;
67 
68   void OnURLRequestDestroyed(URLRequest* request) override;
69 
70   void OnPACScriptError(int line_number, const std::u16string& error) override;
71 
72   bool OnAnnotateAndMoveUserBlockedCookies(
73       const URLRequest& request,
74       const net::FirstPartySetMetadata& first_party_set_metadata,
75       net::CookieAccessResultList& maybe_included_cookies,
76       net::CookieAccessResultList& excluded_cookies) override;
77 
78   bool OnCanSetCookie(
79       const URLRequest& request,
80       const net::CanonicalCookie& cookie,
81       CookieOptions* options,
82       const net::FirstPartySetMetadata& first_party_set_metadata,
83       CookieInclusionStatus* inclusion_status) override;
84 
85   NetworkDelegate::PrivacySetting OnForcePrivacyMode(
86       const URLRequest& request) const override;
87 
88   bool OnCancelURLRequestWithPolicyViolatingReferrerHeader(
89       const URLRequest& request,
90       const GURL& target_url,
91       const GURL& referrer_url) const override;
92 
93   bool OnCanQueueReportingReport(const url::Origin& origin) const override;
94 
95   void OnCanSendReportingReports(std::set<url::Origin> origins,
96                                  base::OnceCallback<void(std::set<url::Origin>)>
97                                      result_callback) const override;
98 
99   bool OnCanSetReportingClient(const url::Origin& origin,
100                                const GURL& endpoint) const override;
101 
102   bool OnCanUseReportingClient(const url::Origin& origin,
103                                const GURL& endpoint) const override;
104 };
105 
106 }  // namespace net
107 
108 #endif  // NET_BASE_NETWORK_DELEGATE_IMPL_H_
109