OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/animation/scrollbar_animation_controller_linear_fade.h" | 5 #include "cc/animation/scrollbar_animation_controller_linear_fade.h" |
6 | 6 |
7 #include "cc/layers/painted_scrollbar_layer_impl.h" | 7 #include "cc/layers/painted_scrollbar_layer_impl.h" |
8 #include "cc/test/fake_impl_proxy.h" | 8 #include "cc/test/fake_impl_proxy.h" |
9 #include "cc/test/fake_layer_tree_host_impl.h" | 9 #include "cc/test/fake_layer_tree_host_impl.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 26 matching lines...) Expand all Loading... |
37 scoped_ptr<ScrollbarAnimationControllerLinearFade> scrollbar_controller_; | 37 scoped_ptr<ScrollbarAnimationControllerLinearFade> scrollbar_controller_; |
38 scoped_ptr<LayerImpl> scroll_layer_; | 38 scoped_ptr<LayerImpl> scroll_layer_; |
39 scoped_ptr<PaintedScrollbarLayerImpl> scrollbar_layer_; | 39 scoped_ptr<PaintedScrollbarLayerImpl> scrollbar_layer_; |
40 }; | 40 }; |
41 | 41 |
42 TEST_F(ScrollbarAnimationControllerLinearFadeTest, HiddenInBegin) { | 42 TEST_F(ScrollbarAnimationControllerLinearFadeTest, HiddenInBegin) { |
43 scrollbar_controller_->Animate(base::TimeTicks()); | 43 scrollbar_controller_->Animate(base::TimeTicks()); |
44 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); | 44 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); |
45 } | 45 } |
46 | 46 |
47 TEST_F(ScrollbarAnimationControllerLinearFadeTest, AwakenByScrollGesture) { | 47 TEST_F(ScrollbarAnimationControllerLinearFadeTest, |
| 48 HiddenAfterNonScrollingGesture) { |
| 49 scrollbar_controller_->DidScrollGestureBegin(); |
| 50 EXPECT_FALSE(scrollbar_controller_->IsAnimating()); |
| 51 EXPECT_FALSE(scrollbar_controller_->Animate(base::TimeTicks())); |
| 52 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); |
| 53 |
| 54 base::TimeTicks time; |
| 55 time += base::TimeDelta::FromSeconds(100); |
| 56 EXPECT_FALSE(scrollbar_controller_->Animate(time)); |
| 57 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); |
| 58 scrollbar_controller_->DidScrollGestureEnd(time); |
| 59 |
| 60 time += base::TimeDelta::FromSeconds(100); |
| 61 EXPECT_FALSE(scrollbar_controller_->IsAnimating()); |
| 62 EXPECT_FALSE(scrollbar_controller_->Animate(time)); |
| 63 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); |
| 64 } |
| 65 |
| 66 TEST_F(ScrollbarAnimationControllerLinearFadeTest, AwakenByScrollingGesture) { |
48 base::TimeTicks time; | 67 base::TimeTicks time; |
49 time += base::TimeDelta::FromSeconds(1); | 68 time += base::TimeDelta::FromSeconds(1); |
50 scrollbar_controller_->DidScrollGestureBegin(); | 69 scrollbar_controller_->DidScrollGestureBegin(); |
51 EXPECT_TRUE(scrollbar_controller_->IsScrollGestureInProgress()); | 70 scrollbar_controller_->Animate(time); |
| 71 EXPECT_FALSE(scrollbar_controller_->IsAnimating()); |
| 72 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); |
| 73 |
| 74 scrollbar_controller_->DidScrollUpdate(time); |
52 EXPECT_FALSE(scrollbar_controller_->IsAnimating()); | 75 EXPECT_FALSE(scrollbar_controller_->IsAnimating()); |
53 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 76 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
54 | 77 |
55 time += base::TimeDelta::FromSeconds(100); | 78 time += base::TimeDelta::FromSeconds(100); |
56 scrollbar_controller_->Animate(time); | 79 scrollbar_controller_->Animate(time); |
| 80 EXPECT_FALSE(scrollbar_controller_->IsAnimating()); |
57 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 81 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
58 scrollbar_controller_->DidScrollGestureEnd(time); | 82 scrollbar_controller_->DidScrollGestureEnd(time); |
59 | 83 |
60 EXPECT_FALSE(scrollbar_controller_->IsScrollGestureInProgress()); | |
61 EXPECT_TRUE(scrollbar_controller_->IsAnimating()); | 84 EXPECT_TRUE(scrollbar_controller_->IsAnimating()); |
62 EXPECT_EQ(2, scrollbar_controller_->DelayBeforeStart(time).InSeconds()); | 85 EXPECT_EQ(2, scrollbar_controller_->DelayBeforeStart(time).InSeconds()); |
63 | 86 |
64 time += base::TimeDelta::FromSeconds(1); | 87 time += base::TimeDelta::FromSeconds(1); |
65 scrollbar_controller_->Animate(time); | 88 scrollbar_controller_->Animate(time); |
66 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 89 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
67 | 90 |
68 time += base::TimeDelta::FromSeconds(1); | 91 time += base::TimeDelta::FromSeconds(1); |
69 scrollbar_controller_->Animate(time); | 92 scrollbar_controller_->Animate(time); |
70 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 93 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
71 | 94 |
72 time += base::TimeDelta::FromSeconds(1); | 95 time += base::TimeDelta::FromSeconds(1); |
73 scrollbar_controller_->Animate(time); | 96 scrollbar_controller_->Animate(time); |
74 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 97 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
75 | 98 |
76 time += base::TimeDelta::FromSeconds(1); | 99 time += base::TimeDelta::FromSeconds(1); |
77 scrollbar_controller_->Animate(time); | 100 scrollbar_controller_->Animate(time); |
78 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); | 101 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); |
79 | 102 |
80 time += base::TimeDelta::FromSeconds(1); | 103 time += base::TimeDelta::FromSeconds(1); |
81 | 104 |
82 scrollbar_controller_->DidScrollGestureBegin(); | 105 scrollbar_controller_->DidScrollGestureBegin(); |
| 106 scrollbar_controller_->DidScrollUpdate(time); |
83 scrollbar_controller_->DidScrollGestureEnd(time); | 107 scrollbar_controller_->DidScrollGestureEnd(time); |
84 | 108 |
85 time += base::TimeDelta::FromSeconds(1); | 109 time += base::TimeDelta::FromSeconds(1); |
86 scrollbar_controller_->Animate(time); | 110 scrollbar_controller_->Animate(time); |
87 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 111 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
88 | 112 |
89 time += base::TimeDelta::FromSeconds(1); | 113 time += base::TimeDelta::FromSeconds(1); |
90 scrollbar_controller_->Animate(time); | 114 scrollbar_controller_->Animate(time); |
91 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 115 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
92 | 116 |
93 time += base::TimeDelta::FromSeconds(1); | 117 time += base::TimeDelta::FromSeconds(1); |
94 scrollbar_controller_->Animate(time); | 118 scrollbar_controller_->Animate(time); |
95 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 119 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
96 | 120 |
97 time += base::TimeDelta::FromSeconds(1); | 121 time += base::TimeDelta::FromSeconds(1); |
98 scrollbar_controller_->Animate(time); | 122 scrollbar_controller_->Animate(time); |
99 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); | 123 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); |
100 | 124 |
101 time += base::TimeDelta::FromSeconds(1); | 125 time += base::TimeDelta::FromSeconds(1); |
102 scrollbar_controller_->Animate(time); | 126 scrollbar_controller_->Animate(time); |
103 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); | 127 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); |
104 } | 128 } |
105 | 129 |
106 TEST_F(ScrollbarAnimationControllerLinearFadeTest, AwakenByProgrammaticScroll) { | 130 TEST_F(ScrollbarAnimationControllerLinearFadeTest, AwakenByProgrammaticScroll) { |
107 base::TimeTicks time; | 131 base::TimeTicks time; |
108 time += base::TimeDelta::FromSeconds(1); | 132 time += base::TimeDelta::FromSeconds(1); |
109 scrollbar_controller_->DidProgrammaticallyUpdateScroll(time); | 133 scrollbar_controller_->DidScrollUpdate(time); |
110 EXPECT_FALSE(scrollbar_controller_->IsScrollGestureInProgress()); | |
111 EXPECT_TRUE(scrollbar_controller_->IsAnimating()); | 134 EXPECT_TRUE(scrollbar_controller_->IsAnimating()); |
112 EXPECT_EQ(2, scrollbar_controller_->DelayBeforeStart(time).InSeconds()); | 135 EXPECT_EQ(2, scrollbar_controller_->DelayBeforeStart(time).InSeconds()); |
113 scrollbar_controller_->Animate(time); | 136 scrollbar_controller_->Animate(time); |
114 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 137 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
115 | 138 |
116 time += base::TimeDelta::FromSeconds(1); | 139 time += base::TimeDelta::FromSeconds(1); |
117 scrollbar_controller_->Animate(time); | 140 scrollbar_controller_->Animate(time); |
118 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 141 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
119 scrollbar_controller_->DidProgrammaticallyUpdateScroll(time); | 142 scrollbar_controller_->DidScrollUpdate(time); |
120 | 143 |
121 time += base::TimeDelta::FromSeconds(1); | 144 time += base::TimeDelta::FromSeconds(1); |
122 scrollbar_controller_->Animate(time); | 145 scrollbar_controller_->Animate(time); |
123 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 146 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
124 | 147 |
125 time += base::TimeDelta::FromSeconds(1); | 148 time += base::TimeDelta::FromSeconds(1); |
126 scrollbar_controller_->Animate(time); | 149 scrollbar_controller_->Animate(time); |
127 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 150 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
128 | 151 |
129 time += base::TimeDelta::FromSeconds(1); | 152 time += base::TimeDelta::FromSeconds(1); |
130 scrollbar_controller_->Animate(time); | 153 scrollbar_controller_->Animate(time); |
131 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 154 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
132 | 155 |
133 time += base::TimeDelta::FromSeconds(1); | 156 time += base::TimeDelta::FromSeconds(1); |
134 scrollbar_controller_->Animate(time); | 157 scrollbar_controller_->Animate(time); |
135 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); | 158 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); |
136 | 159 |
137 time += base::TimeDelta::FromSeconds(1); | 160 time += base::TimeDelta::FromSeconds(1); |
138 scrollbar_controller_->DidProgrammaticallyUpdateScroll(time); | 161 scrollbar_controller_->DidScrollUpdate(time); |
139 time += base::TimeDelta::FromSeconds(1); | 162 time += base::TimeDelta::FromSeconds(1); |
140 scrollbar_controller_->Animate(time); | 163 scrollbar_controller_->Animate(time); |
141 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 164 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
142 | 165 |
143 time += base::TimeDelta::FromSeconds(1); | 166 time += base::TimeDelta::FromSeconds(1); |
144 scrollbar_controller_->Animate(time); | 167 scrollbar_controller_->Animate(time); |
145 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 168 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
146 | 169 |
147 time += base::TimeDelta::FromSeconds(1); | 170 time += base::TimeDelta::FromSeconds(1); |
148 scrollbar_controller_->Animate(time); | 171 scrollbar_controller_->Animate(time); |
149 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 172 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
150 | 173 |
151 time += base::TimeDelta::FromSeconds(1); | 174 time += base::TimeDelta::FromSeconds(1); |
152 scrollbar_controller_->Animate(time); | 175 scrollbar_controller_->Animate(time); |
153 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); | 176 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); |
154 | 177 |
155 time += base::TimeDelta::FromSeconds(1); | 178 time += base::TimeDelta::FromSeconds(1); |
156 scrollbar_controller_->Animate(time); | 179 scrollbar_controller_->Animate(time); |
157 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); | 180 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); |
158 } | 181 } |
159 | 182 |
| 183 TEST_F(ScrollbarAnimationControllerLinearFadeTest, |
| 184 AnimationPreservedByNonScrollingGesture) { |
| 185 base::TimeTicks time; |
| 186 time += base::TimeDelta::FromSeconds(1); |
| 187 scrollbar_controller_->DidScrollUpdate(time); |
| 188 EXPECT_TRUE(scrollbar_controller_->IsAnimating()); |
| 189 scrollbar_controller_->Animate(time); |
| 190 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
| 191 |
| 192 time += base::TimeDelta::FromSeconds(3); |
| 193 scrollbar_controller_->Animate(time); |
| 194 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| 195 |
| 196 scrollbar_controller_->DidScrollGestureBegin(); |
| 197 EXPECT_TRUE(scrollbar_controller_->IsAnimating()); |
| 198 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| 199 |
| 200 time += base::TimeDelta::FromSeconds(1); |
| 201 scrollbar_controller_->Animate(time); |
| 202 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); |
| 203 |
| 204 scrollbar_controller_->DidScrollGestureEnd(time); |
| 205 EXPECT_TRUE(scrollbar_controller_->IsAnimating()); |
| 206 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); |
| 207 |
| 208 time += base::TimeDelta::FromSeconds(1); |
| 209 EXPECT_FALSE(scrollbar_controller_->Animate(time)); |
| 210 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); |
| 211 } |
| 212 |
| 213 TEST_F(ScrollbarAnimationControllerLinearFadeTest, |
| 214 AnimationOverriddenByScrollingGesture) { |
| 215 base::TimeTicks time; |
| 216 time += base::TimeDelta::FromSeconds(1); |
| 217 scrollbar_controller_->DidScrollUpdate(time); |
| 218 EXPECT_TRUE(scrollbar_controller_->IsAnimating()); |
| 219 scrollbar_controller_->Animate(time); |
| 220 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
| 221 |
| 222 time += base::TimeDelta::FromSeconds(3); |
| 223 scrollbar_controller_->Animate(time); |
| 224 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| 225 |
| 226 scrollbar_controller_->DidScrollGestureBegin(); |
| 227 EXPECT_TRUE(scrollbar_controller_->IsAnimating()); |
| 228 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| 229 |
| 230 time += base::TimeDelta::FromSeconds(1); |
| 231 scrollbar_controller_->Animate(time); |
| 232 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); |
| 233 |
| 234 time += base::TimeDelta::FromSeconds(1); |
| 235 scrollbar_controller_->DidScrollUpdate(time); |
| 236 EXPECT_FALSE(scrollbar_controller_->IsAnimating()); |
| 237 EXPECT_FLOAT_EQ(1, scrollbar_layer_->opacity()); |
| 238 |
| 239 time += base::TimeDelta::FromSeconds(1); |
| 240 scrollbar_controller_->DidScrollGestureEnd(time); |
| 241 EXPECT_TRUE(scrollbar_controller_->IsAnimating()); |
| 242 EXPECT_FLOAT_EQ(1, scrollbar_layer_->opacity()); |
| 243 } |
| 244 |
160 } // namespace | 245 } // namespace |
161 } // namespace cc | 246 } // namespace cc |
OLD | NEW |