Commit c2a76d11 authored by Dominic Farolino's avatar Dominic Farolino Committed by Commit Bot

CreateNetworkServiceDefaultFactory methods should accept a NetworkIsolationKey

To get cross-origin prefetches to work with SplitCache enabled, we'll
want to create a URLLoaderFactory via CreateNetworkServiceDefaultFactory
with a non-default NetworkIsolationKey. To do this, we'll need to
communicate a NetworkIsolationKey to
CreateNetworkServiceDefaultFactoryInternal. This CL changes both of
these methods to accept NetworkIsolationKey parameters.

This CL introduces no observable difference, but will make it easier to
create the URLLoaderFactories we'd like for cross-origin main-resource
prefetch requests.

See https://docs.google.com/document/d/1bKGDIePAuF6YXmmrwM33LeLvtuCsla3vTspsxsNp-f8/edit#heading=h.9a0qg5l6gbnj.

R=kinuko@chromium.org, yhirano@chromium.org

Bug: 939317
Change-Id: Ib2100dc2ad7efd9f33ac22e0bd6edb14cf816c05
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1730572Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Dominic Farolino <dom@chromium.org>
Cr-Commit-Position: refs/heads/master@{#683117}
parent bb908218
...@@ -1217,7 +1217,8 @@ void RenderFrameHostImpl::ExecuteMediaPlayerActionAtLocation( ...@@ -1217,7 +1217,8 @@ void RenderFrameHostImpl::ExecuteMediaPlayerActionAtLocation(
bool RenderFrameHostImpl::CreateNetworkServiceDefaultFactory( bool RenderFrameHostImpl::CreateNetworkServiceDefaultFactory(
network::mojom::URLLoaderFactoryRequest default_factory_request) { network::mojom::URLLoaderFactoryRequest default_factory_request) {
return CreateNetworkServiceDefaultFactoryInternal( return CreateNetworkServiceDefaultFactoryInternal(
last_committed_origin_, std::move(default_factory_request)); last_committed_origin_, network_isolation_key_,
std::move(default_factory_request));
} }
void RenderFrameHostImpl::MarkInitiatorsAsRequiringSeparateURLLoaderFactory( void RenderFrameHostImpl::MarkInitiatorsAsRequiringSeparateURLLoaderFactory(
...@@ -1261,7 +1262,7 @@ RenderFrameHostImpl::CreateInitiatorSpecificURLLoaderFactories( ...@@ -1261,7 +1262,7 @@ RenderFrameHostImpl::CreateInitiatorSpecificURLLoaderFactories(
for (const url::Origin& initiator : initiator_origins) { for (const url::Origin& initiator : initiator_origins) {
network::mojom::URLLoaderFactoryPtrInfo factory_info; network::mojom::URLLoaderFactoryPtrInfo factory_info;
CreateNetworkServiceDefaultFactoryAndObserve( CreateNetworkServiceDefaultFactoryAndObserve(
initiator, mojo::MakeRequest(&factory_info)); initiator, network_isolation_key_, mojo::MakeRequest(&factory_info));
result[initiator] = std::move(factory_info); result[initiator] = std::move(factory_info);
} }
return result; return result;
...@@ -2993,7 +2994,8 @@ void RenderFrameHostImpl::UpdateSubresourceLoaderFactories() { ...@@ -2993,7 +2994,8 @@ void RenderFrameHostImpl::UpdateSubresourceLoaderFactories() {
bool bypass_redirect_checks = false; bool bypass_redirect_checks = false;
if (recreate_default_url_loader_factory_after_network_service_crash_) { if (recreate_default_url_loader_factory_after_network_service_crash_) {
bypass_redirect_checks = CreateNetworkServiceDefaultFactoryAndObserve( bypass_redirect_checks = CreateNetworkServiceDefaultFactoryAndObserve(
last_committed_origin_, mojo::MakeRequest(&default_factory_info)); last_committed_origin_, network_isolation_key_,
mojo::MakeRequest(&default_factory_info));
} }
std::unique_ptr<blink::URLLoaderFactoryBundleInfo> std::unique_ptr<blink::URLLoaderFactoryBundleInfo>
...@@ -4944,6 +4946,7 @@ void RenderFrameHostImpl::CommitNavigation( ...@@ -4944,6 +4946,7 @@ void RenderFrameHostImpl::CommitNavigation(
bool bypass_redirect_checks = bool bypass_redirect_checks =
CreateNetworkServiceDefaultFactoryAndObserve( CreateNetworkServiceDefaultFactoryAndObserve(
GetOriginForURLLoaderFactory(navigation_request), GetOriginForURLLoaderFactory(navigation_request),
network_isolation_key_,
pending_default_factory.InitWithNewPipeAndPassReceiver()); pending_default_factory.InitWithNewPipeAndPassReceiver());
subresource_loader_factories->set_bypass_redirect_checks( subresource_loader_factories->set_bypass_redirect_checks(
bypass_redirect_checks); bypass_redirect_checks);
...@@ -5223,7 +5226,7 @@ void RenderFrameHostImpl::FailedNavigation( ...@@ -5223,7 +5226,7 @@ void RenderFrameHostImpl::FailedNavigation(
// TODO(domfarolino, crbug.com/955171): Replace this with Remote. // TODO(domfarolino, crbug.com/955171): Replace this with Remote.
network::mojom::URLLoaderFactoryPtrInfo default_factory_info; network::mojom::URLLoaderFactoryPtrInfo default_factory_info;
bool bypass_redirect_checks = CreateNetworkServiceDefaultFactoryAndObserve( bool bypass_redirect_checks = CreateNetworkServiceDefaultFactoryAndObserve(
origin, mojo::MakeRequest(&default_factory_info)); origin, network_isolation_key_, mojo::MakeRequest(&default_factory_info));
subresource_loader_factories = subresource_loader_factories =
std::make_unique<blink::URLLoaderFactoryBundleInfo>( std::make_unique<blink::URLLoaderFactoryBundleInfo>(
std::move(default_factory_info), std::move(default_factory_info),
...@@ -5751,10 +5754,11 @@ void RenderFrameHostImpl::NavigationRequestCancelled( ...@@ -5751,10 +5754,11 @@ void RenderFrameHostImpl::NavigationRequestCancelled(
bool RenderFrameHostImpl::CreateNetworkServiceDefaultFactoryAndObserve( bool RenderFrameHostImpl::CreateNetworkServiceDefaultFactoryAndObserve(
const base::Optional<url::Origin>& origin, const base::Optional<url::Origin>& origin,
const net::NetworkIsolationKey& network_isolation_key,
mojo::PendingReceiver<network::mojom::URLLoaderFactory> mojo::PendingReceiver<network::mojom::URLLoaderFactory>
default_factory_receiver) { default_factory_receiver) {
bool bypass_redirect_checks = CreateNetworkServiceDefaultFactoryInternal( bool bypass_redirect_checks = CreateNetworkServiceDefaultFactoryInternal(
origin, std::move(default_factory_receiver)); origin, network_isolation_key, std::move(default_factory_receiver));
// Add connection error observer when Network Service is running // Add connection error observer when Network Service is running
// out-of-process. // out-of-process.
...@@ -5779,6 +5783,7 @@ bool RenderFrameHostImpl::CreateNetworkServiceDefaultFactoryAndObserve( ...@@ -5779,6 +5783,7 @@ bool RenderFrameHostImpl::CreateNetworkServiceDefaultFactoryAndObserve(
bool RenderFrameHostImpl::CreateNetworkServiceDefaultFactoryInternal( bool RenderFrameHostImpl::CreateNetworkServiceDefaultFactoryInternal(
const base::Optional<url::Origin>& origin, const base::Optional<url::Origin>& origin,
const net::NetworkIsolationKey& network_isolation_key,
mojo::PendingReceiver<network::mojom::URLLoaderFactory> mojo::PendingReceiver<network::mojom::URLLoaderFactory>
default_factory_receiver) { default_factory_receiver) {
auto* context = GetSiteInstance()->GetBrowserContext(); auto* context = GetSiteInstance()->GetBrowserContext();
...@@ -5799,14 +5804,14 @@ bool RenderFrameHostImpl::CreateNetworkServiceDefaultFactoryInternal( ...@@ -5799,14 +5804,14 @@ bool RenderFrameHostImpl::CreateNetworkServiceDefaultFactoryInternal(
WebPreferences preferences = GetRenderViewHost()->GetWebkitPreferences(); WebPreferences preferences = GetRenderViewHost()->GetWebkitPreferences();
if (GetCreateNetworkFactoryCallbackForRenderFrame().is_null()) { if (GetCreateNetworkFactoryCallbackForRenderFrame().is_null()) {
GetProcess()->CreateURLLoaderFactory(origin, cross_origin_embedder_policy_, GetProcess()->CreateURLLoaderFactory(origin, cross_origin_embedder_policy_,
&preferences, network_isolation_key_, &preferences, network_isolation_key,
std::move(header_client), std::move(header_client),
std::move(default_factory_receiver)); std::move(default_factory_receiver));
} else { } else {
mojo::Remote<network::mojom::URLLoaderFactory> original_factory; mojo::Remote<network::mojom::URLLoaderFactory> original_factory;
GetProcess()->CreateURLLoaderFactory( GetProcess()->CreateURLLoaderFactory(
origin, cross_origin_embedder_policy_, &preferences, origin, cross_origin_embedder_policy_, &preferences,
network_isolation_key_, std::move(header_client), network_isolation_key, std::move(header_client),
original_factory.BindNewPipeAndPassReceiver()); original_factory.BindNewPipeAndPassReceiver());
GetCreateNetworkFactoryCallbackForRenderFrame().Run( GetCreateNetworkFactoryCallbackForRenderFrame().Run(
std::move(default_factory_receiver), GetProcess()->GetID(), std::move(default_factory_receiver), GetProcess()->GetID(),
......
...@@ -1366,6 +1366,7 @@ class CONTENT_EXPORT RenderFrameHostImpl ...@@ -1366,6 +1366,7 @@ class CONTENT_EXPORT RenderFrameHostImpl
// crashes). // crashes).
bool CreateNetworkServiceDefaultFactoryAndObserve( bool CreateNetworkServiceDefaultFactoryAndObserve(
const base::Optional<url::Origin>& origin, const base::Optional<url::Origin>& origin,
const net::NetworkIsolationKey& network_isolation_key,
mojo::PendingReceiver<network::mojom::URLLoaderFactory> mojo::PendingReceiver<network::mojom::URLLoaderFactory>
default_factory_receiver); default_factory_receiver);
...@@ -1374,6 +1375,7 @@ class CONTENT_EXPORT RenderFrameHostImpl ...@@ -1374,6 +1375,7 @@ class CONTENT_EXPORT RenderFrameHostImpl
// crashes). // crashes).
bool CreateNetworkServiceDefaultFactoryInternal( bool CreateNetworkServiceDefaultFactoryInternal(
const base::Optional<url::Origin>& origin, const base::Optional<url::Origin>& origin,
const net::NetworkIsolationKey& network_isolation_key,
mojo::PendingReceiver<network::mojom::URLLoaderFactory> mojo::PendingReceiver<network::mojom::URLLoaderFactory>
default_factory_receiver); default_factory_receiver);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment