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

Side by Side Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 322793002: cc: Use LayerImpl instead of TiledLayerImpl in LTHI test. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated tests for incomplete tiles. Created 6 years, 6 months 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "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 1623 matching lines...) Expand 10 before | Expand all | Expand 10 after
1634 host_impl_->MakeCompositorFrameMetadata(); 1634 host_impl_->MakeCompositorFrameMetadata();
1635 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset); 1635 EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset);
1636 EXPECT_EQ(4.f, metadata.page_scale_factor); 1636 EXPECT_EQ(4.f, metadata.page_scale_factor);
1637 EXPECT_EQ(gfx::SizeF(12.5f, 12.5f), metadata.viewport_size); 1637 EXPECT_EQ(gfx::SizeF(12.5f, 12.5f), metadata.viewport_size);
1638 EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size); 1638 EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size);
1639 EXPECT_EQ(0.5f, metadata.min_page_scale_factor); 1639 EXPECT_EQ(0.5f, metadata.min_page_scale_factor);
1640 EXPECT_EQ(4.f, metadata.max_page_scale_factor); 1640 EXPECT_EQ(4.f, metadata.max_page_scale_factor);
1641 } 1641 }
1642 } 1642 }
1643 1643
1644 // TODO(enne): Convert this to PictureLayerImpl 1644 class DidDrawCheckLayer : public LayerImpl {
1645 class DidDrawCheckLayer : public TiledLayerImpl {
1646 public: 1645 public:
1647 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { 1646 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) {
1648 return scoped_ptr<LayerImpl>(new DidDrawCheckLayer(tree_impl, id)); 1647 return scoped_ptr<LayerImpl>(new DidDrawCheckLayer(tree_impl, id));
1649 } 1648 }
1650 1649
1651 virtual bool WillDraw(DrawMode draw_mode, ResourceProvider* provider) 1650 virtual bool WillDraw(DrawMode draw_mode, ResourceProvider* provider)
1652 OVERRIDE { 1651 OVERRIDE {
1653 will_draw_called_ = true; 1652 will_draw_called_ = true;
1654 if (will_draw_returns_false_) 1653 if (will_draw_returns_false_)
1655 return false; 1654 return false;
1656 return TiledLayerImpl::WillDraw(draw_mode, provider); 1655 return LayerImpl::WillDraw(draw_mode, provider);
1657 } 1656 }
1658 1657
1659 virtual void AppendQuads(QuadSink* quad_sink, 1658 virtual void AppendQuads(QuadSink* quad_sink,
1660 AppendQuadsData* append_quads_data) OVERRIDE { 1659 AppendQuadsData* append_quads_data) OVERRIDE {
1661 append_quads_called_ = true; 1660 append_quads_called_ = true;
1662 TiledLayerImpl::AppendQuads(quad_sink, append_quads_data); 1661 LayerImpl::AppendQuads(quad_sink, append_quads_data);
1663 } 1662 }
1664 1663
1665 virtual void DidDraw(ResourceProvider* provider) OVERRIDE { 1664 virtual void DidDraw(ResourceProvider* provider) OVERRIDE {
1666 did_draw_called_ = true; 1665 did_draw_called_ = true;
1667 TiledLayerImpl::DidDraw(provider); 1666 LayerImpl::DidDraw(provider);
1668 } 1667 }
1669 1668
1670 bool will_draw_called() const { return will_draw_called_; } 1669 bool will_draw_called() const { return will_draw_called_; }
1671 bool append_quads_called() const { return append_quads_called_; } 1670 bool append_quads_called() const { return append_quads_called_; }
1672 bool did_draw_called() const { return did_draw_called_; } 1671 bool did_draw_called() const { return did_draw_called_; }
1673 1672
1674 void set_will_draw_returns_false() { will_draw_returns_false_ = true; } 1673 void set_will_draw_returns_false() { will_draw_returns_false_ = true; }
1675 1674
1676 void ClearDidDrawCheck() { 1675 void ClearDidDrawCheck() {
1677 will_draw_called_ = false; 1676 will_draw_called_ = false;
1678 append_quads_called_ = false; 1677 append_quads_called_ = false;
1679 did_draw_called_ = false; 1678 did_draw_called_ = false;
1680 } 1679 }
1681 1680
1682 protected: 1681 protected:
1683 DidDrawCheckLayer(LayerTreeImpl* tree_impl, int id) 1682 DidDrawCheckLayer(LayerTreeImpl* tree_impl, int id)
1684 : TiledLayerImpl(tree_impl, id), 1683 : LayerImpl(tree_impl, id),
1685 will_draw_returns_false_(false), 1684 will_draw_returns_false_(false),
1686 will_draw_called_(false), 1685 will_draw_called_(false),
1687 append_quads_called_(false), 1686 append_quads_called_(false),
1688 did_draw_called_(false) { 1687 did_draw_called_(false) {
1689 SetBounds(gfx::Size(10, 10)); 1688 SetBounds(gfx::Size(10, 10));
1690 SetContentBounds(gfx::Size(10, 10)); 1689 SetContentBounds(gfx::Size(10, 10));
1691 SetDrawsContent(true); 1690 SetDrawsContent(true);
1692 set_skips_draw(false);
1693 draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10); 1691 draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10);
1694
1695 scoped_ptr<LayerTilingData> tiler =
1696 LayerTilingData::Create(gfx::Size(100, 100),
1697 LayerTilingData::HAS_BORDER_TEXELS);
1698 tiler->SetTilingRect(gfx::Rect(content_bounds()));
1699 SetTilingData(*tiler.get());
1700 } 1692 }
1701 1693
1702 private: 1694 private:
1703 bool will_draw_returns_false_; 1695 bool will_draw_returns_false_;
1704 bool will_draw_called_; 1696 bool will_draw_called_;
1705 bool append_quads_called_; 1697 bool append_quads_called_;
1706 bool did_draw_called_; 1698 bool did_draw_called_;
1707 }; 1699 };
1708 1700
1709 TEST_F(LayerTreeHostImplTest, WillDrawReturningFalseDoesNotCall) { 1701 TEST_F(LayerTreeHostImplTest, WillDrawReturningFalseDoesNotCall) {
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
1865 1857
1866 EXPECT_NE(root->render_surface(), layer1->render_surface()); 1858 EXPECT_NE(root->render_surface(), layer1->render_surface());
1867 EXPECT_TRUE(!!layer1->render_surface()); 1859 EXPECT_TRUE(!!layer1->render_surface());
1868 } 1860 }
1869 1861
1870 class MissingTextureAnimatingLayer : public DidDrawCheckLayer { 1862 class MissingTextureAnimatingLayer : public DidDrawCheckLayer {
1871 public: 1863 public:
1872 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, 1864 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl,
1873 int id, 1865 int id,
1874 bool tile_missing, 1866 bool tile_missing,
1875 bool skips_draw, 1867 bool had_incomplete_tile,
1876 bool animating, 1868 bool animating,
1877 ResourceProvider* resource_provider) { 1869 ResourceProvider* resource_provider) {
1878 return scoped_ptr<LayerImpl>(new MissingTextureAnimatingLayer( 1870 return scoped_ptr<LayerImpl>(
1879 tree_impl, 1871 new MissingTextureAnimatingLayer(tree_impl,
1880 id, 1872 id,
1881 tile_missing, 1873 tile_missing,
1882 skips_draw, 1874 had_incomplete_tile,
1883 animating, 1875 animating,
1884 resource_provider)); 1876 resource_provider));
1885 } 1877 }
1886 1878
1887 virtual void AppendQuads(QuadSink* quad_sink, 1879 virtual void AppendQuads(QuadSink* quad_sink,
1888 AppendQuadsData* append_quads_data) OVERRIDE { 1880 AppendQuadsData* append_quads_data) OVERRIDE {
1889 TiledLayerImpl::AppendQuads(quad_sink, append_quads_data); 1881 LayerImpl::AppendQuads(quad_sink, append_quads_data);
1882 if (had_incomplete_tile_)
1883 append_quads_data->had_incomplete_tile = true;
1890 if (tile_missing_) 1884 if (tile_missing_)
1891 append_quads_data->had_incomplete_tile = true; 1885 append_quads_data->num_missing_tiles++;
1892 } 1886 }
1893 1887
1894 private: 1888 private:
1895 MissingTextureAnimatingLayer(LayerTreeImpl* tree_impl, 1889 MissingTextureAnimatingLayer(LayerTreeImpl* tree_impl,
1896 int id, 1890 int id,
1897 bool tile_missing, 1891 bool tile_missing,
1898 bool skips_draw, 1892 bool had_incomplete_tile,
1899 bool animating, 1893 bool animating,
1900 ResourceProvider* resource_provider) 1894 ResourceProvider* resource_provider)
1901 : DidDrawCheckLayer(tree_impl, id), tile_missing_(tile_missing) { 1895 : DidDrawCheckLayer(tree_impl, id),
1902 scoped_ptr<LayerTilingData> tiling_data = 1896 tile_missing_(tile_missing),
1903 LayerTilingData::Create(gfx::Size(10, 10), 1897 had_incomplete_tile_(had_incomplete_tile) {
1904 LayerTilingData::NO_BORDER_TEXELS); 1898 if (!tile_missing || !had_incomplete_tile_) {
1905 tiling_data->SetTilingRect(gfx::Rect(bounds()));
1906 SetTilingData(*tiling_data.get());
1907 set_skips_draw(skips_draw);
1908 if (!tile_missing) {
1909 ResourceProvider::ResourceId resource = 1899 ResourceProvider::ResourceId resource =
danakj 2014/06/10 19:41:51 we don't use this resource anymore, it can go away
sohanjg 2014/06/11 10:53:16 Done.
1910 resource_provider->CreateResource(gfx::Size(1, 1), 1900 resource_provider->CreateResource(gfx::Size(1, 1),
1911 GL_CLAMP_TO_EDGE, 1901 GL_CLAMP_TO_EDGE,
1912 ResourceProvider::TextureUsageAny, 1902 ResourceProvider::TextureUsageAny,
1913 RGBA_8888); 1903 RGBA_8888);
1914 resource_provider->AllocateForTesting(resource); 1904 resource_provider->AllocateForTesting(resource);
1915 PushTileProperties(0, 0, resource, gfx::Rect(), false);
1916 } 1905 }
1917 if (animating) 1906 if (animating)
1918 AddAnimatedTransformToLayer(this, 10.0, 3, 0); 1907 AddAnimatedTransformToLayer(this, 10.0, 3, 0);
1919 } 1908 }
1920 1909
1921 bool tile_missing_; 1910 bool tile_missing_;
1911 bool had_incomplete_tile_;
1922 }; 1912 };
1923 1913
1924 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWhenNoTexturesMissing) { 1914 TEST_F(LayerTreeHostImplTest,
1915 PrepareToDrawSucceedsWhenNoTexturesMissingAndNoIncompleteTile) {
1925 host_impl_->active_tree()->SetRootLayer( 1916 host_impl_->active_tree()->SetRootLayer(
1926 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 1917 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
1927 DidDrawCheckLayer* root = 1918 DidDrawCheckLayer* root =
1928 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 1919 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
1929 1920
1930 bool tile_missing = false; 1921 bool tile_missing = false;
1931 bool skips_draw = false; 1922 bool had_incomplete_tile = false;
1932 bool is_animating = false; 1923 bool is_animating = false;
1933 root->AddChild( 1924 root->AddChild(
1934 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 1925 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
1935 2, 1926 2,
1936 tile_missing, 1927 tile_missing,
1937 skips_draw, 1928 had_incomplete_tile,
1938 is_animating, 1929 is_animating,
1939 host_impl_->resource_provider())); 1930 host_impl_->resource_provider()));
1940 1931
1932 LayerTreeHostImpl::FrameData frame;
1933
1934 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1935 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1936 host_impl_->DidDrawAllLayers(frame);
1937 }
1938
1939 TEST_F(LayerTreeHostImplTest,
1940 PrepareToDrawSucceedsWhenNoTexturesMissingAndIncompleteTile) {
danakj 2014/06/10 19:41:51 This is the same test as PrepareToDrawSucceedsWith
sohanjg 2014/06/11 10:53:16 Done.
1941 host_impl_->active_tree()->SetRootLayer(
1942 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
1943 DidDrawCheckLayer* root =
1944 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
1945
1946 bool tile_missing = false;
1947 bool had_incomplete_tile = true;
1948 bool is_animating = false;
1949 root->AddChild(
1950 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
1951 2,
1952 tile_missing,
1953 had_incomplete_tile,
1954 is_animating,
1955 host_impl_->resource_provider()));
1956
1941 LayerTreeHostImpl::FrameData frame; 1957 LayerTreeHostImpl::FrameData frame;
1942 1958
1943 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1959 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1944 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1960 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1945 host_impl_->DidDrawAllLayers(frame); 1961 host_impl_->DidDrawAllLayers(frame);
1946 } 1962 }
1947 1963
1948 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithAnimatedLayer) { 1964 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithAnimatedLayer) {
1949 host_impl_->active_tree()->SetRootLayer( 1965 host_impl_->active_tree()->SetRootLayer(
1950 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 1966 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
1951 DidDrawCheckLayer* root = 1967 DidDrawCheckLayer* root =
1952 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 1968 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
1953 bool tile_missing = false; 1969 bool tile_missing = false;
1954 bool skips_draw = false; 1970 bool had_incomplete_tile = false;
1955 bool is_animating = true; 1971 bool is_animating = true;
1956 root->AddChild( 1972 root->AddChild(
1957 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 1973 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
1958 2, 1974 2,
1959 tile_missing, 1975 tile_missing,
1960 skips_draw, 1976 had_incomplete_tile,
1961 is_animating, 1977 is_animating,
1962 host_impl_->resource_provider())); 1978 host_impl_->resource_provider()));
1963 1979
1964 LayerTreeHostImpl::FrameData frame; 1980 LayerTreeHostImpl::FrameData frame;
1965 1981
1966 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1982 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1967 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1983 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1968 host_impl_->DidDrawAllLayers(frame); 1984 host_impl_->DidDrawAllLayers(frame);
1969 } 1985 }
1970 1986
1971 TEST_F(LayerTreeHostImplTest, 1987 TEST_F(LayerTreeHostImplTest,
1972 PrepareToDrawSucceedsWithNonAnimatedMissingTexture) { 1988 PrepareToDrawSucceedsWithNonAnimatedMissingTextureAndNoIncompleteTile) {
1973 // When a texture is missing and we're not animating, we draw as usual with 1989 // When a texture is missing and we're not animating, we draw as usual with
1974 // checkerboarding. 1990 // checkerboarding.
1975 host_impl_->active_tree()->SetRootLayer( 1991 host_impl_->active_tree()->SetRootLayer(
1976 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); 1992 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3));
1977 DidDrawCheckLayer* root = 1993 DidDrawCheckLayer* root =
1978 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 1994 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
1979 1995
1980 bool tile_missing = true; 1996 bool tile_missing = true;
1981 bool skips_draw = false; 1997 bool had_incomplete_tile = false;
1982 bool is_animating = false; 1998 bool is_animating = false;
1983 root->AddChild( 1999 root->AddChild(
1984 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 2000 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
1985 4, 2001 4,
1986 tile_missing, 2002 tile_missing,
1987 skips_draw, 2003 had_incomplete_tile,
1988 is_animating, 2004 is_animating,
1989 host_impl_->resource_provider())); 2005 host_impl_->resource_provider()));
1990 LayerTreeHostImpl::FrameData frame; 2006 LayerTreeHostImpl::FrameData frame;
2007 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2008 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2009 host_impl_->DidDrawAllLayers(frame);
2010 }
2011
2012 TEST_F(LayerTreeHostImplTest,
2013 PrepareToDrawSucceedsWithNonAnimatedIncompleteTile) {
2014 // When a texture is missing and we're not animating, we draw as usual with
2015 // checkerboarding.
2016 host_impl_->active_tree()->SetRootLayer(
2017 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3));
2018 DidDrawCheckLayer* root =
2019 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2020
2021 bool tile_missing = false;
2022 bool had_incomplete_tile = true;
2023 bool is_animating = false;
2024 root->AddChild(
2025 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
2026 4,
2027 tile_missing,
2028 had_incomplete_tile,
2029 is_animating,
2030 host_impl_->resource_provider()));
2031 LayerTreeHostImpl::FrameData frame;
1991 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2032 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1992 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2033 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1993 host_impl_->DidDrawAllLayers(frame); 2034 host_impl_->DidDrawAllLayers(frame);
1994 } 2035 }
1995 2036
1996 TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) { 2037 TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) {
1997 // When a texture is missing and we're animating, we don't want to draw 2038 // When a texture is missing and we're animating, we don't want to draw
1998 // anything. 2039 // anything.
1999 host_impl_->active_tree()->SetRootLayer( 2040 host_impl_->active_tree()->SetRootLayer(
2000 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); 2041 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5));
2001 DidDrawCheckLayer* root = 2042 DidDrawCheckLayer* root =
2002 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2043 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2003 bool tile_missing = true; 2044 bool tile_missing = true;
2004 bool skips_draw = false; 2045 bool had_incomplete_tile = true;
danakj 2014/06/10 19:41:51 add a case for this being false please
sohanjg 2014/06/11 10:53:16 Done.
2005 bool is_animating = true; 2046 bool is_animating = true;
2006 root->AddChild( 2047 root->AddChild(
2007 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 2048 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
2008 6, 2049 6,
2009 tile_missing, 2050 tile_missing,
2010 skips_draw, 2051 had_incomplete_tile,
2011 is_animating, 2052 is_animating,
2012 host_impl_->resource_provider())); 2053 host_impl_->resource_provider()));
2013 LayerTreeHostImpl::FrameData frame; 2054 LayerTreeHostImpl::FrameData frame;
2014 EXPECT_EQ(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS, 2055 EXPECT_EQ(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS,
2015 host_impl_->PrepareToDraw(&frame)); 2056 host_impl_->PrepareToDraw(&frame));
2016 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2057 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2017 host_impl_->DidDrawAllLayers(frame); 2058 host_impl_->DidDrawAllLayers(frame);
2018 } 2059 }
2019 2060
2020 TEST_F(LayerTreeHostImplTest, 2061 TEST_F(
2021 PrepareToDrawSucceedsWithMissingSkippedAnimatedLayer) { 2062 LayerTreeHostImplTest,
2022 // When the layer skips draw and we're animating, we still draw the frame. 2063 PrepareToDrawSucceedsWithAnimationAndNoMissingTextureAndNoIncompleteTile) {
danakj 2014/06/10 19:41:51 This is the same as PrepareToDrawSucceedsWithAnima
sohanjg 2014/06/11 10:53:16 Done.
2064 // When we're animating, we draw the frame.
2023 host_impl_->active_tree()->SetRootLayer( 2065 host_impl_->active_tree()->SetRootLayer(
2024 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); 2066 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7));
2025 DidDrawCheckLayer* root = 2067 DidDrawCheckLayer* root =
2026 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2068 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2027 bool tile_missing = false; 2069 bool tile_missing = false;
2028 bool skips_draw = true; 2070 bool had_incomplete_tile = false;
2029 bool is_animating = true; 2071 bool is_animating = true;
2030 root->AddChild( 2072 root->AddChild(
2031 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 2073 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
2032 8, 2074 8,
2033 tile_missing, 2075 tile_missing,
2034 skips_draw, 2076 had_incomplete_tile,
2035 is_animating, 2077 is_animating,
2036 host_impl_->resource_provider())); 2078 host_impl_->resource_provider()));
2037 LayerTreeHostImpl::FrameData frame; 2079 LayerTreeHostImpl::FrameData frame;
2038 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2080 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2039 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2081 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2040 host_impl_->DidDrawAllLayers(frame); 2082 host_impl_->DidDrawAllLayers(frame);
2041 } 2083 }
2042 2084
2043 TEST_F(LayerTreeHostImplTest, 2085 TEST_F(
2044 PrepareToDrawSucceedsWhenHighResRequiredButNoMissingTextures) { 2086 LayerTreeHostImplTest,
2045 // When the layer skips draw and we're animating, we still draw the frame. 2087 PrepareToDrawFailsWhenHighResRequiredButNoMissingTexturesAndIncompleteTile) {
danakj 2014/06/10 19:41:51 This says fails, but the draw is succeeding. And t
sohanjg 2014/06/11 10:53:16 Done.
2088 // When we're not animating, we draw the frame.
2046 host_impl_->active_tree()->SetRootLayer( 2089 host_impl_->active_tree()->SetRootLayer(
2047 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); 2090 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7));
2048 DidDrawCheckLayer* root = 2091 DidDrawCheckLayer* root =
2049 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2092 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2050 bool tile_missing = false; 2093 bool tile_missing = false;
2051 bool skips_draw = false; 2094 bool had_incomplete_tile = false;
2052 bool is_animating = false; 2095 bool is_animating = false;
2053 root->AddChild( 2096 root->AddChild(
2054 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 2097 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
2055 8, 2098 8,
2056 tile_missing, 2099 tile_missing,
2057 skips_draw, 2100 had_incomplete_tile,
2058 is_animating, 2101 is_animating,
2059 host_impl_->resource_provider())); 2102 host_impl_->resource_provider()));
2060 host_impl_->active_tree()->SetRequiresHighResToDraw(); 2103 host_impl_->active_tree()->SetRequiresHighResToDraw();
2061 LayerTreeHostImpl::FrameData frame; 2104 LayerTreeHostImpl::FrameData frame;
2062 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2105 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2063 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2106 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2064 host_impl_->DidDrawAllLayers(frame); 2107 host_impl_->DidDrawAllLayers(frame);
2065 } 2108 }
2066 2109
2067 TEST_F(LayerTreeHostImplTest, 2110 TEST_F(LayerTreeHostImplTest,
2068 PrepareToDrawFailsWhenHighResRequiredAndMissingTextures) { 2111 PrepareToDrawFailsWhenHighResRequiredAndIncompleteTile) {
2069 // When the layer skips draw and we're animating, we still draw the frame. 2112 // When we're not animating, we draw the frame.
2070 host_impl_->active_tree()->SetRootLayer( 2113 host_impl_->active_tree()->SetRootLayer(
2071 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); 2114 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7));
2072 DidDrawCheckLayer* root = 2115 DidDrawCheckLayer* root =
2073 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2116 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2074 bool tile_missing = true; 2117 bool tile_missing = false;
2075 bool skips_draw = false; 2118 bool had_incomplete_tile = true;
2076 bool is_animating = false; 2119 bool is_animating = false;
2077 root->AddChild( 2120 root->AddChild(
2078 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 2121 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
2079 8, 2122 8,
2080 tile_missing, 2123 tile_missing,
2081 skips_draw, 2124 had_incomplete_tile,
2082 is_animating, 2125 is_animating,
2083 host_impl_->resource_provider())); 2126 host_impl_->resource_provider()));
2084 host_impl_->active_tree()->SetRequiresHighResToDraw(); 2127 host_impl_->active_tree()->SetRequiresHighResToDraw();
2085 LayerTreeHostImpl::FrameData frame; 2128 LayerTreeHostImpl::FrameData frame;
2086 EXPECT_EQ(DRAW_ABORTED_MISSING_HIGH_RES_CONTENT, 2129 EXPECT_EQ(DRAW_ABORTED_MISSING_HIGH_RES_CONTENT,
2087 host_impl_->PrepareToDraw(&frame)); 2130 host_impl_->PrepareToDraw(&frame));
2088 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2131 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2089 host_impl_->DidDrawAllLayers(frame); 2132 host_impl_->DidDrawAllLayers(frame);
2090 } 2133 }
2091 2134
2135 TEST_F(
2136 LayerTreeHostImplTest,
2137 PrepareToDrawFailsWhenHighResRequiredAndMissingTexturesButNoIncompleteTile) {
2138 // When a texture is missing and we're not animating, we dont draw the frame
2139 // if we Set RequiresHighResToDraw.
2140 host_impl_->active_tree()->SetRootLayer(
2141 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7));
2142 DidDrawCheckLayer* root =
2143 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2144 bool tile_missing = true;
2145 bool had_incomplete_tile = false;
2146 bool is_animating = false;
2147 root->AddChild(
2148 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
2149 8,
2150 tile_missing,
2151 had_incomplete_tile,
2152 is_animating,
2153 host_impl_->resource_provider()));
2154 host_impl_->active_tree()->SetRequiresHighResToDraw();
2155 LayerTreeHostImpl::FrameData frame;
2156 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
enne (OOO) 2014/06/10 18:35:09 The comment above does not agree with this asserti
danakj 2014/06/10 19:41:51 Ya, we do draw when we're missing a tile entirely,
sohanjg 2014/06/11 10:53:16 Done.
2157 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2158 host_impl_->DidDrawAllLayers(frame);
2159 }
2160
2092 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { 2161 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) {
2093 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 2162 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
2094 root->SetScrollClipLayer(Layer::INVALID_ID); 2163 root->SetScrollClipLayer(Layer::INVALID_ID);
2095 host_impl_->active_tree()->SetRootLayer(root.Pass()); 2164 host_impl_->active_tree()->SetRootLayer(root.Pass());
2096 DrawFrame(); 2165 DrawFrame();
2097 2166
2098 // Scroll event is ignored because layer is not scrollable. 2167 // Scroll event is ignored because layer is not scrollable.
2099 EXPECT_EQ(InputHandler::ScrollIgnored, 2168 EXPECT_EQ(InputHandler::ScrollIgnored,
2100 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel)); 2169 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
2101 EXPECT_FALSE(did_request_redraw_); 2170 EXPECT_FALSE(did_request_redraw_);
(...skipping 4465 matching lines...) Expand 10 before | Expand all | Expand 10 after
6567 FakePictureLayerImpl* active_mask_content = 6636 FakePictureLayerImpl* active_mask_content =
6568 static_cast<FakePictureLayerImpl*>( 6637 static_cast<FakePictureLayerImpl*>(
6569 host_impl_->active_tree()->root_layer()->children()[0]->mask_layer()); 6638 host_impl_->active_tree()->root_layer()->children()[0]->mask_layer());
6570 gfx::Rect r2 = active_mask_content->visible_rect_for_tile_priority(); 6639 gfx::Rect r2 = active_mask_content->visible_rect_for_tile_priority();
6571 6640
6572 ASSERT_TRUE(!r2.IsEmpty()); 6641 ASSERT_TRUE(!r2.IsEmpty());
6573 } 6642 }
6574 6643
6575 } // namespace 6644 } // namespace
6576 } // namespace cc 6645 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698