Index: content/browser/android/overscroll_refresh_unittest.cc |
diff --git a/content/browser/android/overscroll_refresh_unittest.cc b/content/browser/android/overscroll_refresh_unittest.cc |
deleted file mode 100644 |
index 70ed0dbd510d1f15e8b2a04f91b0ee386b21a99f..0000000000000000000000000000000000000000 |
--- a/content/browser/android/overscroll_refresh_unittest.cc |
+++ /dev/null |
@@ -1,241 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "cc/layers/layer.h" |
-#include "content/browser/android/overscroll_refresh.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace content { |
- |
-class OverscrollRefreshTest : public OverscrollRefreshHandler, |
- public testing::Test { |
- public: |
- OverscrollRefreshTest() {} |
- |
- // OverscrollRefreshHandler implementation. |
- bool PullStart() override { |
- started_ = true; |
- return true; |
- } |
- |
- void PullUpdate(float delta) override { delta_ += delta; } |
- |
- void PullRelease(bool allow_refresh) override { |
- released_ = true; |
- refresh_allowed_ = allow_refresh; |
- } |
- |
- void PullReset() override { reset_ = true; } |
- |
- bool GetAndResetPullStarted() { |
- bool result = started_; |
- started_ = false; |
- return result; |
- } |
- |
- float GetAndResetPullDelta() { |
- float result = delta_; |
- delta_ = 0; |
- return result; |
- } |
- |
- bool GetAndResetPullReleased() { |
- bool result = released_; |
- released_ = false; |
- return result; |
- } |
- |
- bool GetAndResetRefreshAllowed() { |
- bool result = refresh_allowed_; |
- refresh_allowed_ = false; |
- return result; |
- } |
- |
- bool GetAndResetPullReset() { |
- bool result = reset_; |
- reset_ = false; |
- return result; |
- } |
- |
- private: |
- float delta_ = 0; |
- bool started_ = false; |
- bool released_ = false; |
- bool reset_ = false; |
- bool refresh_allowed_ = false; |
-}; |
- |
-TEST_F(OverscrollRefreshTest, Basic) { |
- OverscrollRefresh effect(this); |
- |
- EXPECT_FALSE(effect.IsActive()); |
- EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck()); |
- |
- effect.OnScrollBegin(); |
- EXPECT_FALSE(effect.IsActive()); |
- EXPECT_TRUE(effect.IsAwaitingScrollUpdateAck()); |
- |
- // The initial scroll should not be consumed, as it should first be offered |
- // to content. |
- gfx::Vector2dF scroll_up(0, 10); |
- EXPECT_FALSE(effect.WillHandleScrollUpdate(scroll_up)); |
- EXPECT_FALSE(effect.IsActive()); |
- EXPECT_TRUE(effect.IsAwaitingScrollUpdateAck()); |
- |
- // The unconsumed, overscrolling scroll will trigger the effect. |
- effect.OnScrollUpdateAck(false); |
- EXPECT_TRUE(effect.IsActive()); |
- EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck()); |
- EXPECT_TRUE(GetAndResetPullStarted()); |
- |
- // Further scrolls will be consumed. |
- EXPECT_TRUE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 50))); |
- EXPECT_EQ(50.f, GetAndResetPullDelta()); |
- EXPECT_TRUE(effect.IsActive()); |
- |
- // Even scrolls in the down direction should be consumed. |
- EXPECT_TRUE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, -50))); |
- EXPECT_EQ(-50.f, GetAndResetPullDelta()); |
- EXPECT_TRUE(effect.IsActive()); |
- |
- // Ending the scroll while beyond the threshold should trigger a refresh. |
- gfx::Vector2dF zero_velocity; |
- EXPECT_FALSE(GetAndResetPullReleased()); |
- effect.OnScrollEnd(zero_velocity); |
- EXPECT_FALSE(effect.IsActive()); |
- EXPECT_TRUE(GetAndResetPullReleased()); |
- EXPECT_TRUE(GetAndResetRefreshAllowed()); |
-} |
- |
-TEST_F(OverscrollRefreshTest, NotTriggeredIfInitialYOffsetIsNotZero) { |
- OverscrollRefresh effect(this); |
- |
- // A positive y scroll offset at the start of scroll will prevent activation, |
- // even if the subsequent scroll overscrolls upward. |
- gfx::Vector2dF nonzero_offset(0, 10); |
- bool overflow_y_hidden = false; |
- effect.OnFrameUpdated(nonzero_offset, overflow_y_hidden); |
- effect.OnScrollBegin(); |
- |
- effect.OnFrameUpdated(gfx::Vector2dF(), overflow_y_hidden); |
- ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 10))); |
- EXPECT_FALSE(effect.IsActive()); |
- EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck()); |
- effect.OnScrollUpdateAck(false); |
- EXPECT_FALSE(effect.IsActive()); |
- EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck()); |
- EXPECT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 500))); |
- effect.OnScrollEnd(gfx::Vector2dF()); |
- EXPECT_FALSE(GetAndResetPullStarted()); |
- EXPECT_FALSE(GetAndResetPullReleased()); |
-} |
- |
-TEST_F(OverscrollRefreshTest, NotTriggeredIfOverflowYHidden) { |
- OverscrollRefresh effect(this); |
- |
- // overflow-y:hidden at the start of scroll will prevent activation. |
- gfx::Vector2dF zero_offset; |
- bool overflow_y_hidden = true; |
- effect.OnFrameUpdated(zero_offset, overflow_y_hidden); |
- effect.OnScrollBegin(); |
- |
- ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 10))); |
- EXPECT_FALSE(effect.IsActive()); |
- EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck()); |
- effect.OnScrollUpdateAck(false); |
- EXPECT_FALSE(effect.IsActive()); |
- EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck()); |
- EXPECT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 500))); |
- effect.OnScrollEnd(gfx::Vector2dF()); |
- EXPECT_FALSE(GetAndResetPullStarted()); |
- EXPECT_FALSE(GetAndResetPullReleased()); |
-} |
- |
-TEST_F(OverscrollRefreshTest, NotTriggeredIfInitialScrollDownward) { |
- OverscrollRefresh effect(this); |
- effect.OnScrollBegin(); |
- |
- // A downward initial scroll will prevent activation, even if the subsequent |
- // scroll overscrolls upward. |
- ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, -10))); |
- EXPECT_FALSE(effect.IsActive()); |
- EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck()); |
- |
- effect.OnScrollUpdateAck(false); |
- EXPECT_FALSE(effect.IsActive()); |
- EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck()); |
- EXPECT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 500))); |
- effect.OnScrollEnd(gfx::Vector2dF()); |
- EXPECT_FALSE(GetAndResetPullReleased()); |
-} |
- |
-TEST_F(OverscrollRefreshTest, NotTriggeredIfInitialScrollOrTouchConsumed) { |
- OverscrollRefresh effect(this); |
- effect.OnScrollBegin(); |
- ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 10))); |
- ASSERT_TRUE(effect.IsAwaitingScrollUpdateAck()); |
- |
- // Consumption of the initial touchmove or scroll should prevent future |
- // activation. |
- effect.OnScrollUpdateAck(true); |
- EXPECT_FALSE(effect.IsActive()); |
- EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck()); |
- EXPECT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 500))); |
- effect.OnScrollUpdateAck(false); |
- EXPECT_FALSE(effect.IsActive()); |
- EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck()); |
- EXPECT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 500))); |
- effect.OnScrollEnd(gfx::Vector2dF()); |
- EXPECT_FALSE(GetAndResetPullStarted()); |
- EXPECT_FALSE(GetAndResetPullReleased()); |
-} |
- |
-TEST_F(OverscrollRefreshTest, NotTriggeredIfFlungDownward) { |
- OverscrollRefresh effect(this); |
- effect.OnScrollBegin(); |
- ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 10))); |
- ASSERT_TRUE(effect.IsAwaitingScrollUpdateAck()); |
- effect.OnScrollUpdateAck(false); |
- ASSERT_TRUE(effect.IsActive()); |
- EXPECT_TRUE(GetAndResetPullStarted()); |
- |
- // Terminating the pull with a down-directed fling should prevent triggering. |
- effect.OnScrollEnd(gfx::Vector2dF(0, -1000)); |
- EXPECT_TRUE(GetAndResetPullReleased()); |
- EXPECT_FALSE(GetAndResetRefreshAllowed()); |
-} |
- |
-TEST_F(OverscrollRefreshTest, NotTriggeredIfReleasedWithoutActivation) { |
- OverscrollRefresh effect(this); |
- effect.OnScrollBegin(); |
- ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 10))); |
- ASSERT_TRUE(effect.IsAwaitingScrollUpdateAck()); |
- effect.OnScrollUpdateAck(false); |
- ASSERT_TRUE(effect.IsActive()); |
- EXPECT_TRUE(GetAndResetPullStarted()); |
- |
- // An early release should prevent the refresh action from firing. |
- effect.ReleaseWithoutActivation(); |
- effect.OnScrollEnd(gfx::Vector2dF()); |
- EXPECT_TRUE(GetAndResetPullReleased()); |
- EXPECT_FALSE(GetAndResetRefreshAllowed()); |
-} |
- |
-TEST_F(OverscrollRefreshTest, NotTriggeredIfReset) { |
- OverscrollRefresh effect(this); |
- effect.OnScrollBegin(); |
- ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 10))); |
- ASSERT_TRUE(effect.IsAwaitingScrollUpdateAck()); |
- effect.OnScrollUpdateAck(false); |
- ASSERT_TRUE(effect.IsActive()); |
- EXPECT_TRUE(GetAndResetPullStarted()); |
- |
- // An early reset should prevent the refresh action from firing. |
- effect.Reset(); |
- EXPECT_TRUE(GetAndResetPullReset()); |
- effect.OnScrollEnd(gfx::Vector2dF()); |
- EXPECT_FALSE(GetAndResetPullReleased()); |
-} |
- |
-} // namespace content |