chromium/net/url_request/url_request_job.cc

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "net/url_request/url_request_job.h"

#include <utility>

#include "base/compiler_specific.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/location.h"
#include "base/memory/raw_ptr.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_number_conversions.h"
#include "base/task/single_thread_task_runner.h"
#include "base/values.h"
#include "net/base/auth.h"
#include "net/base/features.h"
#include "net/base/io_buffer.h"
#include "net/base/load_flags.h"
#include "net/base/load_states.h"
#include "net/base/net_errors.h"
#include "net/base/network_delegate.h"
#include "net/base/proxy_chain.h"
#include "net/base/schemeful_site.h"
#include "net/cert/x509_certificate.h"
#include "net/cookies/cookie_setting_override.h"
#include "net/cookies/cookie_util.h"
#include "net/log/net_log.h"
#include "net/log/net_log_capture_mode.h"
#include "net/log/net_log_event_type.h"
#include "net/log/net_log_with_source.h"
#include "net/nqe/network_quality_estimator.h"
#include "net/ssl/ssl_private_key.h"
#include "net/url_request/redirect_util.h"
#include "net/url_request/url_request_context.h"

namespace net {

namespace {

// Callback for TYPE_URL_REQUEST_FILTERS_SET net-internals event.
base::Value::Dict SourceStreamSetParams(SourceStream* source_stream) {}

}  // namespace

// Each SourceStreams own the previous SourceStream in the chain, but the
// ultimate source is URLRequestJob, which has other ownership semantics, so
// this class is a proxy for URLRequestJob that is owned by the first stream
// (in dataflow order).
class URLRequestJob::URLRequestJobSourceStream : public SourceStream {};

URLRequestJob::URLRequestJob(URLRequest* request)
    :{}

URLRequestJob::~URLRequestJob() = default;

void URLRequestJob::SetUpload(UploadDataStream* upload) {}

void URLRequestJob::SetExtraRequestHeaders(const HttpRequestHeaders& headers) {}

void URLRequestJob::SetPriority(RequestPriority priority) {}

void URLRequestJob::Kill() {}

// This method passes reads down the filter chain, where they eventually end up
// at URLRequestJobSourceStream::Read, which calls back into
// URLRequestJob::ReadRawData.
int URLRequestJob::Read(IOBuffer* buf, int buf_size) {}

int64_t URLRequestJob::GetTotalReceivedBytes() const {}

int64_t URLRequestJob::GetTotalSentBytes() const {}

int64_t URLRequestJob::GetReceivedBodyBytes() const {}

LoadState URLRequestJob::GetLoadState() const {}

bool URLRequestJob::GetCharset(std::string* charset) {}

void URLRequestJob::GetResponseInfo(HttpResponseInfo* info) {}

void URLRequestJob::GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const {}

bool URLRequestJob::GetTransactionRemoteEndpoint(IPEndPoint* endpoint) const {}

void URLRequestJob::PopulateNetErrorDetails(NetErrorDetails* details) const {}

bool URLRequestJob::IsRedirectResponse(GURL* location,
                                       int* http_status_code,
                                       bool* insecure_scheme_was_upgraded) {}

bool URLRequestJob::CopyFragmentOnRedirect(const GURL& location) const {}

bool URLRequestJob::IsSafeRedirect(const GURL& location) {}

bool URLRequestJob::NeedsAuth() {}

std::unique_ptr<AuthChallengeInfo> URLRequestJob::GetAuthChallengeInfo() {}

void URLRequestJob::SetAuth(const AuthCredentials& credentials) {}

void URLRequestJob::CancelAuth() {}

void URLRequestJob::ContinueWithCertificate(
    scoped_refptr<X509Certificate> client_cert,
    scoped_refptr<SSLPrivateKey> client_private_key) {}

void URLRequestJob::ContinueDespiteLastError() {}

void URLRequestJob::FollowDeferredRedirect(
    const std::optional<std::vector<std::string>>& removed_headers,
    const std::optional<net::HttpRequestHeaders>& modified_headers) {}

int64_t URLRequestJob::prefilter_bytes_read() const {}

bool URLRequestJob::GetMimeType(std::string* mime_type) const {}

int URLRequestJob::GetResponseCode() const {}

IPEndPoint URLRequestJob::GetResponseRemoteEndpoint() const {}

void URLRequestJob::NotifyURLRequestDestroyed() {}

ConnectionAttempts URLRequestJob::GetConnectionAttempts() const {}

void URLRequestJob::CloseConnectionOnDestruction() {}

bool URLRequestJob::NeedsRetryWithStorageAccess() {}

namespace {

// Assuming |url| has already been stripped for use as a referrer, if
// |should_strip_to_origin| is true, this method returns the output of the
// "Strip `url` for use as a referrer" algorithm from the Referrer Policy spec
// with its "origin-only" flag set to true:
// https://w3c.github.io/webappsec-referrer-policy/#strip-url
GURL MaybeStripToOrigin(GURL url, bool should_strip_to_origin) {}

}  // namespace

// static
GURL URLRequestJob::ComputeReferrerForPolicy(
    ReferrerPolicy policy,
    const GURL& original_referrer,
    const GURL& destination,
    bool* same_origin_out_for_metrics) {}

cookie_util::StorageAccessStatus URLRequestJob::StorageAccessStatus() const {}

int URLRequestJob::NotifyConnected(const TransportInfo& info,
                                   CompletionOnceCallback callback) {}

void URLRequestJob::NotifyCertificateRequested(
    SSLCertRequestInfo* cert_request_info) {}

void URLRequestJob::NotifySSLCertificateError(int net_error,
                                              const SSLInfo& ssl_info,
                                              bool fatal) {}

bool URLRequestJob::CanSetCookie(
    const net::CanonicalCookie& cookie,
    CookieOptions* options,
    const net::FirstPartySetMetadata& first_party_set_metadata,
    CookieInclusionStatus* inclusion_status) const {}

void URLRequestJob::NotifyHeadersComplete() {}

void URLRequestJob::NotifyFinalHeadersReceived() {}

void URLRequestJob::ConvertResultToError(int result, Error* error, int* count) {}

void URLRequestJob::ReadRawDataComplete(int result) {}

void URLRequestJob::NotifyStartError(int net_error) {}

void URLRequestJob::OnDone(int net_error, bool notify_done) {}

void URLRequestJob::NotifyDone() {}

void URLRequestJob::NotifyCanceled() {}

void URLRequestJob::OnCallToDelegate(NetLogEventType type) {}

void URLRequestJob::OnCallToDelegateComplete() {}

int URLRequestJob::ReadRawData(IOBuffer* buf, int buf_size) {}

void URLRequestJob::DoneReading() {}

void URLRequestJob::DoneReadingRedirectResponse() {}

void URLRequestJob::DoneReadingRetryResponse() {}

std::unique_ptr<SourceStream> URLRequestJob::SetUpSourceStream() {}

void URLRequestJob::SetProxyChain(const ProxyChain& proxy_chain) {}

void URLRequestJob::SourceStreamReadComplete(bool synchronous, int result) {}

int URLRequestJob::ReadRawDataHelper(IOBuffer* buf,
                                     int buf_size,
                                     CompletionOnceCallback callback) {}

int URLRequestJob::CanFollowRedirect(const GURL& new_url) {}

void URLRequestJob::FollowRedirect(
    const RedirectInfo& redirect_info,
    const std::optional<std::vector<std::string>>& removed_headers,
    const std::optional<net::HttpRequestHeaders>& modified_headers) {}

void URLRequestJob::GatherRawReadStats(int bytes_read) {}

void URLRequestJob::RecordBytesRead(int bytes_read) {}

}  // namespace net