Chromium Code Reviews| Index: chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
| diff --git a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
| index a7fbe76bf326d8d2cf3f2bc994394a626a596451..4c63a3c1e8b5ef54eaa30916fb66964ca4ef788b 100644 |
| --- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
| +++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
| @@ -221,7 +221,8 @@ void LaunchURL( |
| int render_process_id, |
| const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter, |
| ui::PageTransition page_transition, |
| - bool has_user_gesture) { |
| + bool has_user_gesture, |
| + bool is_whitelisted) { |
| // If there is no longer a WebContents, the request may have raced with tab |
| // closing. Don't fire the external request. (It may have been a prerender.) |
| content::WebContents* web_contents = web_contents_getter.Run(); |
| @@ -237,9 +238,14 @@ void LaunchURL( |
| return; |
| } |
| - ExternalProtocolHandler::LaunchUrlWithDelegate( |
| - url, render_process_id, web_contents->GetRoutingID(), page_transition, |
| - has_user_gesture, g_external_protocol_handler_delegate); |
| + if (is_whitelisted) { |
|
Thiemo Nagel
2016/03/08 18:44:34
Please explain what is happening here and why!
|
| + ExternalProtocolHandler::LaunchUrlWithoutSecurityCheck( |
| + url, render_process_id, web_contents->GetRoutingID()); |
| + } else { |
| + ExternalProtocolHandler::LaunchUrlWithDelegate( |
| + url, render_process_id, web_contents->GetRoutingID(), page_transition, |
| + has_user_gesture, g_external_protocol_handler_delegate); |
| + } |
| } |
| #if !defined(DISABLE_NACL) |
| @@ -451,7 +457,8 @@ bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol( |
| const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter, |
| bool is_main_frame, |
| ui::PageTransition page_transition, |
| - bool has_user_gesture) { |
| + bool has_user_gesture, |
| + bool is_whitelisted) { |
| #if defined(ENABLE_EXTENSIONS) |
| // External protocols are disabled for guests. An exception is made for the |
| // "mailto" protocol, so that pages that utilize it work properly in a |
| @@ -472,7 +479,7 @@ bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol( |
| BrowserThread::PostTask( |
| BrowserThread::UI, FROM_HERE, |
| base::Bind(&LaunchURL, url, child_id, web_contents_getter, |
| - page_transition, has_user_gesture)); |
| + page_transition, has_user_gesture, is_whitelisted)); |
| return true; |
| } |