Commit c6185fc9 authored by Makoto Shimazu's avatar Makoto Shimazu Committed by Commit Bot

Plumb URLLoadOptions to MojoAsyncResourceHandler

Currently we pass kURLLoadOptionNone when creating MojoAsyncResourceHandler
regardless of options passed at OnRequestResourceWithMojo(). This CL is to plumb
the options to MojoAsyncResourceHandler to get correct information. For example,
when loading a service worker's main script, SSLInfo should be attached with the
response.

Bug: 851831
Change-Id: I34b6bea644ef34b0b2b0dfd856b8541e3aa1368c
Reviewed-on: https://chromium-review.googlesource.com/1096731Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Makoto Shimazu <shimazu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566422}
parent 8b6e2bfb
......@@ -123,6 +123,7 @@ MojoAsyncResourceHandler::MojoAsyncResourceHandler(
url_loader_client_(std::move(url_loader_client)),
weak_factory_(this) {
DCHECK(IsResourceTypeFrame(resource_type) ||
resource_type == RESOURCE_TYPE_SERVICE_WORKER ||
!(url_loader_options_ &
network::mojom::kURLLoadOptionSendSSLInfoWithResponse));
DCHECK(resource_type == RESOURCE_TYPE_MAIN_FRAME ||
......
......@@ -717,6 +717,7 @@ void ResourceDispatcherHostImpl::OnRequestResourceInternal(
int request_id,
bool is_sync_load,
const network::ResourceRequest& request_data,
uint32_t url_loader_options,
network::mojom::URLLoaderRequest mojo_request,
network::mojom::URLLoaderClientPtr url_loader_client,
const net::NetworkTrafficAnnotationTag& traffic_annotation) {
......@@ -724,7 +725,7 @@ void ResourceDispatcherHostImpl::OnRequestResourceInternal(
requester_info->IsNavigationPreload() ||
requester_info->IsCertificateFetcherForSignedExchange());
BeginRequest(requester_info, request_id, request_data, is_sync_load,
routing_id, std::move(mojo_request),
routing_id, url_loader_options, std::move(mojo_request),
std::move(url_loader_client), traffic_annotation);
}
......@@ -748,6 +749,7 @@ void ResourceDispatcherHostImpl::BeginRequest(
const network::ResourceRequest& request_data,
bool is_sync_load,
int route_id,
uint32_t url_loader_options,
network::mojom::URLLoaderRequest mojo_request,
network::mojom::URLLoaderClientPtr url_loader_client,
const net::NetworkTrafficAnnotationTag& traffic_annotation) {
......@@ -854,7 +856,8 @@ void ResourceDispatcherHostImpl::BeginRequest(
&ResourceDispatcherHostImpl::ContinuePendingBeginRequest,
base::Unretained(this), base::WrapRefCounted(requester_info),
request_id, request_data, is_sync_load, route_id,
request_data.headers, base::Passed(std::move(mojo_request)),
request_data.headers, url_loader_options,
base::Passed(std::move(mojo_request)),
base::Passed(std::move(url_loader_client)),
base::Passed(std::move(blob_handles)), traffic_annotation));
return;
......@@ -863,7 +866,7 @@ void ResourceDispatcherHostImpl::BeginRequest(
}
ContinuePendingBeginRequest(
requester_info, request_id, request_data, is_sync_load, route_id,
request_data.headers, std::move(mojo_request),
request_data.headers, url_loader_options, std::move(mojo_request),
std::move(url_loader_client), std::move(blob_handles), traffic_annotation,
HeaderInterceptorResult::CONTINUE);
}
......@@ -875,6 +878,7 @@ void ResourceDispatcherHostImpl::ContinuePendingBeginRequest(
bool is_sync_load,
int route_id,
const net::HttpRequestHeaders& headers,
uint32_t url_loader_options,
network::mojom::URLLoaderRequest mojo_request,
network::mojom::URLLoaderClientPtr url_loader_client,
BlobHandles blob_handles,
......@@ -1089,7 +1093,8 @@ void ResourceDispatcherHostImpl::ContinuePendingBeginRequest(
std::unique_ptr<ResourceHandler> handler = CreateResourceHandler(
requester_info.get(), new_request.get(), request_data, route_id, child_id,
resource_context, std::move(mojo_request), std::move(url_loader_client));
resource_context, url_loader_options, std::move(mojo_request),
std::move(url_loader_client));
if (handler) {
RecordFetchRequestMode(request_data.url, request_data.method,
......@@ -1109,6 +1114,7 @@ ResourceDispatcherHostImpl::CreateResourceHandler(
int route_id,
int child_id,
ResourceContext* resource_context,
uint32_t url_loader_options,
network::mojom::URLLoaderRequest mojo_request,
network::mojom::URLLoaderClientPtr url_loader_client) {
DCHECK(requester_info->IsRenderer() ||
......@@ -1117,7 +1123,8 @@ ResourceDispatcherHostImpl::CreateResourceHandler(
// Construct the IPC resource handler.
std::unique_ptr<ResourceHandler> handler;
handler = CreateBaseResourceHandler(
request, std::move(mojo_request), std::move(url_loader_client),
request, url_loader_options, std::move(mojo_request),
std::move(url_loader_client),
static_cast<ResourceType>(request_data.resource_type));
// Prefetches outlive their child process.
......@@ -1140,13 +1147,14 @@ ResourceDispatcherHostImpl::CreateResourceHandler(
std::unique_ptr<ResourceHandler>
ResourceDispatcherHostImpl::CreateBaseResourceHandler(
net::URLRequest* request,
uint32_t url_loader_options,
network::mojom::URLLoaderRequest mojo_request,
network::mojom::URLLoaderClientPtr url_loader_client,
ResourceType resource_type) {
std::unique_ptr<ResourceHandler> handler;
handler.reset(new MojoAsyncResourceHandler(
request, this, std::move(mojo_request), std::move(url_loader_client),
resource_type, network::mojom::kURLLoadOptionNone));
resource_type, url_loader_options));
return handler;
}
......@@ -1742,7 +1750,8 @@ void ResourceDispatcherHostImpl::OnRequestResourceWithMojo(
}
bool is_sync_load = options & network::mojom::kURLLoadOptionSynchronous;
OnRequestResourceInternal(requester_info, routing_id, request_id,
is_sync_load, request, std::move(mojo_request),
is_sync_load, request, options,
std::move(mojo_request),
std::move(url_loader_client), traffic_annotation);
}
......
......@@ -528,6 +528,7 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl
int request_id,
bool is_sync_load,
const network::ResourceRequest& request_data,
uint32_t url_loader_options,
network::mojom::URLLoaderRequest mojo_request,
network::mojom::URLLoaderClientPtr url_loader_client,
const net::NetworkTrafficAnnotationTag& traffic_annotation);
......@@ -539,6 +540,7 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl
const network::ResourceRequest& request_data,
bool is_sync_load,
int route_id,
uint32_t url_loader_options,
network::mojom::URLLoaderRequest mojo_request,
network::mojom::URLLoaderClientPtr url_loader_client,
const net::NetworkTrafficAnnotationTag& traffic_annotation);
......@@ -558,6 +560,7 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl
bool is_sync_load,
int route_id,
const net::HttpRequestHeaders& headers,
uint32_t url_loader_options,
network::mojom::URLLoaderRequest mojo_request,
network::mojom::URLLoaderClientPtr url_loader_client,
BlobHandles blob_handles,
......@@ -573,12 +576,14 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl
int route_id,
int child_id,
ResourceContext* resource_context,
uint32_t url_loader_options,
network::mojom::URLLoaderRequest mojo_request,
network::mojom::URLLoaderClientPtr url_loader_client);
// Creates either MojoAsyncResourceHandler or AsyncResourceHandler.
std::unique_ptr<ResourceHandler> CreateBaseResourceHandler(
net::URLRequest* request,
uint32_t url_loader_options,
network::mojom::URLLoaderRequest mojo_request,
network::mojom::URLLoaderClientPtr url_loader_client,
ResourceType resource_type);
......
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