Index: ui/touch_selection/touch_handle_unittest.cc |
diff --git a/ui/touch_selection/touch_handle_unittest.cc b/ui/touch_selection/touch_handle_unittest.cc |
index 6298b3a9b4d2a4ef7273cbb88116b2d8639e1508..6f04b209fe27b38c1e906daf805080ce08434bc3 100644 |
--- a/ui/touch_selection/touch_handle_unittest.cc |
+++ b/ui/touch_selection/touch_handle_unittest.cc |
@@ -17,6 +17,7 @@ namespace { |
const int kDefaultTapDurationMs = 200; |
const double kDefaultTapSlop = 10.; |
const float kDefaultDrawableSize = 10.f; |
+const gfx::RectF kDefaultViewportRect(0, 0, 560, 1200); |
struct MockDrawableData { |
MockDrawableData() |
@@ -27,6 +28,8 @@ struct MockDrawableData { |
rect(0, 0, kDefaultDrawableSize, kDefaultDrawableSize) {} |
TouchHandleOrientation orientation; |
float alpha; |
+ bool mirror_horizontal; |
+ bool mirror_vertical; |
bool enabled; |
bool visible; |
gfx::RectF rect; |
@@ -39,8 +42,16 @@ class MockTouchHandleDrawable : public TouchHandleDrawable { |
void SetEnabled(bool enabled) override { data_->enabled = enabled; } |
- void SetOrientation(TouchHandleOrientation orientation) override { |
+ void SetOrientation(TouchHandleOrientation orientation, |
+ bool mirror_vertical, |
+ bool mirror_horizontal) override { |
data_->orientation = orientation; |
+ data_->mirror_horizontal = mirror_horizontal; |
+ data_->mirror_vertical = mirror_vertical; |
+ } |
+ |
+ void SetOrigin(const gfx::PointF& origin) override { |
+ data_->rect.set_origin(origin); |
} |
void SetAlpha(float alpha) override { |
@@ -48,10 +59,9 @@ class MockTouchHandleDrawable : public TouchHandleDrawable { |
data_->visible = alpha > 0; |
} |
- void SetFocus(const gfx::PointF& position) override { |
- // Anchor focus to the top left of the rect (regardless of orientation). |
- data_->rect.set_origin(position); |
- } |
+ // TODO(AviD): Add unittests for non-zero values of padding ratio once the |
+ // code refactoring is completed. |
+ float GetDrawableHorizontalPaddingRatio() const override { return 0; } |
gfx::RectF GetVisibleBounds() const override { |
return data_->rect; |
@@ -105,6 +115,11 @@ class TouchHandleTest : public testing::Test, public TouchHandleClient { |
return base::TimeDelta::FromMilliseconds(kDefaultTapDurationMs); |
} |
+ bool IsAdaptiveHandleOrientationEnabled() const override { |
+ // Enable adaptive handle orientation by default for unittests |
+ return true; |
+ } |
+ |
void Animate(TouchHandle& handle) { |
needs_animate_ = false; |
base::TimeTicks now = base::TimeTicks::Now(); |
@@ -130,6 +145,31 @@ class TouchHandleTest : public testing::Test, public TouchHandleClient { |
return needs_animate; |
} |
+ void UpdateHandleFocus(TouchHandle& handle, |
+ gfx::PointF& top, |
+ gfx::PointF& bottom) { |
+ handle.SetFocus(top, bottom); |
+ handle.UpdateHandleLayout(); |
+ } |
+ |
+ void UpdateHandleOrientation(TouchHandle& handle, |
+ TouchHandleOrientation orientation) { |
+ handle.SetOrientation(orientation); |
+ handle.UpdateHandleLayout(); |
+ } |
+ |
+ void UpdateHandleVisibility(TouchHandle& handle, |
+ bool visible, |
+ TouchHandle::AnimationStyle animation_style) { |
+ handle.SetVisible(visible, animation_style); |
+ handle.UpdateHandleLayout(); |
+ } |
+ |
+ void UpdateViewportRect(TouchHandle& handle, gfx::RectF viewport_rect) { |
+ handle.SetViewportRect(viewport_rect); |
+ handle.UpdateHandleLayout(); |
+ } |
+ |
bool IsDragging() const { return dragging_; } |
const gfx::PointF& DragPosition() const { return drag_position_; } |
bool NeedsAnimate() const { return needs_animate_; } |
@@ -147,28 +187,30 @@ class TouchHandleTest : public testing::Test, public TouchHandleClient { |
}; |
TEST_F(TouchHandleTest, Visibility) { |
- TouchHandle handle(this, TouchHandleOrientation::CENTER); |
+ TouchHandle handle(this, TouchHandleOrientation::CENTER, |
+ kDefaultViewportRect); |
EXPECT_FALSE(drawable().visible); |
- handle.SetVisible(true, TouchHandle::ANIMATION_NONE); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
EXPECT_TRUE(drawable().visible); |
EXPECT_EQ(1.f, drawable().alpha); |
- handle.SetVisible(false, TouchHandle::ANIMATION_NONE); |
+ UpdateHandleVisibility(handle, false, TouchHandle::ANIMATION_NONE); |
EXPECT_FALSE(drawable().visible); |
- handle.SetVisible(true, TouchHandle::ANIMATION_NONE); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
EXPECT_TRUE(drawable().visible); |
EXPECT_EQ(1.f, drawable().alpha); |
} |
TEST_F(TouchHandleTest, VisibilityAnimation) { |
- TouchHandle handle(this, TouchHandleOrientation::CENTER); |
+ TouchHandle handle(this, TouchHandleOrientation::CENTER, |
+ kDefaultViewportRect); |
ASSERT_FALSE(NeedsAnimate()); |
ASSERT_FALSE(drawable().visible); |
ASSERT_EQ(0.f, drawable().alpha); |
- handle.SetVisible(true, TouchHandle::ANIMATION_SMOOTH); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_SMOOTH); |
EXPECT_TRUE(NeedsAnimate()); |
EXPECT_FALSE(drawable().visible); |
EXPECT_EQ(0.f, drawable().alpha); |
@@ -178,7 +220,7 @@ TEST_F(TouchHandleTest, VisibilityAnimation) { |
EXPECT_EQ(1.f, drawable().alpha); |
ASSERT_FALSE(NeedsAnimate()); |
- handle.SetVisible(false, TouchHandle::ANIMATION_SMOOTH); |
+ UpdateHandleVisibility(handle, false, TouchHandle::ANIMATION_SMOOTH); |
EXPECT_TRUE(NeedsAnimate()); |
EXPECT_TRUE(drawable().visible); |
EXPECT_EQ(1.f, drawable().alpha); |
@@ -187,87 +229,99 @@ TEST_F(TouchHandleTest, VisibilityAnimation) { |
EXPECT_FALSE(drawable().visible); |
EXPECT_EQ(0.f, drawable().alpha); |
- handle.SetVisible(true, TouchHandle::ANIMATION_NONE); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
EXPECT_EQ(1.f, drawable().alpha); |
EXPECT_FALSE(GetAndResetNeedsAnimate()); |
- handle.SetVisible(false, TouchHandle::ANIMATION_SMOOTH); |
+ UpdateHandleVisibility(handle, false, TouchHandle::ANIMATION_SMOOTH); |
EXPECT_EQ(1.f, drawable().alpha); |
EXPECT_TRUE(GetAndResetNeedsAnimate()); |
- handle.SetVisible(true, TouchHandle::ANIMATION_SMOOTH); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_SMOOTH); |
EXPECT_EQ(1.f, drawable().alpha); |
EXPECT_FALSE(GetAndResetNeedsAnimate()); |
} |
TEST_F(TouchHandleTest, Orientation) { |
- TouchHandle handle(this, TouchHandleOrientation::CENTER); |
+ TouchHandle handle(this, TouchHandleOrientation::CENTER, |
+ kDefaultViewportRect); |
EXPECT_EQ(TouchHandleOrientation::CENTER, drawable().orientation); |
- handle.SetOrientation(TouchHandleOrientation::LEFT); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
+ UpdateHandleOrientation(handle, TouchHandleOrientation::LEFT); |
EXPECT_EQ(TouchHandleOrientation::LEFT, drawable().orientation); |
- handle.SetOrientation(TouchHandleOrientation::RIGHT); |
+ UpdateHandleOrientation(handle, TouchHandleOrientation::RIGHT); |
EXPECT_EQ(TouchHandleOrientation::RIGHT, drawable().orientation); |
- handle.SetOrientation(TouchHandleOrientation::CENTER); |
+ UpdateHandleOrientation(handle, TouchHandleOrientation::CENTER); |
EXPECT_EQ(TouchHandleOrientation::CENTER, drawable().orientation); |
} |
TEST_F(TouchHandleTest, Position) { |
- TouchHandle handle(this, TouchHandleOrientation::CENTER); |
- handle.SetVisible(true, TouchHandle::ANIMATION_NONE); |
- |
- gfx::PointF position; |
- EXPECT_EQ(gfx::PointF(), drawable().rect.origin()); |
- |
- position = gfx::PointF(7.3f, -3.7f); |
- handle.SetPosition(position); |
- EXPECT_EQ(position, drawable().rect.origin()); |
- |
- position = gfx::PointF(-7.3f, 3.7f); |
- handle.SetPosition(position); |
- EXPECT_EQ(position, drawable().rect.origin()); |
+ TouchHandle handle(this, TouchHandleOrientation::CENTER, |
+ kDefaultViewportRect); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
+ |
+ const gfx::Vector2dF koffset_vector(kDefaultDrawableSize / 2.f, 0); |
+ gfx::PointF focus_top; |
+ gfx::PointF focus_bottom; |
+ EXPECT_EQ(gfx::PointF() - koffset_vector, drawable().rect.origin()); |
+ |
+ focus_top = gfx::PointF(7.3f, -3.7f); |
+ focus_bottom = gfx::PointF(7.3f, -2.7f); |
+ UpdateHandleFocus(handle, focus_top, focus_bottom); |
+ EXPECT_EQ(focus_bottom - koffset_vector, drawable().rect.origin()); |
+ |
+ focus_top = gfx::PointF(-7.3f, 3.7f); |
+ focus_bottom = gfx::PointF(-7.3f, 4.7f); |
+ UpdateHandleFocus(handle, focus_top, focus_bottom); |
+ EXPECT_EQ(focus_bottom - koffset_vector, drawable().rect.origin()); |
} |
TEST_F(TouchHandleTest, PositionNotUpdatedWhileFadingOrInvisible) { |
- TouchHandle handle(this, TouchHandleOrientation::CENTER); |
+ TouchHandle handle(this, TouchHandleOrientation::CENTER, |
+ kDefaultViewportRect); |
- handle.SetVisible(true, TouchHandle::ANIMATION_NONE); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
ASSERT_TRUE(drawable().visible); |
ASSERT_FALSE(NeedsAnimate()); |
- gfx::PointF old_position(7.3f, -3.7f); |
- handle.SetPosition(old_position); |
- ASSERT_EQ(old_position, drawable().rect.origin()); |
+ const gfx::Vector2dF koffset_vector(kDefaultDrawableSize / 2.f, 0); |
+ gfx::PointF old_focus_top(7.3f, -3.7f); |
+ gfx::PointF old_focus_bottom(7.3f, -2.7f); |
+ UpdateHandleFocus(handle, old_focus_top, old_focus_bottom); |
+ ASSERT_EQ(old_focus_bottom - koffset_vector, drawable().rect.origin()); |
- handle.SetVisible(false, TouchHandle::ANIMATION_SMOOTH); |
+ UpdateHandleVisibility(handle, false, TouchHandle::ANIMATION_SMOOTH); |
ASSERT_TRUE(NeedsAnimate()); |
- gfx::PointF new_position(3.7f, -3.7f); |
- handle.SetPosition(new_position); |
- EXPECT_EQ(old_position, drawable().rect.origin()); |
+ gfx::PointF new_position_top(3.7f, -3.7f); |
+ gfx::PointF new_position_bottom(3.7f, -2.7f); |
+ UpdateHandleFocus(handle, new_position_top, new_position_bottom); |
+ EXPECT_EQ(old_focus_bottom - koffset_vector, drawable().rect.origin()); |
EXPECT_TRUE(NeedsAnimate()); |
// While the handle is fading, the new position should not take affect. |
base::TimeTicks now = base::TimeTicks::Now(); |
while (handle.Animate(now)) { |
- EXPECT_EQ(old_position, drawable().rect.origin()); |
+ EXPECT_EQ(old_focus_bottom - koffset_vector, drawable().rect.origin()); |
now += base::TimeDelta::FromMilliseconds(16); |
} |
// Even after the animation terminates, the new position will not be pushed. |
- EXPECT_EQ(old_position, drawable().rect.origin()); |
+ EXPECT_EQ(old_focus_bottom - koffset_vector, drawable().rect.origin()); |
// As soon as the handle becomes visible, the new position will be pushed. |
- handle.SetVisible(true, TouchHandle::ANIMATION_SMOOTH); |
- EXPECT_EQ(new_position, drawable().rect.origin()); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_SMOOTH); |
+ EXPECT_EQ(new_position_bottom - koffset_vector, drawable().rect.origin()); |
} |
TEST_F(TouchHandleTest, Enabled) { |
// A newly created handle defaults to enabled. |
- TouchHandle handle(this, TouchHandleOrientation::CENTER); |
+ TouchHandle handle(this, TouchHandleOrientation::CENTER, |
+ kDefaultViewportRect); |
EXPECT_TRUE(drawable().enabled); |
- handle.SetVisible(true, TouchHandle::ANIMATION_SMOOTH); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_SMOOTH); |
EXPECT_TRUE(GetAndResetNeedsAnimate()); |
EXPECT_EQ(0.f, drawable().alpha); |
handle.SetEnabled(false); |
@@ -282,7 +336,7 @@ TEST_F(TouchHandleTest, Enabled) { |
// Disabling mid-animation should cancel the animation. |
handle.SetEnabled(true); |
- handle.SetVisible(false, TouchHandle::ANIMATION_SMOOTH); |
+ UpdateHandleVisibility(handle, false, TouchHandle::ANIMATION_SMOOTH); |
EXPECT_TRUE(drawable().visible); |
EXPECT_TRUE(GetAndResetNeedsAnimate()); |
handle.SetEnabled(false); |
@@ -292,7 +346,7 @@ TEST_F(TouchHandleTest, Enabled) { |
// Disabling mid-drag should cancel the drag. |
handle.SetEnabled(true); |
- handle.SetVisible(true, TouchHandle::ANIMATION_NONE); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
EXPECT_TRUE(handle.WillHandleTouchEvent(event)); |
EXPECT_TRUE(IsDragging()); |
handle.SetEnabled(false); |
@@ -301,7 +355,8 @@ TEST_F(TouchHandleTest, Enabled) { |
} |
TEST_F(TouchHandleTest, Drag) { |
- TouchHandle handle(this, TouchHandleOrientation::CENTER); |
+ TouchHandle handle(this, TouchHandleOrientation::CENTER, |
+ kDefaultViewportRect); |
base::TimeTicks event_time = base::TimeTicks::Now(); |
const float kOffset = kDefaultDrawableSize / 2.f; |
@@ -311,7 +366,7 @@ TEST_F(TouchHandleTest, Drag) { |
MockMotionEvent::ACTION_DOWN, event_time, kOffset, kOffset); |
EXPECT_FALSE(handle.WillHandleTouchEvent(event)); |
EXPECT_FALSE(IsDragging()); |
- handle.SetVisible(true, TouchHandle::ANIMATION_NONE); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
// ACTION_DOWN must fall within the drawable region to trigger drag. |
event = MockMotionEvent(MockMotionEvent::ACTION_DOWN, event_time, 50, 50); |
@@ -355,16 +410,16 @@ TEST_F(TouchHandleTest, Drag) { |
} |
TEST_F(TouchHandleTest, DragDefersOrientationChange) { |
- TouchHandle handle(this, TouchHandleOrientation::RIGHT); |
+ TouchHandle handle(this, TouchHandleOrientation::RIGHT, kDefaultViewportRect); |
ASSERT_EQ(drawable().orientation, TouchHandleOrientation::RIGHT); |
- handle.SetVisible(true, TouchHandle::ANIMATION_NONE); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
MockMotionEvent event(MockMotionEvent::ACTION_DOWN); |
EXPECT_TRUE(handle.WillHandleTouchEvent(event)); |
EXPECT_TRUE(IsDragging()); |
// Orientation changes will be deferred until the drag ends. |
- handle.SetOrientation(TouchHandleOrientation::LEFT); |
+ UpdateHandleOrientation(handle, TouchHandleOrientation::LEFT); |
EXPECT_EQ(TouchHandleOrientation::RIGHT, drawable().orientation); |
event = MockMotionEvent(MockMotionEvent::ACTION_MOVE); |
@@ -381,15 +436,16 @@ TEST_F(TouchHandleTest, DragDefersOrientationChange) { |
} |
TEST_F(TouchHandleTest, DragDefersFade) { |
- TouchHandle handle(this, TouchHandleOrientation::CENTER); |
- handle.SetVisible(true, TouchHandle::ANIMATION_NONE); |
+ TouchHandle handle(this, TouchHandleOrientation::CENTER, |
+ kDefaultViewportRect); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
MockMotionEvent event(MockMotionEvent::ACTION_DOWN); |
EXPECT_TRUE(handle.WillHandleTouchEvent(event)); |
EXPECT_TRUE(IsDragging()); |
// Fade will be deferred until the drag ends. |
- handle.SetVisible(false, TouchHandle::ANIMATION_SMOOTH); |
+ UpdateHandleVisibility(handle, false, TouchHandle::ANIMATION_SMOOTH); |
EXPECT_FALSE(NeedsAnimate()); |
EXPECT_TRUE(drawable().visible); |
EXPECT_EQ(1.f, drawable().alpha); |
@@ -410,8 +466,12 @@ TEST_F(TouchHandleTest, DragDefersFade) { |
} |
TEST_F(TouchHandleTest, DragTargettingUsesTouchSize) { |
- TouchHandle handle(this, TouchHandleOrientation::CENTER); |
- handle.SetVisible(true, TouchHandle::ANIMATION_NONE); |
+ TouchHandle handle(this, TouchHandleOrientation::CENTER, |
+ kDefaultViewportRect); |
+ gfx::PointF focus_top(kDefaultDrawableSize / 2, 0); |
+ gfx::PointF focus_bottom(kDefaultDrawableSize / 2, 0); |
+ UpdateHandleFocus(handle, focus_top, focus_bottom); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
base::TimeTicks event_time = base::TimeTicks::Now(); |
const float kTouchSize = 24.f; |
@@ -469,8 +529,9 @@ TEST_F(TouchHandleTest, DragTargettingUsesTouchSize) { |
} |
TEST_F(TouchHandleTest, Tap) { |
- TouchHandle handle(this, TouchHandleOrientation::CENTER); |
- handle.SetVisible(true, TouchHandle::ANIMATION_NONE); |
+ TouchHandle handle(this, TouchHandleOrientation::CENTER, |
+ kDefaultViewportRect); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
base::TimeTicks event_time = base::TimeTicks::Now(); |
@@ -515,4 +576,112 @@ TEST_F(TouchHandleTest, Tap) { |
EXPECT_FALSE(GetAndResetHandleTapped()); |
} |
+TEST_F(TouchHandleTest, MirrorFocusChange) { |
+ TouchHandle handle(this, TouchHandleOrientation::LEFT, kDefaultViewportRect); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
+ |
+ gfx::PointF focus_top; |
+ gfx::PointF focus_bottom; |
+ EXPECT_EQ(gfx::PointF(), drawable().rect.origin()); |
+ |
+ // Moving the selection to the bottom of the screen |
+ // should mirror the handle vertically. |
+ focus_top = gfx::PointF(17.3f, 1199.0f); |
+ focus_bottom = gfx::PointF(17.3f, 1200.0f); |
+ UpdateHandleFocus(handle, focus_top, focus_bottom); |
+ EXPECT_TRUE(drawable().mirror_vertical); |
+ EXPECT_FALSE(drawable().mirror_horizontal); |
+ |
+ // Moving the left handle to the left edge of the viewport |
+ // should mirror the handle horizontally as well. |
+ focus_top = gfx::PointF(2.3f, 1199.0f); |
+ focus_bottom = gfx::PointF(2.3f, 1200.0f); |
+ UpdateHandleFocus(handle, focus_top, focus_bottom); |
+ EXPECT_TRUE(drawable().mirror_vertical); |
+ EXPECT_TRUE(drawable().mirror_horizontal); |
+ |
+ // When the selection is not at the bottom, only the |
+ // horizontal mirror flag should be true. |
+ focus_top = gfx::PointF(2.3f, 7.3f); |
+ focus_bottom = gfx::PointF(2.3f, 8.3f); |
+ UpdateHandleFocus(handle, focus_top, focus_bottom); |
+ EXPECT_FALSE(drawable().mirror_vertical); |
+ EXPECT_TRUE(drawable().mirror_horizontal); |
+ |
+ // When selection handles intersects the viewport fully, |
+ // both mirror values should be false. |
+ focus_top = gfx::PointF(23.3f, 7.3f); |
+ focus_bottom = gfx::PointF(23.3f, 8.3f); |
+ UpdateHandleFocus(handle, focus_top, focus_bottom); |
+ EXPECT_FALSE(drawable().mirror_vertical); |
+ EXPECT_FALSE(drawable().mirror_horizontal); |
+ |
+ // Horizontal mirror should be true for Right handle when |
+ // the handle is at theright edge of the viewport. |
+ UpdateHandleOrientation(handle, TouchHandleOrientation::RIGHT); |
+ focus_top = gfx::PointF(560.0f, 7.3f); |
+ focus_bottom = gfx::PointF(560.0f, 8.3f); |
+ UpdateHandleFocus(handle, focus_top, focus_bottom); |
+ EXPECT_FALSE(drawable().mirror_vertical); |
+ EXPECT_TRUE(drawable().mirror_horizontal); |
+} |
+ |
+TEST_F(TouchHandleTest, DragDefersMirrorChange) { |
+ TouchHandle handle(this, TouchHandleOrientation::RIGHT, kDefaultViewportRect); |
+ ASSERT_EQ(drawable().orientation, TouchHandleOrientation::RIGHT); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
+ |
+ base::TimeTicks event_time = base::TimeTicks::Now(); |
+ const float kOffset = kDefaultDrawableSize / 2.f; |
+ |
+ // Start the drag. |
+ MockMotionEvent event(MockMotionEvent::ACTION_DOWN, event_time, kOffset, |
+ kOffset); |
+ EXPECT_TRUE(handle.WillHandleTouchEvent(event)); |
+ EXPECT_TRUE(IsDragging()); |
+ |
+ UpdateHandleOrientation(handle, TouchHandleOrientation::LEFT); |
+ gfx::PointF focus_top(17.3f, 1199.0f); |
+ gfx::PointF focus_bottom(17.3f, 1200.0f); |
+ UpdateHandleFocus(handle, focus_top, focus_bottom); |
+ EXPECT_FALSE(drawable().mirror_vertical); |
+ EXPECT_FALSE(drawable().mirror_horizontal); |
+ |
+ // Mirror flag changes will be deferred until the drag ends. |
+ event = MockMotionEvent(MockMotionEvent::ACTION_UP); |
+ EXPECT_TRUE(handle.WillHandleTouchEvent(event)); |
+ EXPECT_FALSE(GetAndResetHandleDragged()); |
+ EXPECT_FALSE(IsDragging()); |
+ EXPECT_TRUE(drawable().mirror_vertical); |
+ EXPECT_FALSE(drawable().mirror_horizontal); |
+} |
+ |
+TEST_F(TouchHandleTest, ViewportSizeChange) { |
+ TouchHandle handle(this, TouchHandleOrientation::RIGHT, kDefaultViewportRect); |
+ ASSERT_EQ(drawable().orientation, TouchHandleOrientation::RIGHT); |
+ UpdateHandleVisibility(handle, true, TouchHandle::ANIMATION_NONE); |
+ |
+ gfx::PointF focus_top; |
+ gfx::PointF focus_bottom; |
+ EXPECT_EQ(gfx::PointF(), drawable().rect.origin()); |
+ |
+ focus_top = gfx::PointF(230.0f, 599.0f); |
+ focus_bottom = gfx::PointF(230.0f, 600.0f); |
+ UpdateHandleFocus(handle, focus_top, focus_bottom); |
+ EXPECT_FALSE(drawable().mirror_vertical); |
+ EXPECT_FALSE(drawable().mirror_horizontal); |
+ |
+ UpdateViewportRect(handle, gfx::RectF(0, 0, 560, 600)); |
+ EXPECT_TRUE(drawable().mirror_vertical); |
+ EXPECT_FALSE(drawable().mirror_horizontal); |
+ |
+ UpdateViewportRect(handle, gfx::RectF(0, 0, 230, 600)); |
+ EXPECT_TRUE(drawable().mirror_vertical); |
+ EXPECT_TRUE(drawable().mirror_horizontal); |
+ |
+ UpdateViewportRect(handle, kDefaultViewportRect); |
+ EXPECT_FALSE(drawable().mirror_vertical); |
+ EXPECT_FALSE(drawable().mirror_horizontal); |
+} |
+ |
} // namespace ui |