Index: chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc |
diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc |
index e5a36cc6d8ca2e66af63e593511b455b1402a60d..a7a2352345b569cac82f69e4b83aadc0654b7d52 100644 |
--- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc |
+++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc |
@@ -220,7 +220,6 @@ void SendExecuteMimeTypeHandlerEvent( |
void LaunchURL( |
const GURL& url, |
- int render_process_id, |
const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter, |
ui::PageTransition page_transition, |
bool has_user_gesture, |
@@ -228,6 +227,8 @@ void LaunchURL( |
// 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(); |
+ int render_process_id = |
alexmos
2016/12/12 21:11:40
The else {} below is the only place left where it'
davidsac (gone - try alexmos)
2016/12/13 23:02:33
Done.
|
+ web_contents->GetRenderViewHost()->GetProcess()->GetID(); |
if (!web_contents) |
return; |
@@ -246,9 +247,7 @@ void LaunchURL( |
// TODO(davidsac): External protocol handling needs to be |
// fixed for OOPIFs. See https://crbug.com/668289. |
if (is_whitelisted) { |
- ExternalProtocolHandler::LaunchUrlWithoutSecurityCheck( |
- url, render_process_id, |
- web_contents->GetRenderViewHost()->GetRoutingID()); |
+ ExternalProtocolHandler::LaunchUrlWithoutSecurityCheck(url, web_contents); |
} else { |
ExternalProtocolHandler::LaunchUrlWithDelegate( |
url, render_process_id, |
@@ -566,11 +565,12 @@ bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol( |
// content page. |
return false; |
} |
- int child_id = info->GetChildID(); |
+ |
#if BUILDFLAG(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 |
// WebView. |
+ int child_id = info->GetChildID(); |
ChromeNavigationUIData* navigation_data = |
static_cast<ChromeNavigationUIData*>(info->GetNavigationUIData()); |
if ((extensions::WebViewRendererState::GetInstance()->IsGuest(child_id) || |
@@ -592,8 +592,7 @@ bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol( |
url_state == policy::URLBlacklist::URLBlacklistState::URL_IN_WHITELIST; |
BrowserThread::PostTask( |
BrowserThread::UI, FROM_HERE, |
- base::Bind(&LaunchURL, url, child_id, |
- info->GetWebContentsGetterForRequest(), |
+ base::Bind(&LaunchURL, url, info->GetWebContentsGetterForRequest(), |
info->GetPageTransition(), info->HasUserGesture(), |
is_whitelisted)); |
return true; |