| 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 e594cb76d5aef0b6545234d41d7bfa1bb0eee8c1..32b0600b183a89ac715dd016af8b1b9e5a3af195 100644
|
| --- a/content/browser/loader/resource_dispatcher_host_impl.cc
|
| +++ b/content/browser/loader/resource_dispatcher_host_impl.cc
|
| @@ -100,6 +100,7 @@
|
| #include "net/base/load_flags.h"
|
| #include "net/base/mime_util.h"
|
| #include "net/base/net_errors.h"
|
| +#include "net/base/network_delegate.h"
|
| #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
|
| #include "net/base/request_priority.h"
|
| #include "net/base/upload_data_stream.h"
|
| @@ -919,9 +920,24 @@ bool ResourceDispatcherHostImpl::HandleExternalProtocol(ResourceLoader* loader,
|
| if (job_factory->IsHandledURL(url))
|
| return false;
|
|
|
| + const net::URLRequest* const req = loader->request();
|
| + const net::NetworkDelegate* const network_delegate = req->network_delegate();
|
| + // Get the state, if |url| is in blacklist, whitelist or in none of those.
|
| + const net::NetworkDelegate::URLBlacklistState urlState =
|
| + network_delegate->GetURLBlacklistState(url);
|
| +
|
| + if (urlState == net::NetworkDelegate::URLBlacklistState::URL_IN_BLACKLIST) {
|
| + // It's a link with custom scheme and it's blacklisted. We return false here
|
| + // and let it process as a normal URL. Eventually chrome_network_delegate
|
| + // will see it's in the blacklist and the user will be shown the blocked
|
| + // content page.
|
| + return false;
|
| + }
|
| +
|
| return delegate_->HandleExternalProtocol(
|
| url, info->GetChildID(), info->GetWebContentsGetterForRequest(),
|
| - info->IsMainFrame(), info->GetPageTransition(), info->HasUserGesture());
|
| + info->IsMainFrame(), info->GetPageTransition(), info->HasUserGesture(),
|
| + urlState == net::NetworkDelegate::URLBlacklistState::URL_IN_WHITELIST);
|
| }
|
|
|
| void ResourceDispatcherHostImpl::DidStartRequest(ResourceLoader* loader) {
|
|
|