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 "cc/layer_tree_host_impl.h" | 5 #include "cc/layer_tree_host_impl.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE { } | 93 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE { } |
94 virtual void onVSyncParametersChanged(base::TimeTicks, base::TimeDelta) OVER
RIDE { } | 94 virtual void onVSyncParametersChanged(base::TimeTicks, base::TimeDelta) OVER
RIDE { } |
95 virtual void onCanDrawStateChanged(bool canDraw) OVERRIDE { m_onCanDrawState
ChangedCalled = true; } | 95 virtual void onCanDrawStateChanged(bool canDraw) OVERRIDE { m_onCanDrawState
ChangedCalled = true; } |
96 virtual void onHasPendingTreeStateChanged(bool hasPendingTree) OVERRIDE { m_
hasPendingTree = hasPendingTree; } | 96 virtual void onHasPendingTreeStateChanged(bool hasPendingTree) OVERRIDE { m_
hasPendingTree = hasPendingTree; } |
97 virtual void setNeedsRedrawOnImplThread() OVERRIDE { m_didRequestRedraw = tr
ue; } | 97 virtual void setNeedsRedrawOnImplThread() OVERRIDE { m_didRequestRedraw = tr
ue; } |
98 virtual void setNeedsCommitOnImplThread() OVERRIDE { m_didRequestCommit = tr
ue; } | 98 virtual void setNeedsCommitOnImplThread() OVERRIDE { m_didRequestCommit = tr
ue; } |
99 virtual void setNeedsManageTilesOnImplThread() OVERRIDE { } | 99 virtual void setNeedsManageTilesOnImplThread() OVERRIDE { } |
100 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<Animatio
nEventsVector>, base::Time wallClockTime) OVERRIDE { } | 100 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<Animatio
nEventsVector>, base::Time wallClockTime) OVERRIDE { } |
101 virtual bool reduceContentsTextureMemoryOnImplThread(size_t limitBytes, int
priorityCutoff) OVERRIDE { return m_reduceMemoryResult; } | 101 virtual bool reduceContentsTextureMemoryOnImplThread(size_t limitBytes, int
priorityCutoff) OVERRIDE { return m_reduceMemoryResult; } |
102 virtual void sendManagedMemoryStats() OVERRIDE { } | 102 virtual void sendManagedMemoryStats() OVERRIDE { } |
| 103 virtual void onReceivedLatencyInfo(const LatencyInfo& latencyInfo) OVERRIDE
{ } |
103 | 104 |
104 void setReduceMemoryResult(bool reduceMemoryResult) { m_reduceMemoryResult =
reduceMemoryResult; } | 105 void setReduceMemoryResult(bool reduceMemoryResult) { m_reduceMemoryResult =
reduceMemoryResult; } |
105 | 106 |
106 void createLayerTreeHost(bool partialSwap, scoped_ptr<OutputSurface> outputS
urface) | 107 void createLayerTreeHost(bool partialSwap, scoped_ptr<OutputSurface> outputS
urface) |
107 { | 108 { |
108 LayerTreeSettings settings; | 109 LayerTreeSettings settings; |
109 settings.minimumOcclusionTrackingSize = gfx::Size(); | 110 settings.minimumOcclusionTrackingSize = gfx::Size(); |
110 settings.partialSwapEnabled = partialSwap; | 111 settings.partialSwapEnabled = partialSwap; |
111 | 112 |
112 m_hostImpl = LayerTreeHostImpl::create(settings, this, &m_proxy); | 113 m_hostImpl = LayerTreeHostImpl::create(settings, this, &m_proxy); |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 EXPECT_EQ(root->sentScrollDelta(), scrollDelta + scrollDelta2); | 358 EXPECT_EQ(root->sentScrollDelta(), scrollDelta + scrollDelta2); |
358 } | 359 } |
359 | 360 |
360 TEST_P(LayerTreeHostImplTest, scrollRootCallsCommitAndRedraw) | 361 TEST_P(LayerTreeHostImplTest, scrollRootCallsCommitAndRedraw) |
361 { | 362 { |
362 setupScrollAndContentsLayers(gfx::Size(100, 100)); | 363 setupScrollAndContentsLayers(gfx::Size(100, 100)); |
363 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); | 364 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); |
364 initializeRendererAndDrawFrame(); | 365 initializeRendererAndDrawFrame(); |
365 | 366 |
366 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); | 367 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); |
367 m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(0, 10)); | 368 m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(0, 10)); |
368 m_hostImpl->scrollEnd(); | 369 m_hostImpl->scrollEnd(); |
369 EXPECT_TRUE(m_didRequestRedraw); | 370 EXPECT_TRUE(m_didRequestRedraw); |
370 EXPECT_TRUE(m_didRequestCommit); | 371 EXPECT_TRUE(m_didRequestCommit); |
371 } | 372 } |
372 | 373 |
373 TEST_P(LayerTreeHostImplTest, scrollWithoutRootLayer) | 374 TEST_P(LayerTreeHostImplTest, scrollWithoutRootLayer) |
374 { | 375 { |
375 // We should not crash when trying to scroll an empty layer tree. | 376 // We should not crash when trying to scroll an empty layer tree. |
376 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Whee
l), InputHandlerClient::ScrollIgnored); | 377 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Whee
l), InputHandlerClient::ScrollIgnored); |
377 } | 378 } |
(...skipping 22 matching lines...) Expand all Loading... |
400 initializeRendererAndDrawFrame(); | 401 initializeRendererAndDrawFrame(); |
401 | 402 |
402 // We should not crash if the tree is replaced while we are scrolling. | 403 // We should not crash if the tree is replaced while we are scrolling. |
403 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); | 404 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); |
404 m_hostImpl->detachLayerTree(); | 405 m_hostImpl->detachLayerTree(); |
405 | 406 |
406 setupScrollAndContentsLayers(gfx::Size(100, 100)); | 407 setupScrollAndContentsLayers(gfx::Size(100, 100)); |
407 | 408 |
408 // We should still be scrolling, because the scrolled layer also exists in t
he new tree. | 409 // We should still be scrolling, because the scrolled layer also exists in t
he new tree. |
409 gfx::Vector2d scrollDelta(0, 10); | 410 gfx::Vector2d scrollDelta(0, 10); |
410 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 411 m_hostImpl->scrollBy(0, gfx::Point(), scrollDelta); |
411 m_hostImpl->scrollEnd(); | 412 m_hostImpl->scrollEnd(); |
412 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 413 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
413 expectContains(*scrollInfo, scrollLayerId, scrollDelta); | 414 expectContains(*scrollInfo, scrollLayerId, scrollDelta); |
414 } | 415 } |
415 | 416 |
416 TEST_P(LayerTreeHostImplTest, clearRootRenderSurfaceAndScroll) | 417 TEST_P(LayerTreeHostImplTest, clearRootRenderSurfaceAndScroll) |
417 { | 418 { |
418 setupScrollAndContentsLayers(gfx::Size(100, 100)); | 419 setupScrollAndContentsLayers(gfx::Size(100, 100)); |
419 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); | 420 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); |
420 initializeRendererAndDrawFrame(); | 421 initializeRendererAndDrawFrame(); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 root->setNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50)); | 467 root->setNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50)); |
467 | 468 |
468 initializeRendererAndDrawFrame(); | 469 initializeRendererAndDrawFrame(); |
469 | 470 |
470 // All scroll types inside the non-fast scrollable region should fail. | 471 // All scroll types inside the non-fast scrollable region should fail. |
471 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(25, 25), InputHandlerClient::Wh
eel), InputHandlerClient::ScrollOnMainThread); | 472 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(25, 25), InputHandlerClient::Wh
eel), InputHandlerClient::ScrollOnMainThread); |
472 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(25, 25), InputHandlerClient::Ge
sture), InputHandlerClient::ScrollOnMainThread); | 473 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(25, 25), InputHandlerClient::Ge
sture), InputHandlerClient::ScrollOnMainThread); |
473 | 474 |
474 // All scroll types outside this region should succeed. | 475 // All scroll types outside this region should succeed. |
475 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(75, 75), InputHandlerClient::Wh
eel), InputHandlerClient::ScrollStarted); | 476 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(75, 75), InputHandlerClient::Wh
eel), InputHandlerClient::ScrollStarted); |
476 m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(0, 10)); | 477 m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(0, 10)); |
477 m_hostImpl->scrollEnd(); | 478 m_hostImpl->scrollEnd(); |
478 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(75, 75), InputHandlerClient::Ge
sture), InputHandlerClient::ScrollStarted); | 479 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(75, 75), InputHandlerClient::Ge
sture), InputHandlerClient::ScrollStarted); |
479 m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(0, 10)); | 480 m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(0, 10)); |
480 m_hostImpl->scrollEnd(); | 481 m_hostImpl->scrollEnd(); |
481 } | 482 } |
482 | 483 |
483 TEST_P(LayerTreeHostImplTest, nonFastScrollableRegionWithOffset) | 484 TEST_P(LayerTreeHostImplTest, nonFastScrollableRegionWithOffset) |
484 { | 485 { |
485 setupScrollAndContentsLayers(gfx::Size(200, 200)); | 486 setupScrollAndContentsLayers(gfx::Size(200, 200)); |
486 m_hostImpl->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); | 487 m_hostImpl->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); |
487 | 488 |
488 LayerImpl* root = m_hostImpl->rootLayer(); | 489 LayerImpl* root = m_hostImpl->rootLayer(); |
489 root->setContentsScale(2, 2); | 490 root->setContentsScale(2, 2); |
490 root->setNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50)); | 491 root->setNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50)); |
491 root->setPosition(gfx::PointF(-25, 0)); | 492 root->setPosition(gfx::PointF(-25, 0)); |
492 | 493 |
493 initializeRendererAndDrawFrame(); | 494 initializeRendererAndDrawFrame(); |
494 | 495 |
495 // This point would fall into the non-fast scrollable region except that we'
ve moved the layer down by 25 pixels. | 496 // This point would fall into the non-fast scrollable region except that we'
ve moved the layer down by 25 pixels. |
496 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(40, 10), InputHandlerClient::Wh
eel), InputHandlerClient::ScrollStarted); | 497 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(40, 10), InputHandlerClient::Wh
eel), InputHandlerClient::ScrollStarted); |
497 m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(0, 1)); | 498 m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(0, 1)); |
498 m_hostImpl->scrollEnd(); | 499 m_hostImpl->scrollEnd(); |
499 | 500 |
500 // This point is still inside the non-fast region. | 501 // This point is still inside the non-fast region. |
501 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(10, 10), InputHandlerClient::Wh
eel), InputHandlerClient::ScrollOnMainThread); | 502 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(10, 10), InputHandlerClient::Wh
eel), InputHandlerClient::ScrollOnMainThread); |
502 } | 503 } |
503 | 504 |
504 TEST_P(LayerTreeHostImplTest, scrollByReturnsCorrectValue) | 505 TEST_P(LayerTreeHostImplTest, scrollByReturnsCorrectValue) |
505 { | 506 { |
506 setupScrollAndContentsLayers(gfx::Size(200, 200)); | 507 setupScrollAndContentsLayers(gfx::Size(200, 200)); |
507 m_hostImpl->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); | 508 m_hostImpl->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); |
508 | 509 |
509 initializeRendererAndDrawFrame(); | 510 initializeRendererAndDrawFrame(); |
510 | 511 |
511 EXPECT_EQ(InputHandlerClient::ScrollStarted, | 512 EXPECT_EQ(InputHandlerClient::ScrollStarted, |
512 m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gesture)); | 513 m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gesture)); |
513 | 514 |
514 // Trying to scroll to the left/top will not succeed. | 515 // Trying to scroll to the left/top will not succeed. |
515 EXPECT_FALSE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(-10, 0))); | 516 EXPECT_FALSE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(-10, 0))); |
516 EXPECT_FALSE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(0, -10))); | 517 EXPECT_FALSE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(0, -10))); |
517 EXPECT_FALSE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(-10, -10))); | 518 EXPECT_FALSE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(-10, -10)))
; |
518 | 519 |
519 // Scrolling to the right/bottom will succeed. | 520 // Scrolling to the right/bottom will succeed. |
520 EXPECT_TRUE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(10, 0))); | 521 EXPECT_TRUE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(10, 0))); |
521 EXPECT_TRUE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(0, 10))); | 522 EXPECT_TRUE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(0, 10))); |
522 EXPECT_TRUE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(10, 10))); | 523 EXPECT_TRUE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(10, 10))); |
523 | 524 |
524 // Scrolling to left/top will now succeed. | 525 // Scrolling to left/top will now succeed. |
525 EXPECT_TRUE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(-10, 0))); | 526 EXPECT_TRUE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(-10, 0))); |
526 EXPECT_TRUE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(0, -10))); | 527 EXPECT_TRUE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(0, -10))); |
527 EXPECT_TRUE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(-10, -10))); | 528 EXPECT_TRUE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(-10, -10))); |
528 | 529 |
529 // Scrolling diagonally against an edge will succeed. | 530 // Scrolling diagonally against an edge will succeed. |
530 EXPECT_TRUE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(10, -10))); | 531 EXPECT_TRUE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(10, -10))); |
531 EXPECT_TRUE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(-10, 0))); | 532 EXPECT_TRUE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(-10, 0))); |
532 EXPECT_TRUE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(-10, 10))); | 533 EXPECT_TRUE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(-10, 10))); |
533 | 534 |
534 // Trying to scroll more than the available space will also succeed. | 535 // Trying to scroll more than the available space will also succeed. |
535 EXPECT_TRUE(m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(5000, 5000))); | 536 EXPECT_TRUE(m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(5000, 5000))
); |
536 } | 537 } |
537 | 538 |
538 TEST_P(LayerTreeHostImplTest, maxScrollOffsetChangedByDeviceScaleFactor) | 539 TEST_P(LayerTreeHostImplTest, maxScrollOffsetChangedByDeviceScaleFactor) |
539 { | 540 { |
540 setupScrollAndContentsLayers(gfx::Size(100, 100)); | 541 setupScrollAndContentsLayers(gfx::Size(100, 100)); |
541 | 542 |
542 float deviceScaleFactor = 2; | 543 float deviceScaleFactor = 2; |
543 gfx::Size layoutViewport(25, 25); | 544 gfx::Size layoutViewport(25, 25); |
544 gfx::Size deviceViewport(gfx::ToFlooredSize(gfx::ScaleSize(layoutViewport, d
eviceScaleFactor))); | 545 gfx::Size deviceViewport(gfx::ToFlooredSize(gfx::ScaleSize(layoutViewport, d
eviceScaleFactor))); |
545 m_hostImpl->setViewportSize(layoutViewport, deviceViewport); | 546 m_hostImpl->setViewportSize(layoutViewport, deviceViewport); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
594 scrollLayer->setImplTransform(identityScaleTransform); | 595 scrollLayer->setImplTransform(identityScaleTransform); |
595 scrollLayer->setScrollDelta(gfx::Vector2d()); | 596 scrollLayer->setScrollDelta(gfx::Vector2d()); |
596 | 597 |
597 float pageScaleDelta = 2; | 598 float pageScaleDelta = 2; |
598 m_hostImpl->pinchGestureBegin(); | 599 m_hostImpl->pinchGestureBegin(); |
599 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(0, 0)); | 600 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(0, 0)); |
600 m_hostImpl->pinchGestureEnd(); | 601 m_hostImpl->pinchGestureEnd(); |
601 | 602 |
602 gfx::Vector2d scrollDelta(0, 10); | 603 gfx::Vector2d scrollDelta(0, 10); |
603 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::
Wheel), InputHandlerClient::ScrollStarted); | 604 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::
Wheel), InputHandlerClient::ScrollStarted); |
604 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 605 m_hostImpl->scrollBy(0, gfx::Point(), scrollDelta); |
605 m_hostImpl->scrollEnd(); | 606 m_hostImpl->scrollEnd(); |
606 | 607 |
607 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); | 608 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); |
608 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), scrollD
elta); | 609 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), scrollD
elta); |
609 } | 610 } |
610 } | 611 } |
611 | 612 |
612 TEST_P(LayerTreeHostImplTest, pinchGesture) | 613 TEST_P(LayerTreeHostImplTest, pinchGesture) |
613 { | 614 { |
614 setupScrollAndContentsLayers(gfx::Size(100, 100)); | 615 setupScrollAndContentsLayers(gfx::Size(100, 100)); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
699 { | 700 { |
700 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 701 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
701 scrollLayer->setImplTransform(identityScaleTransform); | 702 scrollLayer->setImplTransform(identityScaleTransform); |
702 scrollLayer->setScrollDelta(gfx::Vector2d()); | 703 scrollLayer->setScrollDelta(gfx::Vector2d()); |
703 scrollLayer->setScrollOffset(gfx::Vector2d(20, 20)); | 704 scrollLayer->setScrollOffset(gfx::Vector2d(20, 20)); |
704 | 705 |
705 float pageScaleDelta = 1; | 706 float pageScaleDelta = 1; |
706 m_hostImpl->scrollBegin(gfx::Point(10, 10), InputHandlerClient::Wheel); | 707 m_hostImpl->scrollBegin(gfx::Point(10, 10), InputHandlerClient::Wheel); |
707 m_hostImpl->pinchGestureBegin(); | 708 m_hostImpl->pinchGestureBegin(); |
708 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(10, 10)); | 709 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(10, 10)); |
709 m_hostImpl->scrollBy(gfx::Point(10, 10), gfx::Vector2d(-10, -10)); | 710 m_hostImpl->scrollBy(0, gfx::Point(10, 10), gfx::Vector2d(-10, -10)); |
710 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(20, 20)); | 711 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(20, 20)); |
711 m_hostImpl->pinchGestureEnd(); | 712 m_hostImpl->pinchGestureEnd(); |
712 m_hostImpl->scrollEnd(); | 713 m_hostImpl->scrollEnd(); |
713 | 714 |
714 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); | 715 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); |
715 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); | 716 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); |
716 expectContains(*scrollInfo, scrollLayer->id(), gfx::Vector2d(-10, -10)); | 717 expectContains(*scrollInfo, scrollLayer->id(), gfx::Vector2d(-10, -10)); |
717 } | 718 } |
718 } | 719 } |
719 | 720 |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
866 // We should immediately get the final zoom and scroll values for the | 867 // We should immediately get the final zoom and scroll values for the |
867 // animation. | 868 // animation. |
868 m_hostImpl->animate(halfwayThroughAnimation, base::Time()); | 869 m_hostImpl->animate(halfwayThroughAnimation, base::Time()); |
869 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 870 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
870 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); | 871 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); |
871 expectContains(*scrollInfo, scrollLayer->id(), scaledTarget); | 872 expectContains(*scrollInfo, scrollLayer->id(), scaledTarget); |
872 | 873 |
873 // Scrolling during the animation is ignored. | 874 // Scrolling during the animation is ignored. |
874 const gfx::Vector2d scrollDelta(0, 10); | 875 const gfx::Vector2d scrollDelta(0, 10); |
875 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(target.x(), target.y()), InputH
andlerClient::Wheel), InputHandlerClient::ScrollStarted); | 876 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(target.x(), target.y()), InputH
andlerClient::Wheel), InputHandlerClient::ScrollStarted); |
876 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 877 m_hostImpl->scrollBy(0, gfx::Point(), scrollDelta); |
877 m_hostImpl->scrollEnd(); | 878 m_hostImpl->scrollEnd(); |
878 | 879 |
879 // The final page scale and scroll deltas should match what we got | 880 // The final page scale and scroll deltas should match what we got |
880 // earlier. | 881 // earlier. |
881 m_hostImpl->animate(endTime, base::Time()); | 882 m_hostImpl->animate(endTime, base::Time()); |
882 scrollInfo = m_hostImpl->processScrollDeltas(); | 883 scrollInfo = m_hostImpl->processScrollDeltas(); |
883 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); | 884 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); |
884 expectContains(*scrollInfo, scrollLayer->id(), scaledTarget); | 885 expectContains(*scrollInfo, scrollLayer->id(), scaledTarget); |
885 } | 886 } |
886 | 887 |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1140 scrollLayer->setContentBounds(surfaceSize); | 1141 scrollLayer->setContentBounds(surfaceSize); |
1141 scrollLayer->setPosition(gfx::PointF(0, 0)); | 1142 scrollLayer->setPosition(gfx::PointF(0, 0)); |
1142 scrollLayer->setAnchorPoint(gfx::PointF(0, 0)); | 1143 scrollLayer->setAnchorPoint(gfx::PointF(0, 0)); |
1143 scrollLayer->addChild(contentLayer.Pass()); | 1144 scrollLayer->addChild(contentLayer.Pass()); |
1144 | 1145 |
1145 m_hostImpl->setRootLayer(scrollLayer.Pass()); | 1146 m_hostImpl->setRootLayer(scrollLayer.Pass()); |
1146 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1147 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1147 initializeRendererAndDrawFrame(); | 1148 initializeRendererAndDrawFrame(); |
1148 | 1149 |
1149 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); | 1150 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); |
1150 m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(0, 10)); | 1151 m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(0, 10)); |
1151 m_hostImpl->scrollEnd(); | 1152 m_hostImpl->scrollEnd(); |
1152 EXPECT_TRUE(m_didRequestRedraw); | 1153 EXPECT_TRUE(m_didRequestRedraw); |
1153 EXPECT_TRUE(m_didRequestCommit); | 1154 EXPECT_TRUE(m_didRequestCommit); |
1154 } | 1155 } |
1155 | 1156 |
1156 TEST_P(LayerTreeHostImplTest, scrollChildCallsCommitAndRedraw) | 1157 TEST_P(LayerTreeHostImplTest, scrollChildCallsCommitAndRedraw) |
1157 { | 1158 { |
1158 gfx::Size surfaceSize(10, 10); | 1159 gfx::Size surfaceSize(10, 10); |
1159 scoped_ptr<LayerImpl> root = LayerImpl::create(m_hostImpl->activeTree(), 1); | 1160 scoped_ptr<LayerImpl> root = LayerImpl::create(m_hostImpl->activeTree(), 1); |
1160 root->setBounds(surfaceSize); | 1161 root->setBounds(surfaceSize); |
1161 root->setContentBounds(surfaceSize); | 1162 root->setContentBounds(surfaceSize); |
1162 root->addChild(createScrollableLayer(2, surfaceSize)); | 1163 root->addChild(createScrollableLayer(2, surfaceSize)); |
1163 m_hostImpl->setRootLayer(root.Pass()); | 1164 m_hostImpl->setRootLayer(root.Pass()); |
1164 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1165 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1165 initializeRendererAndDrawFrame(); | 1166 initializeRendererAndDrawFrame(); |
1166 | 1167 |
1167 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); | 1168 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); |
1168 m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(0, 10)); | 1169 m_hostImpl->scrollBy(0, gfx::Point(), gfx::Vector2d(0, 10)); |
1169 m_hostImpl->scrollEnd(); | 1170 m_hostImpl->scrollEnd(); |
1170 EXPECT_TRUE(m_didRequestRedraw); | 1171 EXPECT_TRUE(m_didRequestRedraw); |
1171 EXPECT_TRUE(m_didRequestCommit); | 1172 EXPECT_TRUE(m_didRequestCommit); |
1172 } | 1173 } |
1173 | 1174 |
1174 TEST_P(LayerTreeHostImplTest, scrollMissesChild) | 1175 TEST_P(LayerTreeHostImplTest, scrollMissesChild) |
1175 { | 1176 { |
1176 gfx::Size surfaceSize(10, 10); | 1177 gfx::Size surfaceSize(10, 10); |
1177 scoped_ptr<LayerImpl> root = LayerImpl::create(m_hostImpl->activeTree(), 1); | 1178 scoped_ptr<LayerImpl> root = LayerImpl::create(m_hostImpl->activeTree(), 1); |
1178 root->addChild(createScrollableLayer(2, surfaceSize)); | 1179 root->addChild(createScrollableLayer(2, surfaceSize)); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1233 float pageScale = 2; | 1234 float pageScale = 2; |
1234 scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize); | 1235 scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize); |
1235 m_hostImpl->setRootLayer(root.Pass()); | 1236 m_hostImpl->setRootLayer(root.Pass()); |
1236 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1237 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1237 initializeRendererAndDrawFrame(); | 1238 initializeRendererAndDrawFrame(); |
1238 | 1239 |
1239 gfx::Vector2d scrollDelta(0, 10); | 1240 gfx::Vector2d scrollDelta(0, 10); |
1240 gfx::Vector2d expectedScrollDelta(scrollDelta); | 1241 gfx::Vector2d expectedScrollDelta(scrollDelta); |
1241 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); | 1242 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); |
1242 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); | 1243 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); |
1243 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 1244 m_hostImpl->scrollBy(0, gfx::Point(), scrollDelta); |
1244 m_hostImpl->scrollEnd(); | 1245 m_hostImpl->scrollEnd(); |
1245 | 1246 |
1246 // Set new page scale from main thread. | 1247 // Set new page scale from main thread. |
1247 m_hostImpl->setPageScaleFactorAndLimits(pageScale, pageScale, pageScale); | 1248 m_hostImpl->setPageScaleFactorAndLimits(pageScale, pageScale, pageScale); |
1248 | 1249 |
1249 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) { | 1250 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) { |
1250 // The scale should apply to the scroll delta. | 1251 // The scale should apply to the scroll delta. |
1251 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected
ScrollDelta, pageScale)); | 1252 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected
ScrollDelta, pageScale)); |
1252 } | 1253 } |
1253 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 1254 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1286 scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize); | 1287 scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize); |
1287 m_hostImpl->setRootLayer(root.Pass()); | 1288 m_hostImpl->setRootLayer(root.Pass()); |
1288 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1289 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1289 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); | 1290 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); |
1290 initializeRendererAndDrawFrame(); | 1291 initializeRendererAndDrawFrame(); |
1291 | 1292 |
1292 gfx::Vector2d scrollDelta(0, 10); | 1293 gfx::Vector2d scrollDelta(0, 10); |
1293 gfx::Vector2d expectedScrollDelta(scrollDelta); | 1294 gfx::Vector2d expectedScrollDelta(scrollDelta); |
1294 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); | 1295 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); |
1295 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); | 1296 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); |
1296 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 1297 m_hostImpl->scrollBy(0, gfx::Point(), scrollDelta); |
1297 m_hostImpl->scrollEnd(); | 1298 m_hostImpl->scrollEnd(); |
1298 | 1299 |
1299 // Set new page scale on impl thread by pinching. | 1300 // Set new page scale on impl thread by pinching. |
1300 m_hostImpl->pinchGestureBegin(); | 1301 m_hostImpl->pinchGestureBegin(); |
1301 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); | 1302 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); |
1302 m_hostImpl->pinchGestureEnd(); | 1303 m_hostImpl->pinchGestureEnd(); |
1303 drawOneFrame(); | 1304 drawOneFrame(); |
1304 | 1305 |
1305 // The scroll delta is not scaled because the main thread did not scale. | 1306 // The scroll delta is not scaled because the main thread did not scale. |
1306 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 1307 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1373 m_hostImpl->setRootLayer(root.Pass()); | 1374 m_hostImpl->setRootLayer(root.Pass()); |
1374 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1375 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1375 initializeRendererAndDrawFrame(); | 1376 initializeRendererAndDrawFrame(); |
1376 | 1377 |
1377 LayerImpl* child = m_hostImpl->rootLayer()->children()[0]; | 1378 LayerImpl* child = m_hostImpl->rootLayer()->children()[0]; |
1378 | 1379 |
1379 gfx::Vector2d scrollDelta(0, 10); | 1380 gfx::Vector2d scrollDelta(0, 10); |
1380 gfx::Vector2d expectedScrollDelta(scrollDelta); | 1381 gfx::Vector2d expectedScrollDelta(scrollDelta); |
1381 gfx::Vector2d expectedMaxScroll(child->maxScrollOffset()); | 1382 gfx::Vector2d expectedMaxScroll(child->maxScrollOffset()); |
1382 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); | 1383 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); |
1383 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 1384 m_hostImpl->scrollBy(0, gfx::Point(), scrollDelta); |
1384 m_hostImpl->scrollEnd(); | 1385 m_hostImpl->scrollEnd(); |
1385 | 1386 |
1386 float pageScale = 2; | 1387 float pageScale = 2; |
1387 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale); | 1388 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale); |
1388 | 1389 |
1389 drawOneFrame(); | 1390 drawOneFrame(); |
1390 | 1391 |
1391 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) { | 1392 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) { |
1392 // The scale should apply to the scroll delta. | 1393 // The scale should apply to the scroll delta. |
1393 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected
ScrollDelta, pageScale)); | 1394 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected
ScrollDelta, pageScale)); |
(...skipping 24 matching lines...) Expand all Loading... |
1418 child->setScrollOffset(gfx::Vector2d(3, 0)); | 1419 child->setScrollOffset(gfx::Vector2d(3, 0)); |
1419 child->addChild(grandChild.Pass()); | 1420 child->addChild(grandChild.Pass()); |
1420 | 1421 |
1421 root->addChild(child.Pass()); | 1422 root->addChild(child.Pass()); |
1422 m_hostImpl->setRootLayer(root.Pass()); | 1423 m_hostImpl->setRootLayer(root.Pass()); |
1423 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1424 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1424 initializeRendererAndDrawFrame(); | 1425 initializeRendererAndDrawFrame(); |
1425 { | 1426 { |
1426 gfx::Vector2d scrollDelta(-8, -7); | 1427 gfx::Vector2d scrollDelta(-8, -7); |
1427 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::
Wheel), InputHandlerClient::ScrollStarted); | 1428 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::
Wheel), InputHandlerClient::ScrollStarted); |
1428 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 1429 m_hostImpl->scrollBy(0, gfx::Point(), scrollDelta); |
1429 m_hostImpl->scrollEnd(); | 1430 m_hostImpl->scrollEnd(); |
1430 | 1431 |
1431 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); | 1432 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); |
1432 | 1433 |
1433 // The grand child should have scrolled up to its limit. | 1434 // The grand child should have scrolled up to its limit. |
1434 LayerImpl* child = m_hostImpl->rootLayer()->children()[0]; | 1435 LayerImpl* child = m_hostImpl->rootLayer()->children()[0]; |
1435 LayerImpl* grandChild = child->children()[0]; | 1436 LayerImpl* grandChild = child->children()[0]; |
1436 expectContains(*scrollInfo.get(), grandChild->id(), gfx::Vector2d(0, -5)
); | 1437 expectContains(*scrollInfo.get(), grandChild->id(), gfx::Vector2d(0, -5)
); |
1437 | 1438 |
1438 // The child should have only scrolled on the other axis. | 1439 // The child should have only scrolled on the other axis. |
(...skipping 11 matching lines...) Expand all Loading... |
1450 | 1451 |
1451 child->setScrollable(false); | 1452 child->setScrollable(false); |
1452 root->addChild(child.Pass()); | 1453 root->addChild(child.Pass()); |
1453 | 1454 |
1454 m_hostImpl->setRootLayer(root.Pass()); | 1455 m_hostImpl->setRootLayer(root.Pass()); |
1455 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1456 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1456 initializeRendererAndDrawFrame(); | 1457 initializeRendererAndDrawFrame(); |
1457 { | 1458 { |
1458 gfx::Vector2d scrollDelta(0, 4); | 1459 gfx::Vector2d scrollDelta(0, 4); |
1459 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::
Wheel), InputHandlerClient::ScrollStarted); | 1460 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::
Wheel), InputHandlerClient::ScrollStarted); |
1460 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 1461 m_hostImpl->scrollBy(0, gfx::Point(), scrollDelta); |
1461 m_hostImpl->scrollEnd(); | 1462 m_hostImpl->scrollEnd(); |
1462 | 1463 |
1463 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); | 1464 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); |
1464 | 1465 |
1465 // Only the root should have scrolled. | 1466 // Only the root should have scrolled. |
1466 ASSERT_EQ(scrollInfo->scrolls.size(), 1u); | 1467 ASSERT_EQ(scrollInfo->scrolls.size(), 1u); |
1467 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), scrollD
elta); | 1468 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), scrollD
elta); |
1468 } | 1469 } |
1469 } | 1470 } |
1470 | 1471 |
(...skipping 21 matching lines...) Expand all Loading... |
1492 rotateTransform.Rotate(-90); | 1493 rotateTransform.Rotate(-90); |
1493 m_hostImpl->rootLayer()->setTransform(rotateTransform); | 1494 m_hostImpl->rootLayer()->setTransform(rotateTransform); |
1494 | 1495 |
1495 gfx::Size surfaceSize(50, 50); | 1496 gfx::Size surfaceSize(50, 50); |
1496 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1497 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1497 initializeRendererAndDrawFrame(); | 1498 initializeRendererAndDrawFrame(); |
1498 | 1499 |
1499 // Scroll to the right in screen coordinates with a gesture. | 1500 // Scroll to the right in screen coordinates with a gesture. |
1500 gfx::Vector2d gestureScrollDelta(10, 0); | 1501 gfx::Vector2d gestureScrollDelta(10, 0); |
1501 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gest
ure), InputHandlerClient::ScrollStarted); | 1502 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gest
ure), InputHandlerClient::ScrollStarted); |
1502 m_hostImpl->scrollBy(gfx::Point(), gestureScrollDelta); | 1503 m_hostImpl->scrollBy(0, gfx::Point(), gestureScrollDelta); |
1503 m_hostImpl->scrollEnd(); | 1504 m_hostImpl->scrollEnd(); |
1504 | 1505 |
1505 // The layer should have scrolled down in its local coordinates. | 1506 // The layer should have scrolled down in its local coordinates. |
1506 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 1507 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
1507 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), gfx::Vector
2d(0, gestureScrollDelta.x())); | 1508 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), gfx::Vector
2d(0, gestureScrollDelta.x())); |
1508 | 1509 |
1509 // Reset and scroll down with the wheel. | 1510 // Reset and scroll down with the wheel. |
1510 m_hostImpl->rootLayer()->setScrollDelta(gfx::Vector2dF()); | 1511 m_hostImpl->rootLayer()->setScrollDelta(gfx::Vector2dF()); |
1511 gfx::Vector2d wheelScrollDelta(0, 10); | 1512 gfx::Vector2d wheelScrollDelta(0, 10); |
1512 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); | 1513 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); |
1513 m_hostImpl->scrollBy(gfx::Point(), wheelScrollDelta); | 1514 m_hostImpl->scrollBy(0, gfx::Point(), wheelScrollDelta); |
1514 m_hostImpl->scrollEnd(); | 1515 m_hostImpl->scrollEnd(); |
1515 | 1516 |
1516 // The layer should have scrolled down in its local coordinates. | 1517 // The layer should have scrolled down in its local coordinates. |
1517 scrollInfo = m_hostImpl->processScrollDeltas(); | 1518 scrollInfo = m_hostImpl->processScrollDeltas(); |
1518 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), wheelScroll
Delta); | 1519 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), wheelScroll
Delta); |
1519 } | 1520 } |
1520 | 1521 |
1521 TEST_P(LayerTreeHostImplTest, scrollNonAxisAlignedRotatedLayer) | 1522 TEST_P(LayerTreeHostImplTest, scrollNonAxisAlignedRotatedLayer) |
1522 { | 1523 { |
1523 setupScrollAndContentsLayers(gfx::Size(100, 100)); | 1524 setupScrollAndContentsLayers(gfx::Size(100, 100)); |
(...skipping 13 matching lines...) Expand all Loading... |
1537 m_hostImpl->rootLayer()->addChild(child.Pass()); | 1538 m_hostImpl->rootLayer()->addChild(child.Pass()); |
1538 | 1539 |
1539 gfx::Size surfaceSize(50, 50); | 1540 gfx::Size surfaceSize(50, 50); |
1540 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1541 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1541 initializeRendererAndDrawFrame(); | 1542 initializeRendererAndDrawFrame(); |
1542 | 1543 |
1543 { | 1544 { |
1544 // Scroll down in screen coordinates with a gesture. | 1545 // Scroll down in screen coordinates with a gesture. |
1545 gfx::Vector2d gestureScrollDelta(0, 10); | 1546 gfx::Vector2d gestureScrollDelta(0, 10); |
1546 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::
Gesture), InputHandlerClient::ScrollStarted); | 1547 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::
Gesture), InputHandlerClient::ScrollStarted); |
1547 m_hostImpl->scrollBy(gfx::Point(), gestureScrollDelta); | 1548 m_hostImpl->scrollBy(0, gfx::Point(), gestureScrollDelta); |
1548 m_hostImpl->scrollEnd(); | 1549 m_hostImpl->scrollEnd(); |
1549 | 1550 |
1550 // The child layer should have scrolled down in its local coordinates an
amount proportional to | 1551 // The child layer should have scrolled down in its local coordinates an
amount proportional to |
1551 // the angle between it and the input scroll delta. | 1552 // the angle between it and the input scroll delta. |
1552 gfx::Vector2d expectedScrollDelta(0, gestureScrollDelta.y() * std::cos(M
athUtil::Deg2Rad(childLayerAngle))); | 1553 gfx::Vector2d expectedScrollDelta(0, gestureScrollDelta.y() * std::cos(M
athUtil::Deg2Rad(childLayerAngle))); |
1553 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); | 1554 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); |
1554 expectContains(*scrollInfo.get(), childLayerId, expectedScrollDelta); | 1555 expectContains(*scrollInfo.get(), childLayerId, expectedScrollDelta); |
1555 | 1556 |
1556 // The root layer should not have scrolled, because the input delta was
close to the layer's | 1557 // The root layer should not have scrolled, because the input delta was
close to the layer's |
1557 // axis of movement. | 1558 // axis of movement. |
1558 EXPECT_EQ(scrollInfo->scrolls.size(), 1u); | 1559 EXPECT_EQ(scrollInfo->scrolls.size(), 1u); |
1559 } | 1560 } |
1560 | 1561 |
1561 { | 1562 { |
1562 // Now reset and scroll the same amount horizontally. | 1563 // Now reset and scroll the same amount horizontally. |
1563 m_hostImpl->rootLayer()->children()[1]->setScrollDelta(gfx::Vector2dF())
; | 1564 m_hostImpl->rootLayer()->children()[1]->setScrollDelta(gfx::Vector2dF())
; |
1564 gfx::Vector2d gestureScrollDelta(10, 0); | 1565 gfx::Vector2d gestureScrollDelta(10, 0); |
1565 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::
Gesture), InputHandlerClient::ScrollStarted); | 1566 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::
Gesture), InputHandlerClient::ScrollStarted); |
1566 m_hostImpl->scrollBy(gfx::Point(), gestureScrollDelta); | 1567 m_hostImpl->scrollBy(0, gfx::Point(), gestureScrollDelta); |
1567 m_hostImpl->scrollEnd(); | 1568 m_hostImpl->scrollEnd(); |
1568 | 1569 |
1569 // The child layer should have scrolled down in its local coordinates an
amount proportional to | 1570 // The child layer should have scrolled down in its local coordinates an
amount proportional to |
1570 // the angle between it and the input scroll delta. | 1571 // the angle between it and the input scroll delta. |
1571 gfx::Vector2d expectedScrollDelta(0, -gestureScrollDelta.x() * std::sin(
MathUtil::Deg2Rad(childLayerAngle))); | 1572 gfx::Vector2d expectedScrollDelta(0, -gestureScrollDelta.x() * std::sin(
MathUtil::Deg2Rad(childLayerAngle))); |
1572 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); | 1573 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); |
1573 expectContains(*scrollInfo.get(), childLayerId, expectedScrollDelta); | 1574 expectContains(*scrollInfo.get(), childLayerId, expectedScrollDelta); |
1574 | 1575 |
1575 // The root layer should have scrolled more, since the input scroll delt
a was mostly | 1576 // The root layer should have scrolled more, since the input scroll delt
a was mostly |
1576 // orthogonal to the child layer's vertical scroll axis. | 1577 // orthogonal to the child layer's vertical scroll axis. |
(...skipping 12 matching lines...) Expand all Loading... |
1589 scaleTransform.Scale(scale, scale); | 1590 scaleTransform.Scale(scale, scale); |
1590 m_hostImpl->rootLayer()->setTransform(scaleTransform); | 1591 m_hostImpl->rootLayer()->setTransform(scaleTransform); |
1591 | 1592 |
1592 gfx::Size surfaceSize(50, 50); | 1593 gfx::Size surfaceSize(50, 50); |
1593 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1594 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1594 initializeRendererAndDrawFrame(); | 1595 initializeRendererAndDrawFrame(); |
1595 | 1596 |
1596 // Scroll down in screen coordinates with a gesture. | 1597 // Scroll down in screen coordinates with a gesture. |
1597 gfx::Vector2d scrollDelta(0, 10); | 1598 gfx::Vector2d scrollDelta(0, 10); |
1598 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gest
ure), InputHandlerClient::ScrollStarted); | 1599 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gest
ure), InputHandlerClient::ScrollStarted); |
1599 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 1600 m_hostImpl->scrollBy(0, gfx::Point(), scrollDelta); |
1600 m_hostImpl->scrollEnd(); | 1601 m_hostImpl->scrollEnd(); |
1601 | 1602 |
1602 // The layer should have scrolled down in its local coordinates, but half he
amount. | 1603 // The layer should have scrolled down in its local coordinates, but half he
amount. |
1603 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 1604 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
1604 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), gfx::Vector
2d(0, scrollDelta.y() / scale)); | 1605 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), gfx::Vector
2d(0, scrollDelta.y() / scale)); |
1605 | 1606 |
1606 // Reset and scroll down with the wheel. | 1607 // Reset and scroll down with the wheel. |
1607 m_hostImpl->rootLayer()->setScrollDelta(gfx::Vector2dF()); | 1608 m_hostImpl->rootLayer()->setScrollDelta(gfx::Vector2dF()); |
1608 gfx::Vector2d wheelScrollDelta(0, 10); | 1609 gfx::Vector2d wheelScrollDelta(0, 10); |
1609 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); | 1610 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); |
1610 m_hostImpl->scrollBy(gfx::Point(), wheelScrollDelta); | 1611 m_hostImpl->scrollBy(0, gfx::Point(), wheelScrollDelta); |
1611 m_hostImpl->scrollEnd(); | 1612 m_hostImpl->scrollEnd(); |
1612 | 1613 |
1613 // The scale should not have been applied to the scroll delta. | 1614 // The scale should not have been applied to the scroll delta. |
1614 scrollInfo = m_hostImpl->processScrollDeltas(); | 1615 scrollInfo = m_hostImpl->processScrollDeltas(); |
1615 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), wheelScroll
Delta); | 1616 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), wheelScroll
Delta); |
1616 } | 1617 } |
1617 | 1618 |
1618 class BlendStateTrackerContext: public FakeWebGraphicsContext3D { | 1619 class BlendStateTrackerContext: public FakeWebGraphicsContext3D { |
1619 public: | 1620 public: |
1620 BlendStateTrackerContext() : m_blend(false) { } | 1621 BlendStateTrackerContext() : m_blend(false) { } |
(...skipping 2854 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4475 // so no point in continuing without it. | 4476 // so no point in continuing without it. |
4476 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) | 4477 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) |
4477 return; | 4478 return; |
4478 | 4479 |
4479 m_didRequestCommit = false; | 4480 m_didRequestCommit = false; |
4480 m_didRequestRedraw = false; | 4481 m_didRequestRedraw = false; |
4481 | 4482 |
4482 // This scroll will force the viewport to pan horizontally. | 4483 // This scroll will force the viewport to pan horizontally. |
4483 gfx::Vector2d scrollDelta(5, 0); | 4484 gfx::Vector2d scrollDelta(5, 0); |
4484 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4485 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
4485 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 4486 m_hostImpl->scrollBy(0, gfx::Point(), scrollDelta); |
4486 m_hostImpl->scrollEnd(); | 4487 m_hostImpl->scrollEnd(); |
4487 | 4488 |
4488 EXPECT_EQ(true, m_didRequestCommit); | 4489 EXPECT_EQ(true, m_didRequestCommit); |
4489 EXPECT_EQ(true, m_didRequestRedraw); | 4490 EXPECT_EQ(true, m_didRequestRedraw); |
4490 | 4491 |
4491 m_didRequestCommit = false; | 4492 m_didRequestCommit = false; |
4492 m_didRequestRedraw = false; | 4493 m_didRequestRedraw = false; |
4493 | 4494 |
4494 // This scroll will force the viewport to pan vertically. | 4495 // This scroll will force the viewport to pan vertically. |
4495 scrollDelta = gfx::Vector2d(0, 5); | 4496 scrollDelta = gfx::Vector2d(0, 5); |
4496 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4497 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
4497 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 4498 m_hostImpl->scrollBy(0, gfx::Point(), scrollDelta); |
4498 m_hostImpl->scrollEnd(); | 4499 m_hostImpl->scrollEnd(); |
4499 | 4500 |
4500 EXPECT_EQ(true, m_didRequestCommit); | 4501 EXPECT_EQ(true, m_didRequestCommit); |
4501 EXPECT_EQ(true, m_didRequestRedraw); | 4502 EXPECT_EQ(true, m_didRequestRedraw); |
4502 } | 4503 } |
4503 | 4504 |
4504 TEST_P(LayerTreeHostImplTest, pinchZoomPanViewportForcesCommitDeviceScaleFactor1
) | 4505 TEST_P(LayerTreeHostImplTest, pinchZoomPanViewportForcesCommitDeviceScaleFactor1
) |
4505 { | 4506 { |
4506 pinchZoomPanViewportForcesCommitRedraw(1); | 4507 pinchZoomPanViewportForcesCommitRedraw(1); |
4507 } | 4508 } |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4546 // so no point in continuing without it. | 4547 // so no point in continuing without it. |
4547 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) | 4548 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) |
4548 return; | 4549 return; |
4549 | 4550 |
4550 gfx::Vector2d scrollDelta(5, 0); | 4551 gfx::Vector2d scrollDelta(5, 0); |
4551 // TODO(wjmaclean): Fix the math here so that the expectedTranslation is | 4552 // TODO(wjmaclean): Fix the math here so that the expectedTranslation is |
4552 // scaled instead of the scroll input. | 4553 // scaled instead of the scroll input. |
4553 gfx::Vector2d scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVect
or2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); | 4554 gfx::Vector2d scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVect
or2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); |
4554 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); | 4555 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); |
4555 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4556 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
4556 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); | 4557 m_hostImpl->scrollBy(0, gfx::Point(), scrollDeltaInZoomedViewport); |
4557 m_hostImpl->scrollEnd(); | 4558 m_hostImpl->scrollEnd(); |
4558 drawOneFrame(); | 4559 drawOneFrame(); |
4559 | 4560 |
4560 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostI
mpl->deviceScaleFactor()); | 4561 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostI
mpl->deviceScaleFactor()); |
4561 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); | 4562 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); |
4562 | 4563 |
4563 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); | 4564 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); |
4564 // No change expected. | 4565 // No change expected. |
4565 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4566 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
4566 // None of the scroll delta should have been used for document scroll. | 4567 // None of the scroll delta should have been used for document scroll. |
4567 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 4568 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
4568 expectNone(*scrollInfo.get(), m_hostImpl->rootLayer()->id()); | 4569 expectNone(*scrollInfo.get(), m_hostImpl->rootLayer()->id()); |
4569 | 4570 |
4570 // Test scroll in y-direction also. | 4571 // Test scroll in y-direction also. |
4571 scrollDelta = gfx::Vector2d(0, 5); | 4572 scrollDelta = gfx::Vector2d(0, 5); |
4572 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel
ta, m_hostImpl->totalPageScaleFactorForTesting())); | 4573 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel
ta, m_hostImpl->totalPageScaleFactorForTesting())); |
4573 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4574 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
4574 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); | 4575 m_hostImpl->scrollBy(0, gfx::Point(), scrollDeltaInZoomedViewport); |
4575 m_hostImpl->scrollEnd(); | 4576 m_hostImpl->scrollEnd(); |
4576 drawOneFrame(); | 4577 drawOneFrame(); |
4577 | 4578 |
4578 expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostImpl->deviceScal
eFactor()); | 4579 expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostImpl->deviceScal
eFactor()); |
4579 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); | 4580 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); |
4580 | 4581 |
4581 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); | 4582 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); |
4582 // No change expected. | 4583 // No change expected. |
4583 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4584 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
4584 // None of the scroll delta should have been used for document scroll. | 4585 // None of the scroll delta should have been used for document scroll. |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4631 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) | 4632 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) |
4632 return; | 4633 return; |
4633 | 4634 |
4634 // Scroll document only: scrollDelta chosen to move document horizontally | 4635 // Scroll document only: scrollDelta chosen to move document horizontally |
4635 // to its max scroll offset. | 4636 // to its max scroll offset. |
4636 gfx::Vector2d scrollDelta(3, 0); | 4637 gfx::Vector2d scrollDelta(3, 0); |
4637 gfx::Vector2d scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVect
or2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); | 4638 gfx::Vector2d scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVect
or2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); |
4638 gfx::Vector2d expectedScrollDelta(scrollDelta); | 4639 gfx::Vector2d expectedScrollDelta(scrollDelta); |
4639 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); | 4640 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); |
4640 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4641 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
4641 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); | 4642 m_hostImpl->scrollBy(0, gfx::Point(), scrollDeltaInZoomedViewport); |
4642 m_hostImpl->scrollEnd(); | 4643 m_hostImpl->scrollEnd(); |
4643 drawOneFrame(); | 4644 drawOneFrame(); |
4644 | 4645 |
4645 // The scroll delta is not scaled because the main thread did not scale. | 4646 // The scroll delta is not scaled because the main thread did not scale. |
4646 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 4647 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
4647 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 4648 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
4648 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4649 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
4649 | 4650 |
4650 // Verify we did not change the implTransform this time. | 4651 // Verify we did not change the implTransform this time. |
4651 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); | 4652 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); |
4652 | 4653 |
4653 // Further scrolling should move the pinchZoomViewport only. | 4654 // Further scrolling should move the pinchZoomViewport only. |
4654 scrollDelta = gfx::Vector2d(2, 0); | 4655 scrollDelta = gfx::Vector2d(2, 0); |
4655 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel
ta, m_hostImpl->totalPageScaleFactorForTesting())); | 4656 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel
ta, m_hostImpl->totalPageScaleFactorForTesting())); |
4656 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4657 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
4657 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); | 4658 m_hostImpl->scrollBy(0, gfx::Point(), scrollDeltaInZoomedViewport); |
4658 m_hostImpl->scrollEnd(); | 4659 m_hostImpl->scrollEnd(); |
4659 drawOneFrame(); | 4660 drawOneFrame(); |
4660 | 4661 |
4661 gfx::Vector2d expectedPanDelta(scrollDelta); | 4662 gfx::Vector2d expectedPanDelta(scrollDelta); |
4662 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_
hostImpl->deviceScaleFactor()); | 4663 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_
hostImpl->deviceScaleFactor()); |
4663 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); | 4664 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); |
4664 | 4665 |
4665 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); | 4666 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); |
4666 | 4667 |
4667 // The scroll delta on the main thread should not have been affected by this
. | 4668 // The scroll delta on the main thread should not have been affected by this
. |
4668 scrollInfo = m_hostImpl->processScrollDeltas(); | 4669 scrollInfo = m_hostImpl->processScrollDeltas(); |
4669 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 4670 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
4670 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4671 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
4671 | 4672 |
4672 // Perform same test sequence in y-direction also. | 4673 // Perform same test sequence in y-direction also. |
4673 // Document only scroll. | 4674 // Document only scroll. |
4674 scrollDelta = gfx::Vector2d(0, 4); | 4675 scrollDelta = gfx::Vector2d(0, 4); |
4675 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel
ta, m_hostImpl->totalPageScaleFactorForTesting())); | 4676 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel
ta, m_hostImpl->totalPageScaleFactorForTesting())); |
4676 expectedScrollDelta += scrollDelta; | 4677 expectedScrollDelta += scrollDelta; |
4677 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4678 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
4678 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); | 4679 m_hostImpl->scrollBy(0, gfx::Point(), scrollDeltaInZoomedViewport); |
4679 m_hostImpl->scrollEnd(); | 4680 m_hostImpl->scrollEnd(); |
4680 drawOneFrame(); | 4681 drawOneFrame(); |
4681 | 4682 |
4682 // The scroll delta is not scaled because the main thread did not scale. | 4683 // The scroll delta is not scaled because the main thread did not scale. |
4683 scrollInfo = m_hostImpl->processScrollDeltas(); | 4684 scrollInfo = m_hostImpl->processScrollDeltas(); |
4684 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 4685 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
4685 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4686 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
4686 | 4687 |
4687 // Verify we did not change the implTransform this time. | 4688 // Verify we did not change the implTransform this time. |
4688 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); | 4689 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); |
4689 | 4690 |
4690 // pinchZoomViewport scroll only. | 4691 // pinchZoomViewport scroll only. |
4691 scrollDelta = gfx::Vector2d(0, 1); | 4692 scrollDelta = gfx::Vector2d(0, 1); |
4692 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel
ta, m_hostImpl->totalPageScaleFactorForTesting())); | 4693 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel
ta, m_hostImpl->totalPageScaleFactorForTesting())); |
4693 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4694 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
4694 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); | 4695 m_hostImpl->scrollBy(0, gfx::Point(), scrollDeltaInZoomedViewport); |
4695 m_hostImpl->scrollEnd(); | 4696 m_hostImpl->scrollEnd(); |
4696 drawOneFrame(); | 4697 drawOneFrame(); |
4697 | 4698 |
4698 expectedPanDelta = scrollDelta; | 4699 expectedPanDelta = scrollDelta; |
4699 expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->devic
eScaleFactor()); | 4700 expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->devic
eScaleFactor()); |
4700 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); | 4701 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); |
4701 | 4702 |
4702 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); | 4703 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); |
4703 | 4704 |
4704 // The scroll delta on the main thread should not have been affected by this
. | 4705 // The scroll delta on the main thread should not have been affected by this
. |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4754 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) | 4755 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) |
4755 return; | 4756 return; |
4756 | 4757 |
4757 // Scroll document and pann zoomViewport in one scroll-delta. | 4758 // Scroll document and pann zoomViewport in one scroll-delta. |
4758 gfx::Vector2d scrollDelta(5, 0); | 4759 gfx::Vector2d scrollDelta(5, 0); |
4759 gfx::Vector2d scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVect
or2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); | 4760 gfx::Vector2d scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVect
or2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); |
4760 gfx::Vector2d expectedScrollDelta(gfx::Vector2d(3, 0)); // This component ge
ts handled by document scroll. | 4761 gfx::Vector2d expectedScrollDelta(gfx::Vector2d(3, 0)); // This component ge
ts handled by document scroll. |
4761 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); | 4762 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); |
4762 | 4763 |
4763 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4764 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
4764 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); | 4765 m_hostImpl->scrollBy(0, gfx::Point(), scrollDeltaInZoomedViewport); |
4765 m_hostImpl->scrollEnd(); | 4766 m_hostImpl->scrollEnd(); |
4766 drawOneFrame(); | 4767 drawOneFrame(); |
4767 | 4768 |
4768 // The scroll delta is not scaled because the main thread did not scale. | 4769 // The scroll delta is not scaled because the main thread did not scale. |
4769 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 4770 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
4770 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 4771 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
4771 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4772 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
4772 | 4773 |
4773 gfx::Vector2d expectedPanDelta(2, 0); // This component gets handled by zoom
Viewport pan. | 4774 gfx::Vector2d expectedPanDelta(2, 0); // This component gets handled by zoom
Viewport pan. |
4774 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_
hostImpl->deviceScaleFactor()); | 4775 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_
hostImpl->deviceScaleFactor()); |
4775 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); | 4776 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); |
4776 | 4777 |
4777 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); | 4778 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); |
4778 | 4779 |
4779 // Perform same test sequence in y-direction also. | 4780 // Perform same test sequence in y-direction also. |
4780 scrollDelta = gfx::Vector2d(0, 5); | 4781 scrollDelta = gfx::Vector2d(0, 5); |
4781 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel
ta, m_hostImpl->totalPageScaleFactorForTesting())); | 4782 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel
ta, m_hostImpl->totalPageScaleFactorForTesting())); |
4782 expectedScrollDelta += gfx::Vector2d(0, 4); // This component gets handled b
y document scroll. | 4783 expectedScrollDelta += gfx::Vector2d(0, 4); // This component gets handled b
y document scroll. |
4783 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4784 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
4784 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); | 4785 m_hostImpl->scrollBy(0, gfx::Point(), scrollDeltaInZoomedViewport); |
4785 m_hostImpl->scrollEnd(); | 4786 m_hostImpl->scrollEnd(); |
4786 drawOneFrame(); | 4787 drawOneFrame(); |
4787 | 4788 |
4788 // The scroll delta is not scaled because the main thread did not scale. | 4789 // The scroll delta is not scaled because the main thread did not scale. |
4789 scrollInfo = m_hostImpl->processScrollDeltas(); // This component gets handl
ed by zoomViewport pan. | 4790 scrollInfo = m_hostImpl->processScrollDeltas(); // This component gets handl
ed by zoomViewport pan. |
4790 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 4791 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
4791 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4792 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
4792 | 4793 |
4793 expectedPanDelta = gfx::Vector2d(0, 1); | 4794 expectedPanDelta = gfx::Vector2d(0, 1); |
4794 expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->devic
eScaleFactor()); | 4795 expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->devic
eScaleFactor()); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4845 gfx::Rect noDamage = gfx::Rect(m_hostImpl->deviceViewportSize()); | 4846 gfx::Rect noDamage = gfx::Rect(m_hostImpl->deviceViewportSize()); |
4846 drawFrameAndTestDamage(noDamage); | 4847 drawFrameAndTestDamage(noDamage); |
4847 } | 4848 } |
4848 | 4849 |
4849 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, | 4850 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, |
4850 LayerTreeHostImplTest, | 4851 LayerTreeHostImplTest, |
4851 ::testing::Values(false, true)); | 4852 ::testing::Values(false, true)); |
4852 | 4853 |
4853 } // namespace | 4854 } // namespace |
4854 } // namespace cc | 4855 } // namespace cc |
OLD | NEW |