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

Side by Side Diff: Source/platform/mac/ScrollElasticityControllerTest.mm

Issue 977663002: Mac: Delete now-dead elastic overscroll code (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 9 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include <gtest/gtest.h>
7
8 #include "platform/geometry/IntPoint.h"
9 #include "platform/geometry/IntSize.h"
10 #include "platform/mac/ScrollElasticityController.h"
11 #include "platform/PlatformWheelEvent.h"
12
13 namespace blink {
14
15 class MockScrollElasticityControllerClient : public ScrollElasticityControllerCl ient {
16 public:
17 MockScrollElasticityControllerClient() : m_pinned(true), m_stretchX(0.0f) {}
18
19 virtual bool allowsHorizontalStretching() override { return true; }
20 virtual bool allowsVerticalStretching() override { return true; }
21 // The amount that the view is stretched past the normal allowable bounds.
22 // The "overhang" amount.
23 virtual IntSize stretchAmount() override { return IntSize(m_stretchX, 0); }
24 virtual bool pinnedInDirection(const FloatSize&) override { return m_pinned; }
25 virtual bool canScrollHorizontally() override { return true; }
26 virtual bool canScrollVertically() override { return true; }
27
28 // Return the absolute scroll position, not relative to the scroll origin.
29 virtual IntPoint absoluteScrollPosition() override { return IntPoint(m_stret chX, 0); }
30
31 virtual void immediateScrollBy(const FloatSize& size) override { m_stretchX += size.width(); }
32 virtual void immediateScrollByWithoutContentEdgeConstraints(const FloatSize& size) override { m_stretchX += size.width(); }
33 virtual void startSnapRubberbandTimer() override {}
34 virtual void stopSnapRubberbandTimer() override {}
35 virtual void adjustScrollPositionToBoundsIfNecessary() override {}
36
37 void reset() { m_stretchX = 0; }
38
39 bool m_pinned;
40
41 private:
42 float m_stretchX;
43 };
44
45 class MockPlatformWheelEvent : public PlatformWheelEvent {
46 public:
47 MockPlatformWheelEvent(PlatformWheelEventPhase phase, float deltaX, bool can RubberbandLeft)
48 {
49 m_phase = phase;
50 m_deltaX = deltaX;
51 m_canRubberbandLeft = canRubberbandLeft;
52 }
53 };
54
55 enum RubberbandPermission {
56 DisallowRubberband,
57 AllowRubberband
58 };
59
60 enum ScrollPermission {
61 DisallowScroll,
62 AllowScroll
63 };
64
65 const float deltaLeft = 1.0f;
66 const float deltaNone = 0.0f;
67
68 class ScrollElasticityControllerTest : public testing::Test {
69 public:
70 ScrollElasticityControllerTest() : m_controller(&m_client) {}
71
72 // Makes a wheel event with the given parameters, and forwards the event to the
73 // controller.
74 bool handleWheelEvent(RubberbandPermission canRubberband, ScrollPermission c anScroll, PlatformWheelEventPhase phase, float delta)
75 {
76 m_client.m_pinned = !canScroll;
77 MockPlatformWheelEvent event(phase, delta, canRubberband);
78 return m_controller.handleWheelEvent(event);
79 }
80
81 void SetUp()
82 {
83 m_client.reset();
84 }
85
86 private:
87 MockScrollElasticityControllerClient m_client;
88 ScrollElasticityController m_controller;
89 };
90
91 // The client cannot scroll, but the event allows rubber banding.
92 TEST_F(ScrollElasticityControllerTest, canRubberband)
93 {
94 // The PlatformWheelEventPhaseMayBegin event should never be handled.
95 EXPECT_FALSE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheel EventPhaseMayBegin, deltaNone));
96
97 // All other events should be handled.
98 EXPECT_TRUE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheelE ventPhaseBegan, deltaLeft));
99 EXPECT_TRUE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheelE ventPhaseChanged, deltaLeft));
100 EXPECT_TRUE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheelE ventPhaseEnded, deltaNone));
101 }
102
103 // The client cannot scroll, and the event disallows rubber banding.
104 TEST_F(ScrollElasticityControllerTest, cannotRubberband)
105 {
106 // The PlatformWheelEventPhaseMayBegin event should never be handled.
107 EXPECT_FALSE(handleWheelEvent(DisallowRubberband, DisallowScroll, PlatformWh eelEventPhaseMayBegin, deltaNone));
108
109 // Rubber-banding is disabled, and the client is pinned.
110 // Ignore all events.
111 EXPECT_FALSE(handleWheelEvent(DisallowRubberband, DisallowScroll, PlatformWh eelEventPhaseBegan, deltaLeft));
112 EXPECT_FALSE(handleWheelEvent(DisallowRubberband, DisallowScroll, PlatformWh eelEventPhaseChanged, deltaLeft));
113 EXPECT_FALSE(handleWheelEvent(DisallowRubberband, DisallowScroll, PlatformWh eelEventPhaseEnded, deltaNone));
114 }
115
116 // The client can scroll, and the event disallows rubber banding.
117 TEST_F(ScrollElasticityControllerTest, cannotRubberbandCanScroll)
118 {
119 // The PlatformWheelEventPhaseMayBegin event should never be handled.
120 EXPECT_FALSE(handleWheelEvent(DisallowRubberband, AllowScroll, PlatformWheel EventPhaseMayBegin, deltaNone));
121
122 // Rubber-banding is disabled, but the client is not pinned.
123 // Handle all events.
124 EXPECT_TRUE(handleWheelEvent(DisallowRubberband, AllowScroll, PlatformWheelE ventPhaseBegan, deltaLeft));
125 EXPECT_TRUE(handleWheelEvent(DisallowRubberband, AllowScroll, PlatformWheelE ventPhaseChanged, deltaLeft));
126 EXPECT_TRUE(handleWheelEvent(DisallowRubberband, AllowScroll, PlatformWheelE ventPhaseEnded, deltaNone));
127 }
128
129 // The client cannot scroll. The initial events allow rubber banding, but the
130 // later events disallow it.
131 TEST_F(ScrollElasticityControllerTest, canRubberbandBecomesFalse)
132 {
133 // The PlatformWheelEventPhaseMayBegin event should never be handled.
134 EXPECT_FALSE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheel EventPhaseMayBegin, deltaNone));
135
136 EXPECT_TRUE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheelE ventPhaseBegan, deltaLeft));
137 EXPECT_TRUE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheelE ventPhaseChanged, deltaLeft));
138
139 // Rubber-banding is no longer allowed, but its already started.
140 // Events should still be handled.
141 EXPECT_TRUE(handleWheelEvent(DisallowRubberband, DisallowScroll, PlatformWhe elEventPhaseChanged, deltaLeft));
142 EXPECT_TRUE(handleWheelEvent(DisallowRubberband, DisallowScroll, PlatformWhe elEventPhaseEnded, deltaNone));
143 }
144
145 // The client cannot scroll. The initial events disallow rubber banding, but the
146 // later events allow it.
147 TEST_F(ScrollElasticityControllerTest, canRubberbandBecomesTrue)
148 {
149 // The PlatformWheelEventPhaseMayBegin event should never be handled.
150 EXPECT_FALSE(handleWheelEvent(DisallowRubberband, DisallowScroll, PlatformWh eelEventPhaseMayBegin, deltaNone));
151
152 EXPECT_FALSE(handleWheelEvent(DisallowRubberband, DisallowScroll, PlatformWh eelEventPhaseBegan, deltaLeft));
153 EXPECT_FALSE(handleWheelEvent(DisallowRubberband, DisallowScroll, PlatformWh eelEventPhaseChanged, deltaLeft));
154
155 // Rubber-banding is now allowed
156 EXPECT_TRUE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheelE ventPhaseChanged, deltaLeft));
157 EXPECT_TRUE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheelE ventPhaseEnded, deltaNone));
158 }
159
160 // Events with no delta should not cause scrolling.
161 TEST_F(ScrollElasticityControllerTest, zeroDeltaEventsIgnored)
162 {
163 // The PlatformWheelEventPhaseMayBegin event should never be handled.
164 EXPECT_FALSE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheel EventPhaseMayBegin, deltaNone));
165
166 // TODO(erikchen): This logic is incorrect. The zero delta event should not have been handled. crbug.com/375512
167 EXPECT_TRUE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheelE ventPhaseBegan, deltaNone));
168 EXPECT_FALSE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheel EventPhaseChanged, deltaNone));
169 EXPECT_TRUE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheelE ventPhaseChanged, deltaLeft));
170 EXPECT_TRUE(handleWheelEvent(AllowRubberband, DisallowScroll, PlatformWheelE ventPhaseEnded, deltaNone));
171 }
172
173 } // namespace blink
OLDNEW
« no previous file with comments | « Source/platform/mac/ScrollElasticityController.mm ('k') | Source/platform/scroll/ScrollAnimator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698