| Index: chrome/renderer/searchbox/searchbox_extension.cc
|
| diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc
|
| index fda479fd0dc34ecd86de4967381243c981bda1b2..6de26f1df747cc8c37d64759c278d22e666e8547 100644
|
| --- a/chrome/renderer/searchbox/searchbox_extension.cc
|
| +++ b/chrome/renderer/searchbox/searchbox_extension.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include <ctype.h>
|
|
|
| +#include "base/i18n/rtl.h"
|
| #include "base/string_number_conversions.h"
|
| #include "base/stringprintf.h"
|
| #include "base/utf_string_conversions.h"
|
| @@ -147,6 +148,15 @@ static const char kDispatchContextChangeEventScript[] =
|
| " 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 {
|
| @@ -189,6 +199,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 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 start 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);
|
| @@ -255,6 +276,12 @@ v8::Handle<v8::FunctionTemplate> SearchBoxExtensionWrapper::GetNativeFunction(
|
| return v8::FunctionTemplate::New(GetWidth);
|
| } else if (name->Equals(v8::String::New("GetHeight"))) {
|
| return v8::FunctionTemplate::New(GetHeight);
|
| + } else if (name->Equals(v8::String::New("GetStartMargin"))) {
|
| + return v8::FunctionTemplate::New(GetStartMargin);
|
| + } else if (name->Equals(v8::String::New("GetEndMargin"))) {
|
| + return v8::FunctionTemplate::New(GetEndMargin);
|
| + } else if (name->Equals(v8::String::New("GetRightToLeft"))) {
|
| + return v8::FunctionTemplate::New(GetRightToLeft);
|
| } else if (name->Equals(v8::String::New("GetAutocompleteResults"))) {
|
| return v8::FunctionTemplate::New(GetAutocompleteResults);
|
| } else if (name->Equals(v8::String::New("GetIsFocused"))) {
|
| @@ -330,7 +357,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetX(
|
| const v8::Arguments& args) {
|
| 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
|
| @@ -338,7 +365,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetY(
|
| const v8::Arguments& args) {
|
| 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
|
| @@ -346,7 +373,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetWidth(
|
| const v8::Arguments& args) {
|
| 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
|
| @@ -354,7 +381,30 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetHeight(
|
| const v8::Arguments& args) {
|
| 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)->GetOmniboxBounds().x());
|
| +}
|
| +
|
| +// static
|
| +v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetEndMargin(
|
| + const v8::Arguments& args) {
|
| + content::RenderView* render_view = GetRenderView();
|
| + if (!render_view) return v8::Undefined();
|
| + const gfx::Rect rect = SearchBox::Get(render_view)->GetOmniboxBounds();
|
| + return v8::Int32::New(rect.x() + rect.width());
|
| +}
|
| +
|
| +// static
|
| +v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetRightToLeft(
|
| + const v8::Arguments& args) {
|
| + return v8::Boolean::New(base::i18n::IsRTL());
|
| }
|
|
|
| // static
|
| @@ -710,6 +760,11 @@ void SearchBoxExtension::DispatchContextChange(WebKit::WebFrame* frame) {
|
| }
|
|
|
| // static
|
| +void SearchBoxExtension::DispatchMarginChange(WebKit::WebFrame* frame) {
|
| + Dispatch(frame, kDispatchMarginChangeEventScript);
|
| +}
|
| +
|
| +// static
|
| bool SearchBoxExtension::PageSupportsInstant(WebKit::WebFrame* frame) {
|
| if (!frame) return false;
|
|
|
|
|