Index: chrome/renderer/searchbox/searchbox_extension.cc |
diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc |
index 20c1e4652328303490267f1128a7262d196782cf..50be8660aba7a7e42e2683203b91b29c67d99ff5 100644 |
--- a/chrome/renderer/searchbox/searchbox_extension.cc |
+++ b/chrome/renderer/searchbox/searchbox_extension.cc |
@@ -453,6 +453,17 @@ static const char kDispatchBarsHiddenEventScript[] = |
" true;" |
"}"; |
+static const char kDispatchFocusChangedScript[] = |
+ "if (window.chrome &&" |
+ " window.chrome.embeddedSearch &&" |
+ " window.chrome.embeddedSearch.searchBox &&" |
+ " window.chrome.embeddedSearch.searchBox.onfocuschange &&" |
+ " typeof window.chrome.embeddedSearch.searchBox.onfocuschange ==" |
+ " 'function') {" |
+ " window.chrome.embeddedSearch.searchBox.onfocuschange();" |
+ " true;" |
+ "}"; |
+ |
// ---------------------------------------------------------------------------- |
class SearchBoxExtensionWrapper : public v8::Extension { |
@@ -597,6 +608,9 @@ class SearchBoxExtensionWrapper : public v8::Extension { |
static v8::Handle<v8::Value> GetMostVisitedItemData( |
const v8::Arguments& args); |
+ // Gets whether the omnibox has focus or not. |
+ static v8::Handle<v8::Value> IsFocused(const v8::Arguments& args); |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(SearchBoxExtensionWrapper); |
}; |
@@ -680,6 +694,8 @@ v8::Handle<v8::FunctionTemplate> SearchBoxExtensionWrapper::GetNativeFunction( |
return v8::FunctionTemplate::New(GetSuggestionData); |
if (name->Equals(v8::String::New("GetMostVisitedItemData"))) |
return v8::FunctionTemplate::New(GetMostVisitedItemData); |
+ if (name->Equals(v8::String::New("IsFocused"))) |
+ return v8::FunctionTemplate::New(IsFocused); |
return v8::Handle<v8::FunctionTemplate>(); |
} |
@@ -1394,6 +1410,17 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetMostVisitedItemData( |
} |
// static |
+v8::Handle<v8::Value> SearchBoxExtensionWrapper::IsFocused( |
+ const v8::Arguments& args) { |
+ content::RenderView* render_view = GetRenderView(); |
+ if (!render_view) return v8::Undefined(); |
+ |
+ bool is_focused = SearchBox::Get(render_view)->is_focused(); |
+ DVLOG(1) << render_view << " IsFocused: " << is_focused; |
+ return v8::Boolean::New(is_focused); |
+} |
+ |
+// static |
void SearchBoxExtension::DispatchChange(WebKit::WebFrame* frame) { |
Dispatch(frame, kDispatchChangeEventScript); |
} |
@@ -1463,4 +1490,9 @@ void SearchBoxExtension::DispatchBarsHidden(WebKit::WebFrame* frame) { |
Dispatch(frame, kDispatchBarsHiddenEventScript); |
} |
+// static |
+void SearchBoxExtension::DispatchFocusChange(WebKit::WebFrame* frame) { |
+ Dispatch(frame, kDispatchFocusChangedScript); |
+} |
+ |
} // namespace extensions_v8 |