123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- // Copyright 2018 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef SERVICES_NETWORK_NETWORK_SERVICE_NETWORK_DELEGATE_H_
- #define SERVICES_NETWORK_NETWORK_SERVICE_NETWORK_DELEGATE_H_
- #include "base/component_export.h"
- #include "base/memory/raw_ptr.h"
- #include "mojo/public/cpp/bindings/pending_remote.h"
- #include "mojo/public/cpp/bindings/remote.h"
- #include "net/base/completion_once_callback.h"
- #include "net/base/network_delegate_impl.h"
- #include "net/cookies/same_party_context.h"
- #include "services/network/cookie_settings.h"
- #include "services/network/network_context.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- namespace net {
- class SiteForCookies;
- } // namespace net
- namespace network {
- // TODO(mmenke): Look into merging this with URLLoader, and removing the
- // NetworkDelegate interface.
- class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkServiceNetworkDelegate
- : public net::NetworkDelegateImpl {
- public:
- // |network_context| is guaranteed to outlive this class.
- NetworkServiceNetworkDelegate(
- bool enable_referrers,
- bool validate_referrer_policy_on_initial_request,
- mojo::PendingRemote<mojom::ProxyErrorClient> proxy_error_client_remote,
- NetworkContext* network_context);
- NetworkServiceNetworkDelegate(const NetworkServiceNetworkDelegate&) = delete;
- NetworkServiceNetworkDelegate& operator=(
- const NetworkServiceNetworkDelegate&) = delete;
- ~NetworkServiceNetworkDelegate() override;
- void set_enable_referrers(bool enable_referrers) {
- enable_referrers_ = enable_referrers;
- }
- private:
- using QueryReason = CookieSettings::QueryReason;
- // net::NetworkDelegateImpl implementation.
- int OnBeforeURLRequest(net::URLRequest* request,
- net::CompletionOnceCallback callback,
- GURL* new_url) override;
- int OnBeforeStartTransaction(
- net::URLRequest* request,
- const net::HttpRequestHeaders& headers,
- OnBeforeStartTransactionCallback callback) override;
- int OnHeadersReceived(
- net::URLRequest* request,
- net::CompletionOnceCallback callback,
- const net::HttpResponseHeaders* original_response_headers,
- scoped_refptr<net::HttpResponseHeaders>* override_response_headers,
- const net::IPEndPoint& endpoint,
- absl::optional<GURL>* preserve_fragment_on_redirect_url) override;
- void OnBeforeRedirect(net::URLRequest* request,
- const GURL& new_location) override;
- void OnResponseStarted(net::URLRequest* request, int net_error) override;
- void OnCompleted(net::URLRequest* request,
- bool started,
- int net_error) override;
- void OnPACScriptError(int line_number, const std::u16string& error) override;
- bool OnAnnotateAndMoveUserBlockedCookies(
- const net::URLRequest& request,
- net::CookieAccessResultList& maybe_included_cookies,
- net::CookieAccessResultList& excluded_cookies) override;
- bool OnCanSetCookie(const net::URLRequest& request,
- const net::CanonicalCookie& cookie,
- net::CookieOptions* options) override;
- net::NetworkDelegate::PrivacySetting OnForcePrivacyMode(
- const GURL& url,
- const net::SiteForCookies& site_for_cookies,
- const absl::optional<url::Origin>& top_frame_origin,
- net::SamePartyContext::Type same_party_context_type) const override;
- bool OnCancelURLRequestWithPolicyViolatingReferrerHeader(
- const net::URLRequest& request,
- const GURL& target_url,
- const GURL& referrer_url) const override;
- bool OnCanQueueReportingReport(const url::Origin& origin) const override;
- void OnCanSendReportingReports(std::set<url::Origin> origins,
- base::OnceCallback<void(std::set<url::Origin>)>
- result_callback) const override;
- bool OnCanSetReportingClient(const url::Origin& origin,
- const GURL& endpoint) const override;
- bool OnCanUseReportingClient(const url::Origin& origin,
- const GURL& endpoint) const override;
- int HandleClearSiteDataHeader(
- net::URLRequest* request,
- net::CompletionOnceCallback callback,
- const net::HttpResponseHeaders* original_response_headers);
- void FinishedClearSiteData(base::WeakPtr<net::URLRequest> request,
- net::CompletionOnceCallback callback);
- void FinishedCanSendReportingReports(
- base::OnceCallback<void(std::set<url::Origin>)> result_callback,
- const std::vector<url::Origin>& origins);
- void ForwardProxyErrors(int net_error);
- // Truncates the given request's referrer if required by
- // related configuration (for instance, the enable_referrers_
- // attribute or pertinent features/flags)
- void MaybeTruncateReferrer(net::URLRequest* request,
- const GURL& effective_url);
- bool enable_referrers_;
- bool validate_referrer_policy_on_initial_request_;
- mojo::Remote<mojom::ProxyErrorClient> proxy_error_client_;
- raw_ptr<NetworkContext> network_context_;
- mutable base::WeakPtrFactory<NetworkServiceNetworkDelegate> weak_ptr_factory_{
- this};
- };
- } // namespace network
- #endif // SERVICES_NETWORK_NETWORK_SERVICE_NETWORK_DELEGATE_H_
|