Index: chrome/renderer/searchbox/searchbox_extension.cc |
diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc |
index bf2cb9ebe79dcb8133eac52827f68b280ba6c026..f6e7f48b83a620990dfd8675eb4b02ba67c0a690 100644 |
--- a/chrome/renderer/searchbox/searchbox_extension.cc |
+++ b/chrome/renderer/searchbox/searchbox_extension.cc |
@@ -4,6 +4,7 @@ |
#include "chrome/renderer/searchbox/searchbox_extension.h" |
+#include "base/i18n/rtl.h" |
#include "base/string_number_conversions.h" |
#include "base/stringprintf.h" |
#include "chrome/common/extensions/extension.h" |
@@ -159,6 +160,15 @@ static const char kDispatchThemeAreaHeightChangeEventScript[] = |
" true;" |
"}"; |
+static const char kDispatchMarginChangeEventScript[] = |
+ "if (window.chrome &&" |
+ " window.chrome.searchBox &&" |
+ " window.chrome.searchBox.onmarginchange &&" |
+ " typeof window.chrome.searchBox.onmarginchange == 'function') {" |
+ " window.chrome.searchBox.onmarginchange();" |
+ " true;" |
+ "}"; |
+ |
// ---------------------------------------------------------------------------- |
class SearchBoxExtensionWrapper : public v8::Extension { |
@@ -201,6 +211,17 @@ class SearchBoxExtensionWrapper : public v8::Extension { |
// Gets the height of the region of the search box that overlaps the window. |
static v8::Handle<v8::Value> GetHeight(const v8::Arguments& args); |
+ // Gets the width of the margin from the start-edge of the page to the start |
+ // of the suggestions dropdown. |
+ static v8::Handle<v8::Value> GetStartMargin(const v8::Arguments& args); |
+ |
+ // Gets the width of the margin from the end-edge of the page to the end of |
+ // the suggestions dropdown. |
+ static v8::Handle<v8::Value> GetEndMargin(const v8::Arguments& args); |
+ |
+ // Returns true if the Searchbox itself is oriented right-to-left. |
+ static v8::Handle<v8::Value> GetRightToLeft(const v8::Arguments& args); |
+ |
// Gets the autocomplete results from search box. |
static v8::Handle<v8::Value> GetAutocompleteResults( |
const v8::Arguments& args); |
@@ -275,6 +296,12 @@ v8::Handle<v8::FunctionTemplate> SearchBoxExtensionWrapper::GetNativeFunction( |
return v8::FunctionTemplate::New(GetWidth); |
if (name->Equals(v8::String::New("GetHeight"))) |
return v8::FunctionTemplate::New(GetHeight); |
+ if (name->Equals(v8::String::New("GetStartMargin"))) |
+ return v8::FunctionTemplate::New(GetStartMargin); |
+ if (name->Equals(v8::String::New("GetEndMargin"))) |
+ return v8::FunctionTemplate::New(GetEndMargin); |
+ if (name->Equals(v8::String::New("GetRightToLeft"))) |
+ return v8::FunctionTemplate::New(GetRightToLeft); |
if (name->Equals(v8::String::New("GetAutocompleteResults"))) |
return v8::FunctionTemplate::New(GetAutocompleteResults); |
if (name->Equals(v8::String::New("GetContext"))) |
@@ -359,7 +386,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetX( |
content::RenderView* render_view = GetRenderView(); |
if (!render_view) return v8::Undefined(); |
- return v8::Int32::New(SearchBox::Get(render_view)->GetRect().x()); |
+ return v8::Int32::New(SearchBox::Get(render_view)->GetPopupBounds().x()); |
} |
// static |
@@ -368,7 +395,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetY( |
content::RenderView* render_view = GetRenderView(); |
if (!render_view) return v8::Undefined(); |
- return v8::Int32::New(SearchBox::Get(render_view)->GetRect().y()); |
+ return v8::Int32::New(SearchBox::Get(render_view)->GetPopupBounds().y()); |
} |
// static |
@@ -377,7 +404,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetWidth( |
content::RenderView* render_view = GetRenderView(); |
if (!render_view) return v8::Undefined(); |
- return v8::Int32::New(SearchBox::Get(render_view)->GetRect().width()); |
+ return v8::Int32::New(SearchBox::Get(render_view)->GetPopupBounds().width()); |
} |
// static |
@@ -386,7 +413,29 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetHeight( |
content::RenderView* render_view = GetRenderView(); |
if (!render_view) return v8::Undefined(); |
- return v8::Int32::New(SearchBox::Get(render_view)->GetRect().height()); |
+ return v8::Int32::New(SearchBox::Get(render_view)->GetPopupBounds().height()); |
+} |
+ |
+// static |
+v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetStartMargin( |
+ const v8::Arguments& args) { |
+ content::RenderView* render_view = GetRenderView(); |
+ if (!render_view) return v8::Undefined(); |
+ return v8::Int32::New(SearchBox::Get(render_view)->GetStartMargin()); |
+} |
+ |
+// static |
+v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetEndMargin( |
+ const v8::Arguments& args) { |
+ content::RenderView* render_view = GetRenderView(); |
+ if (!render_view) return v8::Undefined(); |
+ return v8::Int32::New(SearchBox::Get(render_view)->GetEndMargin()); |
+} |
+ |
+// static |
+v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetRightToLeft( |
+ const v8::Arguments& args) { |
+ return v8::Boolean::New(base::i18n::IsRTL()); |
} |
// static |
@@ -790,6 +839,11 @@ void SearchBoxExtension::DispatchThemeChange(WebKit::WebFrame* frame) { |
} |
// static |
+void SearchBoxExtension::DispatchMarginChange(WebKit::WebFrame* frame) { |
+ Dispatch(frame, kDispatchMarginChangeEventScript); |
+} |
+ |
+// static |
void SearchBoxExtension::DispatchThemeAreaHeightChange( |
WebKit::WebFrame* frame) { |
Dispatch(frame, kDispatchThemeAreaHeightChangeEventScript); |