|
@@ -0,0 +1,63 @@
|
|
|
+// Copyright (c) 2014 GitHub, Inc. All rights reserved.
|
|
|
+// Use of this source code is governed by a BSD-style license that can be
|
|
|
+// found in the LICENSE file.
|
|
|
+
|
|
|
+#include "browser/devtools_delegate.h"
|
|
|
+
|
|
|
+#include "base/values.h"
|
|
|
+#include "browser/native_window.h"
|
|
|
+#include "content/public/browser/devtools_agent_host.h"
|
|
|
+#include "content/public/browser/devtools_client_host.h"
|
|
|
+#include "content/public/browser/devtools_http_handler.h"
|
|
|
+#include "content/public/browser/devtools_manager.h"
|
|
|
+#include "content/public/browser/web_contents.h"
|
|
|
+
|
|
|
+namespace atom {
|
|
|
+
|
|
|
+DevToolsDelegate::DevToolsDelegate(NativeWindow* window,
|
|
|
+ content::WebContents* target_web_contents)
|
|
|
+ : content::WebContentsObserver(window->GetWebContents()),
|
|
|
+ owner_window_(window) {
|
|
|
+ content::WebContents* web_contents = window->GetWebContents();
|
|
|
+
|
|
|
+ // Setup devtools.
|
|
|
+ devtools_agent_host_ = content::DevToolsAgentHost::GetOrCreateFor(
|
|
|
+ target_web_contents->GetRenderViewHost());
|
|
|
+ devtools_client_host_.reset(
|
|
|
+ content::DevToolsClientHost::CreateDevToolsFrontendHost(web_contents,
|
|
|
+ this));
|
|
|
+ content::DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor(
|
|
|
+ devtools_agent_host_.get(), devtools_client_host_.get());
|
|
|
+
|
|
|
+ // Go!
|
|
|
+ base::DictionaryValue options;
|
|
|
+ options.SetString("title", "DevTools Debugger");
|
|
|
+ window->InitFromOptions(&options);
|
|
|
+ web_contents->GetController().LoadURL(
|
|
|
+ GURL("chrome-devtools://devtools/devtools.html"),
|
|
|
+ content::Referrer(),
|
|
|
+ content::PAGE_TRANSITION_AUTO_TOPLEVEL,
|
|
|
+ std::string());
|
|
|
+}
|
|
|
+
|
|
|
+DevToolsDelegate::~DevToolsDelegate() {
|
|
|
+}
|
|
|
+
|
|
|
+void DevToolsDelegate::DispatchOnEmbedder(const std::string& message) {
|
|
|
+}
|
|
|
+
|
|
|
+void DevToolsDelegate::InspectedContentsClosing() {
|
|
|
+ delete owner_window_;
|
|
|
+}
|
|
|
+
|
|
|
+void DevToolsDelegate::AboutToNavigateRenderView(
|
|
|
+ content::RenderViewHost* render_view_host) {
|
|
|
+ content::DevToolsClientHost::SetupDevToolsFrontendClient(
|
|
|
+ owner_window_->GetWebContents()->GetRenderViewHost());
|
|
|
+}
|
|
|
+
|
|
|
+void DevToolsDelegate::OnWindowClosed() {
|
|
|
+ delete owner_window_;
|
|
|
+}
|
|
|
+
|
|
|
+} // namespace atom
|