| Index: chrome/renderer/searchbox/searchbox.cc
|
| diff --git a/chrome/renderer/searchbox/searchbox.cc b/chrome/renderer/searchbox/searchbox.cc
|
| index 9f1e82c294ade030a4037d2e2cc4fc7b7da628c7..f7e8ed3fa2d2ada779b469217d56b60576092355 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),
|
| theme_area_height_(0),
|
| display_instant_results_(false) {
|
| @@ -55,20 +57,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>&
|
| @@ -103,7 +105,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,
|
| @@ -162,15 +165,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(
|
| @@ -229,13 +241,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();
|
| mode_ = chrome::search::Mode();
|
| theme_info_ = ThemeBackgroundInfo();
|
|
|