summaryrefslogtreecommitdiffstats
path: root/chromium/content/browser/download/download_resource_handler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/download/download_resource_handler.cc')
-rw-r--r--chromium/content/browser/download/download_resource_handler.cc25
1 files changed, 14 insertions, 11 deletions
diff --git a/chromium/content/browser/download/download_resource_handler.cc b/chromium/content/browser/download/download_resource_handler.cc
index 7863fc30a69..54323eebcda 100644
--- a/chromium/content/browser/download/download_resource_handler.cc
+++ b/chromium/content/browser/download/download_resource_handler.cc
@@ -205,17 +205,20 @@ void DownloadResourceHandler::OnRequestRedirected(
url::Origin new_origin(url::Origin::Create(redirect_info.new_url));
if (!follow_cross_origin_redirects_ &&
!first_origin_.IsSameOriginWith(new_origin)) {
- base::PostTaskWithTraits(
- FROM_HERE, {BrowserThread::UI},
- base::BindOnce(
- &NavigateOnUIThread, redirect_info.new_url, request()->url_chain(),
- Referrer(GURL(redirect_info.new_referrer),
- Referrer::NetReferrerPolicyToBlinkReferrerPolicy(
- redirect_info.new_referrer_policy)),
- GetRequestInfo()->HasUserGesture(),
- true /* from_download_cross_origin_redirect */,
- GetRequestInfo()->GetWebContentsGetterForRequest(),
- GetRequestInfo()->frame_tree_node_id()));
+ if (redirect_info.new_url.SchemeIsHTTPOrHTTPS() ||
+ GetContentClient()->browser()->IsHandledURL(redirect_info.new_url)) {
+ base::PostTaskWithTraits(
+ FROM_HERE, {BrowserThread::UI},
+ base::BindOnce(
+ &NavigateOnUIThread, redirect_info.new_url, request()->url_chain(),
+ Referrer(GURL(redirect_info.new_referrer),
+ Referrer::NetReferrerPolicyToBlinkReferrerPolicy(
+ redirect_info.new_referrer_policy)),
+ GetRequestInfo()->HasUserGesture(),
+ true /* from_download_cross_origin_redirect */,
+ GetRequestInfo()->GetWebContentsGetterForRequest(),
+ GetRequestInfo()->frame_tree_node_id()));
+ }
controller->Cancel();
return;
}