Chromium Code Reviews| 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/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/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 1628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1639 host_impl_->MakeCompositorFrameMetadata(); | 1639 host_impl_->MakeCompositorFrameMetadata(); |
| 1640 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset); | 1640 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset); |
| 1641 EXPECT_EQ(4.f, metadata.page_scale_factor); | 1641 EXPECT_EQ(4.f, metadata.page_scale_factor); |
| 1642 EXPECT_EQ(gfx::SizeF(12.5f, 12.5f), metadata.viewport_size); | 1642 EXPECT_EQ(gfx::SizeF(12.5f, 12.5f), metadata.viewport_size); |
| 1643 EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size); | 1643 EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size); |
| 1644 EXPECT_EQ(0.5f, metadata.min_page_scale_factor); | 1644 EXPECT_EQ(0.5f, metadata.min_page_scale_factor); |
| 1645 EXPECT_EQ(4.f, metadata.max_page_scale_factor); | 1645 EXPECT_EQ(4.f, metadata.max_page_scale_factor); |
| 1646 } | 1646 } |
| 1647 } | 1647 } |
| 1648 | 1648 |
| 1649 // TODO(enne): Convert this to PictureLayerImpl | 1649 class DidDrawCheckLayer : public LayerImpl { |
| 1650 class DidDrawCheckLayer : public TiledLayerImpl { | |
| 1651 public: | 1650 public: |
| 1652 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { | 1651 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { |
| 1653 return scoped_ptr<LayerImpl>(new DidDrawCheckLayer(tree_impl, id)); | 1652 return scoped_ptr<LayerImpl>(new DidDrawCheckLayer(tree_impl, id)); |
| 1654 } | 1653 } |
| 1655 | 1654 |
| 1656 virtual bool WillDraw(DrawMode draw_mode, ResourceProvider* provider) | 1655 virtual bool WillDraw(DrawMode draw_mode, ResourceProvider* provider) |
| 1657 OVERRIDE { | 1656 OVERRIDE { |
| 1658 will_draw_called_ = true; | 1657 will_draw_called_ = true; |
| 1659 if (will_draw_returns_false_) | 1658 if (will_draw_returns_false_) |
| 1660 return false; | 1659 return false; |
| 1661 return TiledLayerImpl::WillDraw(draw_mode, provider); | 1660 return LayerImpl::WillDraw(draw_mode, provider); |
| 1662 } | 1661 } |
| 1663 | 1662 |
| 1664 virtual void AppendQuads(QuadSink* quad_sink, | 1663 virtual void AppendQuads(QuadSink* quad_sink, |
| 1665 AppendQuadsData* append_quads_data) OVERRIDE { | 1664 AppendQuadsData* append_quads_data) OVERRIDE { |
| 1666 append_quads_called_ = true; | 1665 append_quads_called_ = true; |
| 1667 TiledLayerImpl::AppendQuads(quad_sink, append_quads_data); | 1666 LayerImpl::AppendQuads(quad_sink, append_quads_data); |
| 1668 } | 1667 } |
| 1669 | 1668 |
| 1670 virtual void DidDraw(ResourceProvider* provider) OVERRIDE { | 1669 virtual void DidDraw(ResourceProvider* provider) OVERRIDE { |
| 1671 did_draw_called_ = true; | 1670 did_draw_called_ = true; |
| 1672 TiledLayerImpl::DidDraw(provider); | 1671 LayerImpl::DidDraw(provider); |
| 1673 } | 1672 } |
| 1674 | 1673 |
| 1675 bool will_draw_called() const { return will_draw_called_; } | 1674 bool will_draw_called() const { return will_draw_called_; } |
| 1676 bool append_quads_called() const { return append_quads_called_; } | 1675 bool append_quads_called() const { return append_quads_called_; } |
| 1677 bool did_draw_called() const { return did_draw_called_; } | 1676 bool did_draw_called() const { return did_draw_called_; } |
| 1678 | 1677 |
| 1679 void set_will_draw_returns_false() { will_draw_returns_false_ = true; } | 1678 void set_will_draw_returns_false() { will_draw_returns_false_ = true; } |
| 1680 | 1679 |
| 1681 void ClearDidDrawCheck() { | 1680 void ClearDidDrawCheck() { |
| 1682 will_draw_called_ = false; | 1681 will_draw_called_ = false; |
| 1683 append_quads_called_ = false; | 1682 append_quads_called_ = false; |
| 1684 did_draw_called_ = false; | 1683 did_draw_called_ = false; |
| 1685 } | 1684 } |
| 1686 | 1685 |
| 1687 protected: | 1686 protected: |
| 1688 DidDrawCheckLayer(LayerTreeImpl* tree_impl, int id) | 1687 DidDrawCheckLayer(LayerTreeImpl* tree_impl, int id) |
| 1689 : TiledLayerImpl(tree_impl, id), | 1688 : LayerImpl(tree_impl, id), |
| 1690 will_draw_returns_false_(false), | 1689 will_draw_returns_false_(false), |
| 1691 will_draw_called_(false), | 1690 will_draw_called_(false), |
| 1692 append_quads_called_(false), | 1691 append_quads_called_(false), |
| 1693 did_draw_called_(false) { | 1692 did_draw_called_(false) { |
| 1694 SetAnchorPoint(gfx::PointF()); | 1693 SetAnchorPoint(gfx::PointF()); |
| 1695 SetBounds(gfx::Size(10, 10)); | 1694 SetBounds(gfx::Size(10, 10)); |
| 1696 SetContentBounds(gfx::Size(10, 10)); | 1695 SetContentBounds(gfx::Size(10, 10)); |
| 1697 SetDrawsContent(true); | 1696 SetDrawsContent(true); |
| 1698 set_skips_draw(false); | |
| 1699 draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10); | 1697 draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10); |
| 1700 | |
| 1701 scoped_ptr<LayerTilingData> tiler = | |
| 1702 LayerTilingData::Create(gfx::Size(100, 100), | |
| 1703 LayerTilingData::HAS_BORDER_TEXELS); | |
| 1704 tiler->SetTilingRect(gfx::Rect(content_bounds())); | |
| 1705 SetTilingData(*tiler.get()); | |
| 1706 } | 1698 } |
| 1707 | 1699 |
| 1708 private: | 1700 private: |
| 1709 bool will_draw_returns_false_; | 1701 bool will_draw_returns_false_; |
| 1710 bool will_draw_called_; | 1702 bool will_draw_called_; |
| 1711 bool append_quads_called_; | 1703 bool append_quads_called_; |
| 1712 bool did_draw_called_; | 1704 bool did_draw_called_; |
| 1713 }; | 1705 }; |
| 1714 | 1706 |
| 1715 TEST_F(LayerTreeHostImplTest, WillDrawReturningFalseDoesNotCall) { | 1707 TEST_F(LayerTreeHostImplTest, WillDrawReturningFalseDoesNotCall) { |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1871 | 1863 |
| 1872 EXPECT_NE(root->render_surface(), layer1->render_surface()); | 1864 EXPECT_NE(root->render_surface(), layer1->render_surface()); |
| 1873 EXPECT_TRUE(!!layer1->render_surface()); | 1865 EXPECT_TRUE(!!layer1->render_surface()); |
| 1874 } | 1866 } |
| 1875 | 1867 |
| 1876 class MissingTextureAnimatingLayer : public DidDrawCheckLayer { | 1868 class MissingTextureAnimatingLayer : public DidDrawCheckLayer { |
| 1877 public: | 1869 public: |
| 1878 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, | 1870 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, |
| 1879 int id, | 1871 int id, |
| 1880 bool tile_missing, | 1872 bool tile_missing, |
| 1881 bool skips_draw, | |
| 1882 bool animating, | 1873 bool animating, |
| 1883 ResourceProvider* resource_provider) { | 1874 ResourceProvider* resource_provider) { |
| 1884 return scoped_ptr<LayerImpl>(new MissingTextureAnimatingLayer( | 1875 return scoped_ptr<LayerImpl>(new MissingTextureAnimatingLayer( |
| 1885 tree_impl, | 1876 tree_impl, |
| 1886 id, | 1877 id, |
| 1887 tile_missing, | 1878 tile_missing, |
| 1888 skips_draw, | |
| 1889 animating, | 1879 animating, |
| 1890 resource_provider)); | 1880 resource_provider)); |
| 1891 } | 1881 } |
| 1892 | 1882 |
| 1893 virtual void AppendQuads(QuadSink* quad_sink, | 1883 virtual void AppendQuads(QuadSink* quad_sink, |
| 1894 AppendQuadsData* append_quads_data) OVERRIDE { | 1884 AppendQuadsData* append_quads_data) OVERRIDE { |
| 1895 TiledLayerImpl::AppendQuads(quad_sink, append_quads_data); | 1885 LayerImpl::AppendQuads(quad_sink, append_quads_data); |
| 1896 if (tile_missing_) | 1886 if (tile_missing_) { |
| 1897 append_quads_data->had_incomplete_tile = true; | 1887 append_quads_data->had_incomplete_tile = true; |
| 1888 append_quads_data->num_missing_tiles = true; | |
|
danakj
2014/06/09 17:03:40
num_missing_tiles is not a bool it's a count.
it
sohanjg
2014/06/10 14:12:44
Done.
| |
| 1889 } | |
| 1898 } | 1890 } |
| 1899 | 1891 |
| 1900 private: | 1892 private: |
| 1901 MissingTextureAnimatingLayer(LayerTreeImpl* tree_impl, | 1893 MissingTextureAnimatingLayer(LayerTreeImpl* tree_impl, |
| 1902 int id, | 1894 int id, |
| 1903 bool tile_missing, | 1895 bool tile_missing, |
| 1904 bool skips_draw, | |
| 1905 bool animating, | 1896 bool animating, |
| 1906 ResourceProvider* resource_provider) | 1897 ResourceProvider* resource_provider) |
| 1907 : DidDrawCheckLayer(tree_impl, id), tile_missing_(tile_missing) { | 1898 : DidDrawCheckLayer(tree_impl, id), tile_missing_(tile_missing) { |
| 1908 scoped_ptr<LayerTilingData> tiling_data = | |
| 1909 LayerTilingData::Create(gfx::Size(10, 10), | |
| 1910 LayerTilingData::NO_BORDER_TEXELS); | |
| 1911 tiling_data->SetTilingRect(gfx::Rect(bounds())); | |
| 1912 SetTilingData(*tiling_data.get()); | |
| 1913 set_skips_draw(skips_draw); | |
| 1914 if (!tile_missing) { | 1899 if (!tile_missing) { |
| 1915 ResourceProvider::ResourceId resource = | 1900 ResourceProvider::ResourceId resource = |
| 1916 resource_provider->CreateResource(gfx::Size(1, 1), | 1901 resource_provider->CreateResource(gfx::Size(1, 1), |
| 1917 GL_CLAMP_TO_EDGE, | 1902 GL_CLAMP_TO_EDGE, |
| 1918 ResourceProvider::TextureUsageAny, | 1903 ResourceProvider::TextureUsageAny, |
| 1919 RGBA_8888); | 1904 RGBA_8888); |
| 1920 resource_provider->AllocateForTesting(resource); | 1905 resource_provider->AllocateForTesting(resource); |
| 1921 PushTileProperties(0, 0, resource, gfx::Rect(), false); | |
| 1922 } | 1906 } |
| 1923 if (animating) | 1907 if (animating) |
| 1924 AddAnimatedTransformToLayer(this, 10.0, 3, 0); | 1908 AddAnimatedTransformToLayer(this, 10.0, 3, 0); |
| 1925 } | 1909 } |
| 1926 | 1910 |
| 1927 bool tile_missing_; | 1911 bool tile_missing_; |
| 1928 }; | 1912 }; |
| 1929 | 1913 |
| 1930 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWhenNoTexturesMissing) { | 1914 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWhenNoTexturesMissing) { |
| 1931 host_impl_->active_tree()->SetRootLayer( | 1915 host_impl_->active_tree()->SetRootLayer( |
| 1932 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 1916 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 1933 DidDrawCheckLayer* root = | 1917 DidDrawCheckLayer* root = |
| 1934 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 1918 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 1935 | 1919 |
| 1936 bool tile_missing = false; | 1920 bool tile_missing = false; |
| 1937 bool skips_draw = false; | |
| 1938 bool is_animating = false; | 1921 bool is_animating = false; |
| 1939 root->AddChild( | 1922 root->AddChild( |
| 1940 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 1923 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 1941 2, | 1924 2, |
| 1942 tile_missing, | 1925 tile_missing, |
| 1943 skips_draw, | |
| 1944 is_animating, | 1926 is_animating, |
| 1945 host_impl_->resource_provider())); | 1927 host_impl_->resource_provider())); |
| 1946 | 1928 |
| 1947 LayerTreeHostImpl::FrameData frame; | 1929 LayerTreeHostImpl::FrameData frame; |
| 1948 | 1930 |
| 1949 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1931 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1950 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1932 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1951 host_impl_->DidDrawAllLayers(frame); | 1933 host_impl_->DidDrawAllLayers(frame); |
| 1952 } | 1934 } |
| 1953 | 1935 |
| 1954 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithAnimatedLayer) { | 1936 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithAnimatedLayer) { |
| 1955 host_impl_->active_tree()->SetRootLayer( | 1937 host_impl_->active_tree()->SetRootLayer( |
| 1956 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 1938 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 1957 DidDrawCheckLayer* root = | 1939 DidDrawCheckLayer* root = |
| 1958 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 1940 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 1959 bool tile_missing = false; | 1941 bool tile_missing = false; |
| 1960 bool skips_draw = false; | |
| 1961 bool is_animating = true; | 1942 bool is_animating = true; |
| 1962 root->AddChild( | 1943 root->AddChild( |
| 1963 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 1944 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 1964 2, | 1945 2, |
| 1965 tile_missing, | 1946 tile_missing, |
| 1966 skips_draw, | |
| 1967 is_animating, | 1947 is_animating, |
| 1968 host_impl_->resource_provider())); | 1948 host_impl_->resource_provider())); |
| 1969 | 1949 |
| 1970 LayerTreeHostImpl::FrameData frame; | 1950 LayerTreeHostImpl::FrameData frame; |
| 1971 | 1951 |
| 1972 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1952 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1973 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1953 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1974 host_impl_->DidDrawAllLayers(frame); | 1954 host_impl_->DidDrawAllLayers(frame); |
| 1975 } | 1955 } |
| 1976 | 1956 |
| 1977 TEST_F(LayerTreeHostImplTest, | 1957 TEST_F(LayerTreeHostImplTest, |
| 1978 PrepareToDrawSucceedsWithNonAnimatedMissingTexture) { | 1958 PrepareToDrawSucceedsWithNonAnimatedMissingTexture) { |
| 1979 // When a texture is missing and we're not animating, we draw as usual with | 1959 // When a texture is missing and we're not animating, we draw as usual with |
| 1980 // checkerboarding. | 1960 // checkerboarding. |
| 1981 host_impl_->active_tree()->SetRootLayer( | 1961 host_impl_->active_tree()->SetRootLayer( |
| 1982 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); | 1962 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); |
| 1983 DidDrawCheckLayer* root = | 1963 DidDrawCheckLayer* root = |
| 1984 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 1964 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 1985 | 1965 |
| 1986 bool tile_missing = true; | 1966 bool tile_missing = true; |
| 1987 bool skips_draw = false; | |
| 1988 bool is_animating = false; | 1967 bool is_animating = false; |
| 1989 root->AddChild( | 1968 root->AddChild( |
| 1990 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 1969 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 1991 4, | 1970 4, |
| 1992 tile_missing, | 1971 tile_missing, |
| 1993 skips_draw, | |
| 1994 is_animating, | 1972 is_animating, |
| 1995 host_impl_->resource_provider())); | 1973 host_impl_->resource_provider())); |
| 1996 LayerTreeHostImpl::FrameData frame; | 1974 LayerTreeHostImpl::FrameData frame; |
| 1997 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1975 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1998 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1976 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1999 host_impl_->DidDrawAllLayers(frame); | 1977 host_impl_->DidDrawAllLayers(frame); |
| 2000 } | 1978 } |
| 2001 | 1979 |
| 2002 TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) { | 1980 TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) { |
| 2003 // When a texture is missing and we're animating, we don't want to draw | 1981 // When a texture is missing and we're animating, we don't want to draw |
| 2004 // anything. | 1982 // anything. |
| 2005 host_impl_->active_tree()->SetRootLayer( | 1983 host_impl_->active_tree()->SetRootLayer( |
| 2006 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); | 1984 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); |
| 2007 DidDrawCheckLayer* root = | 1985 DidDrawCheckLayer* root = |
| 2008 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 1986 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2009 bool tile_missing = true; | 1987 bool tile_missing = true; |
| 2010 bool skips_draw = false; | |
| 2011 bool is_animating = true; | 1988 bool is_animating = true; |
| 2012 root->AddChild( | 1989 root->AddChild( |
| 2013 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 1990 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2014 6, | 1991 6, |
| 2015 tile_missing, | 1992 tile_missing, |
| 2016 skips_draw, | |
| 2017 is_animating, | 1993 is_animating, |
| 2018 host_impl_->resource_provider())); | 1994 host_impl_->resource_provider())); |
| 2019 LayerTreeHostImpl::FrameData frame; | 1995 LayerTreeHostImpl::FrameData frame; |
| 2020 EXPECT_EQ(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS, | 1996 EXPECT_EQ(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS, |
| 2021 host_impl_->PrepareToDraw(&frame)); | 1997 host_impl_->PrepareToDraw(&frame)); |
| 2022 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1998 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2023 host_impl_->DidDrawAllLayers(frame); | 1999 host_impl_->DidDrawAllLayers(frame); |
| 2024 } | 2000 } |
| 2025 | 2001 |
| 2026 TEST_F(LayerTreeHostImplTest, | 2002 TEST_F(LayerTreeHostImplTest, |
| 2027 PrepareToDrawSucceedsWithMissingSkippedAnimatedLayer) { | 2003 PrepareToDrawSucceedsWithMissingSkippedAnimatedLayer) { |
| 2028 // When the layer skips draw and we're animating, we still draw the frame. | 2004 // When we're animating, we draw the frame. |
| 2029 host_impl_->active_tree()->SetRootLayer( | 2005 host_impl_->active_tree()->SetRootLayer( |
| 2030 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); | 2006 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); |
| 2031 DidDrawCheckLayer* root = | 2007 DidDrawCheckLayer* root = |
| 2032 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2008 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2033 bool tile_missing = false; | 2009 bool tile_missing = false; |
| 2034 bool skips_draw = true; | |
| 2035 bool is_animating = true; | 2010 bool is_animating = true; |
| 2036 root->AddChild( | 2011 root->AddChild( |
| 2037 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 2012 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2038 8, | 2013 8, |
| 2039 tile_missing, | 2014 tile_missing, |
| 2040 skips_draw, | |
| 2041 is_animating, | 2015 is_animating, |
| 2042 host_impl_->resource_provider())); | 2016 host_impl_->resource_provider())); |
| 2043 LayerTreeHostImpl::FrameData frame; | 2017 LayerTreeHostImpl::FrameData frame; |
| 2044 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 2018 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2045 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2019 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2046 host_impl_->DidDrawAllLayers(frame); | 2020 host_impl_->DidDrawAllLayers(frame); |
| 2047 } | 2021 } |
| 2048 | 2022 |
| 2049 TEST_F(LayerTreeHostImplTest, | 2023 TEST_F(LayerTreeHostImplTest, |
| 2050 PrepareToDrawSucceedsWhenHighResRequiredButNoMissingTextures) { | 2024 PrepareToDrawSucceedsWhenHighResRequiredButNoMissingTextures) { |
| 2051 // When the layer skips draw and we're animating, we still draw the frame. | 2025 // When we're not animating, we draw the frame. |
| 2052 host_impl_->active_tree()->SetRootLayer( | 2026 host_impl_->active_tree()->SetRootLayer( |
| 2053 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); | 2027 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); |
| 2054 DidDrawCheckLayer* root = | 2028 DidDrawCheckLayer* root = |
| 2055 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2029 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2056 bool tile_missing = false; | 2030 bool tile_missing = false; |
| 2057 bool skips_draw = false; | |
| 2058 bool is_animating = false; | 2031 bool is_animating = false; |
| 2059 root->AddChild( | 2032 root->AddChild( |
| 2060 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 2033 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2061 8, | 2034 8, |
| 2062 tile_missing, | 2035 tile_missing, |
| 2063 skips_draw, | |
| 2064 is_animating, | 2036 is_animating, |
| 2065 host_impl_->resource_provider())); | 2037 host_impl_->resource_provider())); |
| 2066 host_impl_->active_tree()->SetRequiresHighResToDraw(); | 2038 host_impl_->active_tree()->SetRequiresHighResToDraw(); |
| 2067 LayerTreeHostImpl::FrameData frame; | 2039 LayerTreeHostImpl::FrameData frame; |
| 2068 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 2040 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2069 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2041 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2070 host_impl_->DidDrawAllLayers(frame); | 2042 host_impl_->DidDrawAllLayers(frame); |
| 2071 } | 2043 } |
| 2072 | 2044 |
| 2073 TEST_F(LayerTreeHostImplTest, | 2045 TEST_F(LayerTreeHostImplTest, |
| 2074 PrepareToDrawFailsWhenHighResRequiredAndMissingTextures) { | 2046 PrepareToDrawFailsWhenHighResRequiredAndMissingTextures) { |
| 2075 // When the layer skips draw and we're animating, we still draw the frame. | 2047 // When a texture is missing and we're not animating, we dont draw the frame |
| 2048 // if we Set RequiresHighResToDraw. | |
| 2076 host_impl_->active_tree()->SetRootLayer( | 2049 host_impl_->active_tree()->SetRootLayer( |
| 2077 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); | 2050 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); |
| 2078 DidDrawCheckLayer* root = | 2051 DidDrawCheckLayer* root = |
| 2079 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2052 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2080 bool tile_missing = true; | 2053 bool tile_missing = true; |
| 2081 bool skips_draw = false; | |
| 2082 bool is_animating = false; | 2054 bool is_animating = false; |
| 2083 root->AddChild( | 2055 root->AddChild( |
| 2084 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 2056 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2085 8, | 2057 8, |
| 2086 tile_missing, | 2058 tile_missing, |
| 2087 skips_draw, | |
| 2088 is_animating, | 2059 is_animating, |
| 2089 host_impl_->resource_provider())); | 2060 host_impl_->resource_provider())); |
| 2090 host_impl_->active_tree()->SetRequiresHighResToDraw(); | 2061 host_impl_->active_tree()->SetRequiresHighResToDraw(); |
| 2091 LayerTreeHostImpl::FrameData frame; | 2062 LayerTreeHostImpl::FrameData frame; |
| 2092 EXPECT_EQ(DRAW_ABORTED_MISSING_HIGH_RES_CONTENT, | 2063 EXPECT_EQ(DRAW_ABORTED_MISSING_HIGH_RES_CONTENT, |
| 2093 host_impl_->PrepareToDraw(&frame)); | 2064 host_impl_->PrepareToDraw(&frame)); |
| 2094 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2065 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2095 host_impl_->DidDrawAllLayers(frame); | 2066 host_impl_->DidDrawAllLayers(frame); |
| 2096 } | 2067 } |
| 2097 | 2068 |
| (...skipping 4518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6616 FakePictureLayerImpl* active_mask_content = | 6587 FakePictureLayerImpl* active_mask_content = |
| 6617 static_cast<FakePictureLayerImpl*>( | 6588 static_cast<FakePictureLayerImpl*>( |
| 6618 host_impl_->active_tree()->root_layer()->children()[0]->mask_layer()); | 6589 host_impl_->active_tree()->root_layer()->children()[0]->mask_layer()); |
| 6619 gfx::Rect r2 = active_mask_content->visible_rect_for_tile_priority(); | 6590 gfx::Rect r2 = active_mask_content->visible_rect_for_tile_priority(); |
| 6620 | 6591 |
| 6621 ASSERT_TRUE(!r2.IsEmpty()); | 6592 ASSERT_TRUE(!r2.IsEmpty()); |
| 6622 } | 6593 } |
| 6623 | 6594 |
| 6624 } // namespace | 6595 } // namespace |
| 6625 } // namespace cc | 6596 } // namespace cc |
| OLD | NEW |