| 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 c1c3126aeb2ebea3d48ad7c647155def0966a120..5ab96dc139bd14eed0e277aa0d5acb4ffc247257 100644
|
| --- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
|
| +++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
|
| @@ -198,7 +198,8 @@ void SendExecuteMimeTypeHandlerEvent(scoped_ptr<content::StreamHandle> stream,
|
| extension_id, web_contents, stream.Pass(), expected_content_size);
|
| }
|
|
|
| -void LaunchURL(const GURL& url, int render_process_id, int render_view_id) {
|
| +void LaunchURL(const GURL& url, int render_process_id, int render_view_id,
|
| + bool user_gesture) {
|
| // 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 =
|
| @@ -215,6 +216,9 @@ void LaunchURL(const GURL& url, int render_process_id, int render_view_id) {
|
| return;
|
| }
|
|
|
| + scoped_ptr<ExternalProtocolHandler::ScopedUserGesture> scoped_gesture;
|
| + if (user_gesture)
|
| + scoped_gesture.reset(new ExternalProtocolHandler::ScopedUserGesture);
|
| ExternalProtocolHandler::LaunchUrlWithDelegate(
|
| url, render_process_id, render_view_id,
|
| g_external_protocol_handler_delegate);
|
| @@ -441,7 +445,7 @@ ResourceDispatcherHostLoginDelegate*
|
| }
|
|
|
| bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol(
|
| - const GURL& url, int child_id, int route_id) {
|
| + const GURL& url, int child_id, int route_id, bool user_gesture) {
|
| #if defined(OS_ANDROID)
|
| // Android use a resource throttle to handle external as well as internal
|
| // protocols.
|
| @@ -457,7 +461,7 @@ bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol(
|
|
|
| BrowserThread::PostTask(
|
| BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&LaunchURL, url, child_id, route_id));
|
| + base::Bind(&LaunchURL, url, child_id, route_id, user_gesture));
|
| return true;
|
| #endif
|
| }
|
|
|