| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(2); | 118 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(2); |
| 119 EXPECT_CALL(*scrollableArea, scheduleAnimation()).Times(AtLeast(1)) | 119 EXPECT_CALL(*scrollableArea, scheduleAnimation()).Times(AtLeast(1)) |
| 120 .WillRepeatedly(Return(true)); | 120 .WillRepeatedly(Return(true)); |
| 121 | 121 |
| 122 // Idle | 122 // Idle |
| 123 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); | 123 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); |
| 124 EXPECT_EQ(scrollAnimator->m_runState, | 124 EXPECT_EQ(scrollAnimator->m_runState, |
| 125 ScrollAnimatorCompositorCoordinator::RunState::Idle); | 125 ScrollAnimatorCompositorCoordinator::RunState::Idle); |
| 126 | 126 |
| 127 // WaitingToSendToCompositor | 127 // WaitingToSendToCompositor |
| 128 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByLine, 10); | 128 scrollAnimator->userScroll(ScrollByLine, FloatSize(10, 0)); |
| 129 EXPECT_EQ(scrollAnimator->m_runState, | 129 EXPECT_EQ(scrollAnimator->m_runState, |
| 130 ScrollAnimatorCompositorCoordinator::RunState::WaitingToSendToCompositor
); | 130 ScrollAnimatorCompositorCoordinator::RunState::WaitingToSendToCompositor
); |
| 131 | 131 |
| 132 // RunningOnMainThread | 132 // RunningOnMainThread |
| 133 gMockedTime += 0.05; | 133 gMockedTime += 0.05; |
| 134 scrollAnimator->updateCompositorAnimations(); | 134 scrollAnimator->updateCompositorAnimations(); |
| 135 EXPECT_EQ(scrollAnimator->m_runState, | 135 EXPECT_EQ(scrollAnimator->m_runState, |
| 136 ScrollAnimatorCompositorCoordinator::RunState::RunningOnMainThread); | 136 ScrollAnimatorCompositorCoordinator::RunState::RunningOnMainThread); |
| 137 scrollAnimator->tickAnimation(getMockedTime()); | 137 scrollAnimator->tickAnimation(getMockedTime()); |
| 138 EXPECT_EQ(scrollAnimator->m_runState, | 138 EXPECT_EQ(scrollAnimator->m_runState, |
| (...skipping 19 matching lines...) Expand all Loading... |
| 158 OwnPtrWillBeRawPtr<ScrollAnimator> scrollAnimator = adoptPtrWillBeNoop(new S
crollAnimator(scrollableArea.get(), getMockedTime)); | 158 OwnPtrWillBeRawPtr<ScrollAnimator> scrollAnimator = adoptPtrWillBeNoop(new S
crollAnimator(scrollableArea.get(), getMockedTime)); |
| 159 | 159 |
| 160 EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1)).Will
Repeatedly(Return(IntPoint())); | 160 EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1)).Will
Repeatedly(Return(IntPoint())); |
| 161 EXPECT_CALL(*scrollableArea, maximumScrollPosition()).Times(AtLeast(1)).Will
Repeatedly(Return(IntPoint(1000, 1000))); | 161 EXPECT_CALL(*scrollableArea, maximumScrollPosition()).Times(AtLeast(1)).Will
Repeatedly(Return(IntPoint(1000, 1000))); |
| 162 EXPECT_CALL(*scrollableArea, setScrollOffset(_, _)).Times(9); | 162 EXPECT_CALL(*scrollableArea, setScrollOffset(_, _)).Times(9); |
| 163 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(6); | 163 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(6); |
| 164 EXPECT_CALL(*scrollableArea, scheduleAnimation()).Times(AtLeast(1)).WillRepe
atedly(Return(true)); | 164 EXPECT_CALL(*scrollableArea, scheduleAnimation()).Times(AtLeast(1)).WillRepe
atedly(Return(true)); |
| 165 | 165 |
| 166 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); | 166 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); |
| 167 | 167 |
| 168 ScrollResultOneDimensional result = scrollAnimator->userScroll(HorizontalScr
ollbar, ScrollByLine, -100); | 168 ScrollResult result = scrollAnimator->userScroll(ScrollByLine, FloatSize(-10
0, 0)); |
| 169 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); | 169 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); |
| 170 EXPECT_FALSE(result.didScroll); | 170 EXPECT_FALSE(result.didScrollX); |
| 171 EXPECT_FLOAT_EQ(-100.0f, result.unusedScrollDelta); | 171 EXPECT_FLOAT_EQ(-100.0f, result.unusedScrollDeltaX); |
| 172 | 172 |
| 173 result = scrollAnimator->userScroll(HorizontalScrollbar, ScrollByLine, 100); | 173 result = scrollAnimator->userScroll(ScrollByLine, FloatSize(100, 0)); |
| 174 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService()); | 174 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService()); |
| 175 EXPECT_TRUE(result.didScroll); | 175 EXPECT_TRUE(result.didScrollX); |
| 176 EXPECT_FLOAT_EQ(0.0, result.unusedScrollDelta); | 176 EXPECT_FLOAT_EQ(0.0, result.unusedScrollDeltaX); |
| 177 | 177 |
| 178 gMockedTime += 0.05; | 178 gMockedTime += 0.05; |
| 179 scrollAnimator->updateCompositorAnimations(); | 179 scrollAnimator->updateCompositorAnimations(); |
| 180 scrollAnimator->tickAnimation(getMockedTime()); | 180 scrollAnimator->tickAnimation(getMockedTime()); |
| 181 | 181 |
| 182 EXPECT_NE(100, scrollAnimator->currentPosition().x()); | 182 EXPECT_NE(100, scrollAnimator->currentPosition().x()); |
| 183 EXPECT_NE(0, scrollAnimator->currentPosition().x()); | 183 EXPECT_NE(0, scrollAnimator->currentPosition().x()); |
| 184 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); | 184 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); |
| 185 reset(*scrollAnimator); | 185 reset(*scrollAnimator); |
| 186 | 186 |
| 187 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByPage, 100); | 187 scrollAnimator->userScroll(ScrollByPage, FloatSize(100, 0)); |
| 188 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService()); | 188 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService()); |
| 189 | 189 |
| 190 gMockedTime += 0.05; | 190 gMockedTime += 0.05; |
| 191 scrollAnimator->updateCompositorAnimations(); | 191 scrollAnimator->updateCompositorAnimations(); |
| 192 scrollAnimator->tickAnimation(getMockedTime()); | 192 scrollAnimator->tickAnimation(getMockedTime()); |
| 193 | 193 |
| 194 EXPECT_NE(100, scrollAnimator->currentPosition().x()); | 194 EXPECT_NE(100, scrollAnimator->currentPosition().x()); |
| 195 EXPECT_NE(0, scrollAnimator->currentPosition().x()); | 195 EXPECT_NE(0, scrollAnimator->currentPosition().x()); |
| 196 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); | 196 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); |
| 197 reset(*scrollAnimator); | 197 reset(*scrollAnimator); |
| 198 | 198 |
| 199 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByPixel, 100); | 199 scrollAnimator->userScroll(ScrollByPixel, FloatSize(100, 0)); |
| 200 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService()); | 200 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService()); |
| 201 | 201 |
| 202 gMockedTime += 0.05; | 202 gMockedTime += 0.05; |
| 203 scrollAnimator->updateCompositorAnimations(); | 203 scrollAnimator->updateCompositorAnimations(); |
| 204 scrollAnimator->tickAnimation(getMockedTime()); | 204 scrollAnimator->tickAnimation(getMockedTime()); |
| 205 | 205 |
| 206 EXPECT_NE(100, scrollAnimator->currentPosition().x()); | 206 EXPECT_NE(100, scrollAnimator->currentPosition().x()); |
| 207 EXPECT_NE(0, scrollAnimator->currentPosition().x()); | 207 EXPECT_NE(0, scrollAnimator->currentPosition().x()); |
| 208 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); | 208 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); |
| 209 | 209 |
| 210 gMockedTime += 1.0; | 210 gMockedTime += 1.0; |
| 211 scrollAnimator->updateCompositorAnimations(); | 211 scrollAnimator->updateCompositorAnimations(); |
| 212 scrollAnimator->tickAnimation(getMockedTime()); | 212 scrollAnimator->tickAnimation(getMockedTime()); |
| 213 | 213 |
| 214 gMockedTime += 0.05; | 214 gMockedTime += 0.05; |
| 215 scrollAnimator->updateCompositorAnimations(); | 215 scrollAnimator->updateCompositorAnimations(); |
| 216 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); | 216 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); |
| 217 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); | 217 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); |
| 218 | 218 |
| 219 reset(*scrollAnimator); | 219 reset(*scrollAnimator); |
| 220 | 220 |
| 221 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByPrecisePixel, 100); | 221 scrollAnimator->userScroll(ScrollByPrecisePixel, FloatSize(100, 0)); |
| 222 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); | 222 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); |
| 223 | 223 |
| 224 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); | 224 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); |
| 225 EXPECT_NE(0, scrollAnimator->currentPosition().x()); | 225 EXPECT_NE(0, scrollAnimator->currentPosition().x()); |
| 226 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); | 226 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); |
| 227 reset(*scrollAnimator); | 227 reset(*scrollAnimator); |
| 228 } | 228 } |
| 229 | 229 |
| 230 // Test that a smooth scroll offset animation is aborted when followed by a | 230 // Test that a smooth scroll offset animation is aborted when followed by a |
| 231 // non-smooth scroll offset animation. | 231 // non-smooth scroll offset animation. |
| 232 TEST(ScrollAnimatorTest, AnimatedScrollAborted) | 232 TEST(ScrollAnimatorTest, AnimatedScrollAborted) |
| 233 { | 233 { |
| 234 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = | 234 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = |
| 235 MockScrollableArea::create(true); | 235 MockScrollableArea::create(true); |
| 236 OwnPtrWillBeRawPtr<ScrollAnimator> scrollAnimator = adoptPtrWillBeNoop( | 236 OwnPtrWillBeRawPtr<ScrollAnimator> scrollAnimator = adoptPtrWillBeNoop( |
| 237 new ScrollAnimator(scrollableArea.get(), getMockedTime)); | 237 new ScrollAnimator(scrollableArea.get(), getMockedTime)); |
| 238 | 238 |
| 239 EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1)) | 239 EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1)) |
| 240 .WillRepeatedly(Return(IntPoint())); | 240 .WillRepeatedly(Return(IntPoint())); |
| 241 EXPECT_CALL(*scrollableArea, maximumScrollPosition()).Times(AtLeast(1)) | 241 EXPECT_CALL(*scrollableArea, maximumScrollPosition()).Times(AtLeast(1)) |
| 242 .WillRepeatedly(Return(IntPoint(1000, 1000))); | 242 .WillRepeatedly(Return(IntPoint(1000, 1000))); |
| 243 EXPECT_CALL(*scrollableArea, setScrollOffset(_, _)).Times(3); | 243 EXPECT_CALL(*scrollableArea, setScrollOffset(_, _)).Times(3); |
| 244 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(2); | 244 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(2); |
| 245 EXPECT_CALL(*scrollableArea, scheduleAnimation()).Times(AtLeast(1)) | 245 EXPECT_CALL(*scrollableArea, scheduleAnimation()).Times(AtLeast(1)) |
| 246 .WillRepeatedly(Return(true)); | 246 .WillRepeatedly(Return(true)); |
| 247 | 247 |
| 248 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); | 248 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); |
| 249 | 249 |
| 250 // Smooth scroll. | 250 // Smooth scroll. |
| 251 ScrollResultOneDimensional result = scrollAnimator->userScroll( | 251 ScrollResult result = scrollAnimator->userScroll(ScrollByLine, FloatSize(100
, 0)); |
| 252 HorizontalScrollbar, ScrollByLine, 100); | |
| 253 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService()); | 252 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService()); |
| 254 EXPECT_TRUE(result.didScroll); | 253 EXPECT_TRUE(result.didScrollX); |
| 255 EXPECT_FLOAT_EQ(0.0, result.unusedScrollDelta); | 254 EXPECT_FLOAT_EQ(0.0, result.unusedScrollDeltaX); |
| 256 EXPECT_TRUE(scrollAnimator->hasRunningAnimation()); | 255 EXPECT_TRUE(scrollAnimator->hasRunningAnimation()); |
| 257 | 256 |
| 258 gMockedTime += 0.05; | 257 gMockedTime += 0.05; |
| 259 scrollAnimator->updateCompositorAnimations(); | 258 scrollAnimator->updateCompositorAnimations(); |
| 260 scrollAnimator->tickAnimation(getMockedTime()); | 259 scrollAnimator->tickAnimation(getMockedTime()); |
| 261 | 260 |
| 262 EXPECT_NE(100, scrollAnimator->currentPosition().x()); | 261 EXPECT_NE(100, scrollAnimator->currentPosition().x()); |
| 263 EXPECT_NE(0, scrollAnimator->currentPosition().x()); | 262 EXPECT_NE(0, scrollAnimator->currentPosition().x()); |
| 264 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); | 263 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); |
| 265 | 264 |
| 266 float x = scrollAnimator->currentPosition().x(); | 265 float x = scrollAnimator->currentPosition().x(); |
| 267 | 266 |
| 268 // Instant scroll. | 267 // Instant scroll. |
| 269 result = scrollAnimator->userScroll( | 268 result = scrollAnimator->userScroll(ScrollByPrecisePixel, FloatSize(100, 0))
; |
| 270 HorizontalScrollbar, ScrollByPrecisePixel, 100); | 269 EXPECT_TRUE(result.didScrollX); |
| 271 EXPECT_TRUE(result.didScroll); | |
| 272 gMockedTime += 0.05; | 270 gMockedTime += 0.05; |
| 273 scrollAnimator->updateCompositorAnimations(); | 271 scrollAnimator->updateCompositorAnimations(); |
| 274 EXPECT_FALSE(scrollAnimator->hasRunningAnimation()); | 272 EXPECT_FALSE(scrollAnimator->hasRunningAnimation()); |
| 275 EXPECT_EQ(x + 100, scrollAnimator->currentPosition().x()); | 273 EXPECT_EQ(x + 100, scrollAnimator->currentPosition().x()); |
| 276 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); | 274 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); |
| 277 | 275 |
| 278 reset(*scrollAnimator); | 276 reset(*scrollAnimator); |
| 279 } | 277 } |
| 280 | 278 |
| 281 TEST(ScrollAnimatorTest, Disabled) | 279 TEST(ScrollAnimatorTest, Disabled) |
| 282 { | 280 { |
| 283 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = MockScrollableArea::
create(false); | 281 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = MockScrollableArea::
create(false); |
| 284 OwnPtrWillBeRawPtr<ScrollAnimator> scrollAnimator = adoptPtrWillBeNoop(new S
crollAnimator(scrollableArea.get(), getMockedTime)); | 282 OwnPtrWillBeRawPtr<ScrollAnimator> scrollAnimator = adoptPtrWillBeNoop(new S
crollAnimator(scrollableArea.get(), getMockedTime)); |
| 285 | 283 |
| 286 EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1)).Will
Repeatedly(Return(IntPoint())); | 284 EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1)).Will
Repeatedly(Return(IntPoint())); |
| 287 EXPECT_CALL(*scrollableArea, maximumScrollPosition()).Times(AtLeast(1)).Will
Repeatedly(Return(IntPoint(1000, 1000))); | 285 EXPECT_CALL(*scrollableArea, maximumScrollPosition()).Times(AtLeast(1)).Will
Repeatedly(Return(IntPoint(1000, 1000))); |
| 288 EXPECT_CALL(*scrollableArea, setScrollOffset(_, _)).Times(8); | 286 EXPECT_CALL(*scrollableArea, setScrollOffset(_, _)).Times(8); |
| 289 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(0); | 287 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(0); |
| 290 | 288 |
| 291 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByLine, 100); | 289 scrollAnimator->userScroll(ScrollByLine, FloatSize(100, 0)); |
| 292 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); | 290 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); |
| 293 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); | 291 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); |
| 294 reset(*scrollAnimator); | 292 reset(*scrollAnimator); |
| 295 | 293 |
| 296 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByPage, 100); | 294 scrollAnimator->userScroll(ScrollByPage, FloatSize(100, 0)); |
| 297 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); | 295 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); |
| 298 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); | 296 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); |
| 299 reset(*scrollAnimator); | 297 reset(*scrollAnimator); |
| 300 | 298 |
| 301 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByDocument, 100); | 299 scrollAnimator->userScroll(ScrollByDocument, FloatSize(100, 0)); |
| 302 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); | 300 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); |
| 303 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); | 301 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); |
| 304 reset(*scrollAnimator); | 302 reset(*scrollAnimator); |
| 305 | 303 |
| 306 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByPixel, 100); | 304 scrollAnimator->userScroll(ScrollByPixel, FloatSize(100, 0)); |
| 307 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); | 305 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); |
| 308 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); | 306 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); |
| 309 reset(*scrollAnimator); | 307 reset(*scrollAnimator); |
| 310 } | 308 } |
| 311 | 309 |
| 312 } // namespace blink | 310 } // namespace blink |
| OLD | NEW |