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

Side by Side Diff: content/browser/loader/resource_dispatcher_host_impl.cc

Issue 2954853002: Use Independent URLLoader
Patch Set: . Created 3 years, 5 months 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading 5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading
6 6
7 #include "content/browser/loader/resource_dispatcher_host_impl.h" 7 #include "content/browser/loader/resource_dispatcher_host_impl.h"
8 8
9 #include <stddef.h> 9 #include <stddef.h>
10 10
(...skipping 867 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 const ResourceRequest& request_data) { 878 const ResourceRequest& request_data) {
879 OnRequestResourceInternal(requester_info, routing_id, request_id, 879 OnRequestResourceInternal(requester_info, routing_id, request_id,
880 request_data, nullptr, nullptr); 880 request_data, nullptr, nullptr);
881 } 881 }
882 882
883 void ResourceDispatcherHostImpl::OnRequestResourceInternal( 883 void ResourceDispatcherHostImpl::OnRequestResourceInternal(
884 ResourceRequesterInfo* requester_info, 884 ResourceRequesterInfo* requester_info,
885 int routing_id, 885 int routing_id,
886 int request_id, 886 int request_id,
887 const ResourceRequest& request_data, 887 const ResourceRequest& request_data,
888 mojom::URLLoaderAssociatedRequest mojo_request, 888 mojom::URLLoaderRequest mojo_request,
889 mojom::URLLoaderClientPtr url_loader_client) { 889 mojom::URLLoaderClientPtr url_loader_client) {
890 DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload()); 890 DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload());
891 // TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed. 891 // TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed.
892 tracked_objects::ScopedTracker tracking_profile( 892 tracked_objects::ScopedTracker tracking_profile(
893 FROM_HERE_WITH_EXPLICIT_FUNCTION( 893 FROM_HERE_WITH_EXPLICIT_FUNCTION(
894 "477117 ResourceDispatcherHostImpl::OnRequestResource")); 894 "477117 ResourceDispatcherHostImpl::OnRequestResource"));
895 // When logging time-to-network only care about main frame and non-transfer 895 // When logging time-to-network only care about main frame and non-transfer
896 // navigations. 896 // navigations.
897 // PlzNavigate: this log happens from NavigationRequest::OnRequestStarted 897 // PlzNavigate: this log happens from NavigationRequest::OnRequestStarted
898 // instead. 898 // instead.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 } 942 }
943 return false; 943 return false;
944 } 944 }
945 945
946 void ResourceDispatcherHostImpl::UpdateRequestForTransfer( 946 void ResourceDispatcherHostImpl::UpdateRequestForTransfer(
947 ResourceRequesterInfo* requester_info, 947 ResourceRequesterInfo* requester_info,
948 int route_id, 948 int route_id,
949 int request_id, 949 int request_id,
950 const ResourceRequest& request_data, 950 const ResourceRequest& request_data,
951 LoaderMap::iterator iter, 951 LoaderMap::iterator iter,
952 mojom::URLLoaderAssociatedRequest mojo_request, 952 mojom::URLLoaderRequest mojo_request,
953 mojom::URLLoaderClientPtr url_loader_client) { 953 mojom::URLLoaderClientPtr url_loader_client) {
954 DCHECK(requester_info->IsRenderer()); 954 DCHECK(requester_info->IsRenderer());
955 int child_id = requester_info->child_id(); 955 int child_id = requester_info->child_id();
956 ResourceRequestInfoImpl* info = iter->second->GetRequestInfo(); 956 ResourceRequestInfoImpl* info = iter->second->GetRequestInfo();
957 GlobalFrameRoutingId old_routing_id(request_data.transferred_request_child_id, 957 GlobalFrameRoutingId old_routing_id(request_data.transferred_request_child_id,
958 info->GetRenderFrameID()); 958 info->GetRenderFrameID());
959 GlobalRequestID old_request_id(request_data.transferred_request_child_id, 959 GlobalRequestID old_request_id(request_data.transferred_request_child_id,
960 request_data.transferred_request_request_id); 960 request_data.transferred_request_request_id);
961 GlobalFrameRoutingId new_routing_id(child_id, request_data.render_frame_id); 961 GlobalFrameRoutingId new_routing_id(child_id, request_data.render_frame_id);
962 GlobalRequestID new_request_id(child_id, request_id); 962 GlobalRequestID new_request_id(child_id, request_id);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1025 child_id, request_data.service_worker_provider_id); 1025 child_id, request_data.service_worker_provider_id);
1026 } 1026 }
1027 } 1027 }
1028 } 1028 }
1029 1029
1030 void ResourceDispatcherHostImpl::CompleteTransfer( 1030 void ResourceDispatcherHostImpl::CompleteTransfer(
1031 ResourceRequesterInfo* requester_info, 1031 ResourceRequesterInfo* requester_info,
1032 int request_id, 1032 int request_id,
1033 const ResourceRequest& request_data, 1033 const ResourceRequest& request_data,
1034 int route_id, 1034 int route_id,
1035 mojom::URLLoaderAssociatedRequest mojo_request, 1035 mojom::URLLoaderRequest mojo_request,
1036 mojom::URLLoaderClientPtr url_loader_client) { 1036 mojom::URLLoaderClientPtr url_loader_client) {
1037 DCHECK(requester_info->IsRenderer()); 1037 DCHECK(requester_info->IsRenderer());
1038 // Caller should ensure that |request_data| is associated with a transfer. 1038 // Caller should ensure that |request_data| is associated with a transfer.
1039 DCHECK(request_data.transferred_request_child_id != -1 || 1039 DCHECK(request_data.transferred_request_child_id != -1 ||
1040 request_data.transferred_request_request_id != -1); 1040 request_data.transferred_request_request_id != -1);
1041 1041
1042 if (!IsResourceTypeFrame(request_data.resource_type)) { 1042 if (!IsResourceTypeFrame(request_data.resource_type)) {
1043 // Transfers apply only to navigational requests - the renderer seems to 1043 // Transfers apply only to navigational requests - the renderer seems to
1044 // have sent bogus IPC data. 1044 // have sent bogus IPC data.
1045 bad_message::ReceivedBadMessage( 1045 bad_message::ReceivedBadMessage(
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1080 std::move(url_loader_client)); 1080 std::move(url_loader_client));
1081 pending_loader->CompleteTransfer(); 1081 pending_loader->CompleteTransfer();
1082 } 1082 }
1083 1083
1084 void ResourceDispatcherHostImpl::BeginRequest( 1084 void ResourceDispatcherHostImpl::BeginRequest(
1085 ResourceRequesterInfo* requester_info, 1085 ResourceRequesterInfo* requester_info,
1086 int request_id, 1086 int request_id,
1087 const ResourceRequest& request_data, 1087 const ResourceRequest& request_data,
1088 const SyncLoadResultCallback& sync_result_handler, // only valid for sync 1088 const SyncLoadResultCallback& sync_result_handler, // only valid for sync
1089 int route_id, 1089 int route_id,
1090 mojom::URLLoaderAssociatedRequest mojo_request, 1090 mojom::URLLoaderRequest mojo_request,
1091 mojom::URLLoaderClientPtr url_loader_client) { 1091 mojom::URLLoaderClientPtr url_loader_client) {
1092 DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload()); 1092 DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload());
1093 int child_id = requester_info->child_id(); 1093 int child_id = requester_info->child_id();
1094 1094
1095 // Reject request id that's currently in use. 1095 // Reject request id that's currently in use.
1096 if (IsRequestIDInUse(GlobalRequestID(child_id, request_id))) { 1096 if (IsRequestIDInUse(GlobalRequestID(child_id, request_id))) {
1097 // Navigation preload requests have child_id's of -1 and monotonically 1097 // Navigation preload requests have child_id's of -1 and monotonically
1098 // increasing request IDs allocated by MakeRequestID. 1098 // increasing request IDs allocated by MakeRequestID.
1099 DCHECK(requester_info->IsRenderer()); 1099 DCHECK(requester_info->IsRenderer());
1100 bad_message::ReceivedBadMessage(requester_info->filter(), 1100 bad_message::ReceivedBadMessage(requester_info->filter(),
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
1218 HeaderInterceptorResult::CONTINUE); 1218 HeaderInterceptorResult::CONTINUE);
1219 } 1219 }
1220 1220
1221 void ResourceDispatcherHostImpl::ContinuePendingBeginRequest( 1221 void ResourceDispatcherHostImpl::ContinuePendingBeginRequest(
1222 scoped_refptr<ResourceRequesterInfo> requester_info, 1222 scoped_refptr<ResourceRequesterInfo> requester_info,
1223 int request_id, 1223 int request_id,
1224 const ResourceRequest& request_data, 1224 const ResourceRequest& request_data,
1225 const SyncLoadResultCallback& sync_result_handler, // only valid for sync 1225 const SyncLoadResultCallback& sync_result_handler, // only valid for sync
1226 int route_id, 1226 int route_id,
1227 const net::HttpRequestHeaders& headers, 1227 const net::HttpRequestHeaders& headers,
1228 mojom::URLLoaderAssociatedRequest mojo_request, 1228 mojom::URLLoaderRequest mojo_request,
1229 mojom::URLLoaderClientPtr url_loader_client, 1229 mojom::URLLoaderClientPtr url_loader_client,
1230 HeaderInterceptorResult interceptor_result) { 1230 HeaderInterceptorResult interceptor_result) {
1231 DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload()); 1231 DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload());
1232 if (interceptor_result != HeaderInterceptorResult::CONTINUE) { 1232 if (interceptor_result != HeaderInterceptorResult::CONTINUE) {
1233 if (requester_info->IsRenderer() && 1233 if (requester_info->IsRenderer() &&
1234 interceptor_result == HeaderInterceptorResult::KILL) { 1234 interceptor_result == HeaderInterceptorResult::KILL) {
1235 // TODO(ananta): Find a way to specify the right error code here. Passing 1235 // TODO(ananta): Find a way to specify the right error code here. Passing
1236 // in a non-content error code is not safe, but future header interceptors 1236 // in a non-content error code is not safe, but future header interceptors
1237 // might say to kill for reasons other than illegal origins. 1237 // might say to kill for reasons other than illegal origins.
1238 bad_message::ReceivedBadMessage(requester_info->filter(), 1238 bad_message::ReceivedBadMessage(requester_info->filter(),
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
1467 1467
1468 std::unique_ptr<ResourceHandler> 1468 std::unique_ptr<ResourceHandler>
1469 ResourceDispatcherHostImpl::CreateResourceHandler( 1469 ResourceDispatcherHostImpl::CreateResourceHandler(
1470 ResourceRequesterInfo* requester_info, 1470 ResourceRequesterInfo* requester_info,
1471 net::URLRequest* request, 1471 net::URLRequest* request,
1472 const ResourceRequest& request_data, 1472 const ResourceRequest& request_data,
1473 const SyncLoadResultCallback& sync_result_handler, 1473 const SyncLoadResultCallback& sync_result_handler,
1474 int route_id, 1474 int route_id,
1475 int child_id, 1475 int child_id,
1476 ResourceContext* resource_context, 1476 ResourceContext* resource_context,
1477 mojom::URLLoaderAssociatedRequest mojo_request, 1477 mojom::URLLoaderRequest mojo_request,
1478 mojom::URLLoaderClientPtr url_loader_client) { 1478 mojom::URLLoaderClientPtr url_loader_client) {
1479 DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload()); 1479 DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload());
1480 // TODO(pkasting): Remove ScopedTracker below once crbug.com/456331 is fixed. 1480 // TODO(pkasting): Remove ScopedTracker below once crbug.com/456331 is fixed.
1481 tracked_objects::ScopedTracker tracking_profile( 1481 tracked_objects::ScopedTracker tracking_profile(
1482 FROM_HERE_WITH_EXPLICIT_FUNCTION( 1482 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1483 "456331 ResourceDispatcherHostImpl::CreateResourceHandler")); 1483 "456331 ResourceDispatcherHostImpl::CreateResourceHandler"));
1484 // Construct the IPC resource handler. 1484 // Construct the IPC resource handler.
1485 std::unique_ptr<ResourceHandler> handler; 1485 std::unique_ptr<ResourceHandler> handler;
1486 if (sync_result_handler) { 1486 if (sync_result_handler) {
1487 // download_to_file is not supported for synchronous requests. 1487 // download_to_file is not supported for synchronous requests.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1535 resource_context, 1535 resource_context,
1536 request_data.fetch_request_context_type, 1536 request_data.fetch_request_context_type,
1537 request_data.fetch_mixed_content_context_type, 1537 request_data.fetch_mixed_content_context_type,
1538 requester_info->appcache_service(), child_id, 1538 requester_info->appcache_service(), child_id,
1539 route_id, std::move(handler), nullptr, nullptr); 1539 route_id, std::move(handler), nullptr, nullptr);
1540 } 1540 }
1541 1541
1542 std::unique_ptr<ResourceHandler> 1542 std::unique_ptr<ResourceHandler>
1543 ResourceDispatcherHostImpl::CreateBaseResourceHandler( 1543 ResourceDispatcherHostImpl::CreateBaseResourceHandler(
1544 net::URLRequest* request, 1544 net::URLRequest* request,
1545 mojom::URLLoaderAssociatedRequest mojo_request, 1545 mojom::URLLoaderRequest mojo_request,
1546 mojom::URLLoaderClientPtr url_loader_client, 1546 mojom::URLLoaderClientPtr url_loader_client,
1547 ResourceType resource_type) { 1547 ResourceType resource_type) {
1548 std::unique_ptr<ResourceHandler> handler; 1548 std::unique_ptr<ResourceHandler> handler;
1549 if (mojo_request.is_pending()) { 1549 if (mojo_request.is_pending()) {
1550 handler.reset(new MojoAsyncResourceHandler( 1550 handler.reset(new MojoAsyncResourceHandler(
1551 request, this, std::move(mojo_request), std::move(url_loader_client), 1551 request, this, std::move(mojo_request), std::move(url_loader_client),
1552 resource_type)); 1552 resource_type));
1553 } else { 1553 } else {
1554 handler.reset(new AsyncResourceHandler(request, this)); 1554 handler.reset(new AsyncResourceHandler(request, this));
1555 } 1555 }
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
2229 void ResourceDispatcherHostImpl::OnRenderFrameDeleted( 2229 void ResourceDispatcherHostImpl::OnRenderFrameDeleted(
2230 const GlobalFrameRoutingId& global_routing_id) { 2230 const GlobalFrameRoutingId& global_routing_id) {
2231 CancelRequestsForRoute(global_routing_id); 2231 CancelRequestsForRoute(global_routing_id);
2232 } 2232 }
2233 2233
2234 void ResourceDispatcherHostImpl::OnRequestResourceWithMojo( 2234 void ResourceDispatcherHostImpl::OnRequestResourceWithMojo(
2235 ResourceRequesterInfo* requester_info, 2235 ResourceRequesterInfo* requester_info,
2236 int routing_id, 2236 int routing_id,
2237 int request_id, 2237 int request_id,
2238 const ResourceRequest& request, 2238 const ResourceRequest& request,
2239 mojom::URLLoaderAssociatedRequest mojo_request, 2239 mojom::URLLoaderRequest mojo_request,
2240 mojom::URLLoaderClientPtr url_loader_client) { 2240 mojom::URLLoaderClientPtr url_loader_client) {
2241 OnRequestResourceInternal(requester_info, routing_id, request_id, request, 2241 OnRequestResourceInternal(requester_info, routing_id, request_id, request,
2242 std::move(mojo_request), 2242 std::move(mojo_request),
2243 std::move(url_loader_client)); 2243 std::move(url_loader_client));
2244 } 2244 }
2245 2245
2246 void ResourceDispatcherHostImpl::OnSyncLoadWithMojo( 2246 void ResourceDispatcherHostImpl::OnSyncLoadWithMojo(
2247 ResourceRequesterInfo* requester_info, 2247 ResourceRequesterInfo* requester_info,
2248 int routing_id, 2248 int routing_id,
2249 int request_id, 2249 int request_id,
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
2778 if (iter->second > 2) { 2778 if (iter->second > 2) {
2779 active_tabs++; 2779 active_tabs++;
2780 if (active_tabs >= 2) 2780 if (active_tabs >= 2)
2781 return true; 2781 return true;
2782 } 2782 }
2783 } 2783 }
2784 return false; 2784 return false;
2785 } 2785 }
2786 2786
2787 } // namespace content 2787 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/resource_dispatcher_host_impl.h ('k') | content/browser/loader/resource_message_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698