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

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

Issue 2062263002: Remove debugging code for fixed bugs. Also clean up unused includes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge again Created 4 years, 6 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 #include "content/browser/loader/navigation_resource_throttle.h" 54 #include "content/browser/loader/navigation_resource_throttle.h"
55 #include "content/browser/loader/navigation_url_loader_impl_core.h" 55 #include "content/browser/loader/navigation_url_loader_impl_core.h"
56 #include "content/browser/loader/power_save_block_resource_throttle.h" 56 #include "content/browser/loader/power_save_block_resource_throttle.h"
57 #include "content/browser/loader/redirect_to_file_resource_handler.h" 57 #include "content/browser/loader/redirect_to_file_resource_handler.h"
58 #include "content/browser/loader/resource_message_filter.h" 58 #include "content/browser/loader/resource_message_filter.h"
59 #include "content/browser/loader/resource_request_info_impl.h" 59 #include "content/browser/loader/resource_request_info_impl.h"
60 #include "content/browser/loader/stream_resource_handler.h" 60 #include "content/browser/loader/stream_resource_handler.h"
61 #include "content/browser/loader/sync_resource_handler.h" 61 #include "content/browser/loader/sync_resource_handler.h"
62 #include "content/browser/loader/throttling_resource_handler.h" 62 #include "content/browser/loader/throttling_resource_handler.h"
63 #include "content/browser/loader/upload_data_stream_builder.h" 63 #include "content/browser/loader/upload_data_stream_builder.h"
64 #include "content/browser/renderer_host/render_view_host_delegate.h"
65 #include "content/browser/renderer_host/render_view_host_impl.h" 64 #include "content/browser/renderer_host/render_view_host_impl.h"
66 #include "content/browser/resource_context_impl.h" 65 #include "content/browser/resource_context_impl.h"
67 #include "content/browser/service_worker/foreign_fetch_request_handler.h" 66 #include "content/browser/service_worker/foreign_fetch_request_handler.h"
68 #include "content/browser/service_worker/link_header_support.h" 67 #include "content/browser/service_worker/link_header_support.h"
69 #include "content/browser/service_worker/service_worker_request_handler.h" 68 #include "content/browser/service_worker/service_worker_request_handler.h"
70 #include "content/browser/streams/stream.h" 69 #include "content/browser/streams/stream.h"
71 #include "content/browser/streams/stream_context.h" 70 #include "content/browser/streams/stream_context.h"
72 #include "content/browser/streams/stream_registry.h" 71 #include "content/browser/streams/stream_registry.h"
73 #include "content/browser/web_contents/web_contents_impl.h" 72 #include "content/browser/web_contents/web_contents_impl.h"
74 #include "content/common/appcache_interfaces.h"
75 #include "content/common/navigation_params.h" 73 #include "content/common/navigation_params.h"
76 #include "content/common/net/url_request_service_worker_data.h" 74 #include "content/common/net/url_request_service_worker_data.h"
77 #include "content/common/resource_messages.h" 75 #include "content/common/resource_messages.h"
78 #include "content/common/resource_request.h" 76 #include "content/common/resource_request.h"
79 #include "content/common/resource_request_completion_status.h" 77 #include "content/common/resource_request_completion_status.h"
80 #include "content/common/site_isolation_policy.h" 78 #include "content/common/site_isolation_policy.h"
81 #include "content/common/ssl_status_serialization.h" 79 #include "content/common/ssl_status_serialization.h"
82 #include "content/common/view_messages.h" 80 #include "content/common/view_messages.h"
83 #include "content/public/browser/browser_thread.h" 81 #include "content/public/browser/browser_thread.h"
84 #include "content/public/browser/content_browser_client.h" 82 #include "content/public/browser/content_browser_client.h"
85 #include "content/public/browser/download_manager.h"
86 #include "content/public/browser/download_url_parameters.h"
87 #include "content/public/browser/global_request_id.h" 83 #include "content/public/browser/global_request_id.h"
88 #include "content/public/browser/plugin_service.h" 84 #include "content/public/browser/plugin_service.h"
89 #include "content/public/browser/resource_dispatcher_host_delegate.h" 85 #include "content/public/browser/resource_dispatcher_host_delegate.h"
90 #include "content/public/browser/resource_request_details.h" 86 #include "content/public/browser/resource_request_details.h"
91 #include "content/public/browser/resource_throttle.h" 87 #include "content/public/browser/resource_throttle.h"
92 #include "content/public/browser/stream_handle.h" 88 #include "content/public/browser/stream_handle.h"
93 #include "content/public/browser/stream_info.h" 89 #include "content/public/browser/stream_info.h"
94 #include "content/public/browser/user_metrics.h" 90 #include "content/public/browser/user_metrics.h"
95 #include "content/public/common/browser_side_navigation_policy.h" 91 #include "content/public/common/browser_side_navigation_policy.h"
96 #include "content/public/common/content_features.h" 92 #include "content/public/common/content_features.h"
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 626
631 void ResourceDispatcherHostImpl::SetDelegate( 627 void ResourceDispatcherHostImpl::SetDelegate(
632 ResourceDispatcherHostDelegate* delegate) { 628 ResourceDispatcherHostDelegate* delegate) {
633 delegate_ = delegate; 629 delegate_ = delegate;
634 } 630 }
635 631
636 void ResourceDispatcherHostImpl::SetAllowCrossOriginAuthPrompt(bool value) { 632 void ResourceDispatcherHostImpl::SetAllowCrossOriginAuthPrompt(bool value) {
637 allow_cross_origin_auth_prompt_ = value; 633 allow_cross_origin_auth_prompt_ = value;
638 } 634 }
639 635
640 void ResourceDispatcherHostImpl::AddResourceContext(ResourceContext* context) {
641 DCHECK_CURRENTLY_ON(BrowserThread::IO);
642 active_resource_contexts_.insert(context);
643 }
644
645 void ResourceDispatcherHostImpl::RemoveResourceContext(
646 ResourceContext* context) {
647 CHECK(ContainsKey(active_resource_contexts_, context));
648 active_resource_contexts_.erase(context);
649 }
650
651 void ResourceDispatcherHostImpl::CancelRequestsForContext( 636 void ResourceDispatcherHostImpl::CancelRequestsForContext(
652 ResourceContext* context) { 637 ResourceContext* context) {
653 DCHECK_CURRENTLY_ON(BrowserThread::IO); 638 DCHECK_CURRENTLY_ON(BrowserThread::IO);
654 DCHECK(context); 639 DCHECK(context);
655 640
656 CHECK(ContainsKey(active_resource_contexts_, context));
657
658 // Note that request cancellation has side effects. Therefore, we gather all 641 // Note that request cancellation has side effects. Therefore, we gather all
659 // the requests to cancel first, and then we start cancelling. We assert at 642 // the requests to cancel first, and then we start cancelling. We assert at
660 // the end that there are no more to cancel since the context is about to go 643 // the end that there are no more to cancel since the context is about to go
661 // away. 644 // away.
662 typedef std::vector<std::unique_ptr<ResourceLoader>> LoaderList; 645 typedef std::vector<std::unique_ptr<ResourceLoader>> LoaderList;
663 LoaderList loaders_to_cancel; 646 LoaderList loaders_to_cancel;
664 647
665 for (LoaderMap::iterator i = pending_loaders_.begin(); 648 for (LoaderMap::iterator i = pending_loaders_.begin();
666 i != pending_loaders_.end();) { 649 i != pending_loaders_.end();) {
667 ResourceLoader* loader = i->second.get(); 650 ResourceLoader* loader = i->second.get();
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 #endif 701 #endif
719 702
720 loaders_to_cancel.clear(); 703 loaders_to_cancel.clear();
721 704
722 if (async_revalidation_manager_) { 705 if (async_revalidation_manager_) {
723 // Cancelling async revalidations should not result in the creation of new 706 // Cancelling async revalidations should not result in the creation of new
724 // requests. Do it before the CHECKs to ensure this does not happen. 707 // requests. Do it before the CHECKs to ensure this does not happen.
725 async_revalidation_manager_->CancelAsyncRevalidationsForResourceContext( 708 async_revalidation_manager_->CancelAsyncRevalidationsForResourceContext(
726 context); 709 context);
727 } 710 }
728
729 // Validate that no more requests for this context were added.
730 for (const auto& loader : pending_loaders_) {
731 // http://crbug.com/90971
732 CHECK_NE(loader.second->GetRequestInfo()->GetContext(), context);
733 }
734
735 for (const auto& blocked_loaders : blocked_loaders_map_) {
736 BlockedLoadersList* loaders = blocked_loaders.second.get();
737 if (!loaders->empty()) {
738 ResourceRequestInfoImpl* info = loaders->front()->GetRequestInfo();
739 // http://crbug.com/90971
740 CHECK_NE(info->GetContext(), context);
741 }
742 }
743 } 711 }
744 712
745 DownloadInterruptReason ResourceDispatcherHostImpl::BeginDownload( 713 DownloadInterruptReason ResourceDispatcherHostImpl::BeginDownload(
746 std::unique_ptr<net::URLRequest> request, 714 std::unique_ptr<net::URLRequest> request,
747 const Referrer& referrer, 715 const Referrer& referrer,
748 bool is_content_initiated, 716 bool is_content_initiated,
749 ResourceContext* context, 717 ResourceContext* context,
750 int render_process_id, 718 int render_process_id,
751 int render_view_route_id, 719 int render_view_route_id,
752 int render_frame_route_id, 720 int render_frame_route_id,
753 bool do_not_prompt_for_login) { 721 bool do_not_prompt_for_login) {
754 if (is_shutdown_) 722 if (is_shutdown_)
755 return DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN; 723 return DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN;
756 724
757 const GURL& url = request->original_url(); 725 const GURL& url = request->original_url();
758
759 // http://crbug.com/90971
760 char url_buf[128];
761 base::strlcpy(url_buf, url.spec().c_str(), arraysize(url_buf));
762 base::debug::Alias(url_buf);
763 CHECK(ContainsKey(active_resource_contexts_, context));
764
765 SetReferrerForRequest(request.get(), referrer); 726 SetReferrerForRequest(request.get(), referrer);
766 727
767 // We treat a download as a main frame load, and thus update the policy URL on 728 // We treat a download as a main frame load, and thus update the policy URL on
768 // redirects. 729 // redirects.
769 // 730 //
770 // TODO(davidben): Is this correct? If this came from a 731 // TODO(davidben): Is this correct? If this came from a
771 // ViewHostMsg_DownloadUrl in a frame, should it have first-party URL set 732 // ViewHostMsg_DownloadUrl in a frame, should it have first-party URL set
772 // appropriately? 733 // appropriately?
773 request->set_first_party_url_policy( 734 request->set_first_party_url_policy(
774 net::URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT); 735 net::URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT);
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
1420 bad_message::ReceivedBadMessage( 1381 bad_message::ReceivedBadMessage(
1421 filter_, bad_message::RDH_REQUEST_NOT_TRANSFERRING); 1382 filter_, bad_message::RDH_REQUEST_NOT_TRANSFERRING);
1422 } 1383 }
1423 return; 1384 return;
1424 } 1385 }
1425 1386
1426 ResourceContext* resource_context = NULL; 1387 ResourceContext* resource_context = NULL;
1427 net::URLRequestContext* request_context = NULL; 1388 net::URLRequestContext* request_context = NULL;
1428 filter_->GetContexts(request_data.resource_type, request_data.origin_pid, 1389 filter_->GetContexts(request_data.resource_type, request_data.origin_pid,
1429 &resource_context, &request_context); 1390 &resource_context, &request_context);
1430 // http://crbug.com/90971
1431 CHECK(ContainsKey(active_resource_contexts_, resource_context));
1432 1391
1433 // Parse the headers before calling ShouldServiceRequest, so that they are 1392 // Parse the headers before calling ShouldServiceRequest, so that they are
1434 // available to be validated. 1393 // available to be validated.
1435 net::HttpRequestHeaders headers; 1394 net::HttpRequestHeaders headers;
1436 headers.AddHeadersFromString(request_data.headers); 1395 headers.AddHeadersFromString(request_data.headers);
1437 1396
1438 if (is_shutdown_ || 1397 if (is_shutdown_ ||
1439 !ShouldServiceRequest(process_type, child_id, request_data, headers, 1398 !ShouldServiceRequest(process_type, child_id, request_data, headers,
1440 filter_, resource_context)) { 1399 filter_, resource_context)) {
1441 AbortRequestBeforeItStarts(filter_, sync_result, request_id); 1400 AbortRequestBeforeItStarts(filter_, sync_result, request_id);
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
1910 const Referrer& referrer, 1869 const Referrer& referrer,
1911 SaveItemId save_item_id, 1870 SaveItemId save_item_id,
1912 SavePackageId save_package_id, 1871 SavePackageId save_package_id,
1913 int child_id, 1872 int child_id,
1914 int render_view_route_id, 1873 int render_view_route_id,
1915 int render_frame_route_id, 1874 int render_frame_route_id,
1916 ResourceContext* context) { 1875 ResourceContext* context) {
1917 if (is_shutdown_) 1876 if (is_shutdown_)
1918 return; 1877 return;
1919 1878
1920 // http://crbug.com/90971
1921 char url_buf[128];
1922 base::strlcpy(url_buf, url.spec().c_str(), arraysize(url_buf));
1923 base::debug::Alias(url_buf);
1924 CHECK(ContainsKey(active_resource_contexts_, context));
1925
1926 request_id_--; 1879 request_id_--;
1927 1880
1928 const net::URLRequestContext* request_context = context->GetRequestContext(); 1881 const net::URLRequestContext* request_context = context->GetRequestContext();
1929 bool known_proto = 1882 bool known_proto =
1930 request_context->job_factory()->IsHandledURL(url); 1883 request_context->job_factory()->IsHandledURL(url);
1931 if (!known_proto) { 1884 if (!known_proto) {
1932 // Since any URLs which have non-standard scheme have been filtered 1885 // Since any URLs which have non-standard scheme have been filtered
1933 // by save manager(see GURL::SchemeIsStandard). This situation 1886 // by save manager(see GURL::SchemeIsStandard). This situation
1934 // should not happen. 1887 // should not happen.
1935 NOTREACHED(); 1888 NOTREACHED();
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
2200 // navigation. It's where file upload checks, etc., come in. 2153 // navigation. It's where file upload checks, etc., come in.
2201 (delegate_ && !delegate_->ShouldBeginRequest( 2154 (delegate_ && !delegate_->ShouldBeginRequest(
2202 info.common_params.method, 2155 info.common_params.method,
2203 info.common_params.url, 2156 info.common_params.url,
2204 resource_type, 2157 resource_type,
2205 resource_context))) { 2158 resource_context))) {
2206 loader->NotifyRequestFailed(false, net::ERR_ABORTED); 2159 loader->NotifyRequestFailed(false, net::ERR_ABORTED);
2207 return; 2160 return;
2208 } 2161 }
2209 2162
2210 // Save the URL on the stack to help catch URLRequests which outlive their
2211 // URLRequestContexts. See https://crbug.com/90971
2212 char url_buf[128];
2213 base::strlcpy(
2214 url_buf, info.common_params.url.spec().c_str(), arraysize(url_buf));
2215 base::debug::Alias(url_buf);
2216 CHECK(ContainsKey(active_resource_contexts_, resource_context));
2217
2218 const net::URLRequestContext* request_context = 2163 const net::URLRequestContext* request_context =
2219 resource_context->GetRequestContext(); 2164 resource_context->GetRequestContext();
2220 2165
2221 int load_flags = info.begin_params.load_flags; 2166 int load_flags = info.begin_params.load_flags;
2222 load_flags |= net::LOAD_VERIFY_EV_CERT; 2167 load_flags |= net::LOAD_VERIFY_EV_CERT;
2223 if (info.is_main_frame) 2168 if (info.is_main_frame)
2224 load_flags |= net::LOAD_MAIN_FRAME; 2169 load_flags |= net::LOAD_MAIN_FRAME;
2225 2170
2226 // TODO(davidben): BuildLoadFlagsForRequest includes logic for 2171 // TODO(davidben): BuildLoadFlagsForRequest includes logic for
2227 // CanSendCookiesForOrigin and CanReadRawCookies. Is this needed here? 2172 // CanSendCookiesForOrigin and CanReadRawCookies. Is this needed here?
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
2693 ssl.cert_id = GetCertStore()->StoreCert(ssl_info.cert.get(), child_id); 2638 ssl.cert_id = GetCertStore()->StoreCert(ssl_info.cert.get(), child_id);
2694 response->head.security_info = SerializeSecurityInfo(ssl); 2639 response->head.security_info = SerializeSecurityInfo(ssl);
2695 } 2640 }
2696 2641
2697 CertStore* ResourceDispatcherHostImpl::GetCertStore() { 2642 CertStore* ResourceDispatcherHostImpl::GetCertStore() {
2698 return cert_store_for_testing_ ? cert_store_for_testing_ 2643 return cert_store_for_testing_ ? cert_store_for_testing_
2699 : CertStore::GetInstance(); 2644 : CertStore::GetInstance();
2700 } 2645 }
2701 2646
2702 } // namespace content 2647 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/resource_dispatcher_host_impl.h ('k') | content/browser/resource_context_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698