diff --git a/browser/native_window.cc b/browser/native_window.cc index ee2a2bc8207b..a9d887c13212 100644 --- a/browser/native_window.cc +++ b/browser/native_window.cc @@ -196,21 +196,23 @@ void NativeWindow::DebugDevTools() { base::DictionaryValue options; NativeWindow* window = NativeWindow::Create(&options); + // Receive devtool's web contents. brightray::InspectableWebContentsImpl* inspectable_web_contents_impl = static_cast( inspectable_web_contents()); content::WebContents* devtools_web_contents = inspectable_web_contents_impl->devtools_web_contents(); - content::DevToolsAgentHost* agent_host = - content::DevToolsAgentHost::GetOrCreateFor( - devtools_web_contents->GetRenderViewHost()); - content::DevToolsClientHost* frontend_host = + // Setup devtools. + window->devtools_agent_host_ = content::DevToolsAgentHost::GetOrCreateFor( + devtools_web_contents->GetRenderViewHost()); + window->devtools_client_host_.reset( content::DevToolsClientHost::CreateDevToolsFrontendHost( - window->GetWebContents(), window); + window->GetWebContents(), window)); content::DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( - agent_host, frontend_host); + window->devtools_agent_host_.get(), window->devtools_client_host_.get()); + // Done. window->InitFromOptions(&options); window->GetWebContents()->GetController().LoadURL( GURL("chrome-devtools://devtools/devtools.html"), @@ -434,6 +436,14 @@ void NativeWindow::RendererResponsive(content::WebContents* source) { FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnRendererResponsive()); } +void NativeWindow::AboutToNavigateRenderView( + content::RenderViewHost* render_view_host) { + // Setup devtools frontend if we are devtools window. + if (devtools_client_host_) + content::DevToolsClientHost::SetupDevToolsFrontendClient( + GetWebContents()->GetRenderViewHost()); +} + void NativeWindow::RenderViewDeleted(content::RenderViewHost* rvh) { FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnRenderViewDeleted(rvh->GetProcess()->GetID(), diff --git a/browser/native_window.h b/browser/native_window.h index 2561285cf13c..bf31049cd7f7 100644 --- a/browser/native_window.h +++ b/browser/native_window.h @@ -30,6 +30,8 @@ class InspectableWebContents; namespace content { class BrowserContext; +class DevToolsAgentHost; +class DevToolsClientHost; class WebContents; } @@ -208,6 +210,8 @@ class NativeWindow : public brightray::DefaultWebContentsDelegate, virtual void RendererResponsive(content::WebContents* source) OVERRIDE; // Implementations of content::WebContentsObserver. + virtual void AboutToNavigateRenderView( + content::RenderViewHost* render_view_host) OVERRIDE; virtual void RenderViewDeleted(content::RenderViewHost*) OVERRIDE; virtual void RenderProcessGone(base::TerminationStatus status) OVERRIDE; virtual void BeforeUnloadFired(const base::TimeTicks& proceed_time) OVERRIDE; @@ -265,6 +269,9 @@ class NativeWindow : public brightray::DefaultWebContentsDelegate, scoped_ptr dialog_manager_; scoped_ptr inspectable_web_contents_; + scoped_refptr devtools_agent_host_; + scoped_ptr devtools_client_host_; + DISALLOW_COPY_AND_ASSIGN(NativeWindow); };