OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/output/gl_renderer.h" | 5 #include "cc/output/gl_renderer.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 #include <vector> | 10 #include <vector> |
(...skipping 1607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1618 renderer_->SetVisible(true); | 1618 renderer_->SetVisible(true); |
1619 Mock::VerifyAndClearExpectations(output_surface_.get()); | 1619 Mock::VerifyAndClearExpectations(output_surface_.get()); |
1620 } | 1620 } |
1621 | 1621 |
1622 class TestOverlayProcessor : public OverlayProcessor { | 1622 class TestOverlayProcessor : public OverlayProcessor { |
1623 public: | 1623 public: |
1624 class Strategy : public OverlayProcessor::Strategy { | 1624 class Strategy : public OverlayProcessor::Strategy { |
1625 public: | 1625 public: |
1626 Strategy() {} | 1626 Strategy() {} |
1627 ~Strategy() override {} | 1627 ~Strategy() override {} |
1628 MOCK_METHOD3(Attempt, | 1628 MOCK_METHOD4(Attempt, |
1629 bool(ResourceProvider* resource_provider, | 1629 bool(ResourceProvider* resource_provider, |
1630 RenderPass* render_pass, | 1630 RenderPass* render_pass, |
1631 OverlayCandidateList* candidates)); | 1631 OverlayCandidateList* candidates, |
| 1632 std::vector<gfx::Rect>* content_bounds)); |
1632 }; | 1633 }; |
1633 | 1634 |
1634 class Validator : public OverlayCandidateValidator { | 1635 class Validator : public OverlayCandidateValidator { |
1635 public: | 1636 public: |
1636 void GetStrategies(OverlayProcessor::StrategyList* strategies) override {} | 1637 void GetStrategies(OverlayProcessor::StrategyList* strategies) override {} |
1637 | 1638 |
1638 // Returns true if draw quads can be represented as CALayers (Mac only). | 1639 // Returns true if draw quads can be represented as CALayers (Mac only). |
1639 MOCK_METHOD0(AllowCALayerOverlays, bool()); | 1640 MOCK_METHOD0(AllowCALayerOverlays, bool()); |
1640 | 1641 |
1641 // A list of possible overlay candidates is presented to this function. | 1642 // A list of possible overlay candidates is presented to this function. |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1718 root_pass->CreateAndAppendSharedQuadState(), gfx::Rect(viewport_size), | 1719 root_pass->CreateAndAppendSharedQuadState(), gfx::Rect(viewport_size), |
1719 gfx::Rect(viewport_size), gfx::Rect(viewport_size), resource_id, | 1720 gfx::Rect(viewport_size), gfx::Rect(viewport_size), resource_id, |
1720 premultiplied_alpha, gfx::PointF(0, 0), gfx::PointF(1, 1), | 1721 premultiplied_alpha, gfx::PointF(0, 0), gfx::PointF(1, 1), |
1721 SK_ColorTRANSPARENT, vertex_opacity, flipped, nearest_neighbor, false); | 1722 SK_ColorTRANSPARENT, vertex_opacity, flipped, nearest_neighbor, false); |
1722 | 1723 |
1723 // DirectRenderer::DrawFrame calls into OverlayProcessor::ProcessForOverlays. | 1724 // DirectRenderer::DrawFrame calls into OverlayProcessor::ProcessForOverlays. |
1724 // Attempt will be called for each strategy in OverlayProcessor. We have | 1725 // Attempt will be called for each strategy in OverlayProcessor. We have |
1725 // added a fake strategy, so checking for Attempt calls checks if there was | 1726 // added a fake strategy, so checking for Attempt calls checks if there was |
1726 // any attempt to overlay, which there shouldn't be. We can't use the quad | 1727 // any attempt to overlay, which there shouldn't be. We can't use the quad |
1727 // list because the render pass is cleaned up by DrawFrame. | 1728 // list because the render pass is cleaned up by DrawFrame. |
1728 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(0); | 1729 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _, _)).Times(0); |
1729 EXPECT_CALL(*validator, AllowCALayerOverlays()).Times(0); | 1730 EXPECT_CALL(*validator, AllowCALayerOverlays()).Times(0); |
1730 DrawFrame(&renderer, viewport_size); | 1731 DrawFrame(&renderer, viewport_size); |
1731 Mock::VerifyAndClearExpectations(processor->strategy_); | 1732 Mock::VerifyAndClearExpectations(processor->strategy_); |
1732 Mock::VerifyAndClearExpectations(validator.get()); | 1733 Mock::VerifyAndClearExpectations(validator.get()); |
1733 | 1734 |
1734 // Without a copy request Attempt() should be called once. | 1735 // Without a copy request Attempt() should be called once. |
1735 root_pass = | 1736 root_pass = |
1736 AddRenderPass(&render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), | 1737 AddRenderPass(&render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), |
1737 gfx::Transform(), FilterOperations()); | 1738 gfx::Transform(), FilterOperations()); |
1738 root_pass->has_transparent_background = false; | 1739 root_pass->has_transparent_background = false; |
1739 | 1740 |
1740 overlay_quad = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 1741 overlay_quad = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
1741 overlay_quad->SetNew( | 1742 overlay_quad->SetNew( |
1742 root_pass->CreateAndAppendSharedQuadState(), gfx::Rect(viewport_size), | 1743 root_pass->CreateAndAppendSharedQuadState(), gfx::Rect(viewport_size), |
1743 gfx::Rect(viewport_size), gfx::Rect(viewport_size), resource_id, | 1744 gfx::Rect(viewport_size), gfx::Rect(viewport_size), resource_id, |
1744 premultiplied_alpha, gfx::PointF(0, 0), gfx::PointF(1, 1), | 1745 premultiplied_alpha, gfx::PointF(0, 0), gfx::PointF(1, 1), |
1745 SK_ColorTRANSPARENT, vertex_opacity, flipped, nearest_neighbor, false); | 1746 SK_ColorTRANSPARENT, vertex_opacity, flipped, nearest_neighbor, false); |
1746 EXPECT_CALL(*validator, AllowCALayerOverlays()) | 1747 EXPECT_CALL(*validator, AllowCALayerOverlays()) |
1747 .Times(1) | 1748 .Times(1) |
1748 .WillOnce(::testing::Return(false)); | 1749 .WillOnce(::testing::Return(false)); |
1749 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(1); | 1750 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _, _)).Times(1); |
1750 DrawFrame(&renderer, viewport_size); | 1751 DrawFrame(&renderer, viewport_size); |
1751 | 1752 |
1752 // If the CALayerOverlay path is taken, then the ordinary overlay path should | 1753 // If the CALayerOverlay path is taken, then the ordinary overlay path should |
1753 // not be called. | 1754 // not be called. |
1754 root_pass = | 1755 root_pass = |
1755 AddRenderPass(&render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), | 1756 AddRenderPass(&render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), |
1756 gfx::Transform(), FilterOperations()); | 1757 gfx::Transform(), FilterOperations()); |
1757 root_pass->has_transparent_background = false; | 1758 root_pass->has_transparent_background = false; |
1758 | 1759 |
1759 overlay_quad = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 1760 overlay_quad = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
1760 overlay_quad->SetNew( | 1761 overlay_quad->SetNew( |
1761 root_pass->CreateAndAppendSharedQuadState(), gfx::Rect(viewport_size), | 1762 root_pass->CreateAndAppendSharedQuadState(), gfx::Rect(viewport_size), |
1762 gfx::Rect(viewport_size), gfx::Rect(viewport_size), resource_id, | 1763 gfx::Rect(viewport_size), gfx::Rect(viewport_size), resource_id, |
1763 premultiplied_alpha, gfx::PointF(0, 0), gfx::PointF(1, 1), | 1764 premultiplied_alpha, gfx::PointF(0, 0), gfx::PointF(1, 1), |
1764 SK_ColorTRANSPARENT, vertex_opacity, flipped, nearest_neighbor, false); | 1765 SK_ColorTRANSPARENT, vertex_opacity, flipped, nearest_neighbor, false); |
1765 EXPECT_CALL(*validator, AllowCALayerOverlays()) | 1766 EXPECT_CALL(*validator, AllowCALayerOverlays()) |
1766 .Times(1) | 1767 .Times(1) |
1767 .WillOnce(::testing::Return(true)); | 1768 .WillOnce(::testing::Return(true)); |
1768 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(0); | 1769 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _, _)).Times(0); |
1769 DrawFrame(&renderer, viewport_size); | 1770 DrawFrame(&renderer, viewport_size); |
1770 } | 1771 } |
1771 | 1772 |
1772 class SingleOverlayOnTopProcessor : public OverlayProcessor { | 1773 class SingleOverlayOnTopProcessor : public OverlayProcessor { |
1773 public: | 1774 public: |
1774 class SingleOverlayValidator : public OverlayCandidateValidator { | 1775 class SingleOverlayValidator : public OverlayCandidateValidator { |
1775 public: | 1776 public: |
1776 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { | 1777 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
1777 strategies->push_back(base::MakeUnique<OverlayStrategySingleOnTop>(this)); | 1778 strategies->push_back(base::MakeUnique<OverlayStrategySingleOnTop>(this)); |
1778 strategies->push_back(base::MakeUnique<OverlayStrategyUnderlay>(this)); | 1779 strategies->push_back(base::MakeUnique<OverlayStrategyUnderlay>(this)); |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2022 renderer_->SetVisible(true); | 2023 renderer_->SetVisible(true); |
2023 Mock::VerifyAndClearExpectations(context_support_ptr_); | 2024 Mock::VerifyAndClearExpectations(context_support_ptr_); |
2024 | 2025 |
2025 EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(true)); | 2026 EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(true)); |
2026 renderer_->SetVisible(false); | 2027 renderer_->SetVisible(false); |
2027 Mock::VerifyAndClearExpectations(context_support_ptr_); | 2028 Mock::VerifyAndClearExpectations(context_support_ptr_); |
2028 } | 2029 } |
2029 | 2030 |
2030 } // namespace | 2031 } // namespace |
2031 } // namespace cc | 2032 } // namespace cc |
OLD | NEW |