| Index: chrome/renderer/searchbox/searchbox_extension.cc
|
| diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc
|
| index 1999ccd63f258e888de600dd17018c4b8201892b..5576f1bff6116ff13d59a8ae1bc731aa488cc719 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);
|
| @@ -271,6 +292,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")))
|
| @@ -351,7 +378,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
|
| @@ -360,7 +387,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
|
| @@ -369,7 +396,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
|
| @@ -378,7 +405,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
|
| @@ -786,6 +835,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);
|
|
|