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

Unified Diff: chrome/renderer/searchbox/searchbox.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.h ('k') | chrome/renderer/searchbox/searchbox_extension.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/searchbox/searchbox.cc
diff --git a/chrome/renderer/searchbox/searchbox.cc b/chrome/renderer/searchbox/searchbox.cc
index cd528569c4a7fddd5eb19e9ed015589fdffadc26..95601c405a593f1df1d6a9bc0aee7b2605af1a1f 100644
--- a/chrome/renderer/searchbox/searchbox.cc
+++ b/chrome/renderer/searchbox/searchbox.cc
@@ -16,6 +16,8 @@ SearchBox::SearchBox(content::RenderView* render_view)
selection_start_(0),
selection_end_(0),
results_base_(0),
+ start_margin_(0),
+ end_margin_(0),
last_results_base_(0),
is_key_capture_enabled_(false),
theme_area_height_(0),
@@ -56,20 +58,20 @@ void SearchBox::StopCapturingKeyStrokes() {
render_view()->GetRoutingID(), render_view()->GetPageId()));
}
-gfx::Rect SearchBox::GetRect() {
- // Need to adjust for scale.
- if (rect_.IsEmpty())
- return rect_;
- WebKit::WebView* web_view = render_view()->GetWebView();
- if (!web_view)
- return rect_;
- double zoom = WebKit::WebView::zoomLevelToZoomFactor(web_view->zoomLevel());
- if (zoom == 0)
- return rect_;
- return gfx::Rect(static_cast<int>(static_cast<float>(rect_.x()) / zoom),
- static_cast<int>(static_cast<float>(rect_.y()) / zoom),
- static_cast<int>(static_cast<float>(rect_.width()) / zoom),
- static_cast<int>(static_cast<float>(rect_.height()) / zoom));
+int SearchBox::GetStartMargin() const {
+ return static_cast<int>(start_margin_ / GetZoom());
+}
+
+int SearchBox::GetEndMargin() const {
+ return static_cast<int>(end_margin_ / GetZoom());
+}
+
+gfx::Rect SearchBox::GetPopupBounds() const {
+ double zoom = GetZoom();
+ return gfx::Rect(static_cast<int>(popup_bounds_.x() / zoom),
+ static_cast<int>(popup_bounds_.y() / zoom),
+ static_cast<int>(popup_bounds_.width() / zoom),
+ static_cast<int>(popup_bounds_.height() / zoom));
}
const std::vector<InstantAutocompleteResult>&
@@ -104,7 +106,8 @@ bool SearchBox::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxChange, OnChange)
IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxSubmit, OnSubmit)
IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxCancel, OnCancel)
- IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxResize, OnResize)
+ IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxPopupResize, OnPopupResize)
+ IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxMarginChange, OnMarginChange)
IPC_MESSAGE_HANDLER(ChromeViewMsg_DetermineIfPageSupportsInstant,
OnDetermineIfPageSupportsInstant)
IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxAutocompleteResults,
@@ -169,15 +172,24 @@ void SearchBox::OnCancel(const string16& query) {
Reset();
}
-void SearchBox::OnResize(const gfx::Rect& bounds) {
- rect_ = bounds;
+void SearchBox::OnPopupResize(const gfx::Rect& bounds) {
+ popup_bounds_ = bounds;
if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
- DVLOG(1) << render_view() << " OnResize";
+ DVLOG(1) << render_view() << " OnPopupResize";
extensions_v8::SearchBoxExtension::DispatchResize(
render_view()->GetWebView()->mainFrame());
}
}
+void SearchBox::OnMarginChange(int start, int end) {
+ start_margin_ = start;
+ end_margin_ = end;
+ if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
+ extensions_v8::SearchBoxExtension::DispatchMarginChange(
+ render_view()->GetWebView()->mainFrame());
+ }
+}
+
void SearchBox::OnDetermineIfPageSupportsInstant() {
if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
bool result = extensions_v8::SearchBoxExtension::PageSupportsInstant(
@@ -246,13 +258,25 @@ void SearchBox::OnThemeAreaHeightChanged(int height) {
}
}
+double SearchBox::GetZoom() const {
+ WebKit::WebView* web_view = render_view()->GetWebView();
+ if (web_view) {
+ double zoom = WebKit::WebView::zoomLevelToZoomFactor(web_view->zoomLevel());
+ if (zoom != 0)
+ return zoom;
+ }
+ return 1.0;
+}
+
void SearchBox::Reset() {
query_.clear();
verbatim_ = false;
selection_start_ = 0;
selection_end_ = 0;
results_base_ = 0;
- rect_ = gfx::Rect();
+ popup_bounds_ = gfx::Rect();
+ start_margin_ = 0;
+ end_margin_ = 0;
autocomplete_results_.clear();
is_key_capture_enabled_ = false;
mode_ = chrome::search::Mode();
« no previous file with comments | « chrome/renderer/searchbox/searchbox.h ('k') | chrome/renderer/searchbox/searchbox_extension.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698