#include "content/browser/devtools/protocol/network_handler.h"
#include <stddef.h>
#include <stdint.h>
#include <memory>
#include <string_view>
#include <utility>
#include "base/barrier_closure.h"
#include "base/base64.h"
#include "base/command_line.h"
#include "base/containers/contains.h"
#include "base/containers/queue.h"
#include "base/containers/span.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/i18n/i18n_constants.h"
#include "base/i18n/icu_string_conversions.h"
#include "base/memory/raw_ptr.h"
#include "base/process/process_handle.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "base/time/time.h"
#include "content/browser/background_sync/background_sync_manager.h"
#include "content/browser/devtools/devtools_agent_host_impl.h"
#include "content/browser/devtools/devtools_io_context.h"
#include "content/browser/devtools/devtools_stream_file.h"
#include "content/browser/devtools/devtools_stream_pipe.h"
#include "content/browser/devtools/devtools_url_loader_interceptor.h"
#include "content/browser/devtools/protocol/devtools_network_resource_loader.h"
#include "content/browser/devtools/protocol/handler_helpers.h"
#include "content/browser/devtools/protocol/network.h"
#include "content/browser/devtools/protocol/page.h"
#include "content/browser/devtools/protocol/security.h"
#include "content/browser/devtools/render_frame_devtools_agent_host.h"
#include "content/browser/devtools/service_worker_devtools_agent_host.h"
#include "content/browser/devtools/service_worker_devtools_manager.h"
#include "content/browser/loader/url_loader_factory_utils.h"
#include "content/browser/renderer_host/frame_tree_node.h"
#include "content/browser/renderer_host/navigation_request.h"
#include "content/browser/renderer_host/render_frame_host_impl.h"
#include "content/browser/storage_partition_impl.h"
#include "content/browser/url_loader_factory_params_helper.h"
#include "content/browser/web_package/signed_exchange_envelope.h"
#include "content/browser/web_package/signed_exchange_error.h"
#include "content/common/web_package/signed_exchange_utils.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/browsing_data_remover.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/global_request_id.h"
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/network_service_instance.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/resource_context.h"
#include "content/public/browser/service_worker_context.h"
#include "content/public/browser/site_instance.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_client.h"
#include "content/public/common/content_features.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "net/base/host_port_pair.h"
#include "net/base/ip_endpoint.h"
#include "net/base/net_errors.h"
#include "net/base/upload_bytes_element_reader.h"
#include "net/cert/ct_policy_status.h"
#include "net/cert/ct_sct_to_string.h"
#include "net/cert/x509_certificate.h"
#include "net/cert/x509_util.h"
#include "net/cookies/canonical_cookie.h"
#include "net/cookies/cookie_inclusion_status.h"
#include "net/cookies/cookie_partition_key.h"
#include "net/cookies/cookie_util.h"
#include "net/http/http_response_headers.h"
#include "net/http/http_status_code.h"
#include "net/http/http_util.h"
#include "net/ssl/ssl_cipher_suite_names.h"
#include "net/ssl/ssl_connection_status_flags.h"
#include "net/url_request/referrer_policy.h"
#include "services/network/public/cpp/data_element.h"
#include "services/network/public/cpp/devtools_observer_util.h"
#include "services/network/public/cpp/features.h"
#include "services/network/public/cpp/is_potentially_trustworthy.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/cpp/url_loader_completion_status.h"
#include "services/network/public/mojom/client_security_state.mojom-shared.h"
#include "services/network/public/mojom/content_security_policy.mojom.h"
#include "services/network/public/mojom/devtools_observer.mojom.h"
#include "services/network/public/mojom/http_raw_headers.mojom.h"
#include "services/network/public/mojom/service_worker_router_info.mojom.h"
#include "services/network/public/mojom/url_response_head.mojom.h"
#include "third_party/blink/public/common/loader/referrer_utils.h"
#include "third_party/blink/public/mojom/navigation/navigation_params.mojom.h"
#include "third_party/blink/public/platform/resource_request_blocked_reason.h"
#include "third_party/boringssl/src/include/openssl/ssl.h"
#include "url/third_party/mozilla/url_parse.h"
namespace content {
namespace protocol {
namespace {
GetCookiesCallback;
GetAllCookiesCallback;
SetCookieCallback;
SetCookiesCallback;
DeleteCookiesCallback;
ClearBrowserCookiesCallback;
static constexpr char kInvalidCookieFields[] = …;
Network::CertificateTransparencyCompliance SerializeCTPolicyCompliance(
net::ct::CTPolicyCompliance ct_compliance) { … }
namespace {
Network::CookiePriority BuildCookiePriority(net::CookiePriority priority) { … }
Network::CookieSourceScheme BuildCookieSourceScheme(
net::CookieSourceScheme scheme) { … }
std::optional<Network::CookieSameSite> BuildCookieSameSite(
net::CookieSameSite same_site) { … }
std::unique_ptr<Network::CookiePartitionKey> BuildCookiePartitionKey(
const std::string& top_level_site,
bool has_cross_site_ancestor) { … }
}
std::unique_ptr<Network::Cookie> BuildCookie(
const net::CanonicalCookie& cookie) { … }
class CookieRetrieverNetworkService
: public base::RefCounted<CookieRetrieverNetworkService> { … };
namespace {
std::vector<net::CanonicalCookie> FilterCookies(
const std::vector<net::CanonicalCookie>& cookies,
const std::string& name,
const std::string& normalized_domain,
const std::string& path,
Maybe<Network::CookiePartitionKey> partition_key) { … }
void DeleteFilteredCookies(network::mojom::CookieManager* cookie_manager,
const std::string& name,
const std::string& normalized_domain,
const std::string& path,
Maybe<Network::CookiePartitionKey> partition_key,
std::unique_ptr<DeleteCookiesCallback> callback,
const std::vector<net::CanonicalCookie>& cookies) { … }
absl::variant<net::CookieSourceScheme, Response> GetSourceSchemeFromProtocol(
const std::string& source_scheme) { … }
absl::variant<int, Response> GetCookieSourcePort(int source_port) { … }
}
absl::variant<std::unique_ptr<net::CanonicalCookie>, Response>
MakeCookieFromProtocolValues(
const std::string& name,
const std::string& value,
const std::string& url_spec,
const std::string& domain,
const std::string& path,
bool secure,
bool http_only,
const std::string& same_site,
double expires,
const std::string& priority,
const Maybe<std::string>& source_scheme,
const Maybe<int>& source_port,
Maybe<Network::CookiePartitionKey>& partition_key) { … }
std::vector<GURL> ComputeCookieURLs(RenderFrameHostImpl* frame_host,
Maybe<Array<String>>& protocol_urls) { … }
String resourcePriority(net::RequestPriority priority) { … }
String referrerPolicy(network::mojom::ReferrerPolicy referrer_policy) { … }
String referrerPolicy(net::ReferrerPolicy referrer_policy) { … }
String securityState(const GURL& url, const net::CertStatus& cert_status) { … }
std::optional<DevToolsURLLoaderInterceptor::InterceptionStage>
ToInterceptorStage(
const protocol::Network::InterceptionStage& interceptor_stage) { … }
double timeDelta(base::TimeTicks time,
base::TimeTicks start,
double invalid_value = -1) { … }
std::unique_ptr<Network::ResourceTiming> GetTiming(
const net::LoadTimingInfo& load_timing) { … }
std::unique_ptr<Network::ConnectTiming> GetConnectTiming(
const base::TimeTicks timestamp) { … }
std::unique_ptr<base::Value::Dict> GetRawHeaders(
const std::vector<network::mojom::HttpRawHeaderPairPtr>& headers) { … }
String GetProtocol(const GURL& url,
const network::mojom::URLResponseHeadDevToolsInfo& info) { … }
bool GetPostData(
const network::ResourceRequestBody& request_body,
protocol::Array<protocol::Network::PostDataEntry>* data_entries,
std::string* result) { … }
String SignedExchangeErrorErrorFieldToString(SignedExchangeError::Field field) { … }
std::unique_ptr<Network::SignedExchangeError> BuildSignedExchangeError(
const SignedExchangeError& error) { … }
std::unique_ptr<Array<Network::SignedExchangeError>> BuildSignedExchangeErrors(
const std::vector<SignedExchangeError>& errors) { … }
std::unique_ptr<Array<Network::SetCookieBlockedReason>>
GetProtocolBlockedSetCookieReason(net::CookieInclusionStatus status) { … }
std::unique_ptr<Array<Network::CookieBlockedReason>>
GetProtocolBlockedCookieReason(net::CookieInclusionStatus status) { … }
std::unique_ptr<Array<Network::BlockedSetCookieWithReason>>
BuildProtocolBlockedSetCookies(
const net::CookieAndLineAccessResultList& net_list) { … }
Network::CookieExemptionReason GetProtocolCookieExemptionReason(
net::CookieInclusionStatus status) { … }
std::unique_ptr<Array<Network::ExemptedSetCookieWithReason>>
BuildProtocolExemptedSetCookies(
const net::CookieAndLineAccessResultList& net_list) { … }
std::pair<std::unique_ptr<Array<Network::CookieBlockedReason>>,
Network::CookieExemptionReason>
GetProtocolAssociatedCookie(net::CookieInclusionStatus status) { … }
std::unique_ptr<Array<Network::AssociatedCookie>>
BuildProtocolAssociatedCookies(const net::CookieAccessResultList& net_list) { … }
SourceTypeEnum;
ContentEncodingEnum;
std::optional<SourceTypeEnum> SourceTypeFromProtocol(
const protocol::Network::ContentEncoding& encoding) { … }
}
class BackgroundSyncRestorer { … };
NetworkHandler::NetworkHandler(
const std::string& host_id,
const base::UnguessableToken& devtools_token,
DevToolsIOContext* io_context,
base::RepeatingClosure update_loader_factories_callback,
DevToolsAgentHostClient* client)
: … { … }
NetworkHandler::~NetworkHandler() = default;
std::unique_ptr<Array<Network::Cookie>> NetworkHandler::BuildCookieArray(
const std::vector<net::CanonicalCookie>& cookie_list) { … }
net::Error NetworkHandler::NetErrorFromString(const std::string& error,
bool* ok) { … }
String NetworkHandler::NetErrorToString(int net_error) { … }
bool NetworkHandler::AddInterceptedResourceType(
const std::string& resource_type,
base::flat_set<blink::mojom::ResourceType>* intercepted_resource_types) { … }
const char* NetworkHandler::ResourceTypeToString(
blink::mojom::ResourceType resource_type) { … }
std::vector<NetworkHandler*> NetworkHandler::ForAgentHost(
DevToolsAgentHostImpl* host) { … }
void NetworkHandler::Wire(UberDispatcher* dispatcher) { … }
void NetworkHandler::SetRenderer(int render_process_host_id,
RenderFrameHostImpl* frame_host) { … }
Response NetworkHandler::Enable(Maybe<int> max_total_size,
Maybe<int> max_resource_size,
Maybe<int> max_post_data_size) { … }
Response NetworkHandler::Disable() { … }
#if BUILDFLAG(ENABLE_REPORTING)
namespace {
String BuildReportStatus(const net::ReportingReport::Status status) { … }
std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) { … }
}
std::unique_ptr<protocol::Network::ReportingApiReport>
NetworkHandler::BuildProtocolReport(const net::ReportingReport& report) { … }
void NetworkHandler::OnReportAdded(const net::ReportingReport& report) { … }
void NetworkHandler::OnReportUpdated(const net::ReportingReport& report) { … }
std::unique_ptr<protocol::Network::ReportingApiEndpoint>
NetworkHandler::BuildProtocolEndpoint(const net::ReportingEndpoint& endpoint) { … }
void NetworkHandler::OnEndpointsUpdatedForOrigin(
const std::vector<::net::ReportingEndpoint>& endpoints) { … }
Response NetworkHandler::EnableReportingApi(const bool enable) { … }
#else
Response NetworkHandler::EnableReportingApi(const bool enable) {
return Response::InternalError();
}
#endif
Response NetworkHandler::SetCacheDisabled(bool cache_disabled) { … }
Response NetworkHandler::SetAcceptedEncodings(
std::unique_ptr<Array<Network::ContentEncoding>> encodings) { … }
Response NetworkHandler::ClearAcceptedEncodingsOverride() { … }
class DevtoolsClearCacheObserver
: public content::BrowsingDataRemover::Observer { … };
void NetworkHandler::ClearBrowserCache(
std::unique_ptr<ClearBrowserCacheCallback> callback) { … }
void NetworkHandler::ClearBrowserCookies(
std::unique_ptr<ClearBrowserCookiesCallback> callback) { … }
void NetworkHandler::GetCookies(Maybe<Array<String>> protocol_urls,
std::unique_ptr<GetCookiesCallback> callback) { … }
void NetworkHandler::GetAllCookies(
std::unique_ptr<GetAllCookiesCallback> callback) { … }
void NetworkHandler::GotAllCookies(
std::unique_ptr<GetAllCookiesCallback> callback,
const std::vector<net::CanonicalCookie>& cookies) { … }
void NetworkHandler::SetCookie(const std::string& name,
const std::string& value,
Maybe<std::string> url,
Maybe<std::string> domain,
Maybe<std::string> path,
Maybe<bool> secure,
Maybe<bool> http_only,
Maybe<std::string> same_site,
Maybe<double> expires,
Maybe<std::string> priority,
Maybe<bool> same_party,
Maybe<std::string> source_scheme,
Maybe<int> source_port,
Maybe<Network::CookiePartitionKey> partition_key,
std::unique_ptr<SetCookieCallback> callback) { … }
void NetworkHandler::SetCookies(
StoragePartition* storage_partition,
std::unique_ptr<protocol::Array<Network::CookieParam>> cookies,
base::OnceCallback<void(bool)> callback) { … }
void NetworkHandler::SetCookies(
std::unique_ptr<protocol::Array<Network::CookieParam>> cookies,
std::unique_ptr<SetCookiesCallback> callback) { … }
void NetworkHandler::DeleteCookies(
const std::string& name,
Maybe<std::string> url_spec,
Maybe<std::string> domain,
Maybe<std::string> path,
Maybe<Network::CookiePartitionKey> partition_key,
std::unique_ptr<DeleteCookiesCallback> callback) { … }
Response NetworkHandler::SetExtraHTTPHeaders(
std::unique_ptr<protocol::Network::Headers> headers) { … }
Response NetworkHandler::CanEmulateNetworkConditions(bool* result) { … }
Response NetworkHandler::EmulateNetworkConditions(
bool offline,
double latency,
double download_throughput,
double upload_throughput,
Maybe<protocol::Network::ConnectionType>,
Maybe<double> packet_loss,
Maybe<int> packet_queue_length,
Maybe<bool> packet_reordering) { … }
Response NetworkHandler::SetBypassServiceWorker(bool bypass) { … }
namespace {
std::unique_ptr<protocol::Network::SecurityDetails> BuildSecurityDetails(
const net::SSLInfo& ssl_info) { … }
std::unique_ptr<base::Value::Dict> BuildResponseHeaders(
const net::HttpResponseHeaders* headers) { … }
std::unique_ptr<base::Value::Dict> BuildRequestHeaders(
const net::HttpRequestHeaders& headers,
const GURL& referrer) { … }
String BuildServiceWorkerResponseSource(
const network::mojom::URLResponseHeadDevToolsInfo& info) { … }
String BuildServiceWorkerRouterSourceType(
const network::mojom::ServiceWorkerRouterSourceType& type) { … }
String AlternateProtocolUsageToString(
net::AlternateProtocolUsage alternate_protocol_usage) { … }
std::unique_ptr<Network::Response> BuildResponse(
const GURL& url,
const network::mojom::URLResponseHeadDevToolsInfo& info) { … }
std::unique_ptr<Network::Response> BuildRedirectResponse(
std::optional<std::pair<const GURL&,
const network::mojom::URLResponseHeadDevToolsInfo&>>
redirect_info,
bool& redirect_emitted_extra_info) { … }
String blockedReason(blink::ResourceRequestBlockedReason reason) { … }
Maybe<String> GetBlockedReasonFor(
const network::URLLoaderCompletionStatus& status) { … }
String GetTrustTokenOperationType(
network::mojom::TrustTokenOperationType operation) { … }
String GetTrustTokenRefreshPolicy(
network::mojom::TrustTokenRefreshPolicy policy) { … }
std::unique_ptr<protocol::Network::TrustTokenParams> BuildTrustTokenParams(
const network::mojom::TrustTokenParams& params) { … }
}
void NetworkHandler::PrefetchRequestWillBeSent(
const std::string& request_id,
const network::ResourceRequest& request,
const GURL& initiator_url,
Maybe<std::string> frame_token,
base::TimeTicks timestamp,
std::optional<std::pair<const GURL&,
const network::mojom::URLResponseHeadDevToolsInfo&>>
redirect_info) { … }
void NetworkHandler::NavigationRequestWillBeSent(
const NavigationRequest& nav_request,
base::TimeTicks timestamp) { … }
void NetworkHandler::FencedFrameReportRequestSent(
const std::string& request_id,
const network::ResourceRequest& request,
const std::string& event_data,
base::TimeTicks timestamp) { … }
void NetworkHandler::RequestSent(
const std::string& request_id,
const std::string& loader_id,
const net::HttpRequestHeaders& request_headers,
const network::mojom::URLRequestDevToolsInfo& request_info,
const char* initiator_type,
const std::optional<GURL>& initiator_url,
const std::string& initiator_devtools_request_id,
base::TimeTicks timestamp) { … }
namespace {
String BuildCorsError(network::mojom::CorsError cors_error) { … }
}
void NetworkHandler::ResponseReceived(
const std::string& request_id,
const std::string& loader_id,
const GURL& url,
const char* resource_type,
const network::mojom::URLResponseHeadDevToolsInfo& head,
Maybe<std::string> frame_id) { … }
void NetworkHandler::LoadingComplete(
const std::string& request_id,
const char* resource_type,
const network::URLLoaderCompletionStatus& status) { … }
void NetworkHandler::FetchKeepAliveRequestWillBeSent(
const std::string& request_id,
const network::ResourceRequest& request,
const GURL& initiator_url,
Maybe<std::string> frame_token,
base::TimeTicks timestamp,
std::optional<std::pair<const GURL&,
const network::mojom::URLResponseHeadDevToolsInfo&>>
redirect_info) { … }
void NetworkHandler::OnSignedExchangeReceived(
std::optional<const base::UnguessableToken> devtools_navigation_token,
const GURL& outer_request_url,
const network::mojom::URLResponseHead& outer_response,
const std::optional<SignedExchangeEnvelope>& envelope,
const scoped_refptr<net::X509Certificate>& certificate,
const std::optional<net::SSLInfo>& ssl_info,
const std::vector<SignedExchangeError>& errors) { … }
DispatchResponse NetworkHandler::SetRequestInterception(
std::unique_ptr<protocol::Array<protocol::Network::RequestPattern>>
patterns) { … }
void NetworkHandler::ContinueInterceptedRequest(
const std::string& interception_id,
Maybe<std::string> error_reason,
Maybe<protocol::Binary> raw_response,
Maybe<std::string> url,
Maybe<std::string> method,
Maybe<std::string> post_data,
Maybe<protocol::Network::Headers> opt_headers,
Maybe<protocol::Network::AuthChallengeResponse> auth_challenge_response,
std::unique_ptr<ContinueInterceptedRequestCallback> callback) { … }
void NetworkHandler::GetResponseBodyForInterception(
const String& interception_id,
std::unique_ptr<GetResponseBodyForInterceptionCallback> callback) { … }
void NetworkHandler::BodyDataReceived(const String& request_id,
const String& body,
bool is_base64_encoded) { … }
void NetworkHandler::GetResponseBody(
const String& request_id,
std::unique_ptr<GetResponseBodyCallback> callback) { … }
void NetworkHandler::TakeResponseBodyForInterceptionAsStream(
const String& interception_id,
std::unique_ptr<TakeResponseBodyForInterceptionAsStreamCallback> callback) { … }
void NetworkHandler::OnResponseBodyPipeTaken(
std::unique_ptr<TakeResponseBodyForInterceptionAsStreamCallback> callback,
Response response,
mojo::ScopedDataPipeConsumerHandle pipe,
const std::string& mime_type) { … }
std::string NetworkHandler::ExtractFragment(const GURL& url,
std::string* fragment) { … }
std::unique_ptr<Network::Request>
NetworkHandler::CreateRequestFromResourceRequest(
const network::ResourceRequest& request,
const std::string& cookie_line,
std::vector<base::expected<std::vector<uint8_t>, std::string>>
request_bodies) { … }
bool NetworkHandler::MaybeCreateProxyForInterception(
int process_id,
StoragePartition* storage_partition,
const base::UnguessableToken& frame_token,
bool is_navigation,
bool is_download,
network::mojom::URLLoaderFactoryOverride* intercepting_factory) { … }
void NetworkHandler::ApplyOverrides(
net::HttpRequestHeaders* headers,
bool* skip_service_worker,
bool* disable_cache,
std::optional<std::vector<net::SourceStream::SourceType>>*
accepted_stream_types) { … }
void NetworkHandler::RequestIntercepted(
std::unique_ptr<InterceptedRequestInfo> info) { … }
void NetworkHandler::SetNetworkConditions(
network::mojom::NetworkConditionsPtr conditions) { … }
namespace {
protocol::Network::CrossOriginOpenerPolicyValue
makeCrossOriginOpenerPolicyValue(
network::mojom::CrossOriginOpenerPolicyValue value) { … }
protocol::Network::CrossOriginEmbedderPolicyValue
makeCrossOriginEmbedderPolicyValue(
network::mojom::CrossOriginEmbedderPolicyValue value) { … }
protocol::Network::ContentSecurityPolicySource makeContentSecurityPolicySource(
network::mojom::ContentSecurityPolicySource source) { … }
std::unique_ptr<protocol::Network::CrossOriginOpenerPolicyStatus>
makeCrossOriginOpenerPolicyStatus(
const network::CrossOriginOpenerPolicy& coop) { … }
std::unique_ptr<protocol::Network::CrossOriginEmbedderPolicyStatus>
makeCrossOriginEmbedderPolicyStatus(
const network::CrossOriginEmbedderPolicy& coep) { … }
std::unique_ptr<protocol::Array<protocol::Network::ContentSecurityPolicyStatus>>
makeContentSecurityPolicyStatus(
const std::vector<network::mojom::ContentSecurityPolicyHeader>&
csp_headers) { … }
}
DispatchResponse NetworkHandler::GetSecurityIsolationStatus(
Maybe<String> frame_id,
std::unique_ptr<protocol::Network::SecurityIsolationStatus>* out_info) { … }
void NetworkHandler::OnRequestWillBeSentExtraInfo(
const std::string& devtools_request_id,
const net::CookieAccessResultList& request_cookie_list,
const std::vector<network::mojom::HttpRawHeaderPairPtr>& request_headers,
const base::TimeTicks timestamp,
const network::mojom::ClientSecurityStatePtr& security_state,
const network::mojom::OtherPartitionInfoPtr& other_partition_info) { … }
void NetworkHandler::OnResponseReceivedExtraInfo(
const std::string& devtools_request_id,
const net::CookieAndLineAccessResultList& response_cookie_list,
const std::vector<network::mojom::HttpRawHeaderPairPtr>& response_headers,
const std::optional<std::string>& response_headers_text,
network::mojom::IPAddressSpace resource_address_space,
int32_t http_status_code,
const std::optional<net::CookiePartitionKey>& cookie_partition_key) { … }
void NetworkHandler::OnResponseReceivedEarlyHints(
const std::string& devtools_request_id,
const std::vector<network::mojom::HttpRawHeaderPairPtr>& response_headers) { … }
void NetworkHandler::OnLoadNetworkResourceFinished(
DevToolsNetworkResourceLoader* loader,
const net::HttpResponseHeaders* rh,
bool success,
int net_error,
std::string content) { … }
namespace {
mojo::PendingRemote<network::mojom::URLLoaderFactory>
CreateNetworkFactoryForDevTools(
std::string_view scheme,
RenderProcessHost* host,
int routing_id,
const url::Origin& origin,
network::mojom::URLLoaderFactoryParamsPtr params) { … }
}
void NetworkHandler::LoadNetworkResource(
Maybe<protocol::String> maybe_frame_id,
const String& url,
std::unique_ptr<protocol::Network::LoadNetworkResourceOptions> options,
std::unique_ptr<LoadNetworkResourceCallback> callback) { … }
namespace {
String GetTrustTokenOperationStatus(
network::mojom::TrustTokenOperationStatus status) { … }
}
void NetworkHandler::OnTrustTokenOperationDone(
const std::string& devtools_request_id,
const network::mojom::TrustTokenOperationResult& result) { … }
void NetworkHandler::OnSubresourceWebBundleMetadata(
const std::string& devtools_request_id,
const std::vector<GURL>& urls) { … }
void NetworkHandler::OnSubresourceWebBundleMetadataError(
const std::string& devtools_request_id,
const std::string& error_message) { … }
void NetworkHandler::OnSubresourceWebBundleInnerResponse(
const std::string& inner_request_devtools_id,
const GURL& url,
const std::optional<std::string>& bundle_request_devtools_id) { … }
void NetworkHandler::OnSubresourceWebBundleInnerResponseError(
const std::string& inner_request_devtools_id,
const GURL& url,
const std::string& error_message,
const std::optional<std::string>& bundle_request_devtools_id) { … }
void NetworkHandler::OnPolicyContainerHostUpdated() { … }
String NetworkHandler::BuildPrivateNetworkRequestPolicy(
network::mojom::PrivateNetworkRequestPolicy policy) { … }
String NetworkHandler::BuildIpAddressSpace(
network::mojom::IPAddressSpace space) { … }
std::unique_ptr<protocol::Network::ClientSecurityState>
NetworkHandler::MaybeBuildClientSecurityState(
const network::mojom::ClientSecurityStatePtr& state) { … }
std::unique_ptr<protocol::Network::CorsErrorStatus>
NetworkHandler::BuildCorsErrorStatus(const network::CorsErrorStatus& status) { … }
}
}