Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Side by Side Diff: cc/layer_tree_host_unittest.cc

Issue 11366094: cc: Create a Region class that wraps SkRegion, to replace use of WebCore::Region. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move deg2rad etc to MathUtil Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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.h" 7 #include "cc/layer_tree_host.h"
8 8
9 #include "base/synchronization/lock.h" 9 #include "base/synchronization/lock.h"
10 #include "cc/content_layer.h" 10 #include "cc/content_layer.h"
(...skipping 1671 matching lines...) Expand 10 before | Expand all | Expand 10 after
1682 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), false); 1682 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), false);
1683 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true); 1683 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1684 1684
1685 m_layerTreeHost->setRootLayer(rootLayer); 1685 m_layerTreeHost->setRootLayer(rootLayer);
1686 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1686 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1687 ASSERT_TRUE(m_layerTreeHost->initializeRendererIfNeeded()); 1687 ASSERT_TRUE(m_layerTreeHost->initializeRendererIfNeeded());
1688 ResourceUpdateQueue queue; 1688 ResourceUpdateQueue queue;
1689 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1689 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1690 m_layerTreeHost->commitComplete(); 1690 m_layerTreeHost->commitComplete();
1691 1691
1692 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds()); 1692 EXPECT_EQ(gfx::Rect().ToString(), grandChild->occludedScreenSpace().ToSt ring());
1693 EXPECT_EQ(0u, Region::Iterator(grandChild->occludedScreenSpace()).size() ); 1693 EXPECT_EQ(gfx::Rect(30, 40, 170, 160).ToString(), child->occludedScreenS pace().ToString());
1694 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds()); 1694 EXPECT_EQ(gfx::Rect(30, 40, 170, 160).ToString(), rootLayer->occludedScr eenSpace().ToString());
1695 EXPECT_EQ(1u, Region::Iterator(child->occludedScreenSpace()).size());
1696 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), rootLayer->occludedScreenSpa ce().bounds());
1697 EXPECT_EQ(1u, Region::Iterator(rootLayer->occludedScreenSpace()).size()) ;
1698 1695
1699 // If the child layer is opaque, then it adds to the occlusion seen by t he rootLayer. 1696 // If the child layer is opaque, then it adds to the occlusion seen by t he rootLayer.
1700 setLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx::Po intF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true); 1697 setLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx::Po intF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1701 setLayerPropertiesForTesting(child.get(), rootLayer.get(), childTransfor m, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true); 1698 setLayerPropertiesForTesting(child.get(), rootLayer.get(), childTransfor m, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1702 setLayerPropertiesForTesting(grandChild.get(), child.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true); 1699 setLayerPropertiesForTesting(grandChild.get(), child.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1703 1700
1704 m_layerTreeHost->setRootLayer(rootLayer); 1701 m_layerTreeHost->setRootLayer(rootLayer);
1705 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1702 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1706 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1703 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1707 m_layerTreeHost->commitComplete(); 1704 m_layerTreeHost->commitComplete();
1708 1705
1709 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds()); 1706 EXPECT_EQ(gfx::Rect().ToString(), grandChild->occludedScreenSpace().ToSt ring());
1710 EXPECT_EQ(0u, Region::Iterator(grandChild->occludedScreenSpace()).size() ); 1707 EXPECT_EQ(gfx::Rect(30, 40, 170, 160).ToString(), child->occludedScreenS pace().ToString());
1711 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds()); 1708 EXPECT_EQ(gfx::Rect(30, 30, 170, 170).ToString(), rootLayer->occludedScr eenSpace().ToString());
1712 EXPECT_EQ(1u, Region::Iterator(child->occludedScreenSpace()).size());
1713 EXPECT_RECT_EQ(gfx::Rect(30, 30, 170, 170), rootLayer->occludedScreenSpa ce().bounds());
1714 EXPECT_EQ(1u, Region::Iterator(rootLayer->occludedScreenSpace()).size()) ;
1715 1709
1716 // Add a second child to the root layer and the regions should merge 1710 // Add a second child to the root layer and the regions should merge
1717 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true); 1711 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1718 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(70, 20), gfx::Size(500, 500), true); 1712 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(70, 20), gfx::Size(500, 500), true);
1719 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true); 1713 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1720 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true); 1714 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1721 1715
1722 m_layerTreeHost->setRootLayer(rootLayer); 1716 m_layerTreeHost->setRootLayer(rootLayer);
1723 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1717 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1724 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1718 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1725 m_layerTreeHost->commitComplete(); 1719 m_layerTreeHost->commitComplete();
1726 1720
1727 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds()); 1721 EXPECT_EQ(gfx::Rect().ToString(), grandChild->occludedScreenSpace().ToSt ring());
1728 EXPECT_EQ(0u, Region::Iterator(grandChild->occludedScreenSpace()).size() ); 1722 EXPECT_EQ(gfx::Rect(30, 40, 170, 160).ToString(), child->occludedScreenS pace().ToString());
1729 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds()); 1723 EXPECT_EQ(gfx::Rect(30, 30, 170, 170).ToString(), child2->occludedScreen Space().ToString());
1730 EXPECT_EQ(1u, Region::Iterator(child->occludedScreenSpace()).size()); 1724 EXPECT_EQ(UnionRegions(gfx::Rect(30, 30, 170, 170), gfx::Rect(70, 20, 13 0, 180)).ToString(), rootLayer->occludedScreenSpace().ToString());
1731 EXPECT_RECT_EQ(gfx::Rect(30, 30, 170, 170), child2->occludedScreenSpace( ).bounds());
1732 EXPECT_EQ(1u, Region::Iterator(child2->occludedScreenSpace()).size());
1733 EXPECT_RECT_EQ(gfx::Rect(30, 20, 170, 180), rootLayer->occludedScreenSpa ce().bounds());
1734 EXPECT_EQ(2u, Region::Iterator(rootLayer->occludedScreenSpace()).size()) ;
1735 1725
1736 // Move the second child to be sure. 1726 // Move the second child to be sure.
1737 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true); 1727 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1738 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true); 1728 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1739 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true); 1729 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1740 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true); 1730 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1741 1731
1742 m_layerTreeHost->setRootLayer(rootLayer); 1732 m_layerTreeHost->setRootLayer(rootLayer);
1743 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1733 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1744 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1734 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1745 m_layerTreeHost->commitComplete(); 1735 m_layerTreeHost->commitComplete();
1746 1736
1747 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds()); 1737 EXPECT_EQ(gfx::Rect().ToString(), grandChild->occludedScreenSpace().ToSt ring());
1748 EXPECT_EQ(0u, Region::Iterator(grandChild->occludedScreenSpace()).size() ); 1738 EXPECT_EQ(gfx::Rect(30, 40, 170, 160).ToString(), child->occludedScreenS pace().ToString());
1749 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds()); 1739 EXPECT_EQ(gfx::Rect(30, 30, 170, 170).ToString(), child2->occludedScreen Space().ToString());
1750 EXPECT_EQ(1u, Region::Iterator(child->occludedScreenSpace()).size()); 1740 EXPECT_EQ(UnionRegions(gfx::Rect(10, 70, 190, 130), gfx::Rect(30, 30, 17 0, 170)).ToString(), rootLayer->occludedScreenSpace().ToString());
1751 EXPECT_RECT_EQ(gfx::Rect(30, 30, 170, 170), child2->occludedScreenSpace( ).bounds());
1752 EXPECT_EQ(1u, Region::Iterator(child2->occludedScreenSpace()).size());
1753 EXPECT_RECT_EQ(gfx::Rect(10, 30, 190, 170), rootLayer->occludedScreenSpa ce().bounds());
1754 EXPECT_EQ(2u, Region::Iterator(rootLayer->occludedScreenSpace()).size()) ;
1755 1741
1756 // If the child layer has a mask on it, then it shouldn't contribute to occlusion on stuff below it 1742 // If the child layer has a mask on it, then it shouldn't contribute to occlusion on stuff below it
1757 setLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx::Po intF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true); 1743 setLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx::Po intF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1758 setLayerPropertiesForTesting(child2.get(), rootLayer.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true); 1744 setLayerPropertiesForTesting(child2.get(), rootLayer.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1759 setLayerPropertiesForTesting(child.get(), rootLayer.get(), childTransfor m, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true); 1745 setLayerPropertiesForTesting(child.get(), rootLayer.get(), childTransfor m, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1760 setLayerPropertiesForTesting(grandChild.get(), child.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true); 1746 setLayerPropertiesForTesting(grandChild.get(), child.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1761 1747
1762 child->setMaskLayer(mask.get()); 1748 child->setMaskLayer(mask.get());
1763 1749
1764 m_layerTreeHost->setRootLayer(rootLayer); 1750 m_layerTreeHost->setRootLayer(rootLayer);
1765 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1751 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1766 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1752 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1767 m_layerTreeHost->commitComplete(); 1753 m_layerTreeHost->commitComplete();
1768 1754
1769 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds()); 1755 EXPECT_EQ(gfx::Rect().ToString(), grandChild->occludedScreenSpace().ToSt ring());
1770 EXPECT_EQ(0u, Region::Iterator(grandChild->occludedScreenSpace()).size() ); 1756 EXPECT_EQ(gfx::Rect(30, 40, 170, 160).ToString(), child->occludedScreenS pace().ToString());
1771 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds()); 1757 EXPECT_EQ(gfx::Rect().ToString(), child2->occludedScreenSpace().ToString ());
1772 EXPECT_EQ(1u, Region::Iterator(child->occludedScreenSpace()).size()); 1758 EXPECT_EQ(gfx::Rect(10, 70, 190, 130).ToString(), rootLayer->occludedScr eenSpace().ToString());
1773 EXPECT_RECT_EQ(gfx::Rect(), child2->occludedScreenSpace().bounds());
1774 EXPECT_EQ(0u, Region::Iterator(child2->occludedScreenSpace()).size());
1775 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), rootLayer->occludedScreenSpa ce().bounds());
1776 EXPECT_EQ(1u, Region::Iterator(rootLayer->occludedScreenSpace()).size()) ;
1777 1759
1778 // If the child layer with a mask is below child2, then child2 should co ntribute to occlusion on everything, and child shouldn't contribute to the rootL ayer 1760 // If the child layer with a mask is below child2, then child2 should co ntribute to occlusion on everything, and child shouldn't contribute to the rootL ayer
1779 setLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx::Po intF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true); 1761 setLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx::Po intF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1780 setLayerPropertiesForTesting(child.get(), rootLayer.get(), childTransfor m, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true); 1762 setLayerPropertiesForTesting(child.get(), rootLayer.get(), childTransfor m, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1781 setLayerPropertiesForTesting(grandChild.get(), child.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true); 1763 setLayerPropertiesForTesting(grandChild.get(), child.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1782 setLayerPropertiesForTesting(child2.get(), rootLayer.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true); 1764 setLayerPropertiesForTesting(child2.get(), rootLayer.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1783 1765
1784 child->setMaskLayer(mask.get()); 1766 child->setMaskLayer(mask.get());
1785 1767
1786 m_layerTreeHost->setRootLayer(rootLayer); 1768 m_layerTreeHost->setRootLayer(rootLayer);
1787 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1769 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1788 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1770 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1789 m_layerTreeHost->commitComplete(); 1771 m_layerTreeHost->commitComplete();
1790 1772
1791 EXPECT_RECT_EQ(gfx::Rect(), child2->occludedScreenSpace().bounds()); 1773 EXPECT_EQ(gfx::Rect().ToString(), child2->occludedScreenSpace().ToString ());
1792 EXPECT_EQ(0u, Region::Iterator(child2->occludedScreenSpace()).size()); 1774 EXPECT_EQ(gfx::Rect(10, 70, 190, 130).ToString(), grandChild->occludedSc reenSpace().ToString());
1793 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), grandChild->occludedScreenSp ace().bounds()); 1775 EXPECT_EQ(UnionRegions(gfx::Rect(30, 40, 170, 160), gfx::Rect(10, 70, 19 0, 130)).ToString(), child->occludedScreenSpace().ToString());
1794 EXPECT_EQ(1u, Region::Iterator(grandChild->occludedScreenSpace()).size() ); 1776 EXPECT_EQ(gfx::Rect(10, 70, 190, 130), rootLayer->occludedScreenSpace()) ;
1795 EXPECT_RECT_EQ(gfx::Rect(10, 40, 190, 160), child->occludedScreenSpace() .bounds());
1796 EXPECT_EQ(2u, Region::Iterator(child->occludedScreenSpace()).size());
1797 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), rootLayer->occludedScreenSpa ce().bounds());
1798 EXPECT_EQ(1u, Region::Iterator(rootLayer->occludedScreenSpace()).size()) ;
1799 1777
1800 // If the child layer has a non-opaque drawOpacity, then it shouldn't co ntribute to occlusion on stuff below it 1778 // If the child layer has a non-opaque drawOpacity, then it shouldn't co ntribute to occlusion on stuff below it
1801 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true); 1779 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1802 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true); 1780 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1803 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true); 1781 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1804 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true); 1782 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1805 1783
1806 child->setMaskLayer(0); 1784 child->setMaskLayer(0);
1807 child->setOpacity(0.5); 1785 child->setOpacity(0.5);
1808 1786
1809 m_layerTreeHost->setRootLayer(rootLayer); 1787 m_layerTreeHost->setRootLayer(rootLayer);
1810 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1788 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1811 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1789 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1812 m_layerTreeHost->commitComplete(); 1790 m_layerTreeHost->commitComplete();
1813 1791
1814 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds()); 1792 EXPECT_EQ(gfx::Rect().ToString(), grandChild->occludedScreenSpace().ToSt ring());
1815 EXPECT_EQ(0u, Region::Iterator(grandChild->occludedScreenSpace()).size() ); 1793 EXPECT_EQ(gfx::Rect(30, 40, 170, 160).ToString(), child->occludedScreenS pace().ToString());
1816 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds()); 1794 EXPECT_EQ(gfx::Rect().ToString(), child2->occludedScreenSpace().ToString ());
1817 EXPECT_EQ(1u, Region::Iterator(child->occludedScreenSpace()).size()); 1795 EXPECT_EQ(gfx::Rect(10, 70, 190, 130).ToString(), rootLayer->occludedScr eenSpace().ToString());
1818 EXPECT_RECT_EQ(gfx::Rect(), child2->occludedScreenSpace().bounds());
1819 EXPECT_EQ(0u, Region::Iterator(child2->occludedScreenSpace()).size());
1820 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), rootLayer->occludedScreenSpa ce().bounds());
1821 EXPECT_EQ(1u, Region::Iterator(rootLayer->occludedScreenSpace()).size()) ;
1822 1796
1823 // If the child layer with non-opaque drawOpacity is below child2, then child2 should contribute to occlusion on everything, and child shouldn't contrib ute to the rootLayer 1797 // If the child layer with non-opaque drawOpacity is below child2, then child2 should contribute to occlusion on everything, and child shouldn't contrib ute to the rootLayer
1824 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true); 1798 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1825 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true); 1799 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1826 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true); 1800 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1827 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true); 1801 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1828 1802
1829 child->setMaskLayer(0); 1803 child->setMaskLayer(0);
1830 child->setOpacity(0.5); 1804 child->setOpacity(0.5);
1831 1805
1832 m_layerTreeHost->setRootLayer(rootLayer); 1806 m_layerTreeHost->setRootLayer(rootLayer);
1833 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1807 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1834 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1808 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1835 m_layerTreeHost->commitComplete(); 1809 m_layerTreeHost->commitComplete();
1836 1810
1837 EXPECT_RECT_EQ(gfx::Rect(), child2->occludedScreenSpace().bounds()); 1811 EXPECT_EQ(gfx::Rect().ToString(), child2->occludedScreenSpace().ToString ());
1838 EXPECT_EQ(0u, Region::Iterator(child2->occludedScreenSpace()).size()); 1812 EXPECT_EQ(gfx::Rect(10, 70, 190, 130).ToString(), grandChild->occludedSc reenSpace().ToString());
1839 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), grandChild->occludedScreenSp ace().bounds()); 1813 EXPECT_EQ(UnionRegions(gfx::Rect(30, 40, 170, 160), gfx::Rect(10, 70, 19 0, 130)).ToString(), child->occludedScreenSpace().ToString());
1840 EXPECT_EQ(1u, Region::Iterator(grandChild->occludedScreenSpace()).size() ); 1814 EXPECT_EQ(gfx::Rect(10, 70, 190, 130).ToString(), rootLayer->occludedScr eenSpace().ToString());
1841 EXPECT_RECT_EQ(gfx::Rect(10, 40, 190, 160), child->occludedScreenSpace() .bounds());
1842 EXPECT_EQ(2u, Region::Iterator(child->occludedScreenSpace()).size());
1843 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), rootLayer->occludedScreenSpa ce().bounds());
1844 EXPECT_EQ(1u, Region::Iterator(rootLayer->occludedScreenSpace()).size()) ;
1845 1815
1846 // Kill the layerTreeHost immediately. 1816 // Kill the layerTreeHost immediately.
1847 m_layerTreeHost->setRootLayer(0); 1817 m_layerTreeHost->setRootLayer(0);
1848 m_layerTreeHost.reset(); 1818 m_layerTreeHost.reset();
1849 1819
1850 endTest(); 1820 endTest();
1851 } 1821 }
1852 1822
1853 virtual void afterTest() OVERRIDE 1823 virtual void afterTest() OVERRIDE
1854 { 1824 {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1890 child->setFilters(filters); 1860 child->setFilters(filters);
1891 } 1861 }
1892 1862
1893 m_layerTreeHost->setRootLayer(rootLayer); 1863 m_layerTreeHost->setRootLayer(rootLayer);
1894 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1864 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1895 ASSERT_TRUE(m_layerTreeHost->initializeRendererIfNeeded()); 1865 ASSERT_TRUE(m_layerTreeHost->initializeRendererIfNeeded());
1896 ResourceUpdateQueue queue; 1866 ResourceUpdateQueue queue;
1897 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1867 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1898 m_layerTreeHost->commitComplete(); 1868 m_layerTreeHost->commitComplete();
1899 1869
1900 EXPECT_RECT_EQ(gfx::Rect(), child2->occludedScreenSpace().bounds()); 1870 EXPECT_EQ(gfx::Rect().ToString(), child2->occludedScreenSpace().ToString ());
1901 EXPECT_EQ(0u, Region::Iterator(child2->occludedScreenSpace()).size()); 1871 EXPECT_EQ(gfx::Rect(10, 70, 190, 130).ToString(), grandChild->occludedSc reenSpace().ToString());
1902 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), grandChild->occludedScreenSp ace().bounds()); 1872 EXPECT_EQ(UnionRegions(gfx::Rect(30, 40, 170, 30), gfx::Rect(10, 70, 190 , 130)).ToString(), child->occludedScreenSpace().ToString());
1903 EXPECT_EQ(1u, Region::Iterator(grandChild->occludedScreenSpace()).size() ); 1873 EXPECT_EQ(gfx::Rect(10, 70, 190, 130).ToString(), rootLayer->occludedScr eenSpace().ToString());
1904 EXPECT_RECT_EQ(gfx::Rect(10, 40, 190, 160), child->occludedScreenSpace() .bounds());
1905 EXPECT_EQ(2u, Region::Iterator(child->occludedScreenSpace()).size());
1906 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), rootLayer->occludedScreenSpa ce().bounds());
1907 EXPECT_EQ(1u, Region::Iterator(rootLayer->occludedScreenSpace()).size()) ;
1908 1874
1909 // If the child layer has a filter that moves pixels/changes alpha, and is below child2, then child should not inherit occlusion from outside its subtre e, 1875 // If the child layer has a filter that moves pixels/changes alpha, and is below child2, then child should not inherit occlusion from outside its subtre e,
1910 // and should not contribute to the rootLayer 1876 // and should not contribute to the rootLayer
1911 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true); 1877 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1912 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true); 1878 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1913 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true); 1879 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1914 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true); 1880 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1915 1881
1916 { 1882 {
1917 WebFilterOperations filters; 1883 WebFilterOperations filters;
1918 filters.append(WebFilterOperation::createBlurFilter(10)); 1884 filters.append(WebFilterOperation::createBlurFilter(10));
1919 child->setFilters(filters); 1885 child->setFilters(filters);
1920 } 1886 }
1921 1887
1922 m_layerTreeHost->setRootLayer(rootLayer); 1888 m_layerTreeHost->setRootLayer(rootLayer);
1923 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1889 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1924 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1890 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1925 m_layerTreeHost->commitComplete(); 1891 m_layerTreeHost->commitComplete();
1926 1892
1927 EXPECT_RECT_EQ(gfx::Rect(), child2->occludedScreenSpace().bounds()); 1893 EXPECT_EQ(gfx::Rect().ToString(), child2->occludedScreenSpace().ToString ());
1928 EXPECT_EQ(0u, Region::Iterator(child2->occludedScreenSpace()).size()); 1894 EXPECT_EQ(gfx::Rect().ToString(), grandChild->occludedScreenSpace().ToSt ring());
1929 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds()); 1895 EXPECT_EQ(gfx::Rect(30, 40, 170, 160).ToString(), child->occludedScreenS pace().ToString());
1930 EXPECT_EQ(0u, Region::Iterator(grandChild->occludedScreenSpace()).size() ); 1896 EXPECT_EQ(gfx::Rect(10, 70, 190, 130).ToString(), rootLayer->occludedScr eenSpace().ToString());
1931 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds());
1932 EXPECT_EQ(1u, Region::Iterator(child->occludedScreenSpace()).size());
1933 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), rootLayer->occludedScreenSpa ce().bounds());
1934 EXPECT_EQ(1u, Region::Iterator(rootLayer->occludedScreenSpace()).size()) ;
1935 1897
1936 // Kill the layerTreeHost immediately. 1898 // Kill the layerTreeHost immediately.
1937 m_layerTreeHost->setRootLayer(0); 1899 m_layerTreeHost->setRootLayer(0);
1938 m_layerTreeHost.reset(); 1900 m_layerTreeHost.reset();
1939 1901
1940 LayerTreeHost::setNeedsFilterContext(false); 1902 LayerTreeHost::setNeedsFilterContext(false);
1941 endTest(); 1903 endTest();
1942 } 1904 }
1943 1905
1944 virtual void afterTest() OVERRIDE 1906 virtual void afterTest() OVERRIDE
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1981 1943
1982 m_layerTreeHost->setRootLayer(layers[0].get()); 1944 m_layerTreeHost->setRootLayer(layers[0].get());
1983 m_layerTreeHost->setViewportSize(layers[0]->bounds(), layers[0]->bounds( )); 1945 m_layerTreeHost->setViewportSize(layers[0]->bounds(), layers[0]->bounds( ));
1984 ASSERT_TRUE(m_layerTreeHost->initializeRendererIfNeeded()); 1946 ASSERT_TRUE(m_layerTreeHost->initializeRendererIfNeeded());
1985 ResourceUpdateQueue queue; 1947 ResourceUpdateQueue queue;
1986 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1948 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1987 m_layerTreeHost->commitComplete(); 1949 m_layerTreeHost->commitComplete();
1988 1950
1989 for (int i = 0; i < numSurfaces-1; ++i) { 1951 for (int i = 0; i < numSurfaces-1; ++i) {
1990 gfx::Rect expectedOcclusion(i+1, i+1, 200-i-1, 200-i-1); 1952 gfx::Rect expectedOcclusion(i+1, i+1, 200-i-1, 200-i-1);
1991 1953 EXPECT_EQ(expectedOcclusion.ToString(), layers[i]->occludedScreenSpa ce().ToString());
1992 EXPECT_RECT_EQ(expectedOcclusion, layers[i]->occludedScreenSpace().b ounds());
1993 EXPECT_EQ(1u, Region::Iterator(layers[i]->occludedScreenSpace()).siz e());
1994 } 1954 }
1995 1955
1996 // Kill the layerTreeHost immediately. 1956 // Kill the layerTreeHost immediately.
1997 m_layerTreeHost->setRootLayer(0); 1957 m_layerTreeHost->setRootLayer(0);
1998 m_layerTreeHost.reset(); 1958 m_layerTreeHost.reset();
1999 1959
2000 endTest(); 1960 endTest();
2001 } 1961 }
2002 1962
2003 virtual void afterTest() OVERRIDE 1963 virtual void afterTest() OVERRIDE
(...skipping 1261 matching lines...) Expand 10 before | Expand all | Expand 10 after
3265 int m_numCommitsDeferred; 3225 int m_numCommitsDeferred;
3266 int m_numCompleteCommits; 3226 int m_numCompleteCommits;
3267 }; 3227 };
3268 3228
3269 TEST_F(LayerTreeHostTestDeferCommits, runMultiThread) 3229 TEST_F(LayerTreeHostTestDeferCommits, runMultiThread)
3270 { 3230 {
3271 runTest(true); 3231 runTest(true);
3272 } 3232 }
3273 3233
3274 } // anonymous namespace 3234 } // anonymous namespace
OLDNEW
« no previous file with comments | « cc/layer_tree_host_impl_unittest.cc ('k') | cc/math_util.h » ('j') | cc/math_util.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698