Chromium Code Reviews| 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/solid_color_scrollbar_layer_impl.h" | 7 #include "cc/layers/solid_color_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 "cc/test/test_shared_bitmap_manager.h" | 10 #include "cc/test/test_shared_bitmap_manager.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 | 12 |
| 13 namespace cc { | 13 namespace cc { |
| 14 namespace { | 14 namespace { |
| 15 | 15 |
| 16 class ScrollbarAnimationControllerLinearFadeTest | 16 class ScrollbarAnimationControllerLinearFadeTest |
|
aelias_OOO_until_Jul13
2014/10/01 18:41:26
Please add a new test case for the new behavior in
MuVen
2014/10/02 08:42:47
Done.
| |
| 17 : public testing::Test, | 17 : public testing::Test, |
| 18 public ScrollbarAnimationControllerClient { | 18 public ScrollbarAnimationControllerClient { |
| 19 public: | 19 public: |
| 20 ScrollbarAnimationControllerLinearFadeTest() | 20 ScrollbarAnimationControllerLinearFadeTest() |
| 21 : host_impl_(&proxy_, &shared_bitmap_manager_), needs_frame_count_(0) {} | 21 : host_impl_(&proxy_, &shared_bitmap_manager_), needs_frame_count_(0) {} |
| 22 | 22 |
| 23 virtual void PostDelayedScrollbarFade(const base::Closure& start_fade, | 23 virtual void PostDelayedScrollbarFade(const base::Closure& start_fade, |
| 24 base::TimeDelta delay) OVERRIDE { | 24 base::TimeDelta delay) OVERRIDE { |
| 25 start_fade_ = start_fade; | 25 start_fade_ = start_fade; |
| 26 } | 26 } |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 52 | 52 |
| 53 scrollbar_layer_->SetScrollLayerAndClipLayerByIds(scroll_layer_ptr->id(), | 53 scrollbar_layer_->SetScrollLayerAndClipLayerByIds(scroll_layer_ptr->id(), |
| 54 clip_layer_->id()); | 54 clip_layer_->id()); |
| 55 clip_layer_->SetBounds(gfx::Size(100, 100)); | 55 clip_layer_->SetBounds(gfx::Size(100, 100)); |
| 56 scroll_layer_ptr->SetBounds(gfx::Size(50, 50)); | 56 scroll_layer_ptr->SetBounds(gfx::Size(50, 50)); |
| 57 | 57 |
| 58 scrollbar_controller_ = ScrollbarAnimationControllerLinearFade::Create( | 58 scrollbar_controller_ = ScrollbarAnimationControllerLinearFade::Create( |
| 59 scroll_layer_ptr, | 59 scroll_layer_ptr, |
| 60 this, | 60 this, |
| 61 base::TimeDelta::FromSeconds(2), | 61 base::TimeDelta::FromSeconds(2), |
| 62 base::TimeDelta::FromSeconds(5), | |
| 62 base::TimeDelta::FromSeconds(3)); | 63 base::TimeDelta::FromSeconds(3)); |
| 63 } | 64 } |
| 64 | 65 |
| 65 FakeImplProxy proxy_; | 66 FakeImplProxy proxy_; |
| 66 TestSharedBitmapManager shared_bitmap_manager_; | 67 TestSharedBitmapManager shared_bitmap_manager_; |
| 67 FakeLayerTreeHostImpl host_impl_; | 68 FakeLayerTreeHostImpl host_impl_; |
| 68 scoped_ptr<ScrollbarAnimationControllerLinearFade> scrollbar_controller_; | 69 scoped_ptr<ScrollbarAnimationControllerLinearFade> scrollbar_controller_; |
| 69 scoped_ptr<LayerImpl> clip_layer_; | 70 scoped_ptr<LayerImpl> clip_layer_; |
| 70 scoped_ptr<SolidColorScrollbarLayerImpl> scrollbar_layer_; | 71 scoped_ptr<SolidColorScrollbarLayerImpl> scrollbar_layer_; |
| 71 | 72 |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 98 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); | 99 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); |
| 99 | 100 |
| 100 EXPECT_EQ(0, needs_frame_count_); | 101 EXPECT_EQ(0, needs_frame_count_); |
| 101 } | 102 } |
| 102 | 103 |
| 103 TEST_F(ScrollbarAnimationControllerLinearFadeTest, AwakenByScrollingGesture) { | 104 TEST_F(ScrollbarAnimationControllerLinearFadeTest, AwakenByScrollingGesture) { |
| 104 base::TimeTicks time; | 105 base::TimeTicks time; |
| 105 time += base::TimeDelta::FromSeconds(1); | 106 time += base::TimeDelta::FromSeconds(1); |
| 106 scrollbar_controller_->DidScrollBegin(); | 107 scrollbar_controller_->DidScrollBegin(); |
| 107 | 108 |
| 108 scrollbar_controller_->DidScrollUpdate(); | 109 scrollbar_controller_->DidScrollUpdate(false); |
| 109 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 110 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
| 110 | 111 |
| 111 EXPECT_TRUE(start_fade_.Equals(base::Closure())); | 112 EXPECT_TRUE(start_fade_.Equals(base::Closure())); |
| 112 | 113 |
| 113 time += base::TimeDelta::FromSeconds(100); | 114 time += base::TimeDelta::FromSeconds(100); |
| 114 scrollbar_controller_->Animate(time); | 115 scrollbar_controller_->Animate(time); |
| 115 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 116 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
| 116 scrollbar_controller_->DidScrollEnd(); | 117 scrollbar_controller_->DidScrollEnd(); |
| 117 start_fade_.Run(); | 118 start_fade_.Run(); |
| 118 | 119 |
| 119 time += base::TimeDelta::FromSeconds(2); | 120 time += base::TimeDelta::FromSeconds(2); |
| 120 scrollbar_controller_->Animate(time); | 121 scrollbar_controller_->Animate(time); |
| 121 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 122 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
| 122 | 123 |
| 123 time += base::TimeDelta::FromSeconds(1); | 124 time += base::TimeDelta::FromSeconds(1); |
| 124 scrollbar_controller_->Animate(time); | 125 scrollbar_controller_->Animate(time); |
| 125 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 126 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| 126 | 127 |
| 127 time += base::TimeDelta::FromSeconds(1); | 128 time += base::TimeDelta::FromSeconds(1); |
| 128 scrollbar_controller_->Animate(time); | 129 scrollbar_controller_->Animate(time); |
| 129 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); | 130 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); |
| 130 | 131 |
| 131 time += base::TimeDelta::FromSeconds(1); | 132 time += base::TimeDelta::FromSeconds(1); |
| 132 | 133 |
| 133 scrollbar_controller_->DidScrollBegin(); | 134 scrollbar_controller_->DidScrollBegin(); |
| 134 scrollbar_controller_->DidScrollUpdate(); | 135 scrollbar_controller_->DidScrollUpdate(false); |
| 135 scrollbar_controller_->DidScrollEnd(); | 136 scrollbar_controller_->DidScrollEnd(); |
| 136 start_fade_.Run(); | 137 start_fade_.Run(); |
| 137 | 138 |
| 138 time += base::TimeDelta::FromSeconds(2); | 139 time += base::TimeDelta::FromSeconds(2); |
| 139 scrollbar_controller_->Animate(time); | 140 scrollbar_controller_->Animate(time); |
| 140 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 141 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
| 141 | 142 |
| 142 time += base::TimeDelta::FromSeconds(1); | 143 time += base::TimeDelta::FromSeconds(1); |
| 143 scrollbar_controller_->Animate(time); | 144 scrollbar_controller_->Animate(time); |
| 144 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 145 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| 145 | 146 |
| 146 time += base::TimeDelta::FromSeconds(1); | 147 time += base::TimeDelta::FromSeconds(1); |
| 147 scrollbar_controller_->Animate(time); | 148 scrollbar_controller_->Animate(time); |
| 148 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); | 149 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); |
| 149 | 150 |
| 150 time += base::TimeDelta::FromSeconds(1); | 151 time += base::TimeDelta::FromSeconds(1); |
| 151 scrollbar_controller_->Animate(time); | 152 scrollbar_controller_->Animate(time); |
| 152 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); | 153 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); |
| 153 | 154 |
| 154 EXPECT_EQ(8, needs_frame_count_); | 155 EXPECT_EQ(8, needs_frame_count_); |
| 155 } | 156 } |
| 156 | 157 |
| 157 TEST_F(ScrollbarAnimationControllerLinearFadeTest, AwakenByProgrammaticScroll) { | 158 TEST_F(ScrollbarAnimationControllerLinearFadeTest, AwakenByProgrammaticScroll) { |
| 158 base::TimeTicks time; | 159 base::TimeTicks time; |
| 159 time += base::TimeDelta::FromSeconds(1); | 160 time += base::TimeDelta::FromSeconds(1); |
| 160 scrollbar_controller_->DidScrollUpdate(); | 161 scrollbar_controller_->DidScrollUpdate(false); |
| 161 start_fade_.Run(); | 162 start_fade_.Run(); |
| 162 scrollbar_controller_->Animate(time); | 163 scrollbar_controller_->Animate(time); |
| 163 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 164 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
| 164 | 165 |
| 165 time += base::TimeDelta::FromSeconds(1); | 166 time += base::TimeDelta::FromSeconds(1); |
| 166 scrollbar_controller_->Animate(time); | 167 scrollbar_controller_->Animate(time); |
| 167 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 168 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| 168 scrollbar_controller_->DidScrollUpdate(); | 169 scrollbar_controller_->DidScrollUpdate(false); |
| 169 start_fade_.Run(); | 170 start_fade_.Run(); |
| 170 | 171 |
| 171 time += base::TimeDelta::FromSeconds(1); | 172 time += base::TimeDelta::FromSeconds(1); |
| 172 scrollbar_controller_->Animate(time); | 173 scrollbar_controller_->Animate(time); |
| 173 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 174 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
| 174 | 175 |
| 175 time += base::TimeDelta::FromSeconds(1); | 176 time += base::TimeDelta::FromSeconds(1); |
| 176 scrollbar_controller_->Animate(time); | 177 scrollbar_controller_->Animate(time); |
| 177 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 178 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| 178 | 179 |
| 179 time += base::TimeDelta::FromSeconds(1); | 180 time += base::TimeDelta::FromSeconds(1); |
| 180 scrollbar_controller_->Animate(time); | 181 scrollbar_controller_->Animate(time); |
| 181 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); | 182 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); |
| 182 | 183 |
| 183 time += base::TimeDelta::FromSeconds(1); | 184 time += base::TimeDelta::FromSeconds(1); |
| 184 scrollbar_controller_->DidScrollUpdate(); | 185 scrollbar_controller_->DidScrollUpdate(false); |
| 185 start_fade_.Run(); | 186 start_fade_.Run(); |
| 186 time += base::TimeDelta::FromSeconds(1); | 187 time += base::TimeDelta::FromSeconds(1); |
| 187 scrollbar_controller_->Animate(time); | 188 scrollbar_controller_->Animate(time); |
| 188 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 189 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
| 189 | 190 |
| 190 time += base::TimeDelta::FromSeconds(1); | 191 time += base::TimeDelta::FromSeconds(1); |
| 191 scrollbar_controller_->Animate(time); | 192 scrollbar_controller_->Animate(time); |
| 192 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 193 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| 193 | 194 |
| 194 time += base::TimeDelta::FromSeconds(1); | 195 time += base::TimeDelta::FromSeconds(1); |
| 195 scrollbar_controller_->Animate(time); | 196 scrollbar_controller_->Animate(time); |
| 196 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); | 197 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); |
| 197 | 198 |
| 198 time += base::TimeDelta::FromSeconds(1); | 199 time += base::TimeDelta::FromSeconds(1); |
| 199 scrollbar_controller_->Animate(time); | 200 scrollbar_controller_->Animate(time); |
| 200 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); | 201 EXPECT_FLOAT_EQ(0.0f, scrollbar_layer_->opacity()); |
| 201 | 202 |
| 202 EXPECT_EQ(11, needs_frame_count_); | 203 EXPECT_EQ(11, needs_frame_count_); |
| 203 } | 204 } |
| 204 | 205 |
| 205 TEST_F(ScrollbarAnimationControllerLinearFadeTest, | 206 TEST_F(ScrollbarAnimationControllerLinearFadeTest, |
| 206 AnimationPreservedByNonScrollingGesture) { | 207 AnimationPreservedByNonScrollingGesture) { |
| 207 base::TimeTicks time; | 208 base::TimeTicks time; |
| 208 time += base::TimeDelta::FromSeconds(1); | 209 time += base::TimeDelta::FromSeconds(1); |
| 209 scrollbar_controller_->DidScrollUpdate(); | 210 scrollbar_controller_->DidScrollUpdate(false); |
| 210 start_fade_.Run(); | 211 start_fade_.Run(); |
| 211 scrollbar_controller_->Animate(time); | 212 scrollbar_controller_->Animate(time); |
| 212 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 213 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
| 213 | 214 |
| 214 time += base::TimeDelta::FromSeconds(1); | 215 time += base::TimeDelta::FromSeconds(1); |
| 215 scrollbar_controller_->Animate(time); | 216 scrollbar_controller_->Animate(time); |
| 216 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 217 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| 217 | 218 |
| 218 scrollbar_controller_->DidScrollBegin(); | 219 scrollbar_controller_->DidScrollBegin(); |
| 219 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 220 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 231 | 232 |
| 232 scrollbar_controller_->Animate(time); | 233 scrollbar_controller_->Animate(time); |
| 233 | 234 |
| 234 EXPECT_EQ(4, needs_frame_count_); | 235 EXPECT_EQ(4, needs_frame_count_); |
| 235 } | 236 } |
| 236 | 237 |
| 237 TEST_F(ScrollbarAnimationControllerLinearFadeTest, | 238 TEST_F(ScrollbarAnimationControllerLinearFadeTest, |
| 238 AnimationOverriddenByScrollingGesture) { | 239 AnimationOverriddenByScrollingGesture) { |
| 239 base::TimeTicks time; | 240 base::TimeTicks time; |
| 240 time += base::TimeDelta::FromSeconds(1); | 241 time += base::TimeDelta::FromSeconds(1); |
| 241 scrollbar_controller_->DidScrollUpdate(); | 242 scrollbar_controller_->DidScrollUpdate(false); |
| 242 start_fade_.Run(); | 243 start_fade_.Run(); |
| 243 scrollbar_controller_->Animate(time); | 244 scrollbar_controller_->Animate(time); |
| 244 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); | 245 EXPECT_FLOAT_EQ(1.0f, scrollbar_layer_->opacity()); |
| 245 | 246 |
| 246 time += base::TimeDelta::FromSeconds(1); | 247 time += base::TimeDelta::FromSeconds(1); |
| 247 scrollbar_controller_->Animate(time); | 248 scrollbar_controller_->Animate(time); |
| 248 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 249 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| 249 | 250 |
| 250 scrollbar_controller_->DidScrollBegin(); | 251 scrollbar_controller_->DidScrollBegin(); |
| 251 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); | 252 EXPECT_FLOAT_EQ(2.0f / 3.0f, scrollbar_layer_->opacity()); |
| 252 | 253 |
| 253 time += base::TimeDelta::FromSeconds(1); | 254 time += base::TimeDelta::FromSeconds(1); |
| 254 scrollbar_controller_->Animate(time); | 255 scrollbar_controller_->Animate(time); |
| 255 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); | 256 EXPECT_FLOAT_EQ(1.0f / 3.0f, scrollbar_layer_->opacity()); |
| 256 | 257 |
| 257 time += base::TimeDelta::FromSeconds(1); | 258 time += base::TimeDelta::FromSeconds(1); |
| 258 scrollbar_controller_->DidScrollUpdate(); | 259 scrollbar_controller_->DidScrollUpdate(false); |
| 259 EXPECT_FLOAT_EQ(1, scrollbar_layer_->opacity()); | 260 EXPECT_FLOAT_EQ(1, scrollbar_layer_->opacity()); |
| 260 | 261 |
| 261 time += base::TimeDelta::FromSeconds(1); | 262 time += base::TimeDelta::FromSeconds(1); |
| 262 scrollbar_controller_->DidScrollEnd(); | 263 scrollbar_controller_->DidScrollEnd(); |
| 263 EXPECT_FLOAT_EQ(1, scrollbar_layer_->opacity()); | 264 EXPECT_FLOAT_EQ(1, scrollbar_layer_->opacity()); |
| 264 } | 265 } |
| 265 | 266 |
| 266 } // namespace | 267 } // namespace |
| 267 } // namespace cc | 268 } // namespace cc |
| OLD | NEW |