#include "content/browser/loader/url_loader_factory_utils.h"
#include "content/browser/storage_partition_impl.h"
#include "content/public/browser/browser_thread.h"
namespace content {
namespace url_loader_factory {
namespace {
Interceptor& GetMutableInterceptor() { … }
bool s_has_interceptor = …;
}
const Interceptor& GetTestingInterceptor() { … }
void SetInterceptorForTesting(const Interceptor& interceptor) { … }
bool HasInterceptorOnIOThreadForTesting() { … }
void SetHasInterceptorOnIOThreadForTesting(bool has_interceptor) { … }
TerminalParams::TerminalParams(
network::mojom::NetworkContext* network_context,
network::mojom::URLLoaderFactoryParamsPtr factory_params,
HeaderClientOption header_client_option,
FactoryOverrideOption factory_override_option,
DisableSecureDnsOption disable_secure_dns_option,
StoragePartitionImpl* storage_partition,
std::optional<URLLoaderFactoryTypes> url_loader_factory,
int process_id)
: … { … }
TerminalParams::~TerminalParams() = default;
TerminalParams::TerminalParams(TerminalParams&&) = default;
TerminalParams& TerminalParams::operator=(TerminalParams&&) = default;
TerminalParams TerminalParams::ForNetworkContext(
network::mojom::NetworkContext* network_context,
network::mojom::URLLoaderFactoryParamsPtr factory_params,
HeaderClientOption header_client_option,
FactoryOverrideOption factory_override_option,
DisableSecureDnsOption disable_secure_dns_option) { … }
TerminalParams TerminalParams::ForBrowserProcess(
StoragePartitionImpl* storage_partition,
HeaderClientOption header_client_option) { … }
TerminalParams TerminalParams::ForNonNetwork(
URLLoaderFactoryTypes url_loader_factory,
int process_id) { … }
network::mojom::NetworkContext* TerminalParams::network_context() const { … }
HeaderClientOption TerminalParams::header_client_option() const { … }
FactoryOverrideOption TerminalParams::factory_override_option() const { … }
DisableSecureDnsOption TerminalParams::disable_secure_dns_option() const { … }
StoragePartitionImpl* TerminalParams::storage_partition() const { … }
int TerminalParams::process_id() const { … }
network::mojom::URLLoaderFactoryParamsPtr TerminalParams::TakeFactoryParams() { … }
std::optional<TerminalParams::URLLoaderFactoryTypes>
TerminalParams::TakeURLLoaderFactory() { … }
ContentClientParams::ContentClientParams(
BrowserContext* browser_context,
RenderFrameHost* frame,
int render_process_id,
const url::Origin& request_initiator,
const net::IsolationInfo& isolation_info,
ukm::SourceIdObj ukm_source_id,
bool* bypass_redirect_checks,
std::optional<int64_t> navigation_id,
scoped_refptr<base::SequencedTaskRunner> navigation_response_task_runner)
: … { … }
ContentClientParams::ContentClientParams(ContentClientParams&&) = default;
ContentClientParams& ContentClientParams::operator=(ContentClientParams&&) =
default;
ContentClientParams::~ContentClientParams() = default;
void ContentClientParams::Run(
network::URLLoaderFactoryBuilder& factory_builder,
ContentBrowserClient::URLLoaderFactoryType type,
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
header_client,
bool* disable_secure_dns,
network::mojom::URLLoaderFactoryOverridePtr* factory_override) { … }
namespace {
std::tuple<bool, bool> GetIsNavigationAndDownload(
ContentBrowserClient::URLLoaderFactoryType type) { … }
template <typename OutType, typename... FinishArgs>
[[nodiscard]] OutType CreateInternal(
ContentBrowserClient::URLLoaderFactoryType type,
TerminalParams terminal_params,
std::optional<ContentClientParams> content_client_params,
std::optional<devtools_instrumentation::WillCreateURLLoaderFactoryParams>
devtools_params,
FinishArgs... finish_args) { … }
}
scoped_refptr<network::SharedURLLoaderFactory> Create(
ContentBrowserClient::URLLoaderFactoryType type,
TerminalParams terminal_params,
std::optional<ContentClientParams> content_client_params,
std::optional<devtools_instrumentation::WillCreateURLLoaderFactoryParams>
devtools_params) { … }
mojo::PendingRemote<network::mojom::URLLoaderFactory> CreatePendingRemote(
ContentBrowserClient::URLLoaderFactoryType type,
TerminalParams terminal_params,
std::optional<ContentClientParams> content_client_params,
std::optional<devtools_instrumentation::WillCreateURLLoaderFactoryParams>
devtools_params) { … }
void CreateAndConnectToPendingReceiver(
mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver_to_connect,
ContentBrowserClient::URLLoaderFactoryType type,
TerminalParams terminal_params,
std::optional<ContentClientParams> content_client_params,
std::optional<devtools_instrumentation::WillCreateURLLoaderFactoryParams>
devtools_params) { … }
}
}