Browse Source

Add BrowserWindow.inspectElement(x, y) API.

Cheng Zhao 11 years ago
parent
commit
d59fb55a81

+ 11 - 0
browser/api/atom_api_window.cc

@@ -417,6 +417,16 @@ v8::Handle<v8::Value> Window::CloseDevTools(const v8::Arguments &args) {
   return v8::Undefined();
 }
 
+// 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,

+ 1 - 0
browser/api/atom_api_window.h

@@ -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(

+ 9 - 0
browser/native_window.cc

@@ -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();
 }

+ 1 - 0
browser/native_window.h

@@ -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();