Add BrowserWindow.inspectElement(x, y) API.
authorCheng Zhao <zcbenz@gmail.com>
Thu, 18 Jul 2013 11:21:25 +0000 (19:21 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Thu, 18 Jul 2013 11:21:25 +0000 (19:21 +0800)
browser/api/atom_api_window.cc
browser/api/atom_api_window.h
browser/native_window.cc
browser/native_window.h

index 0f4f870..184da23 100644 (file)
@@ -418,6 +418,16 @@ v8::Handle<v8::Value> Window::CloseDevTools(const v8::Arguments &args) {
 }
 
 // static
+v8::Handle<v8::Value> Window::InspectElement(const v8::Arguments& args) {
+  UNWRAP_WINDOW_AND_CHECK;
+
+  self->window_->InspectElement(args[0]->IntegerValue(),
+                                args[1]->IntegerValue());
+
+  return v8::Undefined();
+}
+
+// static
 v8::Handle<v8::Value> Window::FocusOnWebView(const v8::Arguments &args) {
   UNWRAP_WINDOW_AND_CHECK;
 
@@ -677,6 +687,7 @@ void Window::Initialize(v8::Handle<v8::Object> target) {
   NODE_SET_PROTOTYPE_METHOD(t, "isKiosk", IsKiosk);
   NODE_SET_PROTOTYPE_METHOD(t, "openDevTools", OpenDevTools);
   NODE_SET_PROTOTYPE_METHOD(t, "closeDevTools", CloseDevTools);
+  NODE_SET_PROTOTYPE_METHOD(t, "inspectElement", InspectElement);
   NODE_SET_PROTOTYPE_METHOD(t, "focusOnWebView", FocusOnWebView);
   NODE_SET_PROTOTYPE_METHOD(t, "blurWebView", BlurWebView);
   NODE_SET_PROTOTYPE_METHOD(t,
index c9ffec2..9831466 100644 (file)
@@ -78,6 +78,7 @@ class Window : public EventEmitter,
   static v8::Handle<v8::Value> IsKiosk(const v8::Arguments &args);
   static v8::Handle<v8::Value> OpenDevTools(const v8::Arguments &args);
   static v8::Handle<v8::Value> CloseDevTools(const v8::Arguments &args);
+  static v8::Handle<v8::Value> InspectElement(const v8::Arguments &args);
   static v8::Handle<v8::Value> FocusOnWebView(const v8::Arguments &args);
   static v8::Handle<v8::Value> BlurWebView(const v8::Arguments &args);
   static v8::Handle<v8::Value> RestartHangMonitorTimeout(
index cecbb77..b7bed17 100644 (file)
@@ -16,6 +16,7 @@
 #include "browser/atom_javascript_dialog_manager.h"
 #include "browser/media/media_stream_devices_controller.h"
 #include "browser/window_list.h"
+#include "content/public/browser/devtools_agent_host.h"
 #include "content/public/browser/invalidate_type.h"
 #include "content/public/browser/navigation_entry.h"
 #include "content/public/browser/notification_details.h"
@@ -135,6 +136,14 @@ void NativeWindow::CloseDevTools() {
   inspectable_web_contents()->GetView()->CloseDevTools();
 }
 
+void NativeWindow::InspectElement(int x, int y) {
+  OpenDevTools();
+  content::RenderViewHost* rvh = GetWebContents()->GetRenderViewHost();
+  scoped_refptr<content::DevToolsAgentHost> agent(
+      content::DevToolsAgentHost::GetOrCreateFor(rvh));
+  agent->InspectElement(x, y);
+}
+
 void NativeWindow::FocusOnWebView() {
   GetWebContents()->GetRenderViewHost()->Focus();
 }
index aa040ba..c6a6c84 100644 (file)
@@ -93,6 +93,7 @@ class NativeWindow : public content::WebContentsDelegate,
   virtual bool IsClosed() const { return is_closed_; }
   virtual void OpenDevTools();
   virtual void CloseDevTools();
+  virtual void InspectElement(int x, int y);
   virtual void FocusOnWebView();
   virtual void BlurWebView();
   virtual void RestartHangMonitorTimeout();