diff --git a/atom/browser/api/atom_api_web_contents.cc b/atom/browser/api/atom_api_web_contents.cc index 571ae0f7f2aa..f3520bc968e5 100644 --- a/atom/browser/api/atom_api_web_contents.cc +++ b/atom/browser/api/atom_api_web_contents.cc @@ -58,6 +58,26 @@ WebContents::~WebContents() { Destroy(); } +content::WebContents* WebContents::OpenURLFromTab( + content::WebContents* source, + const content::OpenURLParams& params) { + if (params.disposition != CURRENT_TAB) + return NULL; + + content::NavigationController::LoadURLParams load_url_params(params.url); + load_url_params.referrer = params.referrer; + load_url_params.transition_type = params.transition; + load_url_params.extra_headers = params.extra_headers; + load_url_params.should_replace_current_entry = + params.should_replace_current_entry; + load_url_params.is_renderer_initiated = params.is_renderer_initiated; + load_url_params.transferred_global_request_id = + params.transferred_global_request_id; + + web_contents()->GetController().LoadURLWithParams(load_url_params); + return web_contents(); +} + void WebContents::RenderViewDeleted(content::RenderViewHost* render_view_host) { base::ListValue args; args.AppendInteger(render_view_host->GetProcess()->GetID()); diff --git a/atom/browser/api/atom_api_web_contents.h b/atom/browser/api/atom_api_web_contents.h index 0dcd47114dc8..1dc37a62ebe2 100644 --- a/atom/browser/api/atom_api_web_contents.h +++ b/atom/browser/api/atom_api_web_contents.h @@ -83,6 +83,11 @@ class WebContents : public mate::EventEmitter, virtual mate::ObjectTemplateBuilder GetObjectTemplateBuilder( v8::Isolate* isolate) override; + // content::WebContentsDelegate: + virtual content::WebContents* OpenURLFromTab( + content::WebContents* source, + const content::OpenURLParams& params) override; + // content::WebContentsObserver: virtual void RenderViewDeleted(content::RenderViewHost*) override; virtual void RenderProcessGone(base::TerminationStatus status) override;