| Index: chrome/renderer/searchbox/searchbox_extension.cc
 | 
| diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc
 | 
| index bfad96240cc13820b11a1d08ec1d53ec432ffe0b..a53946d75b93590085a64adef7682c9c95ed5bb7 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"
 | 
| @@ -178,6 +179,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 {
 | 
| @@ -220,6 +230,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);
 | 
| @@ -311,6 +332,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")))
 | 
| @@ -405,7 +432,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
 | 
| @@ -414,7 +441,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
 | 
| @@ -423,7 +450,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
 | 
| @@ -432,7 +459,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
 | 
| @@ -895,6 +944,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);
 | 
| 
 |