• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 OnBeforeRetry(URLRequest* request) override;
65 
66   void OnResponseStarted(URLRequest* request, int net_error) override;
67 
68   void OnCompleted(URLRequest* request, bool started, int net_error) override;
69 
70   void OnURLRequestDestroyed(URLRequest* request) override;
71 
72   void OnPACScriptError(int line_number, const std::u16string& error) override;
73 
74   bool OnAnnotateAndMoveUserBlockedCookies(
75       const URLRequest& request,
76       const net::FirstPartySetMetadata& first_party_set_metadata,
77       net::CookieAccessResultList& maybe_included_cookies,
78       net::CookieAccessResultList& excluded_cookies) override;
79 
80   bool OnCanSetCookie(
81       const URLRequest& request,
82       const net::CanonicalCookie& cookie,
83       CookieOptions* options,
84       const net::FirstPartySetMetadata& first_party_set_metadata,
85       CookieInclusionStatus* inclusion_status) override;
86 
87   std::optional<cookie_util::StorageAccessStatus> OnGetStorageAccessStatus(
88       const URLRequest& request,
89       base::optional_ref<const RedirectInfo> redirect_info) const override;
90 
91   bool OnIsStorageAccessHeaderEnabled(const url::Origin* top_frame_origin,
92                                       const GURL& url) const override;
93 
94   NetworkDelegate::PrivacySetting OnForcePrivacyMode(
95       const URLRequest& request) const override;
96 
97   bool OnCancelURLRequestWithPolicyViolatingReferrerHeader(
98       const URLRequest& request,
99       const GURL& target_url,
100       const GURL& referrer_url) const override;
101 
102   bool OnCanQueueReportingReport(const url::Origin& origin) const override;
103 
104   void OnCanSendReportingReports(std::set<url::Origin> origins,
105                                  base::OnceCallback<void(std::set<url::Origin>)>
106                                      result_callback) const override;
107 
108   bool OnCanSetReportingClient(const url::Origin& origin,
109                                const GURL& endpoint) const override;
110 
111   bool OnCanUseReportingClient(const url::Origin& origin,
112                                const GURL& endpoint) const override;
113 };
114 
115 }  // namespace net
116 
117 #endif  // NET_BASE_NETWORK_DELEGATE_IMPL_H_
118