| Index: chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc (revision 243063)
|
| +++ chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc (working copy)
|
| @@ -48,6 +48,7 @@
|
| #include "content/public/browser/resource_dispatcher_host.h"
|
| #include "content/public/browser/resource_request_info.h"
|
| #include "content/public/browser/stream_handle.h"
|
| +#include "content/public/browser/web_contents.h"
|
| #include "content/public/common/resource_response.h"
|
| #include "extensions/browser/info_map.h"
|
| #include "extensions/common/constants.h"
|
| @@ -155,6 +156,24 @@
|
| streams_private->ExecuteMimeTypeHandler(
|
| extension_id, web_contents, stream.Pass(), expected_content_size);
|
| }
|
| +
|
| +void LaunchURL(const GURL& url, int render_process_id, int render_view_id) {
|
| + content::RenderViewHost* rvh = content::RenderViewHost::FromID(
|
| + render_process_id, render_view_id);
|
| + if (rvh) {
|
| + content::WebContents* web_contents =
|
| + content::WebContents::FromRenderViewHost(rvh);
|
| + prerender::PrerenderContents* prerender_contents =
|
| + prerender::PrerenderContents::FromWebContents(web_contents);
|
| + if (prerender_contents) {
|
| + prerender_contents->Destroy(prerender::FINAL_STATUS_UNSUPPORTED_SCHEME);
|
| + prerender::ReportPrerenderExternalURL();
|
| + return;
|
| + }
|
| + }
|
| +
|
| + ExternalProtocolHandler::LaunchUrl(url, render_process_id, render_view_id);
|
| +}
|
| #endif // !defined(OS_ANDROID)
|
|
|
| void AppendComponentUpdaterThrottles(
|
| @@ -439,13 +458,6 @@
|
| return false;
|
| #else
|
|
|
| - if (prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id) &&
|
| - prerender_tracker_->TryCancel(
|
| - child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME)) {
|
| - prerender::ReportPrerenderExternalURL();
|
| - return false;
|
| - }
|
| -
|
| ExtensionRendererState::WebViewInfo info;
|
| if (ExtensionRendererState::GetInstance()->GetWebViewInfo(child_id,
|
| route_id,
|
| @@ -455,7 +467,7 @@
|
|
|
| BrowserThread::PostTask(
|
| BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&ExternalProtocolHandler::LaunchUrl, url, child_id, route_id));
|
| + base::Bind(&LaunchURL, url, child_id, route_id));
|
| return true;
|
| #endif
|
| }
|
|
|