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