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