OLD | NEW |
---|---|
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "CCLayerTreeHostImpl.h" | 7 #include "CCLayerTreeHostImpl.h" |
8 | 8 |
9 #include "CCAnimationTestCommon.h" | 9 #include "CCAnimationTestCommon.h" |
10 #include "CCDelegatedRendererLayerImpl.h" | 10 #include "CCDelegatedRendererLayerImpl.h" |
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
445 m_hostImpl->setViewportSize(layoutViewport, deviceViewport); | 445 m_hostImpl->setViewportSize(layoutViewport, deviceViewport); |
446 m_hostImpl->setDeviceScaleFactor(deviceScaleFactor); | 446 m_hostImpl->setDeviceScaleFactor(deviceScaleFactor); |
447 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), IntSize(25, 25)); | 447 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), IntSize(25, 25)); |
448 | 448 |
449 deviceScaleFactor = 1; | 449 deviceScaleFactor = 1; |
450 m_hostImpl->setViewportSize(layoutViewport, layoutViewport); | 450 m_hostImpl->setViewportSize(layoutViewport, layoutViewport); |
451 m_hostImpl->setDeviceScaleFactor(deviceScaleFactor); | 451 m_hostImpl->setDeviceScaleFactor(deviceScaleFactor); |
452 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), IntSize(75, 75)); | 452 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), IntSize(75, 75)); |
453 } | 453 } |
454 | 454 |
455 TEST_F(CCLayerTreeHostImplTest, implPinchZoom) | |
456 { | |
457 CCSettings::setPageScalePinchZoomEnabled(true); | |
458 setupScrollAndContentsLayers(IntSize(100, 100)); | |
459 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); | |
460 initializeRendererAndDrawFrame(); | |
461 | |
462 CCLayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); | |
463 ASSERT(scrollLayer); | |
464 | |
465 const float minPageScale = 1, maxPageScale = 4; | |
466 const WebTransformationMatrix identityScaleTransform; | |
467 | |
468 // The impl-based pinch zoome should not adjust the max scroll position. | |
469 { | |
470 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | |
471 scrollLayer->setImplTransform(identityScaleTransform); | |
472 scrollLayer->setScrollDelta(IntSize()); | |
473 | |
474 float pageScaleDelta = 2; | |
475 m_hostImpl->pinchGestureBegin(); | |
476 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(50, 50)); | |
477 m_hostImpl->pinchGestureEnd(); | |
478 EXPECT_TRUE(m_didRequestRedraw); | |
479 EXPECT_TRUE(m_didRequestCommit); | |
480 | |
481 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); | |
482 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); | |
483 | |
484 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), IntSize(50, 50)) ; | |
485 } | |
486 | |
487 // Scrolling after a pinch gesture should always be in local space. The scr oll deltas do not | |
488 // have the page scale factor applied. | |
489 { | |
490 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | |
491 scrollLayer->setImplTransform(identityScaleTransform); | |
492 scrollLayer->setScrollDelta(IntSize()); | |
493 | |
494 float pageScaleDelta = 2; | |
495 m_hostImpl->pinchGestureBegin(); | |
496 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(50, 50)); | |
497 m_hostImpl->pinchGestureEnd(); | |
498 | |
499 IntSize scrollDelta(0, 10); | |
500 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient:: Wheel), CCInputHandlerClient::ScrollStarted); | |
501 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | |
502 m_hostImpl->scrollEnd(); | |
503 | |
504 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); | |
505 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), scrollD elta); | |
506 } | |
507 } | |
508 | |
455 TEST_F(CCLayerTreeHostImplTest, pinchGesture) | 509 TEST_F(CCLayerTreeHostImplTest, pinchGesture) |
aelias_OOO_until_Jul13
2012/09/26 23:15:09
Hmm... all of these tests should really be run in
Jeff Timanus
2012/10/01 21:42:36
I converted all of these tests to parametrized, an
| |
456 { | 510 { |
457 setupScrollAndContentsLayers(IntSize(100, 100)); | 511 setupScrollAndContentsLayers(IntSize(100, 100)); |
458 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); | 512 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); |
459 initializeRendererAndDrawFrame(); | 513 initializeRendererAndDrawFrame(); |
460 | 514 |
461 CCLayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); | 515 CCLayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); |
462 ASSERT(scrollLayer); | 516 ASSERT(scrollLayer); |
463 | 517 |
464 const float minPageScale = 0.5, maxPageScale = 4; | 518 const float minPageScale = 0.5, maxPageScale = 4; |
519 const WebTransformationMatrix identityScaleTransform; | |
465 | 520 |
466 // Basic pinch zoom in gesture | 521 // Basic pinch zoom in gesture |
467 { | 522 { |
468 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 523 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
469 scrollLayer->setPageScaleDelta(1); | 524 scrollLayer->setImplTransform(identityScaleTransform); |
470 scrollLayer->setScrollDelta(IntSize()); | 525 scrollLayer->setScrollDelta(IntSize()); |
471 | 526 |
472 float pageScaleDelta = 2; | 527 float pageScaleDelta = 2; |
473 m_hostImpl->pinchGestureBegin(); | 528 m_hostImpl->pinchGestureBegin(); |
474 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(50, 50)); | 529 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(50, 50)); |
475 m_hostImpl->pinchGestureEnd(); | 530 m_hostImpl->pinchGestureEnd(); |
476 EXPECT_TRUE(m_didRequestRedraw); | 531 EXPECT_TRUE(m_didRequestRedraw); |
477 EXPECT_TRUE(m_didRequestCommit); | 532 EXPECT_TRUE(m_didRequestCommit); |
478 | 533 |
479 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); | 534 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); |
480 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); | 535 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); |
481 } | 536 } |
482 | 537 |
483 // Zoom-in clamping | 538 // Zoom-in clamping |
484 { | 539 { |
485 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 540 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
486 scrollLayer->setPageScaleDelta(1); | 541 scrollLayer->setImplTransform(identityScaleTransform); |
487 scrollLayer->setScrollDelta(IntSize()); | 542 scrollLayer->setScrollDelta(IntSize()); |
488 float pageScaleDelta = 10; | 543 float pageScaleDelta = 10; |
489 | 544 |
490 m_hostImpl->pinchGestureBegin(); | 545 m_hostImpl->pinchGestureBegin(); |
491 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(50, 50)); | 546 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(50, 50)); |
492 m_hostImpl->pinchGestureEnd(); | 547 m_hostImpl->pinchGestureEnd(); |
493 | 548 |
494 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); | 549 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); |
495 EXPECT_EQ(scrollInfo->pageScaleDelta, maxPageScale); | 550 EXPECT_EQ(scrollInfo->pageScaleDelta, maxPageScale); |
496 } | 551 } |
497 | 552 |
498 // Zoom-out clamping | 553 // Zoom-out clamping |
499 { | 554 { |
500 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 555 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
501 scrollLayer->setPageScaleDelta(1); | 556 scrollLayer->setImplTransform(identityScaleTransform); |
502 scrollLayer->setScrollDelta(IntSize()); | 557 scrollLayer->setScrollDelta(IntSize()); |
503 scrollLayer->setScrollPosition(IntPoint(50, 50)); | 558 scrollLayer->setScrollPosition(IntPoint(50, 50)); |
504 | 559 |
505 float pageScaleDelta = 0.1f; | 560 float pageScaleDelta = 0.1f; |
506 m_hostImpl->pinchGestureBegin(); | 561 m_hostImpl->pinchGestureBegin(); |
507 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(0, 0)); | 562 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(0, 0)); |
508 m_hostImpl->pinchGestureEnd(); | 563 m_hostImpl->pinchGestureEnd(); |
509 | 564 |
510 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); | 565 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); |
511 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); | 566 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); |
512 | 567 |
513 // Pushed to (0,0) via clamping against contents layer size. | 568 // Pushed to (0,0) via clamping against contents layer size. |
514 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); | 569 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); |
515 } | 570 } |
516 | 571 |
517 // Two-finger panning | 572 // Two-finger panning |
518 { | 573 { |
519 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 574 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
520 scrollLayer->setPageScaleDelta(1); | 575 scrollLayer->setImplTransform(identityScaleTransform); |
521 scrollLayer->setScrollDelta(IntSize()); | 576 scrollLayer->setScrollDelta(IntSize()); |
522 scrollLayer->setScrollPosition(IntPoint(20, 20)); | 577 scrollLayer->setScrollPosition(IntPoint(20, 20)); |
523 | 578 |
524 float pageScaleDelta = 1; | 579 float pageScaleDelta = 1; |
525 m_hostImpl->pinchGestureBegin(); | 580 m_hostImpl->pinchGestureBegin(); |
526 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(10, 10)); | 581 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(10, 10)); |
527 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(20, 20)); | 582 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(20, 20)); |
528 m_hostImpl->pinchGestureEnd(); | 583 m_hostImpl->pinchGestureEnd(); |
529 | 584 |
530 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); | 585 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); |
531 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); | 586 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); |
532 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-10, -10)); | 587 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-10, -10)); |
533 } | 588 } |
534 } | 589 } |
535 | 590 |
536 TEST_F(CCLayerTreeHostImplTest, pageScaleAnimation) | 591 TEST_F(CCLayerTreeHostImplTest, pageScaleAnimation) |
537 { | 592 { |
538 setupScrollAndContentsLayers(IntSize(100, 100)); | 593 setupScrollAndContentsLayers(IntSize(100, 100)); |
539 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); | 594 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); |
540 initializeRendererAndDrawFrame(); | 595 initializeRendererAndDrawFrame(); |
541 | 596 |
542 CCLayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); | 597 CCLayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); |
543 ASSERT(scrollLayer); | 598 ASSERT(scrollLayer); |
544 | 599 |
545 const float minPageScale = 0.5, maxPageScale = 4; | 600 const float minPageScale = 0.5, maxPageScale = 4; |
546 const double startTime = 1; | 601 const double startTime = 1; |
547 const double duration = 0.1; | 602 const double duration = 0.1; |
548 const double halfwayThroughAnimation = startTime + duration / 2; | 603 const double halfwayThroughAnimation = startTime + duration / 2; |
549 const double endTime = startTime + duration; | 604 const double endTime = startTime + duration; |
605 const WebTransformationMatrix identityScaleTransform; | |
550 | 606 |
551 // Non-anchor zoom-in | 607 // Non-anchor zoom-in |
552 { | 608 { |
553 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 609 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
554 scrollLayer->setPageScaleDelta(1); | 610 scrollLayer->setImplTransform(identityScaleTransform); |
555 scrollLayer->setScrollPosition(IntPoint(50, 50)); | 611 scrollLayer->setScrollPosition(IntPoint(50, 50)); |
556 | 612 |
557 m_hostImpl->startPageScaleAnimation(IntSize(0, 0), false, 2, startTime, duration); | 613 m_hostImpl->startPageScaleAnimation(IntSize(0, 0), false, 2, startTime, duration); |
558 m_hostImpl->animate(halfwayThroughAnimation, halfwayThroughAnimation); | 614 m_hostImpl->animate(halfwayThroughAnimation, halfwayThroughAnimation); |
559 EXPECT_TRUE(m_didRequestRedraw); | 615 EXPECT_TRUE(m_didRequestRedraw); |
560 m_hostImpl->animate(endTime, endTime); | 616 m_hostImpl->animate(endTime, endTime); |
561 EXPECT_TRUE(m_didRequestCommit); | 617 EXPECT_TRUE(m_didRequestCommit); |
562 | 618 |
563 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); | 619 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); |
564 EXPECT_EQ(scrollInfo->pageScaleDelta, 2); | 620 EXPECT_EQ(scrollInfo->pageScaleDelta, 2); |
565 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); | 621 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); |
566 } | 622 } |
567 | 623 |
568 // Anchor zoom-out | 624 // Anchor zoom-out |
569 { | 625 { |
570 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 626 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
571 scrollLayer->setPageScaleDelta(1); | 627 scrollLayer->setImplTransform(identityScaleTransform); |
572 scrollLayer->setScrollPosition(IntPoint(50, 50)); | 628 scrollLayer->setScrollPosition(IntPoint(50, 50)); |
573 | 629 |
574 m_hostImpl->startPageScaleAnimation(IntSize(25, 25), true, minPageScale, startTime, duration); | 630 m_hostImpl->startPageScaleAnimation(IntSize(25, 25), true, minPageScale, startTime, duration); |
575 m_hostImpl->animate(endTime, endTime); | 631 m_hostImpl->animate(endTime, endTime); |
576 EXPECT_TRUE(m_didRequestRedraw); | 632 EXPECT_TRUE(m_didRequestRedraw); |
577 EXPECT_TRUE(m_didRequestCommit); | 633 EXPECT_TRUE(m_didRequestCommit); |
578 | 634 |
579 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); | 635 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); |
580 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); | 636 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); |
581 // Pushed to (0,0) via clamping against contents layer size. | 637 // Pushed to (0,0) via clamping against contents layer size. |
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1039 | 1095 |
1040 // The scale should apply to the scroll delta. | 1096 // The scale should apply to the scroll delta. |
1041 expectedScrollDelta.scale(pageScale); | 1097 expectedScrollDelta.scale(pageScale); |
1042 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); | 1098 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); |
1043 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta); | 1099 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta); |
1044 | 1100 |
1045 // The scroll range should also have been updated. | 1101 // The scroll range should also have been updated. |
1046 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), expectedMaxScroll); | 1102 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), expectedMaxScroll); |
1047 | 1103 |
1048 // The page scale delta remains constant because the impl thread did not sca le. | 1104 // The page scale delta remains constant because the impl thread did not sca le. |
1049 EXPECT_EQ(m_hostImpl->rootLayer()->pageScaleDelta(), 1); | 1105 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), WebTransformationMatrix( )); |
1050 } | 1106 } |
1051 | 1107 |
1052 TEST_F(CCLayerTreeHostImplTest, scrollRootAndChangePageScaleOnImplThread) | 1108 TEST_F(CCLayerTreeHostImplTest, scrollRootAndChangePageScaleOnImplThread) |
1053 { | 1109 { |
1054 IntSize surfaceSize(10, 10); | 1110 IntSize surfaceSize(10, 10); |
1055 float pageScale = 2; | 1111 float pageScale = 2; |
1056 OwnPtr<CCLayerImpl> root = createScrollableLayer(1, surfaceSize); | 1112 OwnPtr<CCLayerImpl> root = createScrollableLayer(1, surfaceSize); |
1057 m_hostImpl->setRootLayer(root.release()); | 1113 m_hostImpl->setRootLayer(root.release()); |
1058 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1114 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1059 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); | 1115 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); |
1060 initializeRendererAndDrawFrame(); | 1116 initializeRendererAndDrawFrame(); |
1061 | 1117 |
1062 IntSize scrollDelta(0, 10); | 1118 IntSize scrollDelta(0, 10); |
1063 IntSize expectedScrollDelta(scrollDelta); | 1119 IntSize expectedScrollDelta(scrollDelta); |
1064 IntSize expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollPosition()); | 1120 IntSize expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollPosition()); |
1065 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted); | 1121 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted); |
1066 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | 1122 m_hostImpl->scrollBy(IntPoint(), scrollDelta); |
1067 m_hostImpl->scrollEnd(); | 1123 m_hostImpl->scrollEnd(); |
1068 | 1124 |
1069 // Set new page scale on impl thread by pinching. | 1125 // Set new page scale on impl thread by pinching. |
1070 m_hostImpl->pinchGestureBegin(); | 1126 m_hostImpl->pinchGestureBegin(); |
1071 m_hostImpl->pinchGestureUpdate(pageScale, IntPoint()); | 1127 m_hostImpl->pinchGestureUpdate(pageScale, IntPoint()); |
1072 m_hostImpl->pinchGestureEnd(); | 1128 m_hostImpl->pinchGestureEnd(); |
1129 m_hostImpl->updateRootScrollLayerImplTransform(); | |
1073 | 1130 |
1074 // The scroll delta is not scaled because the main thread did not scale. | 1131 // The scroll delta is not scaled because the main thread did not scale. |
1075 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); | 1132 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); |
1076 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta); | 1133 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta); |
1077 | 1134 |
1078 // The scroll range should also have been updated. | 1135 // The scroll range should also have been updated. |
1079 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), expectedMaxScroll); | 1136 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), expectedMaxScroll); |
1080 | 1137 |
1081 // The page scale delta should match the new scale on the impl side. | 1138 // The page scale delta should match the new scale on the impl side. |
1082 EXPECT_EQ(m_hostImpl->rootLayer()->pageScaleDelta(), pageScale); | 1139 WebTransformationMatrix expectedScale; |
1140 expectedScale.scale(pageScale); | |
1141 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedScale); | |
1083 } | 1142 } |
1084 | 1143 |
1085 TEST_F(CCLayerTreeHostImplTest, pageScaleDeltaAppliedToRootScrollLayerOnly) | 1144 TEST_F(CCLayerTreeHostImplTest, pageScaleDeltaAppliedToRootScrollLayerOnly) |
1086 { | 1145 { |
1087 IntSize surfaceSize(10, 10); | 1146 IntSize surfaceSize(10, 10); |
1088 float defaultPageScale = 1; | 1147 float defaultPageScale = 1; |
1148 WebTransformationMatrix defaultPageScaleMatrix; | |
1149 | |
1089 float newPageScale = 2; | 1150 float newPageScale = 2; |
1151 WebTransformationMatrix newPageScaleMatrix; | |
1152 newPageScaleMatrix.scale(newPageScale); | |
1090 | 1153 |
1091 // Create a normal scrollable root layer and another scrollable child layer. | 1154 // Create a normal scrollable root layer and another scrollable child layer. |
1092 setupScrollAndContentsLayers(surfaceSize); | 1155 setupScrollAndContentsLayers(surfaceSize); |
1093 CCLayerImpl* root = m_hostImpl->rootLayer(); | 1156 CCLayerImpl* root = m_hostImpl->rootLayer(); |
1094 CCLayerImpl* child = root->children()[0]; | 1157 CCLayerImpl* child = root->children()[0]; |
1095 | 1158 |
1096 OwnPtr<CCLayerImpl> scrollableChild = createScrollableLayer(3, surfaceSize); | 1159 OwnPtr<CCLayerImpl> scrollableChild = createScrollableLayer(3, surfaceSize); |
1097 child->addChild(scrollableChild.release()); | 1160 child->addChild(scrollableChild.release()); |
1098 CCLayerImpl* grandChild = child->children()[0]; | 1161 CCLayerImpl* grandChild = child->children()[0]; |
1099 | 1162 |
1100 // Set new page scale on impl thread by pinching. | 1163 // Set new page scale on impl thread by pinching. |
1101 m_hostImpl->pinchGestureBegin(); | 1164 m_hostImpl->pinchGestureBegin(); |
1102 m_hostImpl->pinchGestureUpdate(newPageScale, IntPoint()); | 1165 m_hostImpl->pinchGestureUpdate(newPageScale, IntPoint()); |
1103 m_hostImpl->pinchGestureEnd(); | 1166 m_hostImpl->pinchGestureEnd(); |
1167 m_hostImpl->updateRootScrollLayerImplTransform(); | |
1104 | 1168 |
1105 // The page scale delta should only be applied to the scrollable root layer. | 1169 // The page scale delta should only be applied to the scrollable root layer. |
1106 EXPECT_EQ(root->pageScaleDelta(), newPageScale); | 1170 EXPECT_EQ(root->implTransform(), newPageScaleMatrix); |
1107 EXPECT_EQ(child->pageScaleDelta(), defaultPageScale); | 1171 EXPECT_EQ(child->implTransform(), defaultPageScaleMatrix); |
1108 EXPECT_EQ(grandChild->pageScaleDelta(), defaultPageScale); | 1172 EXPECT_EQ(grandChild->implTransform(), defaultPageScaleMatrix); |
1109 | 1173 |
1110 // Make sure all the layers are drawn with the page scale delta applied, i.e ., the page scale | 1174 // Make sure all the layers are drawn with the page scale delta applied, i.e ., the page scale |
1111 // delta on the root layer is applied hierarchically. | 1175 // delta on the root layer is applied hierarchically. |
1112 CCLayerTreeHostImpl::FrameData frame; | 1176 CCLayerTreeHostImpl::FrameData frame; |
1113 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 1177 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
1114 m_hostImpl->drawLayers(frame); | 1178 m_hostImpl->drawLayers(frame); |
1115 m_hostImpl->didDrawAllLayers(frame); | 1179 m_hostImpl->didDrawAllLayers(frame); |
1116 | 1180 |
1117 EXPECT_EQ(root->drawTransform().m11(), newPageScale); | 1181 EXPECT_EQ(root->drawTransform().m11(), newPageScale); |
1118 EXPECT_EQ(root->drawTransform().m22(), newPageScale); | 1182 EXPECT_EQ(root->drawTransform().m22(), newPageScale); |
(...skipping 22 matching lines...) Expand all Loading... | |
1141 IntSize scrollDelta(0, 10); | 1205 IntSize scrollDelta(0, 10); |
1142 IntSize expectedScrollDelta(scrollDelta); | 1206 IntSize expectedScrollDelta(scrollDelta); |
1143 IntSize expectedMaxScroll(child->maxScrollPosition()); | 1207 IntSize expectedMaxScroll(child->maxScrollPosition()); |
1144 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted); | 1208 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted); |
1145 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | 1209 m_hostImpl->scrollBy(IntPoint(), scrollDelta); |
1146 m_hostImpl->scrollEnd(); | 1210 m_hostImpl->scrollEnd(); |
1147 | 1211 |
1148 float pageScale = 2; | 1212 float pageScale = 2; |
1149 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale); | 1213 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale); |
1150 | 1214 |
1215 m_hostImpl->updateRootScrollLayerImplTransform(); | |
1216 | |
1151 // The scale should apply to the scroll delta. | 1217 // The scale should apply to the scroll delta. |
1152 expectedScrollDelta.scale(pageScale); | 1218 expectedScrollDelta.scale(pageScale); |
1153 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); | 1219 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); |
1154 expectContains(*scrollInfo.get(), scrollLayerId, expectedScrollDelta); | 1220 expectContains(*scrollInfo.get(), scrollLayerId, expectedScrollDelta); |
1155 | 1221 |
1156 // The scroll range should not have changed. | 1222 // The scroll range should not have changed. |
1157 EXPECT_EQ(child->maxScrollPosition(), expectedMaxScroll); | 1223 EXPECT_EQ(child->maxScrollPosition(), expectedMaxScroll); |
1158 | 1224 |
1159 // The page scale delta remains constant because the impl thread did not sca le. | 1225 // The page scale delta remains constant because the impl thread did not sca le. |
1160 EXPECT_EQ(child->pageScaleDelta(), 1); | 1226 WebTransformationMatrix identityTransform; |
1227 EXPECT_EQ(child->implTransform(), WebTransformationMatrix()); | |
1161 } | 1228 } |
1162 | 1229 |
1163 TEST_F(CCLayerTreeHostImplTest, scrollChildBeyondLimit) | 1230 TEST_F(CCLayerTreeHostImplTest, scrollChildBeyondLimit) |
1164 { | 1231 { |
1165 // Scroll a child layer beyond its maximum scroll range and make sure the | 1232 // Scroll a child layer beyond its maximum scroll range and make sure the |
1166 // parent layer is scrolled on the axis on which the child was unable to | 1233 // parent layer is scrolled on the axis on which the child was unable to |
1167 // scroll. | 1234 // scroll. |
1168 IntSize surfaceSize(10, 10); | 1235 IntSize surfaceSize(10, 10); |
1169 OwnPtr<CCLayerImpl> root = createScrollableLayer(1, surfaceSize); | 1236 OwnPtr<CCLayerImpl> root = createScrollableLayer(1, surfaceSize); |
1170 | 1237 |
(...skipping 3105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4276 while (removeRenderPassesCases[testCaseIndex].name) { | 4343 while (removeRenderPassesCases[testCaseIndex].name) { |
4277 RenderPassRemovalTestData testData; | 4344 RenderPassRemovalTestData testData; |
4278 configureRenderPassTestData(removeRenderPassesCases[testCaseIndex].initS cript, testData, renderer.get()); | 4345 configureRenderPassTestData(removeRenderPassesCases[testCaseIndex].initS cript, testData, renderer.get()); |
4279 CCLayerTreeHostImpl::removeRenderPasses(CCLayerTreeHostImpl::CullRenderP assesWithCachedTextures(*renderer), testData); | 4346 CCLayerTreeHostImpl::removeRenderPasses(CCLayerTreeHostImpl::CullRenderP assesWithCachedTextures(*renderer), testData); |
4280 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat a); | 4347 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat a); |
4281 testCaseIndex++; | 4348 testCaseIndex++; |
4282 } | 4349 } |
4283 } | 4350 } |
4284 | 4351 |
4285 } // namespace | 4352 } // namespace |
OLD | NEW |