| 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 "cc/layer_tree_host_impl.h" | 7 #include "cc/layer_tree_host_impl.h" |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/hash_tables.h" | 10 #include "base/hash_tables.h" |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 m_hostImpl->initializeRenderer(createContext()); | 75 m_hostImpl->initializeRenderer(createContext()); |
| 76 m_hostImpl->setViewportSize(IntSize(10, 10), IntSize(10, 10)); | 76 m_hostImpl->setViewportSize(IntSize(10, 10), IntSize(10, 10)); |
| 77 } | 77 } |
| 78 | 78 |
| 79 virtual void TearDown() | 79 virtual void TearDown() |
| 80 { | 80 { |
| 81 } | 81 } |
| 82 | 82 |
| 83 virtual void didLoseContextOnImplThread() OVERRIDE { } | 83 virtual void didLoseContextOnImplThread() OVERRIDE { } |
| 84 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE { } | 84 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE { } |
| 85 virtual void onVSyncParametersChanged(double, double) OVERRIDE { } | 85 virtual void onVSyncParametersChanged(base::TimeTicks, base::TimeDelta) OVER
RIDE { } |
| 86 virtual void onCanDrawStateChanged(bool canDraw) OVERRIDE { m_onCanDrawState
ChangedCalled = true; } | 86 virtual void onCanDrawStateChanged(bool canDraw) OVERRIDE { m_onCanDrawState
ChangedCalled = true; } |
| 87 virtual void setNeedsRedrawOnImplThread() OVERRIDE { m_didRequestRedraw = tr
ue; } | 87 virtual void setNeedsRedrawOnImplThread() OVERRIDE { m_didRequestRedraw = tr
ue; } |
| 88 virtual void setNeedsCommitOnImplThread() OVERRIDE { m_didRequestCommit = tr
ue; } | 88 virtual void setNeedsCommitOnImplThread() OVERRIDE { m_didRequestCommit = tr
ue; } |
| 89 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<Animatio
nEventsVector>, double wallClockTime) OVERRIDE { } | 89 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<Animatio
nEventsVector>, base::Time wallClockTime) OVERRIDE { } |
| 90 virtual bool reduceContentsTextureMemoryOnImplThread(size_t limitBytes, int
priorityCutoff) OVERRIDE { return m_reduceMemoryResult; } | 90 virtual bool reduceContentsTextureMemoryOnImplThread(size_t limitBytes, int
priorityCutoff) OVERRIDE { return m_reduceMemoryResult; } |
| 91 virtual void sendManagedMemoryStats() OVERRIDE { } | 91 virtual void sendManagedMemoryStats() OVERRIDE { } |
| 92 | 92 |
| 93 void setReduceMemoryResult(bool reduceMemoryResult) { m_reduceMemoryResult =
reduceMemoryResult; } | 93 void setReduceMemoryResult(bool reduceMemoryResult) { m_reduceMemoryResult =
reduceMemoryResult; } |
| 94 | 94 |
| 95 scoped_ptr<LayerTreeHostImpl> createLayerTreeHost(bool partialSwap, scoped_p
tr<GraphicsContext> graphicsContext, scoped_ptr<LayerImpl> root) | 95 scoped_ptr<LayerTreeHostImpl> createLayerTreeHost(bool partialSwap, scoped_p
tr<GraphicsContext> graphicsContext, scoped_ptr<LayerImpl> root) |
| 96 { | 96 { |
| 97 Settings::setPartialSwapEnabled(partialSwap); | 97 Settings::setPartialSwapEnabled(partialSwap); |
| 98 | 98 |
| 99 LayerTreeSettings settings; | 99 LayerTreeSettings settings; |
| (...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 { | 628 { |
| 629 setupScrollAndContentsLayers(IntSize(100, 100)); | 629 setupScrollAndContentsLayers(IntSize(100, 100)); |
| 630 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); | 630 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); |
| 631 initializeRendererAndDrawFrame(); | 631 initializeRendererAndDrawFrame(); |
| 632 | 632 |
| 633 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); | 633 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); |
| 634 DCHECK(scrollLayer); | 634 DCHECK(scrollLayer); |
| 635 | 635 |
| 636 const float minPageScale = Settings::pageScalePinchZoomEnabled() ? 1 : 0.5; | 636 const float minPageScale = Settings::pageScalePinchZoomEnabled() ? 1 : 0.5; |
| 637 const float maxPageScale = 4; | 637 const float maxPageScale = 4; |
| 638 const double startTime = 1; | 638 const base::TimeTicks startTime = base::TimeTicks() + base::TimeDelta::FromS
econds(1); |
| 639 const double duration = 0.1; | 639 const base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); |
| 640 const double halfwayThroughAnimation = startTime + duration / 2; | 640 const base::TimeTicks halfwayThroughAnimation = startTime + duration / 2; |
| 641 const double endTime = startTime + duration; | 641 const base::TimeTicks endTime = startTime + duration; |
| 642 const WebTransformationMatrix identityScaleTransform; | 642 const WebTransformationMatrix identityScaleTransform; |
| 643 | 643 |
| 644 // Non-anchor zoom-in | 644 // Non-anchor zoom-in |
| 645 { | 645 { |
| 646 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 646 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
| 647 scrollLayer->setImplTransform(identityScaleTransform); | 647 scrollLayer->setImplTransform(identityScaleTransform); |
| 648 scrollLayer->setScrollPosition(IntPoint(50, 50)); | 648 scrollLayer->setScrollPosition(IntPoint(50, 50)); |
| 649 | 649 |
| 650 m_hostImpl->startPageScaleAnimation(IntSize(0, 0), false, 2, startTime,
duration); | 650 m_hostImpl->startPageScaleAnimation(IntSize(0, 0), false, 2, startTime,
duration); |
| 651 m_hostImpl->animate(halfwayThroughAnimation, halfwayThroughAnimation); | 651 m_hostImpl->animate(halfwayThroughAnimation, base::Time()); |
| 652 EXPECT_TRUE(m_didRequestRedraw); | 652 EXPECT_TRUE(m_didRequestRedraw); |
| 653 m_hostImpl->animate(endTime, endTime); | 653 m_hostImpl->animate(endTime, base::Time()); |
| 654 EXPECT_TRUE(m_didRequestCommit); | 654 EXPECT_TRUE(m_didRequestCommit); |
| 655 | 655 |
| 656 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); | 656 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); |
| 657 EXPECT_EQ(scrollInfo->pageScaleDelta, 2); | 657 EXPECT_EQ(scrollInfo->pageScaleDelta, 2); |
| 658 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); | 658 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); |
| 659 } | 659 } |
| 660 | 660 |
| 661 // Anchor zoom-out | 661 // Anchor zoom-out |
| 662 { | 662 { |
| 663 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 663 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
| 664 scrollLayer->setImplTransform(identityScaleTransform); | 664 scrollLayer->setImplTransform(identityScaleTransform); |
| 665 scrollLayer->setScrollPosition(IntPoint(50, 50)); | 665 scrollLayer->setScrollPosition(IntPoint(50, 50)); |
| 666 | 666 |
| 667 m_hostImpl->startPageScaleAnimation(IntSize(25, 25), true, minPageScale,
startTime, duration); | 667 m_hostImpl->startPageScaleAnimation(IntSize(25, 25), true, minPageScale,
startTime, duration); |
| 668 m_hostImpl->animate(endTime, endTime); | 668 m_hostImpl->animate(endTime, base::Time()); |
| 669 EXPECT_TRUE(m_didRequestRedraw); | 669 EXPECT_TRUE(m_didRequestRedraw); |
| 670 EXPECT_TRUE(m_didRequestCommit); | 670 EXPECT_TRUE(m_didRequestCommit); |
| 671 | 671 |
| 672 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); | 672 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt
as(); |
| 673 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); | 673 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); |
| 674 // Pushed to (0,0) via clamping against contents layer size. | 674 // Pushed to (0,0) via clamping against contents layer size. |
| 675 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); | 675 expectContains(*scrollInfo, scrollLayer->id(), IntSize(-50, -50)); |
| 676 } | 676 } |
| 677 } | 677 } |
| 678 | 678 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 749 { | 749 { |
| 750 setupScrollAndContentsLayers(IntSize(100, 100)); | 750 setupScrollAndContentsLayers(IntSize(100, 100)); |
| 751 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); | 751 m_hostImpl->setViewportSize(IntSize(50, 50), IntSize(50, 50)); |
| 752 initializeRendererAndDrawFrame(); | 752 initializeRendererAndDrawFrame(); |
| 753 | 753 |
| 754 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); | 754 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); |
| 755 DCHECK(scrollLayer); | 755 DCHECK(scrollLayer); |
| 756 | 756 |
| 757 const float minPageScale = Settings::pageScalePinchZoomEnabled() ? 1 : 0.5; | 757 const float minPageScale = Settings::pageScalePinchZoomEnabled() ? 1 : 0.5; |
| 758 const float maxPageScale = 4; | 758 const float maxPageScale = 4; |
| 759 const double startTime = 1; | 759 const base::TimeTicks startTime = base::TimeTicks() + base::TimeDelta::FromS
econds(1); |
| 760 const double duration = 0.1; | 760 const base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); |
| 761 const double halfwayThroughAnimation = startTime + duration / 2; | 761 const base::TimeTicks halfwayThroughAnimation = startTime + duration / 2; |
| 762 const double endTime = startTime + duration; | 762 const base::TimeTicks endTime = startTime + duration; |
| 763 | |
| 764 // Start a page scale animation. | 763 // Start a page scale animation. |
| 765 const float pageScaleDelta = 2; | 764 const float pageScaleDelta = 2; |
| 766 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 765 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
| 767 m_hostImpl->startPageScaleAnimation(IntSize(50, 50), false, pageScaleDelta,
startTime, duration); | 766 m_hostImpl->startPageScaleAnimation(IntSize(50, 50), false, pageScaleDelta,
startTime, duration); |
| 768 | 767 |
| 769 // We should immediately get the final zoom and scroll values for the | 768 // We should immediately get the final zoom and scroll values for the |
| 770 // animation. | 769 // animation. |
| 771 m_hostImpl->animate(halfwayThroughAnimation, halfwayThroughAnimation); | 770 m_hostImpl->animate(halfwayThroughAnimation, base::Time()); |
| 772 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 771 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
| 773 | 772 |
| 774 if (!Settings::pageScalePinchZoomEnabled()) { | 773 if (!Settings::pageScalePinchZoomEnabled()) { |
| 775 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); | 774 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); |
| 776 expectContains(*scrollInfo, scrollLayer->id(), IntSize(25, 25)); | 775 expectContains(*scrollInfo, scrollLayer->id(), IntSize(25, 25)); |
| 777 } else { | 776 } else { |
| 778 EXPECT_EQ(scrollInfo->pageScaleDelta, 1); | 777 EXPECT_EQ(scrollInfo->pageScaleDelta, 1); |
| 779 EXPECT_TRUE(scrollInfo->scrolls.isEmpty()); | 778 EXPECT_TRUE(scrollInfo->scrolls.isEmpty()); |
| 780 } | 779 } |
| 781 | 780 |
| 782 // Scrolling during the animation is ignored. | 781 // Scrolling during the animation is ignored. |
| 783 const IntSize scrollDelta(0, 10); | 782 const IntSize scrollDelta(0, 10); |
| 784 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(25, 25), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); | 783 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(25, 25), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); |
| 785 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | 784 m_hostImpl->scrollBy(IntPoint(), scrollDelta); |
| 786 m_hostImpl->scrollEnd(); | 785 m_hostImpl->scrollEnd(); |
| 787 | 786 |
| 788 // The final page scale and scroll deltas should match what we got | 787 // The final page scale and scroll deltas should match what we got |
| 789 // earlier. | 788 // earlier. |
| 790 m_hostImpl->animate(endTime, endTime); | 789 m_hostImpl->animate(endTime, base::Time()); |
| 791 scrollInfo = m_hostImpl->processScrollDeltas(); | 790 scrollInfo = m_hostImpl->processScrollDeltas(); |
| 792 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); | 791 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); |
| 793 expectContains(*scrollInfo, scrollLayer->id(), IntSize(25, 25)); | 792 expectContains(*scrollInfo, scrollLayer->id(), IntSize(25, 25)); |
| 794 } | 793 } |
| 795 | 794 |
| 796 class DidDrawCheckLayer : public TiledLayerImpl { | 795 class DidDrawCheckLayer : public TiledLayerImpl { |
| 797 public: | 796 public: |
| 798 static scoped_ptr<LayerImpl> create(int id) { return scoped_ptr<LayerImpl>(n
ew DidDrawCheckLayer(id)); } | 797 static scoped_ptr<LayerImpl> create(int id) { return scoped_ptr<LayerImpl>(n
ew DidDrawCheckLayer(id)); } |
| 799 | 798 |
| 800 virtual void didDraw(ResourceProvider*) OVERRIDE | 799 virtual void didDraw(ResourceProvider*) OVERRIDE |
| (...skipping 3575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4376 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat
a); | 4375 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat
a); |
| 4377 testCaseIndex++; | 4376 testCaseIndex++; |
| 4378 } | 4377 } |
| 4379 } | 4378 } |
| 4380 | 4379 |
| 4381 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, | 4380 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, |
| 4382 LayerTreeHostImplTest, | 4381 LayerTreeHostImplTest, |
| 4383 ::testing::Values(false, true)); | 4382 ::testing::Values(false, true)); |
| 4384 | 4383 |
| 4385 } // namespace | 4384 } // namespace |
| OLD | NEW |