diff --git a/browser/api/atom_api_window.cc b/browser/api/atom_api_window.cc index 184da2347fcf..df70545c005e 100644 --- a/browser/api/atom_api_window.cc +++ b/browser/api/atom_api_window.cc @@ -445,6 +445,12 @@ v8::Handle Window::BlurWebView(const v8::Arguments &args) { return v8::Undefined(); } +// static +v8::Handle Window::IsWebViewFocused(const v8::Arguments& args) { + UNWRAP_WINDOW_AND_CHECK; + return v8::Boolean::New(self->window_->IsWebViewFocused()); +} + // static v8::Handle Window::RestartHangMonitorTimeout( const v8::Arguments &args) { @@ -690,6 +696,7 @@ void Window::Initialize(v8::Handle target) { 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, "isWebViewFocused", IsWebViewFocused); NODE_SET_PROTOTYPE_METHOD(t, "restartHangMonitorTimeout", RestartHangMonitorTimeout); diff --git a/browser/api/atom_api_window.h b/browser/api/atom_api_window.h index 9831466a2255..48e7678924d7 100644 --- a/browser/api/atom_api_window.h +++ b/browser/api/atom_api_window.h @@ -81,6 +81,7 @@ class Window : public EventEmitter, static v8::Handle InspectElement(const v8::Arguments &args); static v8::Handle FocusOnWebView(const v8::Arguments &args); static v8::Handle BlurWebView(const v8::Arguments &args); + static v8::Handle IsWebViewFocused(const v8::Arguments& args); static v8::Handle RestartHangMonitorTimeout( const v8::Arguments &args); diff --git a/browser/native_window.cc b/browser/native_window.cc index 468708571f28..8199c0c1959b 100644 --- a/browser/native_window.cc +++ b/browser/native_window.cc @@ -24,6 +24,7 @@ #include "content/public/browser/notification_types.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" +#include "content/public/browser/render_widget_host_view.h" #include "common/api/api_messages.h" #include "common/options_switches.h" #include "ipc/ipc_message_macros.h" @@ -153,6 +154,10 @@ void NativeWindow::BlurWebView() { GetWebContents()->GetRenderViewHost()->Blur(); } +bool NativeWindow::IsWebViewFocused() { + return GetWebContents()->GetRenderViewHost()->GetView()->HasFocus(); +} + void NativeWindow::RestartHangMonitorTimeout() { GetWebContents()->GetRenderViewHost()->RestartHangMonitorTimeout(); } diff --git a/browser/native_window.h b/browser/native_window.h index 8823b244d873..28e85600858e 100644 --- a/browser/native_window.h +++ b/browser/native_window.h @@ -96,6 +96,7 @@ class NativeWindow : public brightray::DefaultWebContentsDelegate, virtual void InspectElement(int x, int y); virtual void FocusOnWebView(); virtual void BlurWebView(); + virtual bool IsWebViewFocused(); virtual void RestartHangMonitorTimeout(); // The same with closing a tab in a real browser.