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

Unified Diff: chrome/browser/ui/autofill/popup_controller_common.cc

Issue 1570783003: [Autofill] Move functions from the AutofillPopupController to AutofillPopupLayoutModel (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: size_t -> int Created 4 years, 11 months 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
Index: chrome/browser/ui/autofill/popup_controller_common.cc
diff --git a/chrome/browser/ui/autofill/popup_controller_common.cc b/chrome/browser/ui/autofill/popup_controller_common.cc
index 0bf73db64841bdf98b998e4565830b478051f5e1..2c97b8b7c222c6fb58f61eebf43f28da21da1208 100644
--- a/chrome/browser/ui/autofill/popup_controller_common.cc
+++ b/chrome/browser/ui/autofill/popup_controller_common.cc
@@ -4,15 +4,8 @@
#include "chrome/browser/ui/autofill/popup_controller_common.h"
-#include <algorithm>
-#include <utility>
-
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
-#include "ui/gfx/display.h"
-#include "ui/gfx/geometry/rect_conversions.h"
-#include "ui/gfx/geometry/vector2d.h"
-#include "ui/gfx/screen.h"
namespace autofill {
@@ -53,121 +46,4 @@ void PopupControllerCommon::RemoveKeyPressCallback() {
key_press_event_target_ = NULL;
}
-gfx::Display PopupControllerCommon::GetDisplayNearestPoint(
- const gfx::Point& point) const {
- return gfx::Screen::GetScreenFor(container_view_)->GetDisplayNearestPoint(
- point);
-}
-
-const gfx::Rect PopupControllerCommon::RoundedElementBounds() const {
- return gfx::ToEnclosingRect(element_bounds_);
-}
-
-std::pair<int, int> PopupControllerCommon::CalculatePopupXAndWidth(
- const gfx::Display& left_display,
- const gfx::Display& right_display,
- int popup_required_width) const {
- int leftmost_display_x = left_display.bounds().x();
- int rightmost_display_x =
- right_display.GetSizeInPixel().width() + right_display.bounds().x();
-
- // Calculate the start coordinates for the popup if it is growing right or
- // the end position if it is growing to the left, capped to screen space.
- int right_growth_start = std::max(leftmost_display_x,
- std::min(rightmost_display_x,
- RoundedElementBounds().x()));
- int left_growth_end = std::max(leftmost_display_x,
- std::min(rightmost_display_x,
- RoundedElementBounds().right()));
-
- int right_available = rightmost_display_x - right_growth_start;
- int left_available = left_growth_end - leftmost_display_x;
-
- int popup_width = std::min(popup_required_width,
- std::max(right_available, left_available));
-
- std::pair<int, int> grow_right(right_growth_start, popup_width);
- std::pair<int, int> grow_left(left_growth_end - popup_width, popup_width);
-
- // Prefer to grow towards the end (right for LTR, left for RTL). But if there
- // is not enough space available in the desired direction and more space in
- // the other direction, reverse it.
- if (is_rtl()) {
- return left_available >= popup_width || left_available >= right_available
- ? grow_left
- : grow_right;
- }
- return right_available >= popup_width || right_available >= left_available
- ? grow_right
- : grow_left;
-}
-
-std::pair<int,int> PopupControllerCommon::CalculatePopupYAndHeight(
- const gfx::Display& top_display,
- const gfx::Display& bottom_display,
- int popup_required_height) const {
- int topmost_display_y = top_display.bounds().y();
- int bottommost_display_y =
- bottom_display.GetSizeInPixel().height() + bottom_display.bounds().y();
-
- // Calculate the start coordinates for the popup if it is growing down or
- // the end position if it is growing up, capped to screen space.
- int top_growth_end = std::max(topmost_display_y,
- std::min(bottommost_display_y,
- RoundedElementBounds().y()));
- int bottom_growth_start = std::max(topmost_display_y,
- std::min(bottommost_display_y,
- RoundedElementBounds().bottom()));
-
- int top_available = bottom_growth_start - topmost_display_y;
- int bottom_available = bottommost_display_y - top_growth_end;
-
- // TODO(csharp): Restrict the popup height to what is available.
- if (bottom_available >= popup_required_height ||
- bottom_available >= top_available) {
- // The popup can appear below the field.
- return std::make_pair(bottom_growth_start, popup_required_height);
- } else {
- // The popup must appear above the field.
- return std::make_pair(top_growth_end - popup_required_height,
- popup_required_height);
- }
-}
-
-gfx::Rect PopupControllerCommon::GetPopupBounds(int desired_width,
- int desired_height) const {
- // This is the top left point of the popup if the popup is above the element
- // and grows to the left (since that is the highest and furthest left the
- // popup go could).
- gfx::Point top_left_corner_of_popup = RoundedElementBounds().origin() +
- gfx::Vector2d(RoundedElementBounds().width() - desired_width,
- -desired_height);
-
- // This is the bottom right point of the popup if the popup is below the
- // element and grows to the right (since the is the lowest and furthest right
- // the popup could go).
- gfx::Point bottom_right_corner_of_popup = RoundedElementBounds().origin() +
- gfx::Vector2d(desired_width,
- RoundedElementBounds().height() + desired_height);
-
- gfx::Display top_left_display = GetDisplayNearestPoint(
- top_left_corner_of_popup);
- gfx::Display bottom_right_display = GetDisplayNearestPoint(
- bottom_right_corner_of_popup);
-
- std::pair<int, int> popup_x_and_width =
- CalculatePopupXAndWidth(top_left_display,
- bottom_right_display,
- desired_width);
- std::pair<int, int> popup_y_and_height =
- CalculatePopupYAndHeight(top_left_display,
- bottom_right_display,
- desired_height);
-
- return gfx::Rect(popup_x_and_width.first,
- popup_y_and_height.first,
- popup_x_and_width.second,
- popup_y_and_height.second);
-}
-
} // namespace autofill

Powered by Google App Engine
This is Rietveld 408576698