#include "content/browser/web_package/signed_exchange_inner_response_url_loader.h"
#include <stdint.h>
#include "base/check.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/notreached.h"
#include "content/browser/loader/cross_origin_read_blocking_checker.h"
#include "content/public/browser/browser_thread.h"
#include "mojo/public/cpp/system/data_pipe.h"
#include "net/base/net_errors.h"
#include "services/network/public/cpp/cors/cors.h"
#include "services/network/public/cpp/features.h"
#include "services/network/public/mojom/url_response_head.mojom.h"
#include "storage/browser/blob/blob_data_handle.h"
#include "storage/browser/blob/mojo_blob_reader.h"
namespace content {
namespace {
class MojoBlobReaderDelegate : public storage::MojoBlobReader::Delegate { … };
}
SignedExchangeInnerResponseURLLoader::SignedExchangeInnerResponseURLLoader(
const network::ResourceRequest& request,
network::mojom::URLResponseHeadPtr inner_response,
std::unique_ptr<const storage::BlobDataHandle> blob_data_handle,
const network::URLLoaderCompletionStatus& completion_status,
mojo::PendingRemote<network::mojom::URLLoaderClient> client,
bool is_navigation_request,
scoped_refptr<base::RefCountedData<network::orb::PerFactoryState>>
orb_state)
: … { … }
SignedExchangeInnerResponseURLLoader::~SignedExchangeInnerResponseURLLoader() =
default;
std::optional<std::string>
SignedExchangeInnerResponseURLLoader::GetHeaderString(
const network::mojom::URLResponseHead& response,
const std::string& header_name) { … }
void SignedExchangeInnerResponseURLLoader::
OnCrossOriginReadBlockingCheckComplete(
CrossOriginReadBlockingChecker::Result result) { … }
void SignedExchangeInnerResponseURLLoader::FollowRedirect(
const std::vector<std::string>& removed_headers,
const net::HttpRequestHeaders& modified_headers,
const net::HttpRequestHeaders& modified_cors_exempt_headers,
const std::optional<GURL>& new_url) { … }
void SignedExchangeInnerResponseURLLoader::SetPriority(
net::RequestPriority priority,
int intra_priority_value) { … }
void SignedExchangeInnerResponseURLLoader::PauseReadingBodyFromNet() { … }
void SignedExchangeInnerResponseURLLoader::ResumeReadingBodyFromNet() { … }
void SignedExchangeInnerResponseURLLoader::SendResponseBody() { … }
void SignedExchangeInnerResponseURLLoader::BlobReaderComplete(
net::Error result) { … }
void SignedExchangeInnerResponseURLLoader::CreateMojoBlobReader(
base::WeakPtr<SignedExchangeInnerResponseURLLoader> loader,
mojo::ScopedDataPipeProducerHandle pipe_producer_handle,
std::unique_ptr<storage::BlobDataHandle> blob_data_handle) { … }
void SignedExchangeInnerResponseURLLoader::BlobReaderCompleteOnIO(
base::WeakPtr<SignedExchangeInnerResponseURLLoader> loader,
net::Error result) { … }
void SignedExchangeInnerResponseURLLoader::UpdateRequestResponseStartTime(
network::mojom::URLResponseHead* response_head) { … }
}