0

Pass origin to RegisterNonNetworkSubresourceURLLoaderFactories

This CL enables RegisterNonNetworkSubresourceURLLoaderFactories
to retrieve the origin that is going to use the factories.

Bug: 1227761
Change-Id: I3dfb9f14df8bf60c003efe2ea4281d92696d9501
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3350608
Reviewed-by: Łukasz Anforowicz <lukasza@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: Devlin Cronin <rdevlin.cronin@chromium.org>
Reviewed-by: Bo Liu <boliu@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Reviewed-by: Sean Topping <seantopping@chromium.org>
Commit-Queue: Ghazale Hosseinabadi <ghazale@chromium.org>
Cr-Commit-Position: refs/heads/main@{#956283}
This commit is contained in:
Ghazale Hosseinabadi
2022-01-06 23:17:47 +00:00
committed by Chromium LUCI CQ
parent c8cac2b7c6
commit fa65f3580f
17 changed files with 23 additions and 7 deletions

@ -869,6 +869,7 @@ bool AwContentBrowserClient::HandleExternalProtocol(
void AwContentBrowserClient::RegisterNonNetworkSubresourceURLLoaderFactories(
int render_process_id,
int render_frame_id,
const absl::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories) {
WebContents* web_contents = content::WebContents::FromRenderFrameHost(
content::RenderFrameHost::FromID(render_process_id, render_frame_id));

@ -193,6 +193,7 @@ class AwContentBrowserClient : public content::ContentBrowserClient {
void RegisterNonNetworkSubresourceURLLoaderFactories(
int render_process_id,
int render_frame_id,
const absl::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories) override;
bool ShouldAllowNoLongerUsedProcessToExit() override;
bool ShouldIsolateErrorPage(bool in_main_frame) override;

@ -4903,6 +4903,7 @@ void ChromeContentBrowserClient::
RegisterNonNetworkSubresourceURLLoaderFactories(
int render_process_id,
int render_frame_id,
const absl::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories) {
#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(ENABLE_EXTENSIONS)
content::RenderFrameHost* frame_host =

@ -494,6 +494,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient {
void RegisterNonNetworkSubresourceURLLoaderFactories(
int render_process_id,
int render_frame_id,
const absl::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories) override;
bool WillCreateURLLoaderFactory(
content::BrowserContext* browser_context,

@ -898,6 +898,7 @@ void CastContentBrowserClient::RegisterNonNetworkNavigationURLLoaderFactories(
void CastContentBrowserClient::RegisterNonNetworkSubresourceURLLoaderFactories(
int render_process_id,
int render_frame_id,
const absl::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories) {
if (render_frame_id == MSG_ROUTING_NONE) {
LOG(ERROR) << "Service worker not supported.";

@ -250,6 +250,7 @@ class CastContentBrowserClient
void RegisterNonNetworkSubresourceURLLoaderFactories(
int render_process_id,
int render_frame_id,
const absl::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories) override;
void OnNetworkServiceCreated(
network::mojom::NetworkService* network_service) override;

@ -2891,6 +2891,7 @@ CreateNetworkFactoryForDevTools(
base::StringPiece scheme,
RenderProcessHost* host,
int routing_id,
const url::Origin& origin,
network::mojom::URLLoaderFactoryParamsPtr params) {
if (!host || !params) {
// Return an invalid remote by default.
@ -2917,7 +2918,7 @@ CreateNetworkFactoryForDevTools(
GetContentClient()
->browser()
->RegisterNonNetworkSubresourceURLLoaderFactories(
host->GetID(), routing_id, &factories);
host->GetID(), routing_id, origin, &factories);
auto i = factories.find(std::string(scheme));
if (i == factories.end()) {
return {};
@ -2990,7 +2991,7 @@ void NetworkHandler::LoadNetworkResource(
auto factory = CreateNetworkFactoryForDevTools(
gurl.scheme(), frame->GetProcess(), frame->GetRoutingID(),
std::move(params));
frame->GetLastCommittedOrigin(), std::move(params));
url_loader_factory.Bind(std::move(factory));
auto loader = DevToolsNetworkResourceLoader::Create(
@ -3006,7 +3007,7 @@ void NetworkHandler::LoadNetworkResource(
// TODO(sigurds): Support dedicated workers.
auto info = host->CreateNetworkFactoryParamsForDevTools();
auto factory = CreateNetworkFactoryForDevTools(
gurl.scheme(), host->GetProcessHost(), MSG_ROUTING_NONE,
gurl.scheme(), host->GetProcessHost(), MSG_ROUTING_NONE, info.origin,
std::move(info.factory_params));
if (factory.is_valid()) {
url_loader_factory.Bind(std::move(factory));

@ -1361,7 +1361,7 @@ void DownloadManagerImpl::BeginResourceDownloadOnChecksComplete(
->browser()
->RegisterNonNetworkSubresourceURLLoaderFactories(
params->render_process_host_id(),
params->render_frame_host_routing_id(),
params->render_frame_host_routing_id(), params->initiator(),
&non_network_url_loader_factories);
auto it = non_network_url_loader_factories.find(params->url().scheme());
if (it != non_network_url_loader_factories.end()) {

@ -8085,7 +8085,9 @@ void RenderFrameHostImpl::CommitNavigation(
GetContentClient()
->browser()
->RegisterNonNetworkSubresourceURLLoaderFactories(
GetProcess()->GetID(), routing_id_, &non_network_factories);
GetProcess()->GetID(), routing_id_,
subresource_loader_factories_config.origin(),
&non_network_factories);
for (auto& factory : non_network_factories) {
mojo::PendingRemote<network::mojom::URLLoaderFactory>

@ -815,7 +815,7 @@ EmbeddedWorkerInstance::CreateFactoryBundle(
GetContentClient()
->browser()
->RegisterNonNetworkSubresourceURLLoaderFactories(
rph->GetID(), MSG_ROUTING_NONE, &non_network_factories);
rph->GetID(), MSG_ROUTING_NONE, origin, &non_network_factories);
for (auto& pair : non_network_factories) {
const std::string& scheme = pair.first;

@ -475,7 +475,8 @@ WorkerScriptFetcher::CreateFactoryBundle(
GetContentClient()
->browser()
->RegisterNonNetworkSubresourceURLLoaderFactories(
worker_process_id, MSG_ROUTING_NONE, &non_network_factories);
worker_process_id, MSG_ROUTING_NONE,
request_initiator_storage_key.origin(), &non_network_factories);
break;
}

@ -792,6 +792,7 @@ void ContentBrowserClient::
void ContentBrowserClient::RegisterNonNetworkSubresourceURLLoaderFactories(
int render_process_id,
int render_frame_id,
const absl::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories) {}
bool ContentBrowserClient::WillCreateURLLoaderFactory(

@ -1358,6 +1358,7 @@ class CONTENT_EXPORT ContentBrowserClient {
virtual void RegisterNonNetworkSubresourceURLLoaderFactories(
int render_process_id,
int render_frame_id,
const absl::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories);
// Describes the purpose of the factory in WillCreateURLLoaderFactory().

@ -311,6 +311,7 @@ void ShellContentBrowserClient::
void ShellContentBrowserClient::RegisterNonNetworkSubresourceURLLoaderFactories(
int render_process_id,
int render_frame_id,
const absl::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories) {
DCHECK(factories);

@ -102,6 +102,7 @@ class ShellContentBrowserClient : public content::ContentBrowserClient {
void RegisterNonNetworkSubresourceURLLoaderFactories(
int render_process_id,
int render_frame_id,
const absl::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories) override;
bool WillCreateURLLoaderFactory(
content::BrowserContext* browser_context,

@ -167,6 +167,7 @@ void WebEngineContentBrowserClient::
RegisterNonNetworkSubresourceURLLoaderFactories(
int render_process_id,
int render_frame_id,
const absl::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories) {
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableContentDirectories)) {

@ -46,6 +46,7 @@ class WebEngineContentBrowserClient final
void RegisterNonNetworkSubresourceURLLoaderFactories(
int render_process_id,
int render_frame_id,
const absl::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories) override;
bool ShouldEnableStrictSiteIsolation() override;
void AppendExtraCommandLineSwitches(base::CommandLine* command_line,