OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/input/scrollbar_animation_controller_thinning.h" | 5 #include "cc/input/scrollbar_animation_controller_thinning.h" |
6 | 6 |
7 #include "cc/layers/solid_color_scrollbar_layer_impl.h" | 7 #include "cc/layers/solid_color_scrollbar_layer_impl.h" |
8 #include "cc/test/fake_impl_task_runner_provider.h" | 8 #include "cc/test/fake_impl_task_runner_provider.h" |
9 #include "cc/test/fake_layer_tree_host_impl.h" | 9 #include "cc/test/fake_layer_tree_host_impl.h" |
10 #include "cc/test/geometry_test_utils.h" | 10 #include "cc/test/geometry_test_utils.h" |
(...skipping 26 matching lines...) Expand all Loading... | |
37 did_request_animate_ = true; | 37 did_request_animate_ = true; |
38 } | 38 } |
39 ScrollbarSet ScrollbarsFor(int scroll_layer_id) const override { | 39 ScrollbarSet ScrollbarsFor(int scroll_layer_id) const override { |
40 return host_impl_.ScrollbarsFor(scroll_layer_id); | 40 return host_impl_.ScrollbarsFor(scroll_layer_id); |
41 } | 41 } |
42 | 42 |
43 protected: | 43 protected: |
44 void SetUp() override { | 44 void SetUp() override { |
45 std::unique_ptr<LayerImpl> scroll_layer = | 45 std::unique_ptr<LayerImpl> scroll_layer = |
46 LayerImpl::Create(host_impl_.active_tree(), 1); | 46 LayerImpl::Create(host_impl_.active_tree(), 1); |
47 clip_layer_ = LayerImpl::Create(host_impl_.active_tree(), 3); | 47 std::unique_ptr<LayerImpl> clip = |
48 LayerImpl::Create(host_impl_.active_tree(), 3); | |
49 clip_layer_ = clip.get(); | |
48 scroll_layer->SetScrollClipLayer(clip_layer_->id()); | 50 scroll_layer->SetScrollClipLayer(clip_layer_->id()); |
49 LayerImpl* scroll_layer_ptr = scroll_layer.get(); | 51 LayerImpl* scroll_layer_ptr = scroll_layer.get(); |
50 clip_layer_->AddChild(std::move(scroll_layer)); | |
51 | 52 |
52 const int kId = 2; | 53 const int kId = 2; |
53 const int kThumbThickness = 10; | 54 const int kThumbThickness = 10; |
54 const int kTrackStart = 0; | 55 const int kTrackStart = 0; |
55 const bool kIsLeftSideVerticalScrollbar = false; | 56 const bool kIsLeftSideVerticalScrollbar = false; |
56 const bool kIsOverlayScrollbar = true; | 57 const bool kIsOverlayScrollbar = true; |
57 scrollbar_layer_ = SolidColorScrollbarLayerImpl::Create( | 58 std::unique_ptr<SolidColorScrollbarLayerImpl> scrollbar = |
58 host_impl_.active_tree(), kId, HORIZONTAL, kThumbThickness, kTrackStart, | 59 SolidColorScrollbarLayerImpl::Create( |
59 kIsLeftSideVerticalScrollbar, kIsOverlayScrollbar); | 60 host_impl_.active_tree(), kId, HORIZONTAL, kThumbThickness, |
61 kTrackStart, kIsLeftSideVerticalScrollbar, kIsOverlayScrollbar); | |
62 scrollbar_layer_ = scrollbar.get(); | |
63 | |
64 scroll_layer->AddChild(std::move(scrollbar)); | |
65 clip_layer_->AddChild(std::move(scroll_layer)); | |
66 host_impl_.active_tree()->SetRootLayer(std::move(clip)); | |
60 | 67 |
61 scrollbar_layer_->SetScrollLayerId(scroll_layer_ptr->id()); | 68 scrollbar_layer_->SetScrollLayerId(scroll_layer_ptr->id()); |
69 scrollbar_layer_->test_properties()->force_render_surface = true; | |
ajuma
2016/05/27 13:35:44
Here too, we should have a way to require an effec
jaydasika
2016/05/27 17:50:26
Done.
| |
62 clip_layer_->SetBounds(gfx::Size(100, 100)); | 70 clip_layer_->SetBounds(gfx::Size(100, 100)); |
63 scroll_layer_ptr->SetBounds(gfx::Size(200, 200)); | 71 scroll_layer_ptr->SetBounds(gfx::Size(200, 200)); |
72 host_impl_.active_tree()->BuildPropertyTreesForTesting(); | |
64 | 73 |
65 scrollbar_controller_ = ScrollbarAnimationControllerThinning::Create( | 74 scrollbar_controller_ = ScrollbarAnimationControllerThinning::Create( |
66 scroll_layer_ptr->id(), this, base::TimeDelta::FromSeconds(2), | 75 scroll_layer_ptr->id(), this, base::TimeDelta::FromSeconds(2), |
67 base::TimeDelta::FromSeconds(5), base::TimeDelta::FromSeconds(3)); | 76 base::TimeDelta::FromSeconds(5), base::TimeDelta::FromSeconds(3)); |
68 } | 77 } |
69 | 78 |
70 FakeImplTaskRunnerProvider task_runner_provider_; | 79 FakeImplTaskRunnerProvider task_runner_provider_; |
71 TestSharedBitmapManager shared_bitmap_manager_; | 80 TestSharedBitmapManager shared_bitmap_manager_; |
72 TestTaskGraphRunner task_graph_runner_; | 81 TestTaskGraphRunner task_graph_runner_; |
73 FakeLayerTreeHostImpl host_impl_; | 82 FakeLayerTreeHostImpl host_impl_; |
74 std::unique_ptr<ScrollbarAnimationControllerThinning> scrollbar_controller_; | 83 std::unique_ptr<ScrollbarAnimationControllerThinning> scrollbar_controller_; |
75 std::unique_ptr<LayerImpl> clip_layer_; | 84 LayerImpl* clip_layer_; |
76 std::unique_ptr<SolidColorScrollbarLayerImpl> scrollbar_layer_; | 85 SolidColorScrollbarLayerImpl* scrollbar_layer_; |
77 | 86 |
78 base::Closure start_fade_; | 87 base::Closure start_fade_; |
79 base::TimeDelta delay_; | 88 base::TimeDelta delay_; |
80 bool did_request_redraw_; | 89 bool did_request_redraw_; |
81 bool did_request_animate_; | 90 bool did_request_animate_; |
82 }; | 91 }; |
83 | 92 |
84 // Check initialization of scrollbar. | 93 // Check initialization of scrollbar. |
85 TEST_F(ScrollbarAnimationControllerThinningTest, Idle) { | 94 TEST_F(ScrollbarAnimationControllerThinningTest, Idle) { |
86 scrollbar_controller_->Animate(base::TimeTicks()); | 95 scrollbar_controller_->Animate(base::TimeTicks()); |
87 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 96 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
88 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); | 97 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); |
89 } | 98 } |
90 | 99 |
91 // Check that scrollbar disappears when the layer becomes non-scrollable. | 100 // Check that scrollbar disappears when the layer becomes non-scrollable. |
92 TEST_F(ScrollbarAnimationControllerThinningTest, HideOnResize) { | 101 TEST_F(ScrollbarAnimationControllerThinningTest, HideOnResize) { |
93 LayerImpl* scroll_layer = host_impl_.active_tree()->LayerById(1); | 102 LayerImpl* scroll_layer = host_impl_.active_tree()->LayerById(1); |
94 ASSERT_TRUE(scroll_layer); | 103 ASSERT_TRUE(scroll_layer); |
95 EXPECT_EQ(gfx::Size(200, 200), scroll_layer->bounds()); | 104 EXPECT_EQ(gfx::Size(200, 200), scroll_layer->bounds()); |
96 | 105 |
97 EXPECT_EQ(HORIZONTAL, scrollbar_layer_->orientation()); | 106 EXPECT_EQ(HORIZONTAL, scrollbar_layer_->orientation()); |
98 | 107 |
99 // Shrink along X axis, horizontal scrollbar should appear. | 108 // Shrink along X axis, horizontal scrollbar should appear. |
100 clip_layer_->SetBounds(gfx::Size(100, 200)); | 109 clip_layer_->SetBounds(gfx::Size(100, 200)); |
101 EXPECT_EQ(gfx::Size(100, 200), clip_layer_->bounds()); | 110 EXPECT_EQ(gfx::Size(100, 200), clip_layer_->bounds()); |
102 | 111 |
103 scrollbar_controller_->DidScrollBegin(); | 112 scrollbar_controller_->DidScrollBegin(); |
104 | 113 |
105 scrollbar_controller_->DidScrollUpdate(false); | 114 scrollbar_controller_->DidScrollUpdate(false); |
106 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 115 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->Opacity()); |
107 | 116 |
108 scrollbar_controller_->DidScrollEnd(); | 117 scrollbar_controller_->DidScrollEnd(); |
109 | 118 |
110 // Shrink along Y axis and expand along X, horizontal scrollbar | 119 // Shrink along Y axis and expand along X, horizontal scrollbar |
111 // should disappear. | 120 // should disappear. |
112 clip_layer_->SetBounds(gfx::Size(200, 100)); | 121 clip_layer_->SetBounds(gfx::Size(200, 100)); |
113 EXPECT_EQ(gfx::Size(200, 100), clip_layer_->bounds()); | 122 EXPECT_EQ(gfx::Size(200, 100), clip_layer_->bounds()); |
114 | 123 |
115 scrollbar_controller_->DidScrollBegin(); | 124 scrollbar_controller_->DidScrollBegin(); |
116 | 125 |
117 scrollbar_controller_->DidScrollUpdate(false); | 126 scrollbar_controller_->DidScrollUpdate(false); |
118 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); | 127 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->Opacity()); |
119 | 128 |
120 scrollbar_controller_->DidScrollEnd(); | 129 scrollbar_controller_->DidScrollEnd(); |
121 } | 130 } |
122 | 131 |
123 // Scroll content. Confirm the scrollbar gets dark and then becomes light | 132 // Scroll content. Confirm the scrollbar gets dark and then becomes light |
124 // after stopping. | 133 // after stopping. |
125 TEST_F(ScrollbarAnimationControllerThinningTest, AwakenByProgrammaticScroll) { | 134 TEST_F(ScrollbarAnimationControllerThinningTest, AwakenByProgrammaticScroll) { |
126 base::TimeTicks time; | 135 base::TimeTicks time; |
127 time += base::TimeDelta::FromSeconds(1); | 136 time += base::TimeDelta::FromSeconds(1); |
128 scrollbar_controller_->DidScrollUpdate(false); | 137 scrollbar_controller_->DidScrollUpdate(false); |
129 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 138 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->Opacity()); |
130 // Scrollbar doesn't change size if triggered by scroll. | 139 // Scrollbar doesn't change size if triggered by scroll. |
131 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); | 140 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); |
132 | 141 |
133 start_fade_.Run(); | 142 start_fade_.Run(); |
134 | 143 |
135 time += base::TimeDelta::FromSeconds(1); | 144 time += base::TimeDelta::FromSeconds(1); |
136 scrollbar_controller_->Animate(time); | 145 scrollbar_controller_->Animate(time); |
137 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 146 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->Opacity()); |
138 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); | 147 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); |
139 | 148 |
140 // Subsequent scroll restarts animation. | 149 // Subsequent scroll restarts animation. |
141 scrollbar_controller_->DidScrollUpdate(false); | 150 scrollbar_controller_->DidScrollUpdate(false); |
142 | 151 |
143 start_fade_.Run(); | 152 start_fade_.Run(); |
144 | 153 |
145 time += base::TimeDelta::FromSeconds(2); | 154 time += base::TimeDelta::FromSeconds(2); |
146 scrollbar_controller_->Animate(time); | 155 scrollbar_controller_->Animate(time); |
147 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 156 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->Opacity()); |
148 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); | 157 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); |
149 | 158 |
150 time += base::TimeDelta::FromSeconds(1); | 159 time += base::TimeDelta::FromSeconds(1); |
151 scrollbar_controller_->Animate(time); | 160 scrollbar_controller_->Animate(time); |
152 EXPECT_FLOAT_EQ(0.9f, scrollbar_layer_->opacity()); | 161 EXPECT_FLOAT_EQ(0.9f, scrollbar_layer_->Opacity()); |
153 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); | 162 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); |
154 | 163 |
155 time += base::TimeDelta::FromSeconds(1); | 164 time += base::TimeDelta::FromSeconds(1); |
156 scrollbar_controller_->Animate(time); | 165 scrollbar_controller_->Animate(time); |
157 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->opacity()); | 166 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->Opacity()); |
158 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); | 167 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); |
159 | 168 |
160 time += base::TimeDelta::FromSeconds(1); | 169 time += base::TimeDelta::FromSeconds(1); |
161 scrollbar_controller_->Animate(time); | 170 scrollbar_controller_->Animate(time); |
162 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 171 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
163 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); | 172 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); |
164 } | 173 } |
165 | 174 |
166 // Initiate a scroll when the pointer is already near the scrollbar. It should | 175 // Initiate a scroll when the pointer is already near the scrollbar. It should |
167 // remain thick. | 176 // remain thick. |
168 TEST_F(ScrollbarAnimationControllerThinningTest, ScrollWithMouseNear) { | 177 TEST_F(ScrollbarAnimationControllerThinningTest, ScrollWithMouseNear) { |
169 base::TimeTicks time; | 178 base::TimeTicks time; |
170 time += base::TimeDelta::FromSeconds(1); | 179 time += base::TimeDelta::FromSeconds(1); |
171 | 180 |
172 scrollbar_controller_->DidMouseMoveNear(1); | 181 scrollbar_controller_->DidMouseMoveNear(1); |
173 scrollbar_controller_->Animate(time); | 182 scrollbar_controller_->Animate(time); |
174 time += base::TimeDelta::FromSeconds(3); | 183 time += base::TimeDelta::FromSeconds(3); |
175 | 184 |
176 scrollbar_controller_->Animate(time); | 185 scrollbar_controller_->Animate(time); |
177 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 186 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
178 | 187 |
179 scrollbar_controller_->DidScrollUpdate(false); | 188 scrollbar_controller_->DidScrollUpdate(false); |
180 start_fade_.Run(); | 189 start_fade_.Run(); |
181 scrollbar_controller_->Animate(time); | 190 scrollbar_controller_->Animate(time); |
182 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 191 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->Opacity()); |
183 // Scrollbar should still be thick. | 192 // Scrollbar should still be thick. |
184 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 193 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
185 | 194 |
186 time += base::TimeDelta::FromSeconds(5); | 195 time += base::TimeDelta::FromSeconds(5); |
187 scrollbar_controller_->Animate(time); | 196 scrollbar_controller_->Animate(time); |
188 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 197 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
189 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 198 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
190 } | 199 } |
191 | 200 |
192 // Move the pointer near the scrollbar. Confirm it gets thick and narrow when | 201 // Move the pointer near the scrollbar. Confirm it gets thick and narrow when |
193 // moved away. | 202 // moved away. |
194 TEST_F(ScrollbarAnimationControllerThinningTest, MouseNear) { | 203 TEST_F(ScrollbarAnimationControllerThinningTest, MouseNear) { |
195 base::TimeTicks time; | 204 base::TimeTicks time; |
196 time += base::TimeDelta::FromSeconds(1); | 205 time += base::TimeDelta::FromSeconds(1); |
197 scrollbar_controller_->DidMouseMoveNear(1); | 206 scrollbar_controller_->DidMouseMoveNear(1); |
198 scrollbar_controller_->Animate(time); | 207 scrollbar_controller_->Animate(time); |
199 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 208 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
200 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); | 209 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); |
201 | 210 |
202 // Should animate to thickened but not darken. | 211 // Should animate to thickened but not darken. |
203 time += base::TimeDelta::FromSeconds(1); | 212 time += base::TimeDelta::FromSeconds(1); |
204 scrollbar_controller_->Animate(time); | 213 scrollbar_controller_->Animate(time); |
205 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 214 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
206 EXPECT_FLOAT_EQ(0.6f, scrollbar_layer_->thumb_thickness_scale_factor()); | 215 EXPECT_FLOAT_EQ(0.6f, scrollbar_layer_->thumb_thickness_scale_factor()); |
207 | 216 |
208 time += base::TimeDelta::FromSeconds(1); | 217 time += base::TimeDelta::FromSeconds(1); |
209 scrollbar_controller_->Animate(time); | 218 scrollbar_controller_->Animate(time); |
210 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 219 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
211 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); | 220 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); |
212 | 221 |
213 time += base::TimeDelta::FromSeconds(1); | 222 time += base::TimeDelta::FromSeconds(1); |
214 scrollbar_controller_->Animate(time); | 223 scrollbar_controller_->Animate(time); |
215 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 224 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
216 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 225 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
217 | 226 |
218 // Subsequent moves should not change anything. | 227 // Subsequent moves should not change anything. |
219 scrollbar_controller_->DidMouseMoveNear(1); | 228 scrollbar_controller_->DidMouseMoveNear(1); |
220 scrollbar_controller_->Animate(time); | 229 scrollbar_controller_->Animate(time); |
221 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 230 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
222 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 231 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
223 | 232 |
224 // Now move away from bar. | 233 // Now move away from bar. |
225 time += base::TimeDelta::FromSeconds(1); | 234 time += base::TimeDelta::FromSeconds(1); |
226 scrollbar_controller_->DidMouseMoveNear(26); | 235 scrollbar_controller_->DidMouseMoveNear(26); |
227 scrollbar_controller_->Animate(time); | 236 scrollbar_controller_->Animate(time); |
228 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 237 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
229 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 238 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
230 | 239 |
231 // Animate to narrow. | 240 // Animate to narrow. |
232 time += base::TimeDelta::FromSeconds(1); | 241 time += base::TimeDelta::FromSeconds(1); |
233 scrollbar_controller_->Animate(time); | 242 scrollbar_controller_->Animate(time); |
234 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 243 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
235 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); | 244 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); |
236 | 245 |
237 time += base::TimeDelta::FromSeconds(1); | 246 time += base::TimeDelta::FromSeconds(1); |
238 scrollbar_controller_->Animate(time); | 247 scrollbar_controller_->Animate(time); |
239 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 248 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
240 EXPECT_FLOAT_EQ(0.6f, scrollbar_layer_->thumb_thickness_scale_factor()); | 249 EXPECT_FLOAT_EQ(0.6f, scrollbar_layer_->thumb_thickness_scale_factor()); |
241 | 250 |
242 time += base::TimeDelta::FromSeconds(1); | 251 time += base::TimeDelta::FromSeconds(1); |
243 scrollbar_controller_->Animate(time); | 252 scrollbar_controller_->Animate(time); |
244 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 253 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
245 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); | 254 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); |
246 } | 255 } |
247 | 256 |
248 // Move the pointer over the scrollbar. Make sure it gets thick and dark | 257 // Move the pointer over the scrollbar. Make sure it gets thick and dark |
249 // and that it gets thin and light when moved away. | 258 // and that it gets thin and light when moved away. |
250 TEST_F(ScrollbarAnimationControllerThinningTest, MouseOver) { | 259 TEST_F(ScrollbarAnimationControllerThinningTest, MouseOver) { |
251 base::TimeTicks time; | 260 base::TimeTicks time; |
252 time += base::TimeDelta::FromSeconds(1); | 261 time += base::TimeDelta::FromSeconds(1); |
253 scrollbar_controller_->DidMouseMoveNear(0); | 262 scrollbar_controller_->DidMouseMoveNear(0); |
254 scrollbar_controller_->Animate(time); | 263 scrollbar_controller_->Animate(time); |
255 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 264 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
256 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); | 265 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); |
257 | 266 |
258 // Should animate to thickened and darkened. | 267 // Should animate to thickened and darkened. |
259 time += base::TimeDelta::FromSeconds(1); | 268 time += base::TimeDelta::FromSeconds(1); |
260 scrollbar_controller_->Animate(time); | 269 scrollbar_controller_->Animate(time); |
261 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->opacity()); | 270 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->Opacity()); |
262 EXPECT_FLOAT_EQ(0.6f, scrollbar_layer_->thumb_thickness_scale_factor()); | 271 EXPECT_FLOAT_EQ(0.6f, scrollbar_layer_->thumb_thickness_scale_factor()); |
263 | 272 |
264 time += base::TimeDelta::FromSeconds(1); | 273 time += base::TimeDelta::FromSeconds(1); |
265 scrollbar_controller_->Animate(time); | 274 scrollbar_controller_->Animate(time); |
266 EXPECT_FLOAT_EQ(0.9f, scrollbar_layer_->opacity()); | 275 EXPECT_FLOAT_EQ(0.9f, scrollbar_layer_->Opacity()); |
267 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); | 276 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); |
268 | 277 |
269 time += base::TimeDelta::FromSeconds(1); | 278 time += base::TimeDelta::FromSeconds(1); |
270 scrollbar_controller_->Animate(time); | 279 scrollbar_controller_->Animate(time); |
271 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 280 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->Opacity()); |
272 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 281 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
273 | 282 |
274 // Subsequent moves should not change anything. | 283 // Subsequent moves should not change anything. |
275 scrollbar_controller_->DidMouseMoveNear(0); | 284 scrollbar_controller_->DidMouseMoveNear(0); |
276 scrollbar_controller_->Animate(time); | 285 scrollbar_controller_->Animate(time); |
277 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 286 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->Opacity()); |
278 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 287 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
279 | 288 |
280 // Now move away from bar. | 289 // Now move away from bar. |
281 time += base::TimeDelta::FromSeconds(1); | 290 time += base::TimeDelta::FromSeconds(1); |
282 scrollbar_controller_->DidMouseMoveNear(26); | 291 scrollbar_controller_->DidMouseMoveNear(26); |
283 scrollbar_controller_->Animate(time); | 292 scrollbar_controller_->Animate(time); |
284 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 293 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->Opacity()); |
285 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 294 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
286 | 295 |
287 // Animate to narrow. | 296 // Animate to narrow. |
288 time += base::TimeDelta::FromSeconds(1); | 297 time += base::TimeDelta::FromSeconds(1); |
289 scrollbar_controller_->Animate(time); | 298 scrollbar_controller_->Animate(time); |
290 EXPECT_FLOAT_EQ(0.9f, scrollbar_layer_->opacity()); | 299 EXPECT_FLOAT_EQ(0.9f, scrollbar_layer_->Opacity()); |
291 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); | 300 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); |
292 | 301 |
293 time += base::TimeDelta::FromSeconds(1); | 302 time += base::TimeDelta::FromSeconds(1); |
294 scrollbar_controller_->Animate(time); | 303 scrollbar_controller_->Animate(time); |
295 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->opacity()); | 304 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->Opacity()); |
296 EXPECT_FLOAT_EQ(0.6f, scrollbar_layer_->thumb_thickness_scale_factor()); | 305 EXPECT_FLOAT_EQ(0.6f, scrollbar_layer_->thumb_thickness_scale_factor()); |
297 | 306 |
298 time += base::TimeDelta::FromSeconds(1); | 307 time += base::TimeDelta::FromSeconds(1); |
299 scrollbar_controller_->Animate(time); | 308 scrollbar_controller_->Animate(time); |
300 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 309 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
301 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); | 310 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); |
302 } | 311 } |
303 | 312 |
304 // First move the pointer near the scrollbar, then over it, then back near | 313 // First move the pointer near the scrollbar, then over it, then back near |
305 // then far away. Confirm that first the bar gets thick, then dark, then light, | 314 // then far away. Confirm that first the bar gets thick, then dark, then light, |
306 // then narrow. | 315 // then narrow. |
307 TEST_F(ScrollbarAnimationControllerThinningTest, MouseNearThenOver) { | 316 TEST_F(ScrollbarAnimationControllerThinningTest, MouseNearThenOver) { |
308 base::TimeTicks time; | 317 base::TimeTicks time; |
309 time += base::TimeDelta::FromSeconds(1); | 318 time += base::TimeDelta::FromSeconds(1); |
310 scrollbar_controller_->DidMouseMoveNear(1); | 319 scrollbar_controller_->DidMouseMoveNear(1); |
311 scrollbar_controller_->Animate(time); | 320 scrollbar_controller_->Animate(time); |
312 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 321 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
313 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); | 322 EXPECT_FLOAT_EQ(0.4f, scrollbar_layer_->thumb_thickness_scale_factor()); |
314 | 323 |
315 // Should animate to thickened but not darken. | 324 // Should animate to thickened but not darken. |
316 time += base::TimeDelta::FromSeconds(3); | 325 time += base::TimeDelta::FromSeconds(3); |
317 scrollbar_controller_->Animate(time); | 326 scrollbar_controller_->Animate(time); |
318 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 327 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
319 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 328 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
320 | 329 |
321 // Now move over. | 330 // Now move over. |
322 scrollbar_controller_->DidMouseMoveNear(0); | 331 scrollbar_controller_->DidMouseMoveNear(0); |
323 scrollbar_controller_->Animate(time); | 332 scrollbar_controller_->Animate(time); |
324 | 333 |
325 // Should animate to darkened. | 334 // Should animate to darkened. |
326 time += base::TimeDelta::FromSeconds(1); | 335 time += base::TimeDelta::FromSeconds(1); |
327 scrollbar_controller_->Animate(time); | 336 scrollbar_controller_->Animate(time); |
328 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->opacity()); | 337 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->Opacity()); |
329 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 338 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
330 | 339 |
331 time += base::TimeDelta::FromSeconds(1); | 340 time += base::TimeDelta::FromSeconds(1); |
332 scrollbar_controller_->Animate(time); | 341 scrollbar_controller_->Animate(time); |
333 EXPECT_FLOAT_EQ(0.9f, scrollbar_layer_->opacity()); | 342 EXPECT_FLOAT_EQ(0.9f, scrollbar_layer_->Opacity()); |
334 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 343 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
335 | 344 |
336 time += base::TimeDelta::FromSeconds(1); | 345 time += base::TimeDelta::FromSeconds(1); |
337 scrollbar_controller_->Animate(time); | 346 scrollbar_controller_->Animate(time); |
338 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 347 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->Opacity()); |
339 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 348 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
340 | 349 |
341 // This is tricky. The DidMouseMoveOffScrollbar() is sent before the | 350 // This is tricky. The DidMouseMoveOffScrollbar() is sent before the |
342 // subsequent DidMouseMoveNear(), if the mouse moves in that direction. | 351 // subsequent DidMouseMoveNear(), if the mouse moves in that direction. |
343 // This results in the thumb thinning. We want to make sure that when the | 352 // This results in the thumb thinning. We want to make sure that when the |
344 // thumb starts expanding it doesn't first narrow to the idle thinness. | 353 // thumb starts expanding it doesn't first narrow to the idle thinness. |
345 time += base::TimeDelta::FromSeconds(1); | 354 time += base::TimeDelta::FromSeconds(1); |
346 scrollbar_controller_->DidMouseMoveOffScrollbar(); | 355 scrollbar_controller_->DidMouseMoveOffScrollbar(); |
347 scrollbar_controller_->Animate(time); | 356 scrollbar_controller_->Animate(time); |
348 | 357 |
349 time += base::TimeDelta::FromSeconds(1); | 358 time += base::TimeDelta::FromSeconds(1); |
350 scrollbar_controller_->Animate(time); | 359 scrollbar_controller_->Animate(time); |
351 EXPECT_FLOAT_EQ(0.9f, scrollbar_layer_->opacity()); | 360 EXPECT_FLOAT_EQ(0.9f, scrollbar_layer_->Opacity()); |
352 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); | 361 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); |
353 | 362 |
354 scrollbar_controller_->DidMouseMoveNear(1); | 363 scrollbar_controller_->DidMouseMoveNear(1); |
355 scrollbar_controller_->Animate(time); | 364 scrollbar_controller_->Animate(time); |
356 // A new animation is kicked off. | 365 // A new animation is kicked off. |
357 | 366 |
358 time += base::TimeDelta::FromSeconds(1); | 367 time += base::TimeDelta::FromSeconds(1); |
359 scrollbar_controller_->Animate(time); | 368 scrollbar_controller_->Animate(time); |
360 // We will initiate the narrowing again, but it won't get decremented until | 369 // We will initiate the narrowing again, but it won't get decremented until |
361 // the new animation catches up to it. | 370 // the new animation catches up to it. |
362 EXPECT_FLOAT_EQ(0.9f, scrollbar_layer_->opacity()); | 371 EXPECT_FLOAT_EQ(0.9f, scrollbar_layer_->Opacity()); |
363 // Now the thickness should be increasing, but it shouldn't happen until the | 372 // Now the thickness should be increasing, but it shouldn't happen until the |
364 // animation catches up. | 373 // animation catches up. |
365 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); | 374 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); |
366 | 375 |
367 time += base::TimeDelta::FromSeconds(1); | 376 time += base::TimeDelta::FromSeconds(1); |
368 scrollbar_controller_->Animate(time); | 377 scrollbar_controller_->Animate(time); |
369 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->opacity()); | 378 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->Opacity()); |
370 // The thickness now gets big again. | 379 // The thickness now gets big again. |
371 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); | 380 EXPECT_FLOAT_EQ(0.8f, scrollbar_layer_->thumb_thickness_scale_factor()); |
372 | 381 |
373 time += base::TimeDelta::FromSeconds(1); | 382 time += base::TimeDelta::FromSeconds(1); |
374 scrollbar_controller_->Animate(time); | 383 scrollbar_controller_->Animate(time); |
375 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->opacity()); | 384 EXPECT_FLOAT_EQ(0.7f, scrollbar_layer_->Opacity()); |
376 // The thickness now gets big again. | 385 // The thickness now gets big again. |
377 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); | 386 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->thumb_thickness_scale_factor()); |
378 } | 387 } |
379 | 388 |
380 } // namespace | 389 } // namespace |
381 } // namespace cc | 390 } // namespace cc |
OLD | NEW |