Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(834)

Unified Diff: content/browser/loader/resource_dispatcher_host_impl.cc

Issue 2497223002: Introduce a new ResourceRequesterInfo type for NavigationPreload. (Closed)
Patch Set: rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/loader/DEPS ('k') | content/browser/loader/resource_requester_info.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/loader/resource_dispatcher_host_impl.cc
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc
index fad7d214783f44ff611a9918f0859c664bbd2166..1a7220929303bb685eb8fe3a39ecb2b98369c062 100644
--- a/content/browser/loader/resource_dispatcher_host_impl.cc
+++ b/content/browser/loader/resource_dispatcher_host_impl.cc
@@ -1067,7 +1067,7 @@ void ResourceDispatcherHostImpl::OnRequestResourceInternal(
const ResourceRequest& request_data,
mojom::URLLoaderAssociatedRequest mojo_request,
mojom::URLLoaderClientAssociatedPtr url_loader_client) {
- DCHECK(requester_info->IsRenderer());
+ DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload());
// TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed.
tracked_objects::ScopedTracker tracking_profile(
FROM_HERE_WITH_EXPLICIT_FUNCTION(
@@ -1273,11 +1273,14 @@ void ResourceDispatcherHostImpl::BeginRequest(
int route_id,
mojom::URLLoaderAssociatedRequest mojo_request,
mojom::URLLoaderClientAssociatedPtr url_loader_client) {
- DCHECK(requester_info->IsRenderer());
+ DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload());
int child_id = requester_info->child_id();
// Reject request id that's currently in use.
if (IsRequestIDInUse(GlobalRequestID(child_id, request_id))) {
+ // Navigation preload requests have child_id's of -1 and monotonically
+ // increasing request IDs allocated by MakeRequestID.
+ DCHECK(requester_info->IsRenderer());
bad_message::ReceivedBadMessage(requester_info->filter(),
bad_message::RDH_INVALID_REQUEST_ID);
return;
@@ -1289,6 +1292,8 @@ void ResourceDispatcherHostImpl::BeginRequest(
IsResourceTypeFrame(request_data.resource_type);
if (is_navigation_stream_request &&
!request_data.resource_body_stream_url.SchemeIs(url::kBlobScheme)) {
+ // The resource_type of navigation preload requests must be SUB_RESOURCE.
+ DCHECK(requester_info->IsRenderer());
bad_message::ReceivedBadMessage(requester_info->filter(),
bad_message::RDH_INVALID_URL);
return;
@@ -1297,6 +1302,9 @@ void ResourceDispatcherHostImpl::BeginRequest(
// Reject invalid priority.
if (request_data.priority < net::MINIMUM_PRIORITY ||
request_data.priority > net::MAXIMUM_PRIORITY) {
+ // The priority of navigation preload requests are copied from the original
+ // request priority which must be checked beforehand.
+ DCHECK(requester_info->IsRenderer());
bad_message::ReceivedBadMessage(requester_info->filter(),
bad_message::RDH_INVALID_PRIORITY);
return;
@@ -1378,12 +1386,14 @@ void ResourceDispatcherHostImpl::ContinuePendingBeginRequest(
mojom::URLLoaderClientAssociatedPtr url_loader_client,
bool continue_request,
int error_code) {
- DCHECK(requester_info->IsRenderer());
+ DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload());
if (!continue_request) {
- // TODO(ananta): Find a way to specify the right error code here. Passing
- // in a non-content error code is not safe.
- bad_message::ReceivedBadMessage(requester_info->filter(),
- bad_message::RDH_ILLEGAL_ORIGIN);
+ if (requester_info->IsRenderer()) {
+ // TODO(ananta): Find a way to specify the right error code here. Passing
+ // in a non-content error code is not safe.
+ bad_message::ReceivedBadMessage(requester_info->filter(),
+ bad_message::RDH_ILLEGAL_ORIGIN);
+ }
AbortRequestBeforeItStarts(requester_info->filter(), sync_result_handler,
request_id, std::move(url_loader_client));
return;
@@ -1613,7 +1623,7 @@ ResourceDispatcherHostImpl::CreateResourceHandler(
ResourceContext* resource_context,
mojom::URLLoaderAssociatedRequest mojo_request,
mojom::URLLoaderClientAssociatedPtr url_loader_client) {
- DCHECK(requester_info->IsRenderer());
+ DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload());
// TODO(pkasting): Remove ScopedTracker below once crbug.com/456331 is fixed.
tracked_objects::ScopedTracker tracking_profile(
FROM_HERE_WITH_EXPLICIT_FUNCTION(
@@ -1623,6 +1633,7 @@ ResourceDispatcherHostImpl::CreateResourceHandler(
if (sync_result_handler) {
// download_to_file is not supported for synchronous requests.
if (request_data.download_to_file) {
+ DCHECK(requester_info->IsRenderer());
bad_message::ReceivedBadMessage(requester_info->filter(),
bad_message::RDH_BAD_DOWNLOAD);
return std::unique_ptr<ResourceHandler>();
« no previous file with comments | « content/browser/loader/DEPS ('k') | content/browser/loader/resource_requester_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698