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

Unified Diff: cc/input/single_scrollbar_animation_controller_thinning_unittest.cc

Issue 2841943002: Overlay scrollbars expand only when mouse is near thumb (Closed)
Patch Set: bokan comments#8 addressed Created 3 years, 8 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: cc/input/single_scrollbar_animation_controller_thinning_unittest.cc
diff --git a/cc/input/single_scrollbar_animation_controller_thinning_unittest.cc b/cc/input/single_scrollbar_animation_controller_thinning_unittest.cc
index e5e652b3d1a70525126196df65a439c30d042676..0faa8d3265bd0134ab5cfeef7bf29dde7eb42398 100644
--- a/cc/input/single_scrollbar_animation_controller_thinning_unittest.cc
+++ b/cc/input/single_scrollbar_animation_controller_thinning_unittest.cc
@@ -23,9 +23,11 @@ namespace {
const float kIdleThicknessScale =
SingleScrollbarAnimationControllerThinning::kIdleThicknessScale;
-const float kDefaultMouseMoveDistanceToTriggerAnimation =
+const float kMouseMoveDistanceToTriggerExpand =
SingleScrollbarAnimationControllerThinning::
- kDefaultMouseMoveDistanceToTriggerAnimation;
+ kMouseMoveDistanceToTriggerExpand;
+const float kMouseMoveDistanceToTriggerFadeIn =
+ ScrollbarAnimationController::kMouseMoveDistanceToTriggerFadeIn;
class MockSingleScrollbarAnimationControllerClient
: public ScrollbarAnimationControllerClient {
@@ -74,6 +76,7 @@ class SingleScrollbarAnimationControllerThinningTest : public testing::Test {
const int kId = 2;
const int kThumbThickness = 10;
const int kTrackStart = 0;
+ const int kTrackLength = 100;
const bool kIsLeftSideVerticalScrollbar = false;
const bool kIsOverlayScrollbar = true;
@@ -87,6 +90,8 @@ class SingleScrollbarAnimationControllerThinningTest : public testing::Test {
clip_layer_->test_properties()->AddChild(std::move(scroll_layer));
host_impl_.active_tree()->SetRootLayerForTesting(std::move(clip));
+ scrollbar_layer_->SetBounds(gfx::Size(kThumbThickness, kTrackLength));
+ scrollbar_layer_->SetPosition(gfx::PointF(90, 0));
scrollbar_layer_->SetScrollElementId(scroll_layer_ptr->element_id());
scrollbar_layer_->test_properties()->opacity_can_animate = true;
clip_layer_->SetBounds(gfx::Size(100, 100));
@@ -108,6 +113,13 @@ class SingleScrollbarAnimationControllerThinningTest : public testing::Test {
NiceMock<MockSingleScrollbarAnimationControllerClient> client_;
};
+// Return a point with given offset from the top-left of scrollbar.
+gfx::PointF NearScrollbar(float offset_x, float offset_y) {
+ gfx::PointF p(90, 0);
+ p.Offset(offset_x, offset_y);
+ return p;
+}
+
// Check initialization of scrollbar. Should start thin.
TEST_F(SingleScrollbarAnimationControllerThinningTest, Idle) {
EXPECT_FLOAT_EQ(kIdleThicknessScale,
@@ -120,7 +132,7 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest, MouseNear) {
base::TimeTicks time;
time += base::TimeDelta::FromSeconds(1);
- scrollbar_controller_->DidMouseMoveNear(1);
+ scrollbar_controller_->DidMouseMove(NearScrollbar(-1, 0));
scrollbar_controller_->Animate(time);
EXPECT_FLOAT_EQ(kIdleThicknessScale,
scrollbar_layer_->thumb_thickness_scale_factor());
@@ -131,15 +143,24 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest, MouseNear) {
EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor());
// Subsequent moves within the nearness threshold should not change anything.
- scrollbar_controller_->DidMouseMoveNear(2);
+ scrollbar_controller_->DidMouseMove(NearScrollbar(-2, 0));
scrollbar_controller_->Animate(time);
time += base::TimeDelta::FromSeconds(10);
scrollbar_controller_->Animate(time);
EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor());
- // Now move away from bar.
- scrollbar_controller_->DidMouseMoveNear(
- kDefaultMouseMoveDistanceToTriggerAnimation);
+ // Now move away from thumb.
+ scrollbar_controller_->DidMouseMove(
+ NearScrollbar(-kMouseMoveDistanceToTriggerExpand, 0));
+ scrollbar_controller_->Animate(time);
+ time += kThinningDuration;
+ scrollbar_controller_->Animate(time);
+ EXPECT_FLOAT_EQ(kIdleThicknessScale,
+ scrollbar_layer_->thumb_thickness_scale_factor());
+
+ // Move away from track.
+ scrollbar_controller_->DidMouseMove(
+ NearScrollbar(-kMouseMoveDistanceToTriggerFadeIn, 0));
scrollbar_controller_->Animate(time);
time += kThinningDuration;
scrollbar_controller_->Animate(time);
@@ -153,7 +174,7 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest, MouseOver) {
base::TimeTicks time;
time += base::TimeDelta::FromSeconds(1);
- scrollbar_controller_->DidMouseMoveNear(0);
+ scrollbar_controller_->DidMouseMove(NearScrollbar(0, 0));
scrollbar_controller_->Animate(time);
EXPECT_FLOAT_EQ(kIdleThicknessScale,
scrollbar_layer_->thumb_thickness_scale_factor());
@@ -164,7 +185,7 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest, MouseOver) {
EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor());
// Subsequent moves should not change anything.
- scrollbar_controller_->DidMouseMoveNear(0);
+ scrollbar_controller_->DidMouseMove(NearScrollbar(0, 0));
scrollbar_controller_->Animate(time);
time += base::TimeDelta::FromSeconds(10);
scrollbar_controller_->Animate(time);
@@ -172,16 +193,16 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest, MouseOver) {
// Moving off the scrollbar but still withing the "near" threshold should do
// nothing.
- scrollbar_controller_->DidMouseMoveNear(
- kDefaultMouseMoveDistanceToTriggerAnimation - 1.f);
+ scrollbar_controller_->DidMouseMove(
+ NearScrollbar(-kMouseMoveDistanceToTriggerExpand + 1, 0));
scrollbar_controller_->Animate(time);
time += base::TimeDelta::FromSeconds(10);
scrollbar_controller_->Animate(time);
EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor());
- // Now move away from bar.
- scrollbar_controller_->DidMouseMoveNear(
- kDefaultMouseMoveDistanceToTriggerAnimation);
+ // Now move away from thumb.
+ scrollbar_controller_->DidMouseMove(
+ NearScrollbar(-kMouseMoveDistanceToTriggerExpand, 0));
scrollbar_controller_->Animate(time);
time += kThinningDuration;
scrollbar_controller_->Animate(time);
@@ -191,13 +212,13 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest, MouseOver) {
// First move the pointer over the scrollbar off of it. Make sure the thinning
// animation kicked off in DidMouseMoveOffScrollbar gets overridden by the
-// thickening animation in the DidMouseMoveNear call.
+// thickening animation in the DidMouseMove call.
TEST_F(SingleScrollbarAnimationControllerThinningTest,
MouseNearThenAwayWhileAnimating) {
base::TimeTicks time;
time += base::TimeDelta::FromSeconds(1);
- scrollbar_controller_->DidMouseMoveNear(0);
+ scrollbar_controller_->DidMouseMove(NearScrollbar(0, 0));
scrollbar_controller_->Animate(time);
EXPECT_FLOAT_EQ(kIdleThicknessScale,
scrollbar_layer_->thumb_thickness_scale_factor());
@@ -208,7 +229,7 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest,
EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor());
// This is tricky. The DidMouseLeave() is sent before the
- // subsequent DidMouseMoveNear(), if the mouse moves in that direction.
+ // subsequent DidMouseMove(), if the mouse moves in that direction.
// This results in the thumb thinning. We want to make sure that when the
// thumb starts expanding it doesn't first narrow to the idle thinness.
time += base::TimeDelta::FromSeconds(1);
@@ -225,7 +246,7 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest,
// Now we get a notification for the mouse moving over the scroller. The
// animation is reset to the thickening direction but we won't start
// thickening until the new animation catches up to the current thickness.
- scrollbar_controller_->DidMouseMoveNear(1);
+ scrollbar_controller_->DidMouseMove(NearScrollbar(-1, 0));
scrollbar_controller_->Animate(time);
EXPECT_FLOAT_EQ(1.0f - (1.0f - kIdleThicknessScale) / 2.0f,
scrollbar_layer_->thumb_thickness_scale_factor());
@@ -263,7 +284,7 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest,
time += base::TimeDelta::FromSeconds(1);
// Move over the scrollbar.
- scrollbar_controller_->DidMouseMoveNear(0);
+ scrollbar_controller_->DidMouseMove(NearScrollbar(0, 0));
scrollbar_controller_->Animate(time);
time += kThinningDuration;
scrollbar_controller_->Animate(time);
@@ -281,8 +302,8 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest,
// Move outside the "near" threshold. Because the scrollbar is captured it
// should remain thick.
- scrollbar_controller_->DidMouseMoveNear(
- kDefaultMouseMoveDistanceToTriggerAnimation);
+ scrollbar_controller_->DidMouseMove(
+ NearScrollbar(-kMouseMoveDistanceToTriggerExpand, 0));
time += kThinningDuration;
scrollbar_controller_->Animate(time);
EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor());
@@ -308,7 +329,7 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest,
time += base::TimeDelta::FromSeconds(1);
// Move over scrollbar.
- scrollbar_controller_->DidMouseMoveNear(0);
+ scrollbar_controller_->DidMouseMove(NearScrollbar(0, 0));
scrollbar_controller_->Animate(time);
time += kThinningDuration;
scrollbar_controller_->Animate(time);
@@ -323,8 +344,8 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest,
EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor());
// Move away from scrollbar. Nothing should change.
- scrollbar_controller_->DidMouseMoveNear(
- kDefaultMouseMoveDistanceToTriggerAnimation);
+ scrollbar_controller_->DidMouseMove(
+ NearScrollbar(kMouseMoveDistanceToTriggerExpand, 0));
time += base::TimeDelta::FromSeconds(1);
scrollbar_controller_->Animate(time);
time += base::TimeDelta::FromSeconds(10);
@@ -333,7 +354,8 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest,
// Move over scrollbar and release. Since we're near the scrollbar, it should
// remain thick.
- scrollbar_controller_->DidMouseMoveNear(0);
+ scrollbar_controller_->DidMouseMove(
+ NearScrollbar(-kMouseMoveDistanceToTriggerExpand + 1, 0));
scrollbar_controller_->DidMouseUp();
time += base::TimeDelta::FromSeconds(1);
scrollbar_controller_->Animate(time);
@@ -349,7 +371,7 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest, ThicknessAnimated) {
// Move mouse near scrollbar. Test that at half the duration time, the
// thickness is half way through its animation.
- scrollbar_controller_->DidMouseMoveNear(1);
+ scrollbar_controller_->DidMouseMove(NearScrollbar(-1, 0));
scrollbar_controller_->Animate(time);
EXPECT_FLOAT_EQ(kIdleThicknessScale,
scrollbar_layer_->thumb_thickness_scale_factor());
@@ -365,8 +387,8 @@ TEST_F(SingleScrollbarAnimationControllerThinningTest, ThicknessAnimated) {
// Move mouse away from scrollbar. Same check.
time += base::TimeDelta::FromSeconds(1);
- scrollbar_controller_->DidMouseMoveNear(
- kDefaultMouseMoveDistanceToTriggerAnimation);
+ scrollbar_controller_->DidMouseMove(
+ NearScrollbar(-kMouseMoveDistanceToTriggerExpand, 0));
scrollbar_controller_->Animate(time);
EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor());

Powered by Google App Engine
This is Rietveld 408576698