Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 93 #include "content/public/common/browser_side_navigation_policy.h" | 93 #include "content/public/common/browser_side_navigation_policy.h" |
| 94 #include "content/public/common/content_features.h" | 94 #include "content/public/common/content_features.h" |
| 95 #include "content/public/common/content_switches.h" | 95 #include "content/public/common/content_switches.h" |
| 96 #include "content/public/common/process_type.h" | 96 #include "content/public/common/process_type.h" |
| 97 #include "ipc/ipc_message_macros.h" | 97 #include "ipc/ipc_message_macros.h" |
| 98 #include "ipc/ipc_message_start.h" | 98 #include "ipc/ipc_message_start.h" |
| 99 #include "net/base/auth.h" | 99 #include "net/base/auth.h" |
| 100 #include "net/base/load_flags.h" | 100 #include "net/base/load_flags.h" |
| 101 #include "net/base/mime_util.h" | 101 #include "net/base/mime_util.h" |
| 102 #include "net/base/net_errors.h" | 102 #include "net/base/net_errors.h" |
| 103 #include "net/base/network_delegate.h" | |
| 103 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 104 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
| 104 #include "net/base/request_priority.h" | 105 #include "net/base/request_priority.h" |
| 105 #include "net/base/upload_data_stream.h" | 106 #include "net/base/upload_data_stream.h" |
| 106 #include "net/cert/cert_status_flags.h" | 107 #include "net/cert/cert_status_flags.h" |
| 107 #include "net/cookies/cookie_monster.h" | 108 #include "net/cookies/cookie_monster.h" |
| 108 #include "net/http/http_response_headers.h" | 109 #include "net/http/http_response_headers.h" |
| 109 #include "net/http/http_response_info.h" | 110 #include "net/http/http_response_info.h" |
| 110 #include "net/ssl/ssl_cert_request_info.h" | 111 #include "net/ssl/ssl_cert_request_info.h" |
| 111 #include "net/url_request/url_request.h" | 112 #include "net/url_request/url_request.h" |
| 112 #include "net/url_request/url_request_context.h" | 113 #include "net/url_request/url_request_context.h" |
| (...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 912 ResourceRequestInfoImpl* info = loader->GetRequestInfo(); | 913 ResourceRequestInfoImpl* info = loader->GetRequestInfo(); |
| 913 | 914 |
| 914 if (!IsResourceTypeFrame(info->GetResourceType())) | 915 if (!IsResourceTypeFrame(info->GetResourceType())) |
| 915 return false; | 916 return false; |
| 916 | 917 |
| 917 const net::URLRequestJobFactory* job_factory = | 918 const net::URLRequestJobFactory* job_factory = |
| 918 info->GetContext()->GetRequestContext()->job_factory(); | 919 info->GetContext()->GetRequestContext()->job_factory(); |
| 919 if (job_factory->IsHandledURL(url)) | 920 if (job_factory->IsHandledURL(url)) |
| 920 return false; | 921 return false; |
| 921 | 922 |
| 923 const net::URLRequest* const req = loader->request(); | |
| 924 const net::NetworkDelegate* const network_delegate = req->network_delegate(); | |
| 925 // Get the state, if url is in blacklist, whitelist or in none of those. | |
|
Thiemo Nagel
2016/04/21 14:45:10
Please add pipes around url: |url|
igorcov
2016/04/21 16:01:34
Done.
| |
| 926 const net::NetworkDelegate::URLBlacklistState urlState = | |
| 927 network_delegate->GetURLBlacklistState(url); | |
| 928 | |
| 929 if (urlState == net::NetworkDelegate::URLBlacklistState::URL_IN_BLACKLIST) { | |
| 930 // It's a link with custom scheme and it's blacklisted. We return false here | |
| 931 // and let it process as a normal URL. Eventually chrome_network_delegate | |
| 932 // will see it's in the blacklist and the user will be shown the blocked | |
| 933 // content page. | |
| 934 return false; | |
| 935 } | |
| 936 | |
| 922 return delegate_->HandleExternalProtocol( | 937 return delegate_->HandleExternalProtocol( |
| 923 url, info->GetChildID(), info->GetWebContentsGetterForRequest(), | 938 url, info->GetChildID(), info->GetWebContentsGetterForRequest(), |
| 924 info->IsMainFrame(), info->GetPageTransition(), info->HasUserGesture()); | 939 info->IsMainFrame(), info->GetPageTransition(), info->HasUserGesture(), |
| 940 urlState == net::NetworkDelegate::URLBlacklistState::URL_IN_WHITELIST); | |
| 925 } | 941 } |
| 926 | 942 |
| 927 void ResourceDispatcherHostImpl::DidStartRequest(ResourceLoader* loader) { | 943 void ResourceDispatcherHostImpl::DidStartRequest(ResourceLoader* loader) { |
| 928 // Make sure we have the load state monitor running. | 944 // Make sure we have the load state monitor running. |
| 929 if (!update_load_states_timer_->IsRunning() && | 945 if (!update_load_states_timer_->IsRunning() && |
| 930 scheduler_->HasLoadingClients()) { | 946 scheduler_->HasLoadingClients()) { |
| 931 update_load_states_timer_->Start( | 947 update_load_states_timer_->Start( |
| 932 FROM_HERE, TimeDelta::FromMilliseconds(kUpdateLoadStatesIntervalMsec), | 948 FROM_HERE, TimeDelta::FromMilliseconds(kUpdateLoadStatesIntervalMsec), |
| 933 this, &ResourceDispatcherHostImpl::UpdateLoadInfo); | 949 this, &ResourceDispatcherHostImpl::UpdateLoadInfo); |
| 934 } | 950 } |
| (...skipping 1753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2688 ssl.cert_id = GetCertStore()->StoreCert(ssl_info.cert.get(), child_id); | 2704 ssl.cert_id = GetCertStore()->StoreCert(ssl_info.cert.get(), child_id); |
| 2689 response->head.security_info = SerializeSecurityInfo(ssl); | 2705 response->head.security_info = SerializeSecurityInfo(ssl); |
| 2690 } | 2706 } |
| 2691 | 2707 |
| 2692 CertStore* ResourceDispatcherHostImpl::GetCertStore() { | 2708 CertStore* ResourceDispatcherHostImpl::GetCertStore() { |
| 2693 return cert_store_for_testing_ ? cert_store_for_testing_ | 2709 return cert_store_for_testing_ ? cert_store_for_testing_ |
| 2694 : CertStore::GetInstance(); | 2710 : CertStore::GetInstance(); |
| 2695 } | 2711 } |
| 2696 | 2712 |
| 2697 } // namespace content | 2713 } // namespace content |
| OLD | NEW |