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

Unified Diff: ui/touch_selection/touch_selection_controller_unittest.cc

Issue 1129193007: aw: Ensure synchronization of PopupWindow handle visibility/position (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Slightly simpler visibility fix Created 5 years, 7 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
« no previous file with comments | « ui/touch_selection/touch_selection_controller.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/touch_selection/touch_selection_controller_unittest.cc
diff --git a/ui/touch_selection/touch_selection_controller_unittest.cc b/ui/touch_selection/touch_selection_controller_unittest.cc
index 8125c502a705cb11bbdfd635c5865d7603ed935a..48e65a94f46119e611c04415f8e6a8cad3ea79ad 100644
--- a/ui/touch_selection/touch_selection_controller_unittest.cc
+++ b/ui/touch_selection/touch_selection_controller_unittest.cc
@@ -101,6 +101,7 @@ class TouchSelectionControllerTest : public testing::Test,
events_.push_back(event);
last_event_start_ = controller_->GetStartPosition();
last_event_end_ = controller_->GetEndPosition();
+ last_event_bounds_rect_ = controller_->GetRectBetweenBounds();
}
scoped_ptr<TouchHandleDrawable> CreateDrawable() override {
@@ -193,6 +194,9 @@ class TouchSelectionControllerTest : public testing::Test,
const gfx::PointF& GetLastSelectionEnd() const { return selection_end_; }
const gfx::PointF& GetLastEventStart() const { return last_event_start_; }
const gfx::PointF& GetLastEventEnd() const { return last_event_end_; }
+ const gfx::RectF& GetLastEventBoundsRect() const {
+ return last_event_bounds_rect_;
+ }
std::vector<SelectionEventType> GetAndResetEvents() {
std::vector<SelectionEventType> events;
@@ -208,6 +212,7 @@ class TouchSelectionControllerTest : public testing::Test,
gfx::PointF caret_position_;
gfx::PointF selection_start_;
gfx::PointF selection_end_;
+ gfx::RectF last_event_bounds_rect_;
std::vector<SelectionEventType> events_;
bool caret_moved_;
bool selection_moved_;
@@ -1046,4 +1051,49 @@ TEST_F(TouchSelectionControllerTest, HandlesShowOnLongPressInsideRect) {
EXPECT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_SHOWN));
}
+TEST_F(TouchSelectionControllerTest, RectBetweenBounds) {
+ gfx::RectF start_rect(5, 5, 0, 10);
+ gfx::RectF end_rect(50, 5, 0, 10);
+ bool visible = true;
+
+ EXPECT_EQ(gfx::RectF(), controller().GetRectBetweenBounds());
+
+ OnLongPressEvent();
+ ChangeSelection(start_rect, visible, end_rect, visible);
+ ASSERT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_SHOWN));
+ EXPECT_EQ(gfx::RectF(5, 5, 45, 10), controller().GetRectBetweenBounds());
+
+ // The result of |GetRectBetweenBounds| should be available within the
+ // |OnSelectionEvent| callback, as stored by |GetLastEventBoundsRect()|.
+ EXPECT_EQ(GetLastEventBoundsRect(), controller().GetRectBetweenBounds());
+
+ start_rect.Offset(1, 0);
+ ChangeSelection(start_rect, visible, end_rect, visible);
+ ASSERT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_MOVED));
+ EXPECT_EQ(gfx::RectF(6, 5, 44, 10), controller().GetRectBetweenBounds());
+ EXPECT_EQ(GetLastEventBoundsRect(), controller().GetRectBetweenBounds());
+
+ // If only one bound is visible, the selection bounding rect should reflect
+ // only the visible bound.
+ ChangeSelection(start_rect, visible, end_rect, false);
+ ASSERT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_MOVED));
+ EXPECT_EQ(start_rect, controller().GetRectBetweenBounds());
+ EXPECT_EQ(GetLastEventBoundsRect(), controller().GetRectBetweenBounds());
+
+ ChangeSelection(start_rect, false, end_rect, visible);
+ ASSERT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_MOVED));
+ EXPECT_EQ(end_rect, controller().GetRectBetweenBounds());
+ EXPECT_EQ(GetLastEventBoundsRect(), controller().GetRectBetweenBounds());
+
+ // If both bounds are visible, the full bounding rect should be returned.
+ ChangeSelection(start_rect, false, end_rect, false);
+ ASSERT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_MOVED));
+ EXPECT_EQ(gfx::RectF(6, 5, 44, 10), controller().GetRectBetweenBounds());
+ EXPECT_EQ(GetLastEventBoundsRect(), controller().GetRectBetweenBounds());
+
+ ClearSelection();
+ ASSERT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_CLEARED));
+ EXPECT_EQ(gfx::RectF(), controller().GetRectBetweenBounds());
+}
+
} // namespace ui
« no previous file with comments | « ui/touch_selection/touch_selection_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698