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 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 m_hostImpl->resetContentsTexturesPurged(); | 240 m_hostImpl->resetContentsTexturesPurged(); |
241 EXPECT_TRUE(m_hostImpl->canDraw()); | 241 EXPECT_TRUE(m_hostImpl->canDraw()); |
242 EXPECT_TRUE(m_onCanDrawStateChangedCalled); | 242 EXPECT_TRUE(m_onCanDrawStateChangedCalled); |
243 m_onCanDrawStateChangedCalled = false; | 243 m_onCanDrawStateChangedCalled = false; |
244 } | 244 } |
245 | 245 |
246 TEST_P(CCLayerTreeHostImplTest, scrollDeltaNoLayers) | 246 TEST_P(CCLayerTreeHostImplTest, scrollDeltaNoLayers) |
247 { | 247 { |
248 ASSERT_FALSE(m_hostImpl->rootLayer()); | 248 ASSERT_FALSE(m_hostImpl->rootLayer()); |
249 | 249 |
250 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); | 250 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); |
251 ASSERT_EQ(scrollInfo->scrolls.size(), 0u); | 251 ASSERT_EQ(scrollInfo->scrolls.size(), 0u); |
252 } | 252 } |
253 | 253 |
254 TEST_P(CCLayerTreeHostImplTest, scrollDeltaTreeButNoChanges) | 254 TEST_P(CCLayerTreeHostImplTest, scrollDeltaTreeButNoChanges) |
255 { | 255 { |
256 { | 256 { |
257 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); | 257 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); |
258 root->addChild(CCLayerImpl::create(2)); | 258 root->addChild(CCLayerImpl::create(2)); |
259 root->addChild(CCLayerImpl::create(3)); | 259 root->addChild(CCLayerImpl::create(3)); |
260 root->children()[1]->addChild(CCLayerImpl::create(4)); | 260 root->children()[1]->addChild(CCLayerImpl::create(4)); |
261 root->children()[1]->addChild(CCLayerImpl::create(5)); | 261 root->children()[1]->addChild(CCLayerImpl::create(5)); |
262 root->children()[1]->children()[0]->addChild(CCLayerImpl::create(6)); | 262 root->children()[1]->children()[0]->addChild(CCLayerImpl::create(6)); |
263 m_hostImpl->setRootLayer(root.release()); | 263 m_hostImpl->setRootLayer(root.release()); |
264 } | 264 } |
265 CCLayerImpl* root = m_hostImpl->rootLayer(); | 265 CCLayerImpl* root = m_hostImpl->rootLayer(); |
266 | 266 |
267 expectClearedScrollDeltasRecursive(root); | 267 expectClearedScrollDeltasRecursive(root); |
268 | 268 |
269 OwnPtr<CCScrollAndScaleSet> scrollInfo; | 269 scoped_ptr<CCScrollAndScaleSet> scrollInfo; |
270 | 270 |
271 scrollInfo = m_hostImpl->processScrollDeltas(); | 271 scrollInfo = m_hostImpl->processScrollDeltas(); |
272 ASSERT_EQ(scrollInfo->scrolls.size(), 0u); | 272 ASSERT_EQ(scrollInfo->scrolls.size(), 0u); |
273 expectClearedScrollDeltasRecursive(root); | 273 expectClearedScrollDeltasRecursive(root); |
274 | 274 |
275 scrollInfo = m_hostImpl->processScrollDeltas(); | 275 scrollInfo = m_hostImpl->processScrollDeltas(); |
276 ASSERT_EQ(scrollInfo->scrolls.size(), 0u); | 276 ASSERT_EQ(scrollInfo->scrolls.size(), 0u); |
277 expectClearedScrollDeltasRecursive(root); | 277 expectClearedScrollDeltasRecursive(root); |
278 } | 278 } |
279 | 279 |
280 TEST_P(CCLayerTreeHostImplTest, scrollDeltaRepeatedScrolls) | 280 TEST_P(CCLayerTreeHostImplTest, scrollDeltaRepeatedScrolls) |
281 { | 281 { |
282 IntPoint scrollPosition(20, 30); | 282 IntPoint scrollPosition(20, 30); |
283 IntSize scrollDelta(11, -15); | 283 IntSize scrollDelta(11, -15); |
284 { | 284 { |
285 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); | 285 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); |
286 root->setScrollPosition(scrollPosition); | 286 root->setScrollPosition(scrollPosition); |
287 root->setScrollable(true); | 287 root->setScrollable(true); |
288 root->setMaxScrollPosition(IntSize(100, 100)); | 288 root->setMaxScrollPosition(IntSize(100, 100)); |
289 root->scrollBy(scrollDelta); | 289 root->scrollBy(scrollDelta); |
290 m_hostImpl->setRootLayer(root.release()); | 290 m_hostImpl->setRootLayer(root.release()); |
291 } | 291 } |
292 CCLayerImpl* root = m_hostImpl->rootLayer(); | 292 CCLayerImpl* root = m_hostImpl->rootLayer(); |
293 | 293 |
294 OwnPtr<CCScrollAndScaleSet> scrollInfo; | 294 scoped_ptr<CCScrollAndScaleSet> scrollInfo; |
295 | 295 |
296 scrollInfo = m_hostImpl->processScrollDeltas(); | 296 scrollInfo = m_hostImpl->processScrollDeltas(); |
297 ASSERT_EQ(scrollInfo->scrolls.size(), 1u); | 297 ASSERT_EQ(scrollInfo->scrolls.size(), 1u); |
298 EXPECT_EQ(root->sentScrollDelta(), scrollDelta); | 298 EXPECT_EQ(root->sentScrollDelta(), scrollDelta); |
299 expectContains(*scrollInfo, root->id(), scrollDelta); | 299 expectContains(*scrollInfo, root->id(), scrollDelta); |
300 | 300 |
301 IntSize scrollDelta2(-5, 27); | 301 IntSize scrollDelta2(-5, 27); |
302 root->scrollBy(scrollDelta2); | 302 root->scrollBy(scrollDelta2); |
303 scrollInfo = m_hostImpl->processScrollDeltas(); | 303 scrollInfo = m_hostImpl->processScrollDeltas(); |
304 ASSERT_EQ(scrollInfo->scrolls.size(), 1u); | 304 ASSERT_EQ(scrollInfo->scrolls.size(), 1u); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
355 // We should not crash if the tree is replaced while we are scrolling. | 355 // We should not crash if the tree is replaced while we are scrolling. |
356 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::Whee
l), CCInputHandlerClient::ScrollStarted); | 356 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::Whee
l), CCInputHandlerClient::ScrollStarted); |
357 m_hostImpl->detachLayerTree(); | 357 m_hostImpl->detachLayerTree(); |
358 | 358 |
359 setupScrollAndContentsLayers(IntSize(100, 100)); | 359 setupScrollAndContentsLayers(IntSize(100, 100)); |
360 | 360 |
361 // We should still be scrolling, because the scrolled layer also exists in t
he new tree. | 361 // We should still be scrolling, because the scrolled layer also exists in t
he new tree. |
362 IntSize scrollDelta(0, 10); | 362 IntSize scrollDelta(0, 10); |
363 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | 363 m_hostImpl->scrollBy(IntPoint(), scrollDelta); |
364 m_hostImpl->scrollEnd(); | 364 m_hostImpl->scrollEnd(); |
365 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); | 365 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); |
366 expectContains(*scrollInfo, scrollLayerId, scrollDelta); | 366 expectContains(*scrollInfo, scrollLayerId, scrollDelta); |
367 } | 367 } |
368 | 368 |
369 TEST_P(CCLayerTreeHostImplTest, clearRootRenderSurfaceAndScroll) | 369 TEST_P(CCLayerTreeHostImplTest, clearRootRenderSurfaceAndScroll) |
370 { | 370 { |
371 setupScrollAndContentsLayers(IntSize(100, 100)); | 371 setupScrollAndContentsLayers(IntSize(100, 100)); |
372 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); | 372 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); |
373 initializeRendererAndDrawFrame(); | 373 initializeRendererAndDrawFrame(); |
374 | 374 |
375 // We should be able to scroll even if the root layer loses its render surfa
ce after the most | 375 // We should be able to scroll even if the root layer loses its render surfa
ce after the most |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
488 scrollLayer->setImplTransform(identityScaleTransform); | 488 scrollLayer->setImplTransform(identityScaleTransform); |
489 scrollLayer->setScrollDelta(IntSize()); | 489 scrollLayer->setScrollDelta(IntSize()); |
490 | 490 |
491 float pageScaleDelta = 2; | 491 float pageScaleDelta = 2; |
492 m_hostImpl->pinchGestureBegin(); | 492 m_hostImpl->pinchGestureBegin(); |
493 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(50, 50)); | 493 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(50, 50)); |
494 m_hostImpl->pinchGestureEnd(); | 494 m_hostImpl->pinchGestureEnd(); |
495 EXPECT_TRUE(m_didRequestRedraw); | 495 EXPECT_TRUE(m_didRequestRedraw); |
496 EXPECT_TRUE(m_didRequestCommit); | 496 EXPECT_TRUE(m_didRequestCommit); |
497 | 497 |
498 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 498 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
499 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); | 499 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); |
500 | 500 |
501 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), IntSize(50, 50))
; | 501 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), IntSize(50, 50))
; |
502 } | 502 } |
503 | 503 |
504 // Scrolling after a pinch gesture should always be in local space. The scr
oll deltas do not | 504 // Scrolling after a pinch gesture should always be in local space. The scr
oll deltas do not |
505 // have the page scale factor applied. | 505 // have the page scale factor applied. |
506 { | 506 { |
507 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 507 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
508 scrollLayer->setImplTransform(identityScaleTransform); | 508 scrollLayer->setImplTransform(identityScaleTransform); |
509 scrollLayer->setScrollDelta(IntSize()); | 509 scrollLayer->setScrollDelta(IntSize()); |
510 | 510 |
511 float pageScaleDelta = 2; | 511 float pageScaleDelta = 2; |
512 m_hostImpl->pinchGestureBegin(); | 512 m_hostImpl->pinchGestureBegin(); |
513 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(0, 0)); | 513 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(0, 0)); |
514 m_hostImpl->pinchGestureEnd(); | 514 m_hostImpl->pinchGestureEnd(); |
515 | 515 |
516 IntSize scrollDelta(0, 10); | 516 IntSize scrollDelta(0, 10); |
517 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::
Wheel), CCInputHandlerClient::ScrollStarted); | 517 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::
Wheel), CCInputHandlerClient::ScrollStarted); |
518 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | 518 m_hostImpl->scrollBy(IntPoint(), scrollDelta); |
519 m_hostImpl->scrollEnd(); | 519 m_hostImpl->scrollEnd(); |
520 | 520 |
521 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 521 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
522 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), scrollD
elta); | 522 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), scrollD
elta); |
523 } | 523 } |
524 } | 524 } |
525 | 525 |
526 TEST_P(CCLayerTreeHostImplTest, pinchGesture) | 526 TEST_P(CCLayerTreeHostImplTest, pinchGesture) |
527 { | 527 { |
528 setupScrollAndContentsLayers(IntSize(100, 100)); | 528 setupScrollAndContentsLayers(IntSize(100, 100)); |
529 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); | 529 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); |
530 initializeRendererAndDrawFrame(); | 530 initializeRendererAndDrawFrame(); |
531 | 531 |
(...skipping 10 matching lines...) Expand all Loading... |
542 scrollLayer->setImplTransform(identityScaleTransform); | 542 scrollLayer->setImplTransform(identityScaleTransform); |
543 scrollLayer->setScrollDelta(IntSize()); | 543 scrollLayer->setScrollDelta(IntSize()); |
544 | 544 |
545 float pageScaleDelta = 2; | 545 float pageScaleDelta = 2; |
546 m_hostImpl->pinchGestureBegin(); | 546 m_hostImpl->pinchGestureBegin(); |
547 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(50, 50)); | 547 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(50, 50)); |
548 m_hostImpl->pinchGestureEnd(); | 548 m_hostImpl->pinchGestureEnd(); |
549 EXPECT_TRUE(m_didRequestRedraw); | 549 EXPECT_TRUE(m_didRequestRedraw); |
550 EXPECT_TRUE(m_didRequestCommit); | 550 EXPECT_TRUE(m_didRequestCommit); |
551 | 551 |
552 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 552 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
553 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); | 553 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); |
554 } | 554 } |
555 | 555 |
556 // Zoom-in clamping | 556 // Zoom-in clamping |
557 { | 557 { |
558 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 558 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
559 scrollLayer->setImplTransform(identityScaleTransform); | 559 scrollLayer->setImplTransform(identityScaleTransform); |
560 scrollLayer->setScrollDelta(IntSize()); | 560 scrollLayer->setScrollDelta(IntSize()); |
561 float pageScaleDelta = 10; | 561 float pageScaleDelta = 10; |
562 | 562 |
563 m_hostImpl->pinchGestureBegin(); | 563 m_hostImpl->pinchGestureBegin(); |
564 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(50, 50)); | 564 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(50, 50)); |
565 m_hostImpl->pinchGestureEnd(); | 565 m_hostImpl->pinchGestureEnd(); |
566 | 566 |
567 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 567 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
568 EXPECT_EQ(scrollInfo->pageScaleDelta, maxPageScale); | 568 EXPECT_EQ(scrollInfo->pageScaleDelta, maxPageScale); |
569 } | 569 } |
570 | 570 |
571 // Zoom-out clamping | 571 // Zoom-out clamping |
572 { | 572 { |
573 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 573 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
574 scrollLayer->setImplTransform(identityScaleTransform); | 574 scrollLayer->setImplTransform(identityScaleTransform); |
575 scrollLayer->setScrollDelta(IntSize()); | 575 scrollLayer->setScrollDelta(IntSize()); |
576 scrollLayer->setScrollPosition(IntPoint(50, 50)); | 576 scrollLayer->setScrollPosition(IntPoint(50, 50)); |
577 | 577 |
578 float pageScaleDelta = 0.1f; | 578 float pageScaleDelta = 0.1f; |
579 m_hostImpl->pinchGestureBegin(); | 579 m_hostImpl->pinchGestureBegin(); |
580 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(0, 0)); | 580 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(0, 0)); |
581 m_hostImpl->pinchGestureEnd(); | 581 m_hostImpl->pinchGestureEnd(); |
582 | 582 |
583 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 583 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
584 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); | 584 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); |
585 | 585 |
586 if (!CCSettings::pageScalePinchZoomEnabled()) { | 586 if (!CCSettings::pageScalePinchZoomEnabled()) { |
587 // Pushed to (0,0) via clamping against contents layer size. | 587 // Pushed to (0,0) via clamping against contents layer size. |
588 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); | 588 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); |
589 } else { | 589 } else { |
590 EXPECT_TRUE(scrollInfo->scrolls.isEmpty()); | 590 EXPECT_TRUE(scrollInfo->scrolls.isEmpty()); |
591 } | 591 } |
592 } | 592 } |
593 | 593 |
594 // Two-finger panning | 594 // Two-finger panning |
595 { | 595 { |
596 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 596 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
597 scrollLayer->setImplTransform(identityScaleTransform); | 597 scrollLayer->setImplTransform(identityScaleTransform); |
598 scrollLayer->setScrollDelta(IntSize()); | 598 scrollLayer->setScrollDelta(IntSize()); |
599 scrollLayer->setScrollPosition(IntPoint(20, 20)); | 599 scrollLayer->setScrollPosition(IntPoint(20, 20)); |
600 | 600 |
601 float pageScaleDelta = 1; | 601 float pageScaleDelta = 1; |
602 m_hostImpl->pinchGestureBegin(); | 602 m_hostImpl->pinchGestureBegin(); |
603 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(10, 10)); | 603 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(10, 10)); |
604 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(20, 20)); | 604 m_hostImpl->pinchGestureUpdate(pageScaleDelta, IntPoint(20, 20)); |
605 m_hostImpl->pinchGestureEnd(); | 605 m_hostImpl->pinchGestureEnd(); |
606 | 606 |
607 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 607 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
608 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); | 608 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); |
609 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-10, -10)); | 609 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-10, -10)); |
610 } | 610 } |
611 } | 611 } |
612 | 612 |
613 TEST_P(CCLayerTreeHostImplTest, pageScaleAnimation) | 613 TEST_P(CCLayerTreeHostImplTest, pageScaleAnimation) |
614 { | 614 { |
615 setupScrollAndContentsLayers(IntSize(100, 100)); | 615 setupScrollAndContentsLayers(IntSize(100, 100)); |
616 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); | 616 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); |
617 initializeRendererAndDrawFrame(); | 617 initializeRendererAndDrawFrame(); |
(...skipping 14 matching lines...) Expand all Loading... |
632 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 632 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
633 scrollLayer->setImplTransform(identityScaleTransform); | 633 scrollLayer->setImplTransform(identityScaleTransform); |
634 scrollLayer->setScrollPosition(IntPoint(50, 50)); | 634 scrollLayer->setScrollPosition(IntPoint(50, 50)); |
635 | 635 |
636 m_hostImpl->startPageScaleAnimation(IntSize(0, 0), false, 2, startTime,
duration); | 636 m_hostImpl->startPageScaleAnimation(IntSize(0, 0), false, 2, startTime,
duration); |
637 m_hostImpl->animate(halfwayThroughAnimation, halfwayThroughAnimation); | 637 m_hostImpl->animate(halfwayThroughAnimation, halfwayThroughAnimation); |
638 EXPECT_TRUE(m_didRequestRedraw); | 638 EXPECT_TRUE(m_didRequestRedraw); |
639 m_hostImpl->animate(endTime, endTime); | 639 m_hostImpl->animate(endTime, endTime); |
640 EXPECT_TRUE(m_didRequestCommit); | 640 EXPECT_TRUE(m_didRequestCommit); |
641 | 641 |
642 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 642 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
643 EXPECT_EQ(scrollInfo->pageScaleDelta, 2); | 643 EXPECT_EQ(scrollInfo->pageScaleDelta, 2); |
644 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); | 644 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); |
645 } | 645 } |
646 | 646 |
647 // Anchor zoom-out | 647 // Anchor zoom-out |
648 { | 648 { |
649 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 649 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
650 scrollLayer->setImplTransform(identityScaleTransform); | 650 scrollLayer->setImplTransform(identityScaleTransform); |
651 scrollLayer->setScrollPosition(IntPoint(50, 50)); | 651 scrollLayer->setScrollPosition(IntPoint(50, 50)); |
652 | 652 |
653 m_hostImpl->startPageScaleAnimation(IntSize(25, 25), true, minPageScale,
startTime, duration); | 653 m_hostImpl->startPageScaleAnimation(IntSize(25, 25), true, minPageScale,
startTime, duration); |
654 m_hostImpl->animate(endTime, endTime); | 654 m_hostImpl->animate(endTime, endTime); |
655 EXPECT_TRUE(m_didRequestRedraw); | 655 EXPECT_TRUE(m_didRequestRedraw); |
656 EXPECT_TRUE(m_didRequestCommit); | 656 EXPECT_TRUE(m_didRequestCommit); |
657 | 657 |
658 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 658 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
659 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); | 659 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); |
660 // Pushed to (0,0) via clamping against contents layer size. | 660 // Pushed to (0,0) via clamping against contents layer size. |
661 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); | 661 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); |
662 } | 662 } |
663 } | 663 } |
664 | 664 |
665 TEST_P(CCLayerTreeHostImplTest, inhibitScrollAndPageScaleUpdatesWhilePinchZoomin
g) | 665 TEST_P(CCLayerTreeHostImplTest, inhibitScrollAndPageScaleUpdatesWhilePinchZoomin
g) |
666 { | 666 { |
667 setupScrollAndContentsLayers(IntSize(100, 100)); | 667 setupScrollAndContentsLayers(IntSize(100, 100)); |
668 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); | 668 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); |
669 initializeRendererAndDrawFrame(); | 669 initializeRendererAndDrawFrame(); |
670 | 670 |
671 CCLayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); | 671 CCLayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); |
672 ASSERT(scrollLayer); | 672 ASSERT(scrollLayer); |
673 | 673 |
674 const float minPageScale = CCSettings::pageScalePinchZoomEnabled() ? 1 : 0.5
; | 674 const float minPageScale = CCSettings::pageScalePinchZoomEnabled() ? 1 : 0.5
; |
675 const float maxPageScale = 4; | 675 const float maxPageScale = 4; |
676 | 676 |
677 // Pinch zoom in. | 677 // Pinch zoom in. |
678 { | 678 { |
679 // Start a pinch in gesture at the bottom right corner of the viewport. | 679 // Start a pinch in gesture at the bottom right corner of the viewport. |
680 const float zoomInDelta = 2; | 680 const float zoomInDelta = 2; |
681 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 681 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
682 m_hostImpl->pinchGestureBegin(); | 682 m_hostImpl->pinchGestureBegin(); |
683 m_hostImpl->pinchGestureUpdate(zoomInDelta, IntPoint(50, 50)); | 683 m_hostImpl->pinchGestureUpdate(zoomInDelta, IntPoint(50, 50)); |
684 | 684 |
685 // Because we are pinch zooming in, we shouldn't get any scroll or page | 685 // Because we are pinch zooming in, we shouldn't get any scroll or page |
686 // scale deltas. | 686 // scale deltas. |
687 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 687 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
688 EXPECT_EQ(scrollInfo->pageScaleDelta, 1); | 688 EXPECT_EQ(scrollInfo->pageScaleDelta, 1); |
689 EXPECT_EQ(scrollInfo->scrolls.size(), 0u); | 689 EXPECT_EQ(scrollInfo->scrolls.size(), 0u); |
690 | 690 |
691 // Once the gesture ends, we get the final scroll and page scale values. | 691 // Once the gesture ends, we get the final scroll and page scale values. |
692 m_hostImpl->pinchGestureEnd(); | 692 m_hostImpl->pinchGestureEnd(); |
693 scrollInfo = m_hostImpl->processScrollDeltas(); | 693 scrollInfo = m_hostImpl->processScrollDeltas(); |
694 EXPECT_EQ(scrollInfo->pageScaleDelta, zoomInDelta); | 694 EXPECT_EQ(scrollInfo->pageScaleDelta, zoomInDelta); |
695 if (!CCSettings::pageScalePinchZoomEnabled()) { | 695 if (!CCSettings::pageScalePinchZoomEnabled()) { |
696 expectContains(*scrollInfo, scrollLayer->id(), IntSize(25, 25)); | 696 expectContains(*scrollInfo, scrollLayer->id(), IntSize(25, 25)); |
697 } else { | 697 } else { |
698 EXPECT_TRUE(scrollInfo->scrolls.isEmpty()); | 698 EXPECT_TRUE(scrollInfo->scrolls.isEmpty()); |
699 } | 699 } |
700 } | 700 } |
701 | 701 |
702 // Pinch zoom out. | 702 // Pinch zoom out. |
703 { | 703 { |
704 // Start a pinch out gesture at the bottom right corner of the viewport. | 704 // Start a pinch out gesture at the bottom right corner of the viewport. |
705 const float zoomOutDelta = 0.75; | 705 const float zoomOutDelta = 0.75; |
706 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 706 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
707 m_hostImpl->pinchGestureBegin(); | 707 m_hostImpl->pinchGestureBegin(); |
708 m_hostImpl->pinchGestureUpdate(zoomOutDelta, IntPoint(50, 50)); | 708 m_hostImpl->pinchGestureUpdate(zoomOutDelta, IntPoint(50, 50)); |
709 | 709 |
710 // Since we are pinch zooming out, we should get an update to zoom all | 710 // Since we are pinch zooming out, we should get an update to zoom all |
711 // the way out to the minimum page scale. | 711 // the way out to the minimum page scale. |
712 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 712 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
713 if (!CCSettings::pageScalePinchZoomEnabled()) { | 713 if (!CCSettings::pageScalePinchZoomEnabled()) { |
714 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); | 714 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); |
715 expectContains(*scrollInfo, scrollLayer->id(), IntSize(0, 0)); | 715 expectContains(*scrollInfo, scrollLayer->id(), IntSize(0, 0)); |
716 } else { | 716 } else { |
717 EXPECT_EQ(scrollInfo->pageScaleDelta, 1); | 717 EXPECT_EQ(scrollInfo->pageScaleDelta, 1); |
718 EXPECT_TRUE(scrollInfo->scrolls.isEmpty()); | 718 EXPECT_TRUE(scrollInfo->scrolls.isEmpty()); |
719 } | 719 } |
720 | 720 |
721 // Once the gesture ends, we get the final scroll and page scale values. | 721 // Once the gesture ends, we get the final scroll and page scale values. |
722 m_hostImpl->pinchGestureEnd(); | 722 m_hostImpl->pinchGestureEnd(); |
(...skipping 25 matching lines...) Expand all Loading... |
748 const double endTime = startTime + duration; | 748 const double endTime = startTime + duration; |
749 | 749 |
750 // Start a page scale animation. | 750 // Start a page scale animation. |
751 const float pageScaleDelta = 2; | 751 const float pageScaleDelta = 2; |
752 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 752 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
753 m_hostImpl->startPageScaleAnimation(IntSize(50, 50), false, pageScaleDelta,
startTime, duration); | 753 m_hostImpl->startPageScaleAnimation(IntSize(50, 50), false, pageScaleDelta,
startTime, duration); |
754 | 754 |
755 // We should immediately get the final zoom and scroll values for the | 755 // We should immediately get the final zoom and scroll values for the |
756 // animation. | 756 // animation. |
757 m_hostImpl->animate(halfwayThroughAnimation, halfwayThroughAnimation); | 757 m_hostImpl->animate(halfwayThroughAnimation, halfwayThroughAnimation); |
758 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); | 758 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); |
759 | 759 |
760 if (!CCSettings::pageScalePinchZoomEnabled()) { | 760 if (!CCSettings::pageScalePinchZoomEnabled()) { |
761 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); | 761 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); |
762 expectContains(*scrollInfo, scrollLayer->id(), IntSize(25, 25)); | 762 expectContains(*scrollInfo, scrollLayer->id(), IntSize(25, 25)); |
763 } else { | 763 } else { |
764 EXPECT_EQ(scrollInfo->pageScaleDelta, 1); | 764 EXPECT_EQ(scrollInfo->pageScaleDelta, 1); |
765 EXPECT_TRUE(scrollInfo->scrolls.isEmpty()); | 765 EXPECT_TRUE(scrollInfo->scrolls.isEmpty()); |
766 } | 766 } |
767 | 767 |
768 // Scrolling during the animation is ignored. | 768 // Scrolling during the animation is ignored. |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1135 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | 1135 m_hostImpl->scrollBy(IntPoint(), scrollDelta); |
1136 m_hostImpl->scrollEnd(); | 1136 m_hostImpl->scrollEnd(); |
1137 | 1137 |
1138 // Set new page scale from main thread. | 1138 // Set new page scale from main thread. |
1139 m_hostImpl->setPageScaleFactorAndLimits(pageScale, pageScale, pageScale); | 1139 m_hostImpl->setPageScaleFactorAndLimits(pageScale, pageScale, pageScale); |
1140 | 1140 |
1141 if (!CCSettings::pageScalePinchZoomEnabled()) { | 1141 if (!CCSettings::pageScalePinchZoomEnabled()) { |
1142 // The scale should apply to the scroll delta. | 1142 // The scale should apply to the scroll delta. |
1143 expectedScrollDelta.scale(pageScale); | 1143 expectedScrollDelta.scale(pageScale); |
1144 } | 1144 } |
1145 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); | 1145 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); |
1146 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 1146 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
1147 | 1147 |
1148 // The scroll range should also have been updated. | 1148 // The scroll range should also have been updated. |
1149 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), expectedMaxScroll); | 1149 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), expectedMaxScroll); |
1150 | 1150 |
1151 // The page scale delta remains constant because the impl thread did not sca
le. | 1151 // The page scale delta remains constant because the impl thread did not sca
le. |
1152 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), WebTransformationMatrix(
)); | 1152 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), WebTransformationMatrix(
)); |
1153 } | 1153 } |
1154 | 1154 |
1155 TEST_P(CCLayerTreeHostImplTest, scrollRootAndChangePageScaleOnImplThread) | 1155 TEST_P(CCLayerTreeHostImplTest, scrollRootAndChangePageScaleOnImplThread) |
(...skipping 13 matching lines...) Expand all Loading... |
1169 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | 1169 m_hostImpl->scrollBy(IntPoint(), scrollDelta); |
1170 m_hostImpl->scrollEnd(); | 1170 m_hostImpl->scrollEnd(); |
1171 | 1171 |
1172 // Set new page scale on impl thread by pinching. | 1172 // Set new page scale on impl thread by pinching. |
1173 m_hostImpl->pinchGestureBegin(); | 1173 m_hostImpl->pinchGestureBegin(); |
1174 m_hostImpl->pinchGestureUpdate(pageScale, IntPoint()); | 1174 m_hostImpl->pinchGestureUpdate(pageScale, IntPoint()); |
1175 m_hostImpl->pinchGestureEnd(); | 1175 m_hostImpl->pinchGestureEnd(); |
1176 m_hostImpl->updateRootScrollLayerImplTransform(); | 1176 m_hostImpl->updateRootScrollLayerImplTransform(); |
1177 | 1177 |
1178 // The scroll delta is not scaled because the main thread did not scale. | 1178 // The scroll delta is not scaled because the main thread did not scale. |
1179 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); | 1179 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); |
1180 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 1180 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
1181 | 1181 |
1182 // The scroll range should also have been updated. | 1182 // The scroll range should also have been updated. |
1183 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), expectedMaxScroll); | 1183 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), expectedMaxScroll); |
1184 | 1184 |
1185 // The page scale delta should match the new scale on the impl side. | 1185 // The page scale delta should match the new scale on the impl side. |
1186 WebTransformationMatrix expectedScale; | 1186 WebTransformationMatrix expectedScale; |
1187 expectedScale.scale(pageScale); | 1187 expectedScale.scale(pageScale); |
1188 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedScale); | 1188 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedScale); |
1189 } | 1189 } |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1258 | 1258 |
1259 float pageScale = 2; | 1259 float pageScale = 2; |
1260 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale); | 1260 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale); |
1261 | 1261 |
1262 m_hostImpl->updateRootScrollLayerImplTransform(); | 1262 m_hostImpl->updateRootScrollLayerImplTransform(); |
1263 | 1263 |
1264 if (!CCSettings::pageScalePinchZoomEnabled()) { | 1264 if (!CCSettings::pageScalePinchZoomEnabled()) { |
1265 // The scale should apply to the scroll delta. | 1265 // The scale should apply to the scroll delta. |
1266 expectedScrollDelta.scale(pageScale); | 1266 expectedScrollDelta.scale(pageScale); |
1267 } | 1267 } |
1268 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); | 1268 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); |
1269 expectContains(*scrollInfo.get(), scrollLayerId, expectedScrollDelta); | 1269 expectContains(*scrollInfo.get(), scrollLayerId, expectedScrollDelta); |
1270 | 1270 |
1271 // The scroll range should not have changed. | 1271 // The scroll range should not have changed. |
1272 EXPECT_EQ(child->maxScrollPosition(), expectedMaxScroll); | 1272 EXPECT_EQ(child->maxScrollPosition(), expectedMaxScroll); |
1273 | 1273 |
1274 // The page scale delta remains constant because the impl thread did not sca
le. | 1274 // The page scale delta remains constant because the impl thread did not sca
le. |
1275 WebTransformationMatrix identityTransform; | 1275 WebTransformationMatrix identityTransform; |
1276 EXPECT_EQ(child->implTransform(), WebTransformationMatrix()); | 1276 EXPECT_EQ(child->implTransform(), WebTransformationMatrix()); |
1277 } | 1277 } |
1278 | 1278 |
(...skipping 15 matching lines...) Expand all Loading... |
1294 root->addChild(child.release()); | 1294 root->addChild(child.release()); |
1295 m_hostImpl->setRootLayer(root.release()); | 1295 m_hostImpl->setRootLayer(root.release()); |
1296 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1296 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1297 initializeRendererAndDrawFrame(); | 1297 initializeRendererAndDrawFrame(); |
1298 { | 1298 { |
1299 IntSize scrollDelta(-8, -7); | 1299 IntSize scrollDelta(-8, -7); |
1300 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::
Wheel), CCInputHandlerClient::ScrollStarted); | 1300 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::
Wheel), CCInputHandlerClient::ScrollStarted); |
1301 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | 1301 m_hostImpl->scrollBy(IntPoint(), scrollDelta); |
1302 m_hostImpl->scrollEnd(); | 1302 m_hostImpl->scrollEnd(); |
1303 | 1303 |
1304 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 1304 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
1305 | 1305 |
1306 // The grand child should have scrolled up to its limit. | 1306 // The grand child should have scrolled up to its limit. |
1307 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0]; | 1307 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0]; |
1308 CCLayerImpl* grandChild = child->children()[0]; | 1308 CCLayerImpl* grandChild = child->children()[0]; |
1309 expectContains(*scrollInfo.get(), grandChild->id(), IntSize(0, -5)); | 1309 expectContains(*scrollInfo.get(), grandChild->id(), IntSize(0, -5)); |
1310 | 1310 |
1311 // The child should have only scrolled on the other axis. | 1311 // The child should have only scrolled on the other axis. |
1312 expectContains(*scrollInfo.get(), child->id(), IntSize(-3, 0)); | 1312 expectContains(*scrollInfo.get(), child->id(), IntSize(-3, 0)); |
1313 } | 1313 } |
1314 } | 1314 } |
(...skipping 11 matching lines...) Expand all Loading... |
1326 | 1326 |
1327 m_hostImpl->setRootLayer(root.release()); | 1327 m_hostImpl->setRootLayer(root.release()); |
1328 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1328 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1329 initializeRendererAndDrawFrame(); | 1329 initializeRendererAndDrawFrame(); |
1330 { | 1330 { |
1331 IntSize scrollDelta(0, 4); | 1331 IntSize scrollDelta(0, 4); |
1332 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::
Wheel), CCInputHandlerClient::ScrollStarted); | 1332 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::
Wheel), CCInputHandlerClient::ScrollStarted); |
1333 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | 1333 m_hostImpl->scrollBy(IntPoint(), scrollDelta); |
1334 m_hostImpl->scrollEnd(); | 1334 m_hostImpl->scrollEnd(); |
1335 | 1335 |
1336 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 1336 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
1337 | 1337 |
1338 // Only the root should have scrolled. | 1338 // Only the root should have scrolled. |
1339 ASSERT_EQ(scrollInfo->scrolls.size(), 1u); | 1339 ASSERT_EQ(scrollInfo->scrolls.size(), 1u); |
1340 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), scrollD
elta); | 1340 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), scrollD
elta); |
1341 } | 1341 } |
1342 } | 1342 } |
1343 | 1343 |
1344 TEST_P(CCLayerTreeHostImplTest, scrollBeforeRedraw) | 1344 TEST_P(CCLayerTreeHostImplTest, scrollBeforeRedraw) |
1345 { | 1345 { |
1346 IntSize surfaceSize(10, 10); | 1346 IntSize surfaceSize(10, 10); |
(...skipping 22 matching lines...) Expand all Loading... |
1369 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1369 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1370 initializeRendererAndDrawFrame(); | 1370 initializeRendererAndDrawFrame(); |
1371 | 1371 |
1372 // Scroll to the right in screen coordinates with a gesture. | 1372 // Scroll to the right in screen coordinates with a gesture. |
1373 IntSize gestureScrollDelta(10, 0); | 1373 IntSize gestureScrollDelta(10, 0); |
1374 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::Gest
ure), CCInputHandlerClient::ScrollStarted); | 1374 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::Gest
ure), CCInputHandlerClient::ScrollStarted); |
1375 m_hostImpl->scrollBy(IntPoint(), gestureScrollDelta); | 1375 m_hostImpl->scrollBy(IntPoint(), gestureScrollDelta); |
1376 m_hostImpl->scrollEnd(); | 1376 m_hostImpl->scrollEnd(); |
1377 | 1377 |
1378 // The layer should have scrolled down in its local coordinates. | 1378 // The layer should have scrolled down in its local coordinates. |
1379 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); | 1379 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); |
1380 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), IntSize(0,
gestureScrollDelta.width())); | 1380 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), IntSize(0,
gestureScrollDelta.width())); |
1381 | 1381 |
1382 // Reset and scroll down with the wheel. | 1382 // Reset and scroll down with the wheel. |
1383 m_hostImpl->rootLayer()->setScrollDelta(FloatSize()); | 1383 m_hostImpl->rootLayer()->setScrollDelta(FloatSize()); |
1384 IntSize wheelScrollDelta(0, 10); | 1384 IntSize wheelScrollDelta(0, 10); |
1385 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::Whee
l), CCInputHandlerClient::ScrollStarted); | 1385 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::Whee
l), CCInputHandlerClient::ScrollStarted); |
1386 m_hostImpl->scrollBy(IntPoint(), wheelScrollDelta); | 1386 m_hostImpl->scrollBy(IntPoint(), wheelScrollDelta); |
1387 m_hostImpl->scrollEnd(); | 1387 m_hostImpl->scrollEnd(); |
1388 | 1388 |
1389 // The layer should have scrolled down in its local coordinates. | 1389 // The layer should have scrolled down in its local coordinates. |
(...skipping 26 matching lines...) Expand all Loading... |
1416 { | 1416 { |
1417 // Scroll down in screen coordinates with a gesture. | 1417 // Scroll down in screen coordinates with a gesture. |
1418 IntSize gestureScrollDelta(0, 10); | 1418 IntSize gestureScrollDelta(0, 10); |
1419 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::
Gesture), CCInputHandlerClient::ScrollStarted); | 1419 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::
Gesture), CCInputHandlerClient::ScrollStarted); |
1420 m_hostImpl->scrollBy(IntPoint(), gestureScrollDelta); | 1420 m_hostImpl->scrollBy(IntPoint(), gestureScrollDelta); |
1421 m_hostImpl->scrollEnd(); | 1421 m_hostImpl->scrollEnd(); |
1422 | 1422 |
1423 // The child layer should have scrolled down in its local coordinates an
amount proportional to | 1423 // The child layer should have scrolled down in its local coordinates an
amount proportional to |
1424 // the angle between it and the input scroll delta. | 1424 // the angle between it and the input scroll delta. |
1425 IntSize expectedScrollDelta(0, gestureScrollDelta.height() * cosf(deg2ra
d(childLayerAngle))); | 1425 IntSize expectedScrollDelta(0, gestureScrollDelta.height() * cosf(deg2ra
d(childLayerAngle))); |
1426 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 1426 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
1427 expectContains(*scrollInfo.get(), childLayerId, expectedScrollDelta); | 1427 expectContains(*scrollInfo.get(), childLayerId, expectedScrollDelta); |
1428 | 1428 |
1429 // The root layer should not have scrolled, because the input delta was
close to the layer's | 1429 // The root layer should not have scrolled, because the input delta was
close to the layer's |
1430 // axis of movement. | 1430 // axis of movement. |
1431 EXPECT_EQ(scrollInfo->scrolls.size(), 1u); | 1431 EXPECT_EQ(scrollInfo->scrolls.size(), 1u); |
1432 } | 1432 } |
1433 | 1433 |
1434 { | 1434 { |
1435 // Now reset and scroll the same amount horizontally. | 1435 // Now reset and scroll the same amount horizontally. |
1436 m_hostImpl->rootLayer()->children()[1]->setScrollDelta(FloatSize()); | 1436 m_hostImpl->rootLayer()->children()[1]->setScrollDelta(FloatSize()); |
1437 IntSize gestureScrollDelta(10, 0); | 1437 IntSize gestureScrollDelta(10, 0); |
1438 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::
Gesture), CCInputHandlerClient::ScrollStarted); | 1438 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::
Gesture), CCInputHandlerClient::ScrollStarted); |
1439 m_hostImpl->scrollBy(IntPoint(), gestureScrollDelta); | 1439 m_hostImpl->scrollBy(IntPoint(), gestureScrollDelta); |
1440 m_hostImpl->scrollEnd(); | 1440 m_hostImpl->scrollEnd(); |
1441 | 1441 |
1442 // The child layer should have scrolled down in its local coordinates an
amount proportional to | 1442 // The child layer should have scrolled down in its local coordinates an
amount proportional to |
1443 // the angle between it and the input scroll delta. | 1443 // the angle between it and the input scroll delta. |
1444 IntSize expectedScrollDelta(0, -gestureScrollDelta.width() * sinf(deg2ra
d(childLayerAngle))); | 1444 IntSize expectedScrollDelta(0, -gestureScrollDelta.width() * sinf(deg2ra
d(childLayerAngle))); |
1445 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 1445 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDe
ltas(); |
1446 expectContains(*scrollInfo.get(), childLayerId, expectedScrollDelta); | 1446 expectContains(*scrollInfo.get(), childLayerId, expectedScrollDelta); |
1447 | 1447 |
1448 // The root layer should have scrolled more, since the input scroll delt
a was mostly | 1448 // The root layer should have scrolled more, since the input scroll delt
a was mostly |
1449 // orthogonal to the child layer's vertical scroll axis. | 1449 // orthogonal to the child layer's vertical scroll axis. |
1450 IntSize expectedRootScrollDelta(gestureScrollDelta.width() * pow(cosf(de
g2rad(childLayerAngle)), 2), 0); | 1450 IntSize expectedRootScrollDelta(gestureScrollDelta.width() * pow(cosf(de
g2rad(childLayerAngle)), 2), 0); |
1451 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expecte
dRootScrollDelta); | 1451 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expecte
dRootScrollDelta); |
1452 } | 1452 } |
1453 } | 1453 } |
1454 | 1454 |
1455 TEST_P(CCLayerTreeHostImplTest, scrollScaledLayer) | 1455 TEST_P(CCLayerTreeHostImplTest, scrollScaledLayer) |
(...skipping 10 matching lines...) Expand all Loading... |
1466 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1466 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1467 initializeRendererAndDrawFrame(); | 1467 initializeRendererAndDrawFrame(); |
1468 | 1468 |
1469 // Scroll down in screen coordinates with a gesture. | 1469 // Scroll down in screen coordinates with a gesture. |
1470 IntSize scrollDelta(0, 10); | 1470 IntSize scrollDelta(0, 10); |
1471 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::Gest
ure), CCInputHandlerClient::ScrollStarted); | 1471 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::Gest
ure), CCInputHandlerClient::ScrollStarted); |
1472 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | 1472 m_hostImpl->scrollBy(IntPoint(), scrollDelta); |
1473 m_hostImpl->scrollEnd(); | 1473 m_hostImpl->scrollEnd(); |
1474 | 1474 |
1475 // The layer should have scrolled down in its local coordinates, but half he
amount. | 1475 // The layer should have scrolled down in its local coordinates, but half he
amount. |
1476 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); | 1476 scoped_ptr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); |
1477 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), IntSize(0,
scrollDelta.height() / scale)); | 1477 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), IntSize(0,
scrollDelta.height() / scale)); |
1478 | 1478 |
1479 // Reset and scroll down with the wheel. | 1479 // Reset and scroll down with the wheel. |
1480 m_hostImpl->rootLayer()->setScrollDelta(FloatSize()); | 1480 m_hostImpl->rootLayer()->setScrollDelta(FloatSize()); |
1481 IntSize wheelScrollDelta(0, 10); | 1481 IntSize wheelScrollDelta(0, 10); |
1482 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::Whee
l), CCInputHandlerClient::ScrollStarted); | 1482 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::Whee
l), CCInputHandlerClient::ScrollStarted); |
1483 m_hostImpl->scrollBy(IntPoint(), wheelScrollDelta); | 1483 m_hostImpl->scrollBy(IntPoint(), wheelScrollDelta); |
1484 m_hostImpl->scrollEnd(); | 1484 m_hostImpl->scrollEnd(); |
1485 | 1485 |
1486 // The scale should not have been applied to the scroll delta. | 1486 // The scale should not have been applied to the scroll delta. |
(...skipping 2848 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4335 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat
a); | 4335 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat
a); |
4336 testCaseIndex++; | 4336 testCaseIndex++; |
4337 } | 4337 } |
4338 } | 4338 } |
4339 | 4339 |
4340 INSTANTIATE_TEST_CASE_P(CCLayerTreeHostImplTests, | 4340 INSTANTIATE_TEST_CASE_P(CCLayerTreeHostImplTests, |
4341 CCLayerTreeHostImplTest, | 4341 CCLayerTreeHostImplTest, |
4342 ::testing::Values(false, true)); | 4342 ::testing::Values(false, true)); |
4343 | 4343 |
4344 } // namespace | 4344 } // namespace |
OLD | NEW |