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

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

Issue 2327433002: Stop using CertStore which is not compatible with PlzNavigate. (Closed)
Patch Set: remove cert_store on ios Created 4 years, 3 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 19 matching lines...) Expand all
30 #include "base/metrics/sparse_histogram.h" 30 #include "base/metrics/sparse_histogram.h"
31 #include "base/profiler/scoped_tracker.h" 31 #include "base/profiler/scoped_tracker.h"
32 #include "base/stl_util.h" 32 #include "base/stl_util.h"
33 #include "base/strings/string_util.h" 33 #include "base/strings/string_util.h"
34 #include "base/third_party/dynamic_annotations/dynamic_annotations.h" 34 #include "base/third_party/dynamic_annotations/dynamic_annotations.h"
35 #include "base/time/time.h" 35 #include "base/time/time.h"
36 #include "content/browser/appcache/appcache_interceptor.h" 36 #include "content/browser/appcache/appcache_interceptor.h"
37 #include "content/browser/appcache/chrome_appcache_service.h" 37 #include "content/browser/appcache/chrome_appcache_service.h"
38 #include "content/browser/bad_message.h" 38 #include "content/browser/bad_message.h"
39 #include "content/browser/blob_storage/chrome_blob_storage_context.h" 39 #include "content/browser/blob_storage/chrome_blob_storage_context.h"
40 #include "content/browser/cert_store_impl.h"
41 #include "content/browser/child_process_security_policy_impl.h" 40 #include "content/browser/child_process_security_policy_impl.h"
42 #include "content/browser/frame_host/frame_tree.h" 41 #include "content/browser/frame_host/frame_tree.h"
43 #include "content/browser/frame_host/navigation_handle_impl.h" 42 #include "content/browser/frame_host/navigation_handle_impl.h"
44 #include "content/browser/frame_host/navigation_request_info.h" 43 #include "content/browser/frame_host/navigation_request_info.h"
45 #include "content/browser/frame_host/navigator.h" 44 #include "content/browser/frame_host/navigator.h"
46 #include "content/browser/loader/async_resource_handler.h" 45 #include "content/browser/loader/async_resource_handler.h"
47 #include "content/browser/loader/async_revalidation_manager.h" 46 #include "content/browser/loader/async_revalidation_manager.h"
48 #include "content/browser/loader/cross_site_resource_handler.h" 47 #include "content/browser/loader/cross_site_resource_handler.h"
49 #include "content/browser/loader/detachable_resource_handler.h" 48 #include "content/browser/loader/detachable_resource_handler.h"
50 #include "content/browser/loader/intercepting_resource_handler.h" 49 #include "content/browser/loader/intercepting_resource_handler.h"
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 } 287 }
289 request->set_referrer_policy(net_referrer_policy); 288 request->set_referrer_policy(net_referrer_policy);
290 } 289 }
291 290
292 void RemoveDownloadFileFromChildSecurityPolicy(int child_id, 291 void RemoveDownloadFileFromChildSecurityPolicy(int child_id,
293 const base::FilePath& path) { 292 const base::FilePath& path) {
294 ChildProcessSecurityPolicyImpl::GetInstance()->RevokeAllPermissionsForFile( 293 ChildProcessSecurityPolicyImpl::GetInstance()->RevokeAllPermissionsForFile(
295 child_id, path); 294 child_id, path);
296 } 295 }
297 296
298 int GetCertID(CertStore* cert_store, net::URLRequest* request, int child_id) {
299 if (request->ssl_info().cert.get())
300 return cert_store->StoreCert(request->ssl_info().cert.get(), child_id);
301 return 0;
302 }
303
304 bool IsValidatedSCT( 297 bool IsValidatedSCT(
305 const net::SignedCertificateTimestampAndStatus& sct_status) { 298 const net::SignedCertificateTimestampAndStatus& sct_status) {
306 return sct_status.status == net::ct::SCT_STATUS_OK; 299 return sct_status.status == net::ct::SCT_STATUS_OK;
307 } 300 }
308 301
309 storage::BlobStorageContext* GetBlobStorageContext( 302 storage::BlobStorageContext* GetBlobStorageContext(
310 ChromeBlobStorageContext* blob_storage_context) { 303 ChromeBlobStorageContext* blob_storage_context) {
311 if (!blob_storage_context) 304 if (!blob_storage_context)
312 return NULL; 305 return NULL;
313 return blob_storage_context->context(); 306 return blob_storage_context->context();
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 if (frame_host) 406 if (frame_host)
414 routing_ids->insert(frame_host->GetGlobalFrameRoutingId()); 407 routing_ids->insert(frame_host->GetGlobalFrameRoutingId());
415 if (pending_frame_host) 408 if (pending_frame_host)
416 routing_ids->insert(pending_frame_host->GetGlobalFrameRoutingId()); 409 routing_ids->insert(pending_frame_host->GetGlobalFrameRoutingId());
417 } 410 }
418 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 411 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
419 base::Bind(&NotifyForRouteSetOnIO, frame_callback, 412 base::Bind(&NotifyForRouteSetOnIO, frame_callback,
420 base::Passed(std::move(routing_ids)))); 413 base::Passed(std::move(routing_ids))));
421 } 414 }
422 415
423 void UpdateSSLStatus(int render_process_id,
424 int render_frame_host_id,
425 const GURL& url,
426 CertStore* cert_store) {
427 RenderFrameHostImpl* render_frame_host =
428 RenderFrameHostImpl::FromID(render_process_id, render_frame_host_id);
429 if (!render_frame_host)
430 return;
431
432 NavigationHandleImpl* navigation_handle =
433 render_frame_host->navigation_handle();
434 if (!navigation_handle || navigation_handle->GetURL() != url)
435 return;
436
437 scoped_refptr<net::X509Certificate> cert;
438 if (!cert_store->RetrieveCert(
439 navigation_handle->ssl_status().cert_id, &cert)) {
440 NOTREACHED() << "Must have set an SSL certificate already.";
441 return;
442 }
443
444 int new_cert_id = cert_store->StoreCert(cert.get(), render_process_id);
445 navigation_handle->UpdateSSLCertId(new_cert_id);
446 }
447
448 } // namespace 416 } // namespace
449 417
450 ResourceDispatcherHostImpl::HeaderInterceptorInfo::HeaderInterceptorInfo() {} 418 ResourceDispatcherHostImpl::HeaderInterceptorInfo::HeaderInterceptorInfo() {}
451 419
452 ResourceDispatcherHostImpl::HeaderInterceptorInfo::~HeaderInterceptorInfo() {} 420 ResourceDispatcherHostImpl::HeaderInterceptorInfo::~HeaderInterceptorInfo() {}
453 421
454 ResourceDispatcherHostImpl::HeaderInterceptorInfo::HeaderInterceptorInfo( 422 ResourceDispatcherHostImpl::HeaderInterceptorInfo::HeaderInterceptorInfo(
455 const HeaderInterceptorInfo& other) {} 423 const HeaderInterceptorInfo& other) {}
456 424
457 // static 425 // static
458 ResourceDispatcherHost* ResourceDispatcherHost::Get() { 426 ResourceDispatcherHost* ResourceDispatcherHost::Get() {
459 return g_resource_dispatcher_host; 427 return g_resource_dispatcher_host;
460 } 428 }
461 429
462 ResourceDispatcherHostImpl::ResourceDispatcherHostImpl( 430 ResourceDispatcherHostImpl::ResourceDispatcherHostImpl(
463 CreateDownloadHandlerIntercept download_handler_intercept) 431 CreateDownloadHandlerIntercept download_handler_intercept)
464 : request_id_(-1), 432 : request_id_(-1),
465 is_shutdown_(false), 433 is_shutdown_(false),
466 num_in_flight_requests_(0), 434 num_in_flight_requests_(0),
467 max_num_in_flight_requests_(base::SharedMemory::GetHandleLimit()), 435 max_num_in_flight_requests_(base::SharedMemory::GetHandleLimit()),
468 max_num_in_flight_requests_per_process_(static_cast<int>( 436 max_num_in_flight_requests_per_process_(static_cast<int>(
469 max_num_in_flight_requests_ * kMaxRequestsPerProcessRatio)), 437 max_num_in_flight_requests_ * kMaxRequestsPerProcessRatio)),
470 max_outstanding_requests_cost_per_process_( 438 max_outstanding_requests_cost_per_process_(
471 kMaxOutstandingRequestsCostPerProcess), 439 kMaxOutstandingRequestsCostPerProcess),
472 filter_(nullptr), 440 filter_(nullptr),
473 delegate_(nullptr), 441 delegate_(nullptr),
474 loader_delegate_(nullptr), 442 loader_delegate_(nullptr),
475 allow_cross_origin_auth_prompt_(false), 443 allow_cross_origin_auth_prompt_(false),
476 cert_store_for_testing_(nullptr),
477 create_download_handler_intercept_(download_handler_intercept) { 444 create_download_handler_intercept_(download_handler_intercept) {
478 DCHECK_CURRENTLY_ON(BrowserThread::UI); 445 DCHECK_CURRENTLY_ON(BrowserThread::UI);
479 DCHECK(!g_resource_dispatcher_host); 446 DCHECK(!g_resource_dispatcher_host);
480 g_resource_dispatcher_host = this; 447 g_resource_dispatcher_host = this;
481 448
482 ANNOTATE_BENIGN_RACE( 449 ANNOTATE_BENIGN_RACE(
483 &last_user_gesture_time_, 450 &last_user_gesture_time_,
484 "We don't care about the precise value, see http://crbug.com/92889"); 451 "We don't care about the precise value, see http://crbug.com/92889");
485 452
486 BrowserThread::PostTask(BrowserThread::IO, 453 BrowserThread::PostTask(BrowserThread::IO,
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 775
809 // Don't notify WebContents observers for requests known to be 776 // Don't notify WebContents observers for requests known to be
810 // downloads; they aren't really associated with the Webcontents. 777 // downloads; they aren't really associated with the Webcontents.
811 // Note that not all downloads are known before content sniffing. 778 // Note that not all downloads are known before content sniffing.
812 if (info->IsDownload()) 779 if (info->IsDownload())
813 return; 780 return;
814 781
815 // Notify the observers on the UI thread. 782 // Notify the observers on the UI thread.
816 std::unique_ptr<ResourceRedirectDetails> detail(new ResourceRedirectDetails( 783 std::unique_ptr<ResourceRedirectDetails> detail(new ResourceRedirectDetails(
817 loader->request(), 784 loader->request(),
818 GetCertID(GetCertStore(), loader->request(), info->GetChildID()), 785 !!request->ssl_info().cert,
819 new_url)); 786 new_url));
820 loader_delegate_->DidGetRedirectForResourceRequest( 787 loader_delegate_->DidGetRedirectForResourceRequest(
821 render_process_id, render_frame_host, std::move(detail)); 788 render_process_id, render_frame_host, std::move(detail));
822 } 789 }
823 790
824 void ResourceDispatcherHostImpl::DidReceiveResponse(ResourceLoader* loader) { 791 void ResourceDispatcherHostImpl::DidReceiveResponse(ResourceLoader* loader) {
825 ResourceRequestInfoImpl* info = loader->GetRequestInfo(); 792 ResourceRequestInfoImpl* info = loader->GetRequestInfo();
826 net::URLRequest* request = loader->request(); 793 net::URLRequest* request = loader->request();
827 if (request->was_fetched_via_proxy() && 794 if (request->was_fetched_via_proxy() &&
828 request->was_fetched_via_spdy() && 795 request->was_fetched_via_spdy() &&
(...skipping 15 matching lines...) Expand all
844 return; 811 return;
845 812
846 // Don't notify WebContents observers for requests known to be 813 // Don't notify WebContents observers for requests known to be
847 // downloads; they aren't really associated with the Webcontents. 814 // downloads; they aren't really associated with the Webcontents.
848 // Note that not all downloads are known before content sniffing. 815 // Note that not all downloads are known before content sniffing.
849 if (info->IsDownload()) 816 if (info->IsDownload())
850 return; 817 return;
851 818
852 // Notify the observers on the UI thread. 819 // Notify the observers on the UI thread.
853 std::unique_ptr<ResourceRequestDetails> detail(new ResourceRequestDetails( 820 std::unique_ptr<ResourceRequestDetails> detail(new ResourceRequestDetails(
854 request, GetCertID(GetCertStore(), request, info->GetChildID()))); 821 request, !!request->ssl_info().cert));
855 loader_delegate_->DidGetResourceResponseStart( 822 loader_delegate_->DidGetResourceResponseStart(
856 render_process_id, render_frame_host, std::move(detail)); 823 render_process_id, render_frame_host, std::move(detail));
857 } 824 }
858 825
859 void ResourceDispatcherHostImpl::DidFinishLoading(ResourceLoader* loader) { 826 void ResourceDispatcherHostImpl::DidFinishLoading(ResourceLoader* loader) {
860 ResourceRequestInfoImpl* info = loader->GetRequestInfo(); 827 ResourceRequestInfoImpl* info = loader->GetRequestInfo();
861 828
862 // Record final result of all resource loads. 829 // Record final result of all resource loads.
863 if (info->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME) { 830 if (info->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME) {
864 // This enumeration has "3" appended to its name to distinguish it from 831 // This enumeration has "3" appended to its name to distinguish it from
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
1150 ResourceLoader* loader_ptr = loader.get(); 1117 ResourceLoader* loader_ptr = loader.get();
1151 pending_loaders_.erase(iter); 1118 pending_loaders_.erase(iter);
1152 1119
1153 // ResourceHandlers should always get state related to the request from the 1120 // ResourceHandlers should always get state related to the request from the
1154 // ResourceRequestInfo rather than caching it locally. This lets us update 1121 // ResourceRequestInfo rather than caching it locally. This lets us update
1155 // the info object when a transfer occurs. 1122 // the info object when a transfer occurs.
1156 info->UpdateForTransfer(child_id, route_id, request_data.render_frame_id, 1123 info->UpdateForTransfer(child_id, route_id, request_data.render_frame_id,
1157 request_data.origin_pid, request_id, 1124 request_data.origin_pid, request_id,
1158 filter_->GetWeakPtr()); 1125 filter_->GetWeakPtr());
1159 1126
1160 // If a certificate is stored with the ResourceResponse, it has to be
1161 // updated to be associated with the new process.
1162 if (loader->transferring_response()) {
1163 UpdateResponseCertificateForTransfer(loader->transferring_response(),
1164 loader->request(),
1165 info);
1166 }
1167
1168 // Update maps that used the old IDs, if necessary. Some transfers in tests 1127 // Update maps that used the old IDs, if necessary. Some transfers in tests
1169 // do not actually use a different ID, so not all maps need to be updated. 1128 // do not actually use a different ID, so not all maps need to be updated.
1170 pending_loaders_[new_request_id] = std::move(loader); 1129 pending_loaders_[new_request_id] = std::move(loader);
1171 IncrementOutstandingRequestsMemory(1, *info); 1130 IncrementOutstandingRequestsMemory(1, *info);
1172 if (should_update_count) 1131 if (should_update_count)
1173 IncrementOutstandingRequestsCount(1, info); 1132 IncrementOutstandingRequestsCount(1, info);
1174 if (old_routing_id != new_routing_id) { 1133 if (old_routing_id != new_routing_id) {
1175 if (blocked_loaders_map_.find(old_routing_id) != 1134 if (blocked_loaders_map_.find(old_routing_id) !=
1176 blocked_loaders_map_.end()) { 1135 blocked_loaders_map_.end()) {
1177 blocked_loaders_map_[new_routing_id] = 1136 blocked_loaders_map_[new_routing_id] =
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
1660 InterceptingResourceHandler* intercepting_handler = 1619 InterceptingResourceHandler* intercepting_handler =
1661 static_cast<InterceptingResourceHandler*>(handler.get()); 1620 static_cast<InterceptingResourceHandler*>(handler.get());
1662 1621
1663 ScopedVector<ResourceThrottle> throttles; 1622 ScopedVector<ResourceThrottle> throttles;
1664 1623
1665 // Add a NavigationResourceThrottle for navigations. 1624 // Add a NavigationResourceThrottle for navigations.
1666 // PlzNavigate: the throttle is unnecessary as communication with the UI 1625 // PlzNavigate: the throttle is unnecessary as communication with the UI
1667 // thread is handled by the NavigationURLloader. 1626 // thread is handled by the NavigationURLloader.
1668 if (!IsBrowserSideNavigationEnabled() && IsResourceTypeFrame(resource_type)) { 1627 if (!IsBrowserSideNavigationEnabled() && IsResourceTypeFrame(resource_type)) {
1669 throttles.push_back(new NavigationResourceThrottle( 1628 throttles.push_back(new NavigationResourceThrottle(
1670 request, delegate_, GetCertStore(), fetch_request_context_type)); 1629 request, delegate_, fetch_request_context_type));
1671 } 1630 }
1672 1631
1673 if (delegate_) { 1632 if (delegate_) {
1674 delegate_->RequestBeginning(request, 1633 delegate_->RequestBeginning(request,
1675 resource_context, 1634 resource_context,
1676 appcache_service, 1635 appcache_service,
1677 resource_type, 1636 resource_type,
1678 &throttles); 1637 &throttles);
1679 } 1638 }
1680 1639
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after
2222 // Hang on to a reference to ensure the blob is not released prior 2181 // Hang on to a reference to ensure the blob is not released prior
2223 // to the job being started. 2182 // to the job being started.
2224 storage::BlobProtocolHandler::SetRequestedBlobDataHandle( 2183 storage::BlobProtocolHandler::SetRequestedBlobDataHandle(
2225 new_request.get(), 2184 new_request.get(),
2226 blob_context->GetBlobDataFromPublicURL(new_request->url())); 2185 blob_context->GetBlobDataFromPublicURL(new_request->url()));
2227 } 2186 }
2228 2187
2229 // TODO(davidben): Attach AppCacheInterceptor. 2188 // TODO(davidben): Attach AppCacheInterceptor.
2230 2189
2231 std::unique_ptr<ResourceHandler> handler( 2190 std::unique_ptr<ResourceHandler> handler(
2232 new NavigationResourceHandler(new_request.get(), loader, delegate(), 2191 new NavigationResourceHandler(new_request.get(), loader, delegate()));
2233 GetCertStore()));
2234 2192
2235 // TODO(davidben): Pass in the appropriate appcache_service. Also fix the 2193 // TODO(davidben): Pass in the appropriate appcache_service. Also fix the
2236 // dependency on child_id/route_id. Those are used by the ResourceScheduler; 2194 // dependency on child_id/route_id. Those are used by the ResourceScheduler;
2237 // currently it's a no-op. 2195 // currently it's a no-op.
2238 handler = 2196 handler =
2239 AddStandardHandlers(new_request.get(), resource_type, resource_context, 2197 AddStandardHandlers(new_request.get(), resource_type, resource_context,
2240 info.begin_params.request_context_type, 2198 info.begin_params.request_context_type,
2241 nullptr, // appcache_service 2199 nullptr, // appcache_service
2242 -1, // child_id 2200 -1, // child_id
2243 -1, // route_id 2201 -1, // route_id
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
2322 } 2280 }
2323 2281
2324 IncrementOutstandingRequestsMemory(-1, *info); 2282 IncrementOutstandingRequestsMemory(-1, *info);
2325 2283
2326 // A ResourceHandler must not outlive its associated URLRequest. 2284 // A ResourceHandler must not outlive its associated URLRequest.
2327 handler.reset(); 2285 handler.reset();
2328 return; 2286 return;
2329 } 2287 }
2330 2288
2331 std::unique_ptr<ResourceLoader> loader(new ResourceLoader( 2289 std::unique_ptr<ResourceLoader> loader(new ResourceLoader(
2332 std::move(request), std::move(handler), GetCertStore(), this)); 2290 std::move(request), std::move(handler), this));
2333 2291
2334 GlobalFrameRoutingId id(info->GetChildID(), info->GetRenderFrameID()); 2292 GlobalFrameRoutingId id(info->GetChildID(), info->GetRenderFrameID());
2335 BlockedLoadersMap::const_iterator iter = blocked_loaders_map_.find(id); 2293 BlockedLoadersMap::const_iterator iter = blocked_loaders_map_.find(id);
2336 if (iter != blocked_loaders_map_.end()) { 2294 if (iter != blocked_loaders_map_.end()) {
2337 // The request should be blocked. 2295 // The request should be blocked.
2338 iter->second->push_back(std::move(loader)); 2296 iter->second->push_back(std::move(loader));
2339 return; 2297 return;
2340 } 2298 }
2341 2299
2342 StartLoading(info, std::move(loader)); 2300 StartLoading(info, std::move(loader));
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
2627 } else if (request_data.resource_type == RESOURCE_TYPE_PREFETCH) { 2585 } else if (request_data.resource_type == RESOURCE_TYPE_PREFETCH) {
2628 load_flags |= net::LOAD_PREFETCH; 2586 load_flags |= net::LOAD_PREFETCH;
2629 } 2587 }
2630 2588
2631 if (is_sync_load) 2589 if (is_sync_load)
2632 load_flags |= net::LOAD_IGNORE_LIMITS; 2590 load_flags |= net::LOAD_IGNORE_LIMITS;
2633 2591
2634 return load_flags; 2592 return load_flags;
2635 } 2593 }
2636 2594
2637 void ResourceDispatcherHostImpl::UpdateResponseCertificateForTransfer(
2638 ResourceResponse* response,
2639 net::URLRequest* request,
2640 ResourceRequestInfoImpl* info) {
2641 const net::SSLInfo& ssl_info = request->ssl_info();
2642 if (info->GetResourceType() != RESOURCE_TYPE_MAIN_FRAME || !ssl_info.cert)
2643 return;
2644 int render_process_id, render_frame_id;
2645 if (info->GetAssociatedRenderFrame(&render_process_id, &render_frame_id)) {
2646 BrowserThread::PostTask(BrowserThread::UI,
2647 FROM_HERE,
2648 base::Bind(UpdateSSLStatus,
2649 render_process_id,
2650 render_frame_id,
2651 request->url(),
2652 GetCertStore()));
2653 }
2654 }
2655
2656 CertStore* ResourceDispatcherHostImpl::GetCertStore() {
2657 return cert_store_for_testing_ ? cert_store_for_testing_
2658 : CertStore::GetInstance();
2659 }
2660
2661 bool ResourceDispatcherHostImpl::ShouldServiceRequest( 2595 bool ResourceDispatcherHostImpl::ShouldServiceRequest(
2662 int process_type, 2596 int process_type,
2663 int child_id, 2597 int child_id,
2664 const ResourceRequest& request_data, 2598 const ResourceRequest& request_data,
2665 const net::HttpRequestHeaders& headers, 2599 const net::HttpRequestHeaders& headers,
2666 ResourceMessageFilter* filter, 2600 ResourceMessageFilter* filter,
2667 ResourceContext* resource_context) { 2601 ResourceContext* resource_context) {
2668 ChildProcessSecurityPolicyImpl* policy = 2602 ChildProcessSecurityPolicyImpl* policy =
2669 ChildProcessSecurityPolicyImpl::GetInstance(); 2603 ChildProcessSecurityPolicyImpl::GetInstance();
2670 2604
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
2730 request_info->GetRouteID(), is_content_initiated, true, &throttles); 2664 request_info->GetRouteID(), is_content_initiated, true, &throttles);
2731 if (!throttles.empty()) { 2665 if (!throttles.empty()) {
2732 handler.reset(new ThrottlingResourceHandler(std::move(handler), request, 2666 handler.reset(new ThrottlingResourceHandler(std::move(handler), request,
2733 std::move(throttles))); 2667 std::move(throttles)));
2734 } 2668 }
2735 } 2669 }
2736 return handler; 2670 return handler;
2737 } 2671 }
2738 2672
2739 } // namespace content 2673 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/resource_dispatcher_host_impl.h ('k') | content/browser/loader/resource_dispatcher_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698