Changeset 92002 in webkit
- Timestamp:
- Jul 29, 2011 12:11:49 PM (13 years ago)
- Location:
- trunk/Source
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r92000 r92002 1 2011-07-29 Scott Byer <scottbyer@chromium.org> 2 3 Scroll animation refinements. 4 https://bugs.webkit.org/show_bug.cgi?id=65154 5 6 Reviewed by Adam Barth. 7 8 Fix scroll animation bugs when scrolling to the ends of a document. Smooth over slow event repeat rates 9 better. Fix tests to allow for unit testing of scrolling up and not just down. 10 11 Additional unit tests added to ScrollAnimatorNoneTest: 12 ScrollQuadraticSmoothed, ScrollLotsQuadraticSmoothed, ScrollDownToBumper, ScrollUpToBumper 13 14 * platform/ScrollAnimatorNone.cpp: 15 (WebCore::ScrollAnimatorNone::Parameters::Parameters): 16 (WebCore::ScrollAnimatorNone::PerAxisData::updateDataFromParameters): 17 (WebCore::ScrollAnimatorNone::scroll): 18 * platform/ScrollAnimatorNone.h: 19 1 20 2011-07-29 Samuel White <samuel_white@apple.com> 2 21 -
trunk/Source/WebCore/platform/ScrollAnimatorNone.cpp
r90303 r92002 45 45 #include <wtf/PassOwnPtr.h> 46 46 47 using namespace std; 48 47 49 namespace WebCore { 48 50 … … 64 66 } 65 67 66 ScrollAnimatorNone::Parameters::Parameters(bool isEnabled, double animationTime, Curve attackCurve, double attackTime, Curve releaseCurve, double releaseTime)68 ScrollAnimatorNone::Parameters::Parameters(bool isEnabled, double animationTime, double repeatMinimumSustainTime, Curve attackCurve, double attackTime, Curve releaseCurve, double releaseTime) 67 69 : m_isEnabled(isEnabled) 68 70 , m_animationTime(animationTime) 71 , m_repeatMinimumSustainTime(repeatMinimumSustainTime) 69 72 , m_attackCurve(attackCurve) 70 73 , m_attackTime(attackTime) … … 160 163 bool ScrollAnimatorNone::PerAxisData::updateDataFromParameters(ScrollbarOrientation orientation, float step, float multiplier, float scrollableSize, double currentTime, Parameters* parameters) 161 164 { 162 m_animationTime = parameters->m_animationTime; 165 if (parameters->m_animationTime > m_animationTime) 166 m_animationTime = parameters->m_animationTime; 163 167 m_attackTime = parameters->m_attackTime; 164 168 m_releaseTime = parameters->m_releaseTime; … … 175 179 m_orientation = orientation; 176 180 177 if (!m_ desiredPosition)181 if (!m_startTime) 178 182 m_desiredPosition = *m_currentPosition; 179 183 float newPosition = m_desiredPosition + (step * multiplier); 180 184 181 185 if (newPosition < 0 || newPosition > scrollableSize) 182 newPosition = std::max(std::min(newPosition, scrollableSize), 0.0f);186 newPosition = max(min(newPosition, scrollableSize), 0.0f); 183 187 184 188 if (newPosition == m_desiredPosition) … … 200 204 201 205 double deltaTime = m_lastAnimationTime - m_startTime; 206 double attackTimeLeft = max(0., m_attackTime - deltaTime); 202 207 double timeLeft = m_animationTime - deltaTime; 203 if (timeLeft < m_releaseTime) { 204 m_animationTime = deltaTime + m_releaseTime; 205 timeLeft = m_releaseTime; 206 } 207 double releaseTimeLeft = std::min(timeLeft, m_releaseTime); 208 double attackTimeLeft = std::max(0., m_attackTime - deltaTime); 209 double sustainTimeLeft = std::max(0., timeLeft - releaseTimeLeft - attackTimeLeft); 208 double minTimeLeft = m_releaseTime + min(parameters->m_repeatMinimumSustainTime, m_animationTime - m_releaseTime - attackTimeLeft); 209 if (timeLeft < minTimeLeft) { 210 m_animationTime = deltaTime + minTimeLeft; 211 timeLeft = minTimeLeft; 212 } 213 214 double releaseTimeLeft = min(timeLeft, m_releaseTime); 215 double sustainTimeLeft = max(0., timeLeft - releaseTimeLeft - attackTimeLeft); 210 216 211 217 if (attackTimeLeft) { … … 290 296 break; 291 297 case ScrollByLine: 292 parameters = Parameters(true, 10 * kTickTime, Quadratic, 3 * kTickTime, Quadratic, 3 * kTickTime);298 parameters = Parameters(true, 10 * kTickTime, 7 * kTickTime, Quadratic, 3 * kTickTime, Quadratic, 3 * kTickTime); 293 299 break; 294 300 case ScrollByPage: 295 parameters = Parameters(true, 15 * kTickTime, Quadratic, 5 * kTickTime, Quadratic, 5 * kTickTime);301 parameters = Parameters(true, 15 * kTickTime, 10 * kTickTime, Quadratic, 5 * kTickTime, Quadratic, 5 * kTickTime); 296 302 break; 297 303 case ScrollByPixel: 298 parameters = Parameters(true, 11 * kTickTime, Quadratic, 3 * kTickTime, Quadratic, 3 * kTickTime);304 parameters = Parameters(true, 11 * kTickTime, 2 * kTickTime, Quadratic, 3 * kTickTime, Quadratic, 3 * kTickTime); 299 305 break; 300 306 default: -
trunk/Source/WebCore/platform/ScrollAnimatorNone.h
r89305 r92002 60 60 struct Parameters { 61 61 Parameters(); 62 Parameters(bool , double, Curve, double, Curve, double);62 Parameters(bool isEnabled, double animationTime, double repeatMinimumSustainTime, Curve attackCurve, double attackTime, Curve releaseCurve, double releaseTime); 63 63 64 64 // Note that the times can be overspecified such that releaseTime or releaseTime and attackTime are greater … … 67 67 bool m_isEnabled; 68 68 double m_animationTime; 69 double m_repeatMinimumSustainTime; 69 70 70 71 Curve m_attackCurve; -
trunk/Source/WebKit/chromium/ChangeLog
r91975 r92002 1 2011-07-29 Scott Byer <scottbyer@chromium.org> 2 3 Scroll animation refinements. 4 https://bugs.webkit.org/show_bug.cgi?id=65154 5 6 Reviewed by Adam Barth. 7 8 Fix scroll animation bugs when scrolling to the ends of a document. Smooth over slow event repeat rates 9 better. Fix tests to allow for unit testing of scrolling up and not just down. 10 11 Additional unit tests added to ScrollAnimatorNoneTest: 12 ScrollQuadraticSmoothed, ScrollLotsQuadraticSmoothed, ScrollDownToBumper, ScrollUpToBumper 13 14 * tests/ScrollAnimatorNoneTest.cpp: 15 (ScrollAnimatorNoneTest::reset): 16 (ScrollAnimatorNoneTest::updateDataFromParameters): 17 (ScrollAnimatorNoneTest::animateScroll): 18 (ScrollAnimatorNoneTest::checkDesiredPosition): 19 (ScrollAnimatorNoneTest::checkSoftLanding): 20 1 21 2011-07-28 Naoki Takano <honten@chromium.org> 2 22 -
trunk/Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp
r90303 r92002 177 177 void curveTest(ScrollAnimatorNone::Curve); 178 178 179 void checkDesiredPosition(float expectedPosition); 180 void checkSoftLanding(float expectedPosition); 181 179 182 static double kTickTime; 180 183 static double kAnimationTime; … … 183 186 float m_currentPosition; 184 187 MockScrollAnimatorNone m_mockScrollAnimatorNone; 188 bool m_scrollingDown; 185 189 ScrollAnimatorNone::PerAxisData* m_data; 186 190 }; … … 194 198 { 195 199 m_data->reset(); 200 m_scrollingDown = true; 196 201 } 197 202 198 203 bool ScrollAnimatorNoneTest::updateDataFromParameters(ScrollbarOrientation orientation, float step, float multiplier, float scrollableSize, double currentTime, ScrollAnimatorNone::Parameters* parameters) 199 204 { 205 m_scrollingDown = (step * multiplier > 0); 206 200 207 double oldVelocity = m_data->m_currentVelocity; 201 208 double oldDesiredVelocity = m_data->m_desiredVelocity; 202 209 double oldTimeLeft = m_data->m_animationTime - (m_data->m_lastAnimationTime - m_data->m_startTime); 203 210 bool result = m_data->updateDataFromParameters(orientation, step, multiplier, scrollableSize, currentTime, parameters); 204 EXPECT_LE(oldVelocity, m_data->m_currentVelocity); 211 if (m_scrollingDown) 212 EXPECT_LE(oldVelocity, m_data->m_currentVelocity); 213 else 214 EXPECT_GE(oldVelocity, m_data->m_currentVelocity); 205 215 206 216 double deltaTime = m_data->m_lastAnimationTime - m_data->m_startTime; … … 213 223 double allowedVelocityDecreaseFactor = 0.99 * oldTimeLeft / timeLeft; 214 224 allowedVelocityDecreaseFactor *= allowedVelocityDecreaseFactor; 215 EXPECT_LE(oldDesiredVelocity * allowedVelocityDecreaseFactor, m_data->m_desiredVelocity); 216 217 double expectedReleasePosition = std::max<double>(m_currentPosition, m_data->m_attackPosition) + sustainTimeLeft * m_data->m_desiredVelocity; 218 EXPECT_DOUBLE_EQ(expectedReleasePosition, m_data->m_releasePosition); 225 if (m_scrollingDown) 226 EXPECT_LE(oldDesiredVelocity * allowedVelocityDecreaseFactor, m_data->m_desiredVelocity); 227 else 228 EXPECT_GE(oldDesiredVelocity * allowedVelocityDecreaseFactor, m_data->m_desiredVelocity); 229 230 double startPosition = m_scrollingDown ? std::max<double>(m_currentPosition, m_data->m_attackPosition) : std::min<double>(m_currentPosition, m_data->m_attackPosition); 231 double expectedReleasePosition = startPosition + sustainTimeLeft * m_data->m_desiredVelocity; 232 if (result) 233 EXPECT_DOUBLE_EQ(expectedReleasePosition, m_data->m_releasePosition); 234 else 235 EXPECT_NEAR(expectedReleasePosition, m_data->m_releasePosition, 1); 219 236 220 237 return result; … … 235 252 double distanceLeft = m_data->m_desiredPosition - *m_data->m_currentPosition; 236 253 237 EXPECT_LE(0, m_data->m_currentVelocity); 238 EXPECT_LE(oldPosition, *m_data->m_currentPosition); 239 EXPECT_GE(m_data->m_desiredVelocity * 2, m_data->m_currentVelocity); 254 if (m_scrollingDown) { 255 EXPECT_LE(0, m_data->m_currentVelocity); 256 EXPECT_LE(oldPosition, *m_data->m_currentPosition); 257 } else { 258 EXPECT_GE(0, m_data->m_currentVelocity); 259 EXPECT_GE(oldPosition, *m_data->m_currentPosition); 260 } 261 EXPECT_GE(fabs(m_data->m_desiredVelocity) * 2, fabs(m_data->m_currentVelocity)); 240 262 if (testEstimatedMaxVelocity) 241 EXPECT_GE( (distanceLeft / sustainTimeLeft) * 1.2, m_data->m_currentVelocity);263 EXPECT_GE(fabs(distanceLeft / sustainTimeLeft) * 1.2, fabs(m_data->m_currentVelocity)); 242 264 243 265 return result; … … 364 386 } 365 387 388 void ScrollAnimatorNoneTest::checkDesiredPosition(float expectedPosition) 389 { 390 EXPECT_EQ(expectedPosition, m_data->m_desiredPosition); 391 } 392 393 void ScrollAnimatorNoneTest::checkSoftLanding(float expectedPosition) 394 { 395 EXPECT_EQ(expectedPosition, m_currentPosition); 396 EXPECT_LE(m_data->m_desiredVelocity / 2, m_data->m_currentVelocity); 397 } 398 366 399 TEST_F(ScrollAnimatorNoneTest, CurveMathLinear) 367 400 { … … 386 419 TEST_F(ScrollAnimatorNoneTest, ScrollOnceLinear) 387 420 { 388 ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, ScrollAnimatorNone::Linear, 3 * kTickTime, ScrollAnimatorNone::Linear, 3 * kTickTime);421 ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Linear, 3 * kTickTime, ScrollAnimatorNone::Linear, 3 * kTickTime); 389 422 390 423 updateDataFromParameters(VerticalScrollbar, 1, 40, 1000, kStartTime, ¶meters); … … 396 429 TEST_F(ScrollAnimatorNoneTest, ScrollOnceQuadratic) 397 430 { 398 ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime);431 ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime); 399 432 400 433 updateDataFromParameters(VerticalScrollbar, 1, 40, 1000, kStartTime, ¶meters); … … 406 439 TEST_F(ScrollAnimatorNoneTest, ScrollLongQuadratic) 407 440 { 408 ScrollAnimatorNone::Parameters parameters(true, 20 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime);441 ScrollAnimatorNone::Parameters parameters(true, 20 * kTickTime, 0, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime); 409 442 410 443 updateDataFromParameters(VerticalScrollbar, 1, 40, 1000, kStartTime, ¶meters); … … 416 449 TEST_F(ScrollAnimatorNoneTest, ScrollQuadraticNoSustain) 417 450 { 418 ScrollAnimatorNone::Parameters parameters(true, 8 * kTickTime, ScrollAnimatorNone::Quadratic, 4 * kTickTime, ScrollAnimatorNone::Quadratic, 4 * kTickTime);451 ScrollAnimatorNone::Parameters parameters(true, 8 * kTickTime, 0, ScrollAnimatorNone::Quadratic, 4 * kTickTime, ScrollAnimatorNone::Quadratic, 4 * kTickTime); 419 452 420 453 updateDataFromParameters(VerticalScrollbar, 1, 40, 1000, kStartTime, ¶meters); … … 424 457 } 425 458 459 TEST_F(ScrollAnimatorNoneTest, ScrollQuadraticSmoothed) 460 { 461 ScrollAnimatorNone::Parameters parameters(true, 8 * kTickTime, 8 * kTickTime, ScrollAnimatorNone::Quadratic, 4 * kTickTime, ScrollAnimatorNone::Quadratic, 4 * kTickTime); 462 463 updateDataFromParameters(VerticalScrollbar, 1, 40, 1000, kStartTime, ¶meters); 464 bool result = true; 465 for (double t = kStartTime; result && t < kEndTime; t += kAnimationTime) 466 result = animateScroll(t); 467 } 468 426 469 TEST_F(ScrollAnimatorNoneTest, ScrollOnceCubic) 427 470 { 428 ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime);471 ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime); 429 472 430 473 updateDataFromParameters(VerticalScrollbar, 1, 40, 1000, kStartTime, ¶meters); … … 436 479 TEST_F(ScrollAnimatorNoneTest, ScrollOnceShort) 437 480 { 438 ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime);481 ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime); 439 482 440 483 updateDataFromParameters(VerticalScrollbar, 1, 40, 1000, kStartTime, ¶meters); … … 446 489 TEST_F(ScrollAnimatorNoneTest, ScrollTwiceQuadratic) 447 490 { 448 ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime);491 ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime); 449 492 450 493 updateDataFromParameters(VerticalScrollbar, 1, 40, 1000, kStartTime, ¶meters); … … 477 520 TEST_F(ScrollAnimatorNoneTest, ScrollLotsQuadratic) 478 521 { 479 ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime);522 ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime); 480 523 481 524 updateDataFromParameters(VerticalScrollbar, 1, 40, 1000, kStartTime, ¶meters); … … 496 539 } 497 540 541 TEST_F(ScrollAnimatorNoneTest, ScrollLotsQuadraticSmoothed) 542 { 543 ScrollAnimatorNone::Parameters parameters(true, 10 * kTickTime, 6 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime); 544 545 updateDataFromParameters(VerticalScrollbar, 1, 40, 1000, kStartTime, ¶meters); 546 bool result = true; 547 double t; 548 for (t = kStartTime; result && t < kStartTime + 1.5 * kTickTime; t += kAnimationTime) 549 result = animateScroll(t); 550 551 for (int i = 0; i < 20; ++i) { 552 t += kAnimationTime; 553 result = result && animateScroll(t); 554 result = result && updateDataFromParameters(VerticalScrollbar, 3, 40, 10000, t, ¶meters); 555 } 556 557 t += kAnimationTime; 558 for (; result && t < kEndTime; t += kAnimationTime) 559 result = result && animateScroll(t); 560 } 561 498 562 TEST_F(ScrollAnimatorNoneTest, ScrollWheelTrace) 499 563 { 500 ScrollAnimatorNone::Parameters parameters(true, 11 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime);564 ScrollAnimatorNone::Parameters parameters(true, 11 * kTickTime, 0, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime); 501 565 502 566 // Constructed from an actual scroll wheel trace that exhibited a glitch. … … 520 584 } 521 585 586 TEST_F(ScrollAnimatorNoneTest, ScrollWheelTraceSmoothed) 587 { 588 ScrollAnimatorNone::Parameters parameters(true, 11 * kTickTime, 7 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime); 589 590 // Constructed from an actual scroll wheel trace that exhibited a glitch. 591 bool result = updateDataFromParameters(VerticalScrollbar, 1, 53.33, 1000, 100.5781, ¶meters); 592 result = animateScroll(100.5933); 593 result = result && animateScroll(100.6085); 594 result = result && updateDataFromParameters(VerticalScrollbar, 1, 53.33, 1000, 100.6485, ¶meters); 595 result = result && animateScroll(100.6515); 596 result = result && animateScroll(100.6853); 597 result = result && updateDataFromParameters(VerticalScrollbar, 1, 53.33, 1000, 100.6863, ¶meters); 598 result = result && animateScroll(100.7005); 599 result = result && animateScroll(100.7157); 600 result = result && animateScroll(100.7312); 601 result = result && updateDataFromParameters(VerticalScrollbar, 1, 53.33, 1000, 100.7379, ¶meters); 602 result = result && animateScroll(100.7464); 603 result = result && animateScroll(100.7617); 604 result = result && animateScroll(100.7775); 605 result = result && updateDataFromParameters(VerticalScrollbar, 1, 53.33, 1000, 100.7779, ¶meters); 606 for (double t = 100.7928; result && t < 200; t += 0.015) 607 result = result && animateScroll(t); 608 } 609 522 610 TEST_F(ScrollAnimatorNoneTest, LinuxTrackPadTrace) 523 611 { 524 ScrollAnimatorNone::Parameters parameters(true, 11 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime);612 ScrollAnimatorNone::Parameters parameters(true, 11 * kTickTime, 0, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime); 525 613 526 614 bool result = updateDataFromParameters(VerticalScrollbar, 1.00, 60.00, 1000, 100.6863, ¶meters); … … 550 638 } 551 639 640 TEST_F(ScrollAnimatorNoneTest, LinuxTrackPadTraceSmoothed) 641 { 642 ScrollAnimatorNone::Parameters parameters(true, 11 * kTickTime, 7 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime); 643 644 bool result = updateDataFromParameters(VerticalScrollbar, 1.00, 60.00, 1000, 100.6863, ¶meters); 645 result = result && updateDataFromParameters(VerticalScrollbar, 1.00, 20.00, 1000, 100.6897, ¶meters); 646 result = result && updateDataFromParameters(VerticalScrollbar, 1.00, 20.00, 1000, 100.7001, ¶meters); 647 result = result && animateScroll(100.7015); 648 result = result && animateScroll(100.7169); 649 result = result && updateDataFromParameters(VerticalScrollbar, 1.00, 40.00, 1000, 100.7179, ¶meters); 650 result = result && animateScroll(100.7322); 651 result = result && updateDataFromParameters(VerticalScrollbar, 1.00, 20.00, 1000, 100.7332, ¶meters); 652 result = result && animateScroll(100.7491); 653 result = result && updateDataFromParameters(VerticalScrollbar, 1.00, 20.00, 1000, 100.7519, ¶meters); 654 result = result && animateScroll(100.7676); 655 result = result && updateDataFromParameters(VerticalScrollbar, 1.00, 20.00, 1000, 100.7698, ¶meters); 656 result = result && updateDataFromParameters(VerticalScrollbar, 1.00, 20.00, 1000, 100.7830, ¶meters); 657 result = result && animateScroll(100.7834); 658 result = result && animateScroll(100.7997); 659 result = result && updateDataFromParameters(VerticalScrollbar, 1.00, 20.00, 1000, 100.8019, ¶meters); 660 result = result && animateScroll(100.8154); 661 result = result && updateDataFromParameters(VerticalScrollbar, 1.00, 20.00, 1000, 100.8241, ¶meters); 662 result = result && animateScroll(100.8335); 663 result = result && updateDataFromParameters(VerticalScrollbar, 1.00, 20.00, 1000, 100.8465, ¶meters); 664 result = result && animateScroll(100.8513); 665 result = result && updateDataFromParameters(VerticalScrollbar, 1.00, 20.00, 1000, 100.8623, ¶meters); 666 for (double t = 100.8674; result && t < 200; t += 0.015) 667 result = result && animateScroll(t); 668 } 669 670 TEST_F(ScrollAnimatorNoneTest, ScrollDownToBumper) 671 { 672 ScrollAnimatorNone::Parameters parameters(true, 10 * kTickTime, 7 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime); 673 674 updateDataFromParameters(VerticalScrollbar, 1, 20, 200, kStartTime, ¶meters); 675 bool result = true; 676 double t = kStartTime; 677 for (int i = 0; i < 10; ++i) { 678 t += kAnimationTime; 679 result = result && animateScroll(t); 680 updateDataFromParameters(VerticalScrollbar, 1, 20, 200, t, ¶meters); 681 } 682 checkDesiredPosition(200); 683 684 t += kAnimationTime; 685 for (; result && t < kEndTime; t += kAnimationTime) 686 result = result && animateScroll(t); 687 checkSoftLanding(200); 688 } 689 690 691 TEST_F(ScrollAnimatorNoneTest, ScrollUpToBumper) 692 { 693 ScrollAnimatorNone::Parameters parameters(true, 10 * kTickTime, 7 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime); 694 695 updateDataFromParameters(VerticalScrollbar, 1, -20, 200, kStartTime, ¶meters); 696 bool result = true; 697 double t = kStartTime; 698 for (int i = 0; i < 10; ++i) { 699 t += kAnimationTime; 700 result = result && animateScroll(t); 701 updateDataFromParameters(VerticalScrollbar, 1, -20, 200, t, ¶meters); 702 } 703 checkDesiredPosition(0); 704 705 t += kAnimationTime; 706 for (; result && t < kEndTime; t += kAnimationTime) 707 result = result && animateScroll(t); 708 checkSoftLanding(0); 709 } 710 552 711 #endif // ENABLE(SMOOTH_SCROLLING)
Note: See TracChangeset
for help on using the changeset viewer.