Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6072)

Unified Diff: chrome/renderer/searchbox/searchbox_extension.cc

Issue 11359198: Implement the Instant extended API startMargin, endMargin, and rtl properties and the onmarginchang… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix Mac build error (PopupChangedBoundsTo -> OnPopupChangedBounds) Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/searchbox/searchbox_extension.h ('k') | content/public/renderer/render_view_observer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « chrome/renderer/searchbox/searchbox_extension.h ('k') | content/public/renderer/render_view_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698