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

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

Issue 465853004: Moving RenderSurface creation outside of CalcDrawProps (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years 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 | « cc/trees/layer_tree_host_common_unittest.cc ('k') | cc/trees/layer_tree_host_unittest.cc » ('j') | 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 <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 #include "cc/test/begin_frame_args_test.h" 43 #include "cc/test/begin_frame_args_test.h"
44 #include "cc/test/fake_layer_tree_host_impl.h" 44 #include "cc/test/fake_layer_tree_host_impl.h"
45 #include "cc/test/fake_output_surface.h" 45 #include "cc/test/fake_output_surface.h"
46 #include "cc/test/fake_output_surface_client.h" 46 #include "cc/test/fake_output_surface_client.h"
47 #include "cc/test/fake_picture_layer_impl.h" 47 #include "cc/test/fake_picture_layer_impl.h"
48 #include "cc/test/fake_picture_pile_impl.h" 48 #include "cc/test/fake_picture_pile_impl.h"
49 #include "cc/test/fake_proxy.h" 49 #include "cc/test/fake_proxy.h"
50 #include "cc/test/fake_video_frame_provider.h" 50 #include "cc/test/fake_video_frame_provider.h"
51 #include "cc/test/geometry_test_utils.h" 51 #include "cc/test/geometry_test_utils.h"
52 #include "cc/test/layer_test_common.h" 52 #include "cc/test/layer_test_common.h"
53 #include "cc/test/layer_tree_test.h"
53 #include "cc/test/render_pass_test_common.h" 54 #include "cc/test/render_pass_test_common.h"
54 #include "cc/test/test_gpu_memory_buffer_manager.h" 55 #include "cc/test/test_gpu_memory_buffer_manager.h"
55 #include "cc/test/test_shared_bitmap_manager.h" 56 #include "cc/test/test_shared_bitmap_manager.h"
56 #include "cc/test/test_web_graphics_context_3d.h" 57 #include "cc/test/test_web_graphics_context_3d.h"
57 #include "cc/trees/layer_tree_impl.h" 58 #include "cc/trees/layer_tree_impl.h"
58 #include "cc/trees/single_thread_proxy.h" 59 #include "cc/trees/single_thread_proxy.h"
59 #include "media/base/media.h" 60 #include "media/base/media.h"
60 #include "testing/gmock/include/gmock/gmock.h" 61 #include "testing/gmock/include/gmock/gmock.h"
61 #include "testing/gtest/include/gtest/gtest.h" 62 #include "testing/gtest/include/gtest/gtest.h"
62 #include "third_party/skia/include/core/SkMallocPixelRef.h" 63 #include "third_party/skia/include/core/SkMallocPixelRef.h"
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 host_impl_->SetViewportSize(gfx::Size(10, 10)); 174 host_impl_->SetViewportSize(gfx::Size(10, 10));
174 return init; 175 return init;
175 } 176 }
176 177
177 void SetupRootLayerImpl(scoped_ptr<LayerImpl> root) { 178 void SetupRootLayerImpl(scoped_ptr<LayerImpl> root) {
178 root->SetPosition(gfx::PointF()); 179 root->SetPosition(gfx::PointF());
179 root->SetBounds(gfx::Size(10, 10)); 180 root->SetBounds(gfx::Size(10, 10));
180 root->SetContentBounds(gfx::Size(10, 10)); 181 root->SetContentBounds(gfx::Size(10, 10));
181 root->SetDrawsContent(true); 182 root->SetDrawsContent(true);
182 root->draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10); 183 root->draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10);
184 root->SetHasRenderSurface(true);
183 host_impl_->active_tree()->SetRootLayer(root.Pass()); 185 host_impl_->active_tree()->SetRootLayer(root.Pass());
184 } 186 }
185 187
186 static void ExpectClearedScrollDeltasRecursive(LayerImpl* layer) { 188 static void ExpectClearedScrollDeltasRecursive(LayerImpl* layer) {
187 ASSERT_EQ(layer->ScrollDelta(), gfx::Vector2d()); 189 ASSERT_EQ(layer->ScrollDelta(), gfx::Vector2d());
188 for (size_t i = 0; i < layer->children().size(); ++i) 190 for (size_t i = 0; i < layer->children().size(); ++i)
189 ExpectClearedScrollDeltasRecursive(layer->children()[i]); 191 ExpectClearedScrollDeltasRecursive(layer->children()[i]);
190 } 192 }
191 193
192 static void ExpectContains(const ScrollAndScaleSet& scroll_info, 194 static void ExpectContains(const ScrollAndScaleSet& scroll_info,
(...skipping 26 matching lines...) Expand all
219 LayerImpl* CreateScrollAndContentsLayers(LayerTreeImpl* layer_tree_impl, 221 LayerImpl* CreateScrollAndContentsLayers(LayerTreeImpl* layer_tree_impl,
220 const gfx::Size& content_size) { 222 const gfx::Size& content_size) {
221 const int kInnerViewportScrollLayerId = 2; 223 const int kInnerViewportScrollLayerId = 2;
222 const int kInnerViewportClipLayerId = 4; 224 const int kInnerViewportClipLayerId = 4;
223 const int kPageScaleLayerId = 5; 225 const int kPageScaleLayerId = 5;
224 scoped_ptr<LayerImpl> root = 226 scoped_ptr<LayerImpl> root =
225 LayerImpl::Create(layer_tree_impl, 1); 227 LayerImpl::Create(layer_tree_impl, 1);
226 root->SetBounds(content_size); 228 root->SetBounds(content_size);
227 root->SetContentBounds(content_size); 229 root->SetContentBounds(content_size);
228 root->SetPosition(gfx::PointF()); 230 root->SetPosition(gfx::PointF());
231 root->SetHasRenderSurface(true);
229 232
230 scoped_ptr<LayerImpl> scroll = 233 scoped_ptr<LayerImpl> scroll =
231 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId); 234 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId);
232 LayerImpl* scroll_layer = scroll.get(); 235 LayerImpl* scroll_layer = scroll.get();
233 scroll->SetIsContainerForFixedPositionLayers(true); 236 scroll->SetIsContainerForFixedPositionLayers(true);
234 scroll->SetScrollOffset(gfx::ScrollOffset()); 237 scroll->SetScrollOffset(gfx::ScrollOffset());
235 238
236 scoped_ptr<LayerImpl> clip = 239 scoped_ptr<LayerImpl> clip =
237 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId); 240 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId);
238 clip->SetBounds( 241 clip->SetBounds(
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 563
561 // We should still be scrolling, because the scrolled layer also exists in the 564 // We should still be scrolling, because the scrolled layer also exists in the
562 // new tree. 565 // new tree.
563 gfx::Vector2d scroll_delta(0, 10); 566 gfx::Vector2d scroll_delta(0, 10);
564 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 567 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
565 host_impl_->ScrollEnd(); 568 host_impl_->ScrollEnd();
566 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); 569 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas();
567 ExpectContains(*scroll_info, scroll_layer->id(), scroll_delta); 570 ExpectContains(*scroll_info, scroll_layer->id(), scroll_delta);
568 } 571 }
569 572
570 TEST_F(LayerTreeHostImplTest, ClearRootRenderSurfaceAndScroll) {
571 SetupScrollAndContentsLayers(gfx::Size(100, 100));
572 host_impl_->SetViewportSize(gfx::Size(50, 50));
573 DrawFrame();
574
575 // We should be able to scroll even if the root layer loses its render surface
576 // after the most recent render.
577 host_impl_->active_tree()->root_layer()->ClearRenderSurface();
578 host_impl_->active_tree()->set_needs_update_draw_properties();
579
580 EXPECT_EQ(InputHandler::ScrollStarted,
581 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
582 }
583
584 TEST_F(LayerTreeHostImplTest, WheelEventHandlers) { 573 TEST_F(LayerTreeHostImplTest, WheelEventHandlers) {
585 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 574 SetupScrollAndContentsLayers(gfx::Size(100, 100));
586 host_impl_->SetViewportSize(gfx::Size(50, 50)); 575 host_impl_->SetViewportSize(gfx::Size(50, 50));
587 DrawFrame(); 576 DrawFrame();
588 LayerImpl* root = host_impl_->active_tree()->root_layer(); 577 LayerImpl* root = host_impl_->active_tree()->root_layer();
589 578
590 root->SetHaveWheelEventHandlers(true); 579 root->SetHaveWheelEventHandlers(true);
591 580
592 // With registered event handlers, wheel scrolls have to go to the main 581 // With registered event handlers, wheel scrolls have to go to the main
593 // thread. 582 // thread.
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
889 host_impl_->ScrollBegin(scroll_position, InputHandler::Wheel)); 878 host_impl_->ScrollBegin(scroll_position, InputHandler::Wheel));
890 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 0), scroll_layer->TotalScrollOffset()); 879 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 0), scroll_layer->TotalScrollOffset());
891 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->TotalScrollOffset()); 880 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->TotalScrollOffset());
892 881
893 host_impl_->ScrollBy(scroll_position, scroll_delta); 882 host_impl_->ScrollBy(scroll_position, scroll_delta);
894 host_impl_->ScrollEnd(); 883 host_impl_->ScrollEnd();
895 EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 10), scroll_layer->TotalScrollOffset()); 884 EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 10), scroll_layer->TotalScrollOffset());
896 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->TotalScrollOffset()); 885 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->TotalScrollOffset());
897 } 886 }
898 887
899 TEST_F(LayerTreeHostImplTest,
900 ClearRootRenderSurfaceAndHitTestTouchHandlerRegion) {
901 SetupScrollAndContentsLayers(gfx::Size(100, 100));
902 host_impl_->SetViewportSize(gfx::Size(50, 50));
903 DrawFrame();
904
905 // We should be able to hit test for touch event handlers even if the root
906 // layer loses its render surface after the most recent render.
907 host_impl_->active_tree()->root_layer()->ClearRenderSurface();
908 host_impl_->active_tree()->set_needs_update_draw_properties();
909
910 EXPECT_EQ(host_impl_->HaveTouchEventHandlersAt(gfx::Point()), false);
911 }
912
913 TEST_F(LayerTreeHostImplTest, ImplPinchZoom) { 888 TEST_F(LayerTreeHostImplTest, ImplPinchZoom) {
914 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 889 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
915 host_impl_->SetViewportSize(gfx::Size(50, 50)); 890 host_impl_->SetViewportSize(gfx::Size(50, 50));
916 DrawFrame(); 891 DrawFrame();
917 892
918 EXPECT_EQ(scroll_layer, host_impl_->InnerViewportScrollLayer()); 893 EXPECT_EQ(scroll_layer, host_impl_->InnerViewportScrollLayer());
919 LayerImpl* container_layer = scroll_layer->scroll_clip_layer(); 894 LayerImpl* container_layer = scroll_layer->scroll_clip_layer();
920 EXPECT_EQ(gfx::Size(50, 50), container_layer->bounds()); 895 EXPECT_EQ(gfx::Size(50, 50), container_layer->bounds());
921 896
922 float min_page_scale = 1.f, max_page_scale = 4.f; 897 float min_page_scale = 1.f, max_page_scale = 4.f;
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
1431 contents->SetBounds(content_size); \ 1406 contents->SetBounds(content_size); \
1432 contents->SetContentBounds(content_size); \ 1407 contents->SetContentBounds(content_size); \
1433 \ 1408 \
1434 scoped_ptr<SolidColorScrollbarLayerImpl> scrollbar = \ 1409 scoped_ptr<SolidColorScrollbarLayerImpl> scrollbar = \
1435 SolidColorScrollbarLayerImpl::Create(host_impl_->active_tree(), 4, \ 1410 SolidColorScrollbarLayerImpl::Create(host_impl_->active_tree(), 4, \
1436 VERTICAL, 10, 0, false, true); \ 1411 VERTICAL, 10, 0, false, true); \
1437 EXPECT_FLOAT_EQ(0.f, scrollbar->opacity()); \ 1412 EXPECT_FLOAT_EQ(0.f, scrollbar->opacity()); \
1438 \ 1413 \
1439 scroll->AddChild(contents.Pass()); \ 1414 scroll->AddChild(contents.Pass()); \
1440 root->AddChild(scroll.Pass()); \ 1415 root->AddChild(scroll.Pass()); \
1416 root->SetHasRenderSurface(true); \
1441 scrollbar->SetScrollLayerAndClipLayerByIds(2, 1); \ 1417 scrollbar->SetScrollLayerAndClipLayerByIds(2, 1); \
1442 root->AddChild(scrollbar.Pass()); \ 1418 root->AddChild(scrollbar.Pass()); \
1443 \ 1419 \
1444 host_impl_->active_tree()->SetRootLayer(root.Pass()); \ 1420 host_impl_->active_tree()->SetRootLayer(root.Pass()); \
1445 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2, \ 1421 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2, \
1446 Layer::INVALID_ID); \ 1422 Layer::INVALID_ID); \
1447 host_impl_->active_tree()->DidBecomeActive(); \ 1423 host_impl_->active_tree()->DidBecomeActive(); \
1448 DrawFrame(); 1424 DrawFrame();
1449 1425
1450 TEST_F(LayerTreeHostImplTest, ScrollbarLinearFadeScheduling) { 1426 TEST_F(LayerTreeHostImplTest, ScrollbarLinearFadeScheduling) {
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1575 gfx::ScaleSize(viewport_size, device_scale_factor)); 1551 gfx::ScaleSize(viewport_size, device_scale_factor));
1576 gfx::Size content_size(1000, 1000); 1552 gfx::Size content_size(1000, 1000);
1577 1553
1578 CreateHostImpl(settings, CreateOutputSurface()); 1554 CreateHostImpl(settings, CreateOutputSurface());
1579 host_impl_->SetDeviceScaleFactor(device_scale_factor); 1555 host_impl_->SetDeviceScaleFactor(device_scale_factor);
1580 host_impl_->SetViewportSize(device_viewport_size); 1556 host_impl_->SetViewportSize(device_viewport_size);
1581 1557
1582 scoped_ptr<LayerImpl> root = 1558 scoped_ptr<LayerImpl> root =
1583 LayerImpl::Create(host_impl_->active_tree(), 1); 1559 LayerImpl::Create(host_impl_->active_tree(), 1);
1584 root->SetBounds(viewport_size); 1560 root->SetBounds(viewport_size);
1561 root->SetHasRenderSurface(true);
1585 1562
1586 scoped_ptr<LayerImpl> scroll = 1563 scoped_ptr<LayerImpl> scroll =
1587 LayerImpl::Create(host_impl_->active_tree(), 2); 1564 LayerImpl::Create(host_impl_->active_tree(), 2);
1588 scroll->SetScrollClipLayer(root->id()); 1565 scroll->SetScrollClipLayer(root->id());
1589 scroll->SetScrollOffset(gfx::ScrollOffset()); 1566 scroll->SetScrollOffset(gfx::ScrollOffset());
1590 scroll->SetBounds(content_size); 1567 scroll->SetBounds(content_size);
1591 scroll->SetContentBounds(content_size); 1568 scroll->SetContentBounds(content_size);
1592 scroll->SetIsContainerForFixedPositionLayers(true); 1569 scroll->SetIsContainerForFixedPositionLayers(true);
1593 1570
1594 scoped_ptr<LayerImpl> contents = 1571 scoped_ptr<LayerImpl> contents =
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1780 1757
1781 TEST_F(LayerTreeHostImplTest, WillDrawReturningFalseDoesNotCall) { 1758 TEST_F(LayerTreeHostImplTest, WillDrawReturningFalseDoesNotCall) {
1782 // The root layer is always drawn, so run this test on a child layer that 1759 // The root layer is always drawn, so run this test on a child layer that
1783 // will be masked out by the root layer's bounds. 1760 // will be masked out by the root layer's bounds.
1784 host_impl_->active_tree()->SetRootLayer( 1761 host_impl_->active_tree()->SetRootLayer(
1785 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 1762 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
1786 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( 1763 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(
1787 host_impl_->active_tree()->root_layer()); 1764 host_impl_->active_tree()->root_layer());
1788 1765
1789 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); 1766 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2));
1767 root->SetHasRenderSurface(true);
1790 DidDrawCheckLayer* layer = 1768 DidDrawCheckLayer* layer =
1791 static_cast<DidDrawCheckLayer*>(root->children()[0]); 1769 static_cast<DidDrawCheckLayer*>(root->children()[0]);
1792 1770
1793 { 1771 {
1794 LayerTreeHostImpl::FrameData frame; 1772 LayerTreeHostImpl::FrameData frame;
1795 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1773 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1796 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1774 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1797 host_impl_->DidDrawAllLayers(frame); 1775 host_impl_->DidDrawAllLayers(frame);
1798 1776
1799 EXPECT_TRUE(layer->will_draw_called()); 1777 EXPECT_TRUE(layer->will_draw_called());
(...skipping 20 matching lines...) Expand all
1820 } 1798 }
1821 1799
1822 TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) { 1800 TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) {
1823 // The root layer is always drawn, so run this test on a child layer that 1801 // The root layer is always drawn, so run this test on a child layer that
1824 // will be masked out by the root layer's bounds. 1802 // will be masked out by the root layer's bounds.
1825 host_impl_->active_tree()->SetRootLayer( 1803 host_impl_->active_tree()->SetRootLayer(
1826 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 1804 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
1827 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( 1805 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(
1828 host_impl_->active_tree()->root_layer()); 1806 host_impl_->active_tree()->root_layer());
1829 root->SetMasksToBounds(true); 1807 root->SetMasksToBounds(true);
1830 1808 root->SetHasRenderSurface(true);
1831 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); 1809 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2));
1832 DidDrawCheckLayer* layer = 1810 DidDrawCheckLayer* layer =
1833 static_cast<DidDrawCheckLayer*>(root->children()[0]); 1811 static_cast<DidDrawCheckLayer*>(root->children()[0]);
1834 // Ensure visible_content_rect for layer is empty. 1812 // Ensure visible_content_rect for layer is empty.
1835 layer->SetPosition(gfx::PointF(100.f, 100.f)); 1813 layer->SetPosition(gfx::PointF(100.f, 100.f));
1836 layer->SetBounds(gfx::Size(10, 10)); 1814 layer->SetBounds(gfx::Size(10, 10));
1837 layer->SetContentBounds(gfx::Size(10, 10)); 1815 layer->SetContentBounds(gfx::Size(10, 10));
1838 1816
1839 LayerTreeHostImpl::FrameData frame; 1817 LayerTreeHostImpl::FrameData frame;
1840 1818
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1873 host_impl_->active_tree()->SetRootLayer( 1851 host_impl_->active_tree()->SetRootLayer(
1874 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 1852 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
1875 DidDrawCheckLayer* root = 1853 DidDrawCheckLayer* root =
1876 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 1854 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
1877 1855
1878 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); 1856 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2));
1879 DidDrawCheckLayer* occluded_layer = 1857 DidDrawCheckLayer* occluded_layer =
1880 static_cast<DidDrawCheckLayer*>(root->children()[0]); 1858 static_cast<DidDrawCheckLayer*>(root->children()[0]);
1881 1859
1882 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); 1860 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3));
1861 root->SetHasRenderSurface(true);
1883 DidDrawCheckLayer* top_layer = 1862 DidDrawCheckLayer* top_layer =
1884 static_cast<DidDrawCheckLayer*>(root->children()[1]); 1863 static_cast<DidDrawCheckLayer*>(root->children()[1]);
1885 // This layer covers the occluded_layer above. Make this layer large so it can 1864 // This layer covers the occluded_layer above. Make this layer large so it can
1886 // occlude. 1865 // occlude.
1887 top_layer->SetBounds(big_size); 1866 top_layer->SetBounds(big_size);
1888 top_layer->SetContentBounds(big_size); 1867 top_layer->SetContentBounds(big_size);
1889 top_layer->SetContentsOpaque(true); 1868 top_layer->SetContentsOpaque(true);
1890 1869
1891 LayerTreeHostImpl::FrameData frame; 1870 LayerTreeHostImpl::FrameData frame;
1892 1871
(...skipping 12 matching lines...) Expand all
1905 EXPECT_TRUE(top_layer->did_draw_called()); 1884 EXPECT_TRUE(top_layer->did_draw_called());
1906 } 1885 }
1907 1886
1908 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) { 1887 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) {
1909 host_impl_->active_tree()->SetRootLayer( 1888 host_impl_->active_tree()->SetRootLayer(
1910 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 1889 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
1911 DidDrawCheckLayer* root = 1890 DidDrawCheckLayer* root =
1912 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 1891 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
1913 1892
1914 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); 1893 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2));
1894 root->SetHasRenderSurface(true);
1915 DidDrawCheckLayer* layer1 = 1895 DidDrawCheckLayer* layer1 =
1916 static_cast<DidDrawCheckLayer*>(root->children()[0]); 1896 static_cast<DidDrawCheckLayer*>(root->children()[0]);
1917 1897
1918 layer1->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); 1898 layer1->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3));
1919 DidDrawCheckLayer* layer2 = 1899 DidDrawCheckLayer* layer2 =
1920 static_cast<DidDrawCheckLayer*>(layer1->children()[0]); 1900 static_cast<DidDrawCheckLayer*>(layer1->children()[0]);
1921 1901
1922 layer1->SetOpacity(0.3f); 1902 layer1->SetHasRenderSurface(true);
1923 layer1->SetShouldFlattenTransform(true); 1903 layer1->SetShouldFlattenTransform(true);
1924 1904
1925 EXPECT_FALSE(root->did_draw_called()); 1905 EXPECT_FALSE(root->did_draw_called());
1926 EXPECT_FALSE(layer1->did_draw_called()); 1906 EXPECT_FALSE(layer1->did_draw_called());
1927 EXPECT_FALSE(layer2->did_draw_called()); 1907 EXPECT_FALSE(layer2->did_draw_called());
1928 1908
1929 LayerTreeHostImpl::FrameData frame; 1909 LayerTreeHostImpl::FrameData frame;
1930 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( 1910 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren(
1931 host_impl_->active_tree()->root_layer()); 1911 host_impl_->active_tree()->root_layer());
1932 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1912 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 1964
1985 bool tile_missing_; 1965 bool tile_missing_;
1986 bool had_incomplete_tile_; 1966 bool had_incomplete_tile_;
1987 }; 1967 };
1988 1968
1989 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsOnDefault) { 1969 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsOnDefault) {
1990 host_impl_->active_tree()->SetRootLayer( 1970 host_impl_->active_tree()->SetRootLayer(
1991 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 1971 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
1992 DidDrawCheckLayer* root = 1972 DidDrawCheckLayer* root =
1993 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 1973 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
1994 1974 root->SetHasRenderSurface(true);
1995 bool tile_missing = false; 1975 bool tile_missing = false;
1996 bool had_incomplete_tile = false; 1976 bool had_incomplete_tile = false;
1997 bool is_animating = false; 1977 bool is_animating = false;
1998 root->AddChild( 1978 root->AddChild(
1999 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 1979 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
2000 2, 1980 2,
2001 tile_missing, 1981 tile_missing,
2002 had_incomplete_tile, 1982 had_incomplete_tile,
2003 is_animating, 1983 is_animating,
2004 host_impl_->resource_provider())); 1984 host_impl_->resource_provider()));
2005 1985
2006 LayerTreeHostImpl::FrameData frame; 1986 LayerTreeHostImpl::FrameData frame;
2007 1987
2008 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1988 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2009 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1989 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2010 host_impl_->DidDrawAllLayers(frame); 1990 host_impl_->DidDrawAllLayers(frame);
2011 } 1991 }
2012 1992
2013 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithAnimatedLayer) { 1993 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithAnimatedLayer) {
2014 host_impl_->active_tree()->SetRootLayer( 1994 host_impl_->active_tree()->SetRootLayer(
2015 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 1995 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
2016 DidDrawCheckLayer* root = 1996 DidDrawCheckLayer* root =
2017 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 1997 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
1998 root->SetHasRenderSurface(true);
2018 bool tile_missing = false; 1999 bool tile_missing = false;
2019 bool had_incomplete_tile = false; 2000 bool had_incomplete_tile = false;
2020 bool is_animating = true; 2001 bool is_animating = true;
2021 root->AddChild( 2002 root->AddChild(
2022 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 2003 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
2023 2, 2004 2,
2024 tile_missing, 2005 tile_missing,
2025 had_incomplete_tile, 2006 had_incomplete_tile,
2026 is_animating, 2007 is_animating,
2027 host_impl_->resource_provider())); 2008 host_impl_->resource_provider()));
2028 2009
2029 LayerTreeHostImpl::FrameData frame; 2010 LayerTreeHostImpl::FrameData frame;
2030 2011
2031 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2012 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2032 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2013 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2033 host_impl_->DidDrawAllLayers(frame); 2014 host_impl_->DidDrawAllLayers(frame);
2034 } 2015 }
2035 2016
2036 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithMissingTiles) { 2017 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithMissingTiles) {
2037 host_impl_->active_tree()->SetRootLayer( 2018 host_impl_->active_tree()->SetRootLayer(
2038 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); 2019 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3));
2039 DidDrawCheckLayer* root = 2020 DidDrawCheckLayer* root =
2040 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2021 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2022 root->SetHasRenderSurface(true);
2041 2023
2042 LayerTreeHostImpl::FrameData frame; 2024 LayerTreeHostImpl::FrameData frame;
2043 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2025 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2044 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2026 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2045 host_impl_->DidDrawAllLayers(frame); 2027 host_impl_->DidDrawAllLayers(frame);
2046 host_impl_->SwapBuffers(frame); 2028 host_impl_->SwapBuffers(frame);
2047 2029
2048 bool tile_missing = true; 2030 bool tile_missing = true;
2049 bool had_incomplete_tile = false; 2031 bool had_incomplete_tile = false;
2050 bool is_animating = false; 2032 bool is_animating = false;
2051 root->AddChild( 2033 root->AddChild(
2052 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 2034 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
2053 4, 2035 4,
2054 tile_missing, 2036 tile_missing,
2055 had_incomplete_tile, 2037 had_incomplete_tile,
2056 is_animating, 2038 is_animating,
2057 host_impl_->resource_provider())); 2039 host_impl_->resource_provider()));
2058 LayerTreeHostImpl::FrameData frame2; 2040 LayerTreeHostImpl::FrameData frame2;
2059 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame2)); 2041 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame2));
2060 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); 2042 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now());
2061 host_impl_->DidDrawAllLayers(frame2); 2043 host_impl_->DidDrawAllLayers(frame2);
2062 } 2044 }
2063 2045
2064 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithIncompleteTile) { 2046 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithIncompleteTile) {
2065 host_impl_->active_tree()->SetRootLayer( 2047 host_impl_->active_tree()->SetRootLayer(
2066 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); 2048 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3));
2067 DidDrawCheckLayer* root = 2049 DidDrawCheckLayer* root =
2068 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2050 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2051 root->SetHasRenderSurface(true);
2069 2052
2070 LayerTreeHostImpl::FrameData frame; 2053 LayerTreeHostImpl::FrameData frame;
2071 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2054 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2072 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2055 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2073 host_impl_->DidDrawAllLayers(frame); 2056 host_impl_->DidDrawAllLayers(frame);
2074 host_impl_->SwapBuffers(frame); 2057 host_impl_->SwapBuffers(frame);
2075 2058
2076 bool tile_missing = false; 2059 bool tile_missing = false;
2077 bool had_incomplete_tile = true; 2060 bool had_incomplete_tile = true;
2078 bool is_animating = false; 2061 bool is_animating = false;
2079 root->AddChild( 2062 root->AddChild(
2080 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 2063 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
2081 4, 2064 4,
2082 tile_missing, 2065 tile_missing,
2083 had_incomplete_tile, 2066 had_incomplete_tile,
2084 is_animating, 2067 is_animating,
2085 host_impl_->resource_provider())); 2068 host_impl_->resource_provider()));
2086 LayerTreeHostImpl::FrameData frame2; 2069 LayerTreeHostImpl::FrameData frame2;
2087 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame2)); 2070 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame2));
2088 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); 2071 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now());
2089 host_impl_->DidDrawAllLayers(frame2); 2072 host_impl_->DidDrawAllLayers(frame2);
2090 } 2073 }
2091 2074
2092 TEST_F(LayerTreeHostImplTest, 2075 TEST_F(LayerTreeHostImplTest,
2093 PrepareToDrawFailsWithAnimationAndMissingTilesUsesCheckerboard) { 2076 PrepareToDrawFailsWithAnimationAndMissingTilesUsesCheckerboard) {
2094 host_impl_->active_tree()->SetRootLayer( 2077 host_impl_->active_tree()->SetRootLayer(
2095 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); 2078 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5));
2096 DidDrawCheckLayer* root = 2079 DidDrawCheckLayer* root =
2097 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2080 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2081 root->SetHasRenderSurface(true);
2098 2082
2099 LayerTreeHostImpl::FrameData frame; 2083 LayerTreeHostImpl::FrameData frame;
2100 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2084 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2101 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2085 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2102 host_impl_->DidDrawAllLayers(frame); 2086 host_impl_->DidDrawAllLayers(frame);
2103 host_impl_->SwapBuffers(frame); 2087 host_impl_->SwapBuffers(frame);
2104 2088
2105 bool tile_missing = true; 2089 bool tile_missing = true;
2106 bool had_incomplete_tile = false; 2090 bool had_incomplete_tile = false;
2107 bool is_animating = true; 2091 bool is_animating = true;
(...skipping 10 matching lines...) Expand all
2118 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); 2102 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now());
2119 host_impl_->DidDrawAllLayers(frame2); 2103 host_impl_->DidDrawAllLayers(frame2);
2120 } 2104 }
2121 2105
2122 TEST_F(LayerTreeHostImplTest, 2106 TEST_F(LayerTreeHostImplTest,
2123 PrepareToDrawSucceedsWithAnimationAndIncompleteTiles) { 2107 PrepareToDrawSucceedsWithAnimationAndIncompleteTiles) {
2124 host_impl_->active_tree()->SetRootLayer( 2108 host_impl_->active_tree()->SetRootLayer(
2125 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); 2109 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5));
2126 DidDrawCheckLayer* root = 2110 DidDrawCheckLayer* root =
2127 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2111 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2112 root->SetHasRenderSurface(true);
2128 2113
2129 LayerTreeHostImpl::FrameData frame; 2114 LayerTreeHostImpl::FrameData frame;
2130 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2115 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2131 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2116 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2132 host_impl_->DidDrawAllLayers(frame); 2117 host_impl_->DidDrawAllLayers(frame);
2133 host_impl_->SwapBuffers(frame); 2118 host_impl_->SwapBuffers(frame);
2134 2119
2135 bool tile_missing = false; 2120 bool tile_missing = false;
2136 bool had_incomplete_tile = true; 2121 bool had_incomplete_tile = true;
2137 bool is_animating = true; 2122 bool is_animating = true;
2138 root->AddChild( 2123 root->AddChild(
2139 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 2124 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
2140 6, 2125 6,
2141 tile_missing, 2126 tile_missing,
2142 had_incomplete_tile, 2127 had_incomplete_tile,
2143 is_animating, 2128 is_animating,
2144 host_impl_->resource_provider())); 2129 host_impl_->resource_provider()));
2145 LayerTreeHostImpl::FrameData frame2; 2130 LayerTreeHostImpl::FrameData frame2;
2146 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame2)); 2131 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame2));
2147 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); 2132 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now());
2148 host_impl_->DidDrawAllLayers(frame2); 2133 host_impl_->DidDrawAllLayers(frame2);
2149 } 2134 }
2150 2135
2151 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWhenHighResRequired) { 2136 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWhenHighResRequired) {
2152 host_impl_->active_tree()->SetRootLayer( 2137 host_impl_->active_tree()->SetRootLayer(
2153 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); 2138 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7));
2154 DidDrawCheckLayer* root = 2139 DidDrawCheckLayer* root =
2155 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2140 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2141 root->SetHasRenderSurface(true);
2156 2142
2157 LayerTreeHostImpl::FrameData frame; 2143 LayerTreeHostImpl::FrameData frame;
2158 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2144 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2159 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2145 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2160 host_impl_->DidDrawAllLayers(frame); 2146 host_impl_->DidDrawAllLayers(frame);
2161 host_impl_->SwapBuffers(frame); 2147 host_impl_->SwapBuffers(frame);
2162 2148
2163 bool tile_missing = false; 2149 bool tile_missing = false;
2164 bool had_incomplete_tile = false; 2150 bool had_incomplete_tile = false;
2165 bool is_animating = false; 2151 bool is_animating = false;
(...skipping 10 matching lines...) Expand all
2176 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); 2162 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now());
2177 host_impl_->DidDrawAllLayers(frame2); 2163 host_impl_->DidDrawAllLayers(frame2);
2178 } 2164 }
2179 2165
2180 TEST_F(LayerTreeHostImplTest, 2166 TEST_F(LayerTreeHostImplTest,
2181 PrepareToDrawFailsWhenHighResRequiredAndIncompleteTiles) { 2167 PrepareToDrawFailsWhenHighResRequiredAndIncompleteTiles) {
2182 host_impl_->active_tree()->SetRootLayer( 2168 host_impl_->active_tree()->SetRootLayer(
2183 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); 2169 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7));
2184 DidDrawCheckLayer* root = 2170 DidDrawCheckLayer* root =
2185 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2171 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2172 root->SetHasRenderSurface(true);
2186 2173
2187 LayerTreeHostImpl::FrameData frame; 2174 LayerTreeHostImpl::FrameData frame;
2188 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2175 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2189 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2176 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2190 host_impl_->DidDrawAllLayers(frame); 2177 host_impl_->DidDrawAllLayers(frame);
2191 host_impl_->SwapBuffers(frame); 2178 host_impl_->SwapBuffers(frame);
2192 2179
2193 bool tile_missing = false; 2180 bool tile_missing = false;
2194 bool had_incomplete_tile = true; 2181 bool had_incomplete_tile = true;
2195 bool is_animating = false; 2182 bool is_animating = false;
(...skipping 11 matching lines...) Expand all
2207 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); 2194 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now());
2208 host_impl_->DidDrawAllLayers(frame2); 2195 host_impl_->DidDrawAllLayers(frame2);
2209 } 2196 }
2210 2197
2211 TEST_F(LayerTreeHostImplTest, 2198 TEST_F(LayerTreeHostImplTest,
2212 PrepareToDrawFailsWhenHighResRequiredAndMissingTile) { 2199 PrepareToDrawFailsWhenHighResRequiredAndMissingTile) {
2213 host_impl_->active_tree()->SetRootLayer( 2200 host_impl_->active_tree()->SetRootLayer(
2214 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); 2201 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7));
2215 DidDrawCheckLayer* root = 2202 DidDrawCheckLayer* root =
2216 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2203 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2204 root->SetHasRenderSurface(true);
2217 2205
2218 LayerTreeHostImpl::FrameData frame; 2206 LayerTreeHostImpl::FrameData frame;
2219 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2207 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2220 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2208 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2221 host_impl_->DidDrawAllLayers(frame); 2209 host_impl_->DidDrawAllLayers(frame);
2222 host_impl_->SwapBuffers(frame); 2210 host_impl_->SwapBuffers(frame);
2223 2211
2224 bool tile_missing = true; 2212 bool tile_missing = true;
2225 bool had_incomplete_tile = false; 2213 bool had_incomplete_tile = false;
2226 bool is_animating = false; 2214 bool is_animating = false;
2227 root->AddChild( 2215 root->AddChild(
2228 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), 2216 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(),
2229 8, 2217 8,
2230 tile_missing, 2218 tile_missing,
2231 had_incomplete_tile, 2219 had_incomplete_tile,
2232 is_animating, 2220 is_animating,
2233 host_impl_->resource_provider())); 2221 host_impl_->resource_provider()));
2234 host_impl_->SetRequiresHighResToDraw(); 2222 host_impl_->SetRequiresHighResToDraw();
2235 LayerTreeHostImpl::FrameData frame2; 2223 LayerTreeHostImpl::FrameData frame2;
2236 EXPECT_EQ(DRAW_ABORTED_MISSING_HIGH_RES_CONTENT, 2224 EXPECT_EQ(DRAW_ABORTED_MISSING_HIGH_RES_CONTENT,
2237 host_impl_->PrepareToDraw(&frame2)); 2225 host_impl_->PrepareToDraw(&frame2));
2238 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); 2226 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now());
2239 host_impl_->DidDrawAllLayers(frame2); 2227 host_impl_->DidDrawAllLayers(frame2);
2240 } 2228 }
2241 2229
2242 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { 2230 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) {
2243 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 2231 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
2244 root->SetScrollClipLayer(Layer::INVALID_ID); 2232 root->SetScrollClipLayer(Layer::INVALID_ID);
2233 root->SetHasRenderSurface(true);
2245 host_impl_->active_tree()->SetRootLayer(root.Pass()); 2234 host_impl_->active_tree()->SetRootLayer(root.Pass());
2246 DrawFrame(); 2235 DrawFrame();
2247 2236
2248 // Scroll event is ignored because layer is not scrollable. 2237 // Scroll event is ignored because layer is not scrollable.
2249 EXPECT_EQ(InputHandler::ScrollIgnored, 2238 EXPECT_EQ(InputHandler::ScrollIgnored,
2250 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel)); 2239 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel));
2251 EXPECT_FALSE(did_request_redraw_); 2240 EXPECT_FALSE(did_request_redraw_);
2252 EXPECT_FALSE(did_request_commit_); 2241 EXPECT_FALSE(did_request_commit_);
2253 } 2242 }
2254 2243
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2289 LayerImpl::Create(host_impl_->active_tree(), 2); 2278 LayerImpl::Create(host_impl_->active_tree(), 2);
2290 root_clip->SetBounds(clip_size_); 2279 root_clip->SetBounds(clip_size_);
2291 root->SetScrollClipLayer(root_clip->id()); 2280 root->SetScrollClipLayer(root_clip->id());
2292 root->SetBounds(layer_size_); 2281 root->SetBounds(layer_size_);
2293 root->SetContentBounds(layer_size_); 2282 root->SetContentBounds(layer_size_);
2294 root->SetPosition(gfx::PointF()); 2283 root->SetPosition(gfx::PointF());
2295 root->SetDrawsContent(false); 2284 root->SetDrawsContent(false);
2296 root->SetIsContainerForFixedPositionLayers(true); 2285 root->SetIsContainerForFixedPositionLayers(true);
2297 int inner_viewport_scroll_layer_id = root->id(); 2286 int inner_viewport_scroll_layer_id = root->id();
2298 int page_scale_layer_id = root_clip->id(); 2287 int page_scale_layer_id = root_clip->id();
2288 root_clip->SetHasRenderSurface(true);
2299 root_clip->AddChild(root.Pass()); 2289 root_clip->AddChild(root.Pass());
2290 root_clip->SetHasRenderSurface(true);
2300 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); 2291 host_impl_->active_tree()->SetRootLayer(root_clip.Pass());
2301 host_impl_->active_tree()->SetViewportLayersFromIds( 2292 host_impl_->active_tree()->SetViewportLayersFromIds(
2302 Layer::INVALID_ID, page_scale_layer_id, inner_viewport_scroll_layer_id, 2293 Layer::INVALID_ID, page_scale_layer_id, inner_viewport_scroll_layer_id,
2303 Layer::INVALID_ID); 2294 Layer::INVALID_ID);
2304 // Set a viewport size that is large enough to contain both the top controls 2295 // Set a viewport size that is large enough to contain both the top controls
2305 // and some content. 2296 // and some content.
2306 host_impl_->SetViewportSize(viewport_size_); 2297 host_impl_->SetViewportSize(viewport_size_);
2307 host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true); 2298 host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true);
2308 2299
2309 host_impl_->DidChangeTopControlsPosition(); 2300 host_impl_->DidChangeTopControlsPosition();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2354 scoped_ptr<LayerImpl> outer_clip = 2345 scoped_ptr<LayerImpl> outer_clip =
2355 LayerImpl::Create(host_impl_->active_tree(), 5); 2346 LayerImpl::Create(host_impl_->active_tree(), 5);
2356 2347
2357 root_clip->SetBounds(inner_viewport_size); 2348 root_clip->SetBounds(inner_viewport_size);
2358 root->SetScrollClipLayer(root_clip->id()); 2349 root->SetScrollClipLayer(root_clip->id());
2359 root->SetBounds(outer_viewport_size); 2350 root->SetBounds(outer_viewport_size);
2360 root->SetContentBounds(outer_viewport_size); 2351 root->SetContentBounds(outer_viewport_size);
2361 root->SetPosition(gfx::PointF()); 2352 root->SetPosition(gfx::PointF());
2362 root->SetDrawsContent(false); 2353 root->SetDrawsContent(false);
2363 root->SetIsContainerForFixedPositionLayers(true); 2354 root->SetIsContainerForFixedPositionLayers(true);
2364 2355 root_clip->SetHasRenderSurface(true);
2365 outer_clip->SetBounds(outer_viewport_size); 2356 outer_clip->SetBounds(outer_viewport_size);
2366 outer_scroll->SetScrollClipLayer(outer_clip->id()); 2357 outer_scroll->SetScrollClipLayer(outer_clip->id());
2367 outer_scroll->SetBounds(scroll_layer_size); 2358 outer_scroll->SetBounds(scroll_layer_size);
2368 outer_scroll->SetContentBounds(scroll_layer_size); 2359 outer_scroll->SetContentBounds(scroll_layer_size);
2369 outer_scroll->SetPosition(gfx::PointF()); 2360 outer_scroll->SetPosition(gfx::PointF());
2370 outer_scroll->SetDrawsContent(false); 2361 outer_scroll->SetDrawsContent(false);
2371 outer_scroll->SetIsContainerForFixedPositionLayers(true); 2362 outer_scroll->SetIsContainerForFixedPositionLayers(true);
2372 2363
2373 int inner_viewport_scroll_layer_id = root->id(); 2364 int inner_viewport_scroll_layer_id = root->id();
2374 int outer_viewport_scroll_layer_id = outer_scroll->id(); 2365 int outer_viewport_scroll_layer_id = outer_scroll->id();
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
2927 2918
2928 scoped_ptr<LayerImpl> scroll_layer = 2919 scoped_ptr<LayerImpl> scroll_layer =
2929 LayerImpl::Create(host_impl_->active_tree(), 2); 2920 LayerImpl::Create(host_impl_->active_tree(), 2);
2930 scroll_layer->SetScrollClipLayer(3); 2921 scroll_layer->SetScrollClipLayer(3);
2931 scroll_layer->SetBounds(contents_size); 2922 scroll_layer->SetBounds(contents_size);
2932 scroll_layer->SetContentBounds(contents_size); 2923 scroll_layer->SetContentBounds(contents_size);
2933 scroll_layer->SetPosition(gfx::PointF()); 2924 scroll_layer->SetPosition(gfx::PointF());
2934 scroll_layer->AddChild(content_layer.Pass()); 2925 scroll_layer->AddChild(content_layer.Pass());
2935 scroll_clip_layer->AddChild(scroll_layer.Pass()); 2926 scroll_clip_layer->AddChild(scroll_layer.Pass());
2936 2927
2928 scroll_clip_layer->SetHasRenderSurface(true);
2937 host_impl_->active_tree()->SetRootLayer(scroll_clip_layer.Pass()); 2929 host_impl_->active_tree()->SetRootLayer(scroll_clip_layer.Pass());
2938 host_impl_->SetViewportSize(surface_size); 2930 host_impl_->SetViewportSize(surface_size);
2939 DrawFrame(); 2931 DrawFrame();
2940 2932
2941 EXPECT_EQ(InputHandler::ScrollStarted, 2933 EXPECT_EQ(InputHandler::ScrollStarted,
2942 host_impl_->ScrollBegin(gfx::Point(5, 5), 2934 host_impl_->ScrollBegin(gfx::Point(5, 5),
2943 InputHandler::Wheel)); 2935 InputHandler::Wheel));
2944 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 2936 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
2945 host_impl_->ScrollEnd(); 2937 host_impl_->ScrollEnd();
2946 EXPECT_TRUE(did_request_redraw_); 2938 EXPECT_TRUE(did_request_redraw_);
2947 EXPECT_TRUE(did_request_commit_); 2939 EXPECT_TRUE(did_request_commit_);
2948 } 2940 }
2949 2941
2950 TEST_F(LayerTreeHostImplTest, ScrollChildCallsCommitAndRedraw) { 2942 TEST_F(LayerTreeHostImplTest, ScrollChildCallsCommitAndRedraw) {
2951 gfx::Size surface_size(10, 10); 2943 gfx::Size surface_size(10, 10);
2952 gfx::Size contents_size(20, 20); 2944 gfx::Size contents_size(20, 20);
2953 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 2945 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
2954 root->SetBounds(surface_size); 2946 root->SetBounds(surface_size);
2955 root->SetContentBounds(contents_size); 2947 root->SetContentBounds(contents_size);
2956 root->AddChild(CreateScrollableLayer(2, contents_size, root.get())); 2948 root->AddChild(CreateScrollableLayer(2, contents_size, root.get()));
2949 root->SetHasRenderSurface(true);
2957 host_impl_->active_tree()->SetRootLayer(root.Pass()); 2950 host_impl_->active_tree()->SetRootLayer(root.Pass());
2958 host_impl_->SetViewportSize(surface_size); 2951 host_impl_->SetViewportSize(surface_size);
2959 DrawFrame(); 2952 DrawFrame();
2960 2953
2961 EXPECT_EQ(InputHandler::ScrollStarted, 2954 EXPECT_EQ(InputHandler::ScrollStarted,
2962 host_impl_->ScrollBegin(gfx::Point(5, 5), 2955 host_impl_->ScrollBegin(gfx::Point(5, 5),
2963 InputHandler::Wheel)); 2956 InputHandler::Wheel));
2964 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 2957 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
2965 host_impl_->ScrollEnd(); 2958 host_impl_->ScrollEnd();
2966 EXPECT_TRUE(did_request_redraw_); 2959 EXPECT_TRUE(did_request_redraw_);
2967 EXPECT_TRUE(did_request_commit_); 2960 EXPECT_TRUE(did_request_commit_);
2968 } 2961 }
2969 2962
2970 TEST_F(LayerTreeHostImplTest, ScrollMissesChild) { 2963 TEST_F(LayerTreeHostImplTest, ScrollMissesChild) {
2971 gfx::Size surface_size(10, 10); 2964 gfx::Size surface_size(10, 10);
2972 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 2965 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
2973 root->AddChild(CreateScrollableLayer(2, surface_size, root.get())); 2966 root->AddChild(CreateScrollableLayer(2, surface_size, root.get()));
2967 root->SetHasRenderSurface(true);
2974 host_impl_->active_tree()->SetRootLayer(root.Pass()); 2968 host_impl_->active_tree()->SetRootLayer(root.Pass());
2975 host_impl_->SetViewportSize(surface_size); 2969 host_impl_->SetViewportSize(surface_size);
2976 DrawFrame(); 2970 DrawFrame();
2977 2971
2978 // Scroll event is ignored because the input coordinate is outside the layer 2972 // Scroll event is ignored because the input coordinate is outside the layer
2979 // boundaries. 2973 // boundaries.
2980 EXPECT_EQ(InputHandler::ScrollIgnored, 2974 EXPECT_EQ(InputHandler::ScrollIgnored,
2981 host_impl_->ScrollBegin(gfx::Point(15, 5), 2975 host_impl_->ScrollBegin(gfx::Point(15, 5),
2982 InputHandler::Wheel)); 2976 InputHandler::Wheel));
2983 EXPECT_FALSE(did_request_redraw_); 2977 EXPECT_FALSE(did_request_redraw_);
2984 EXPECT_FALSE(did_request_commit_); 2978 EXPECT_FALSE(did_request_commit_);
2985 } 2979 }
2986 2980
2987 TEST_F(LayerTreeHostImplTest, ScrollMissesBackfacingChild) { 2981 TEST_F(LayerTreeHostImplTest, ScrollMissesBackfacingChild) {
2988 gfx::Size surface_size(10, 10); 2982 gfx::Size surface_size(10, 10);
2989 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 2983 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
2984 root->SetHasRenderSurface(true);
2990 scoped_ptr<LayerImpl> child = 2985 scoped_ptr<LayerImpl> child =
2991 CreateScrollableLayer(2, surface_size, root.get()); 2986 CreateScrollableLayer(2, surface_size, root.get());
2992 host_impl_->SetViewportSize(surface_size); 2987 host_impl_->SetViewportSize(surface_size);
2993 2988
2994 gfx::Transform matrix; 2989 gfx::Transform matrix;
2995 matrix.RotateAboutXAxis(180.0); 2990 matrix.RotateAboutXAxis(180.0);
2996 child->SetTransform(matrix); 2991 child->SetTransform(matrix);
2997 child->SetDoubleSided(false); 2992 child->SetDoubleSided(false);
2998 2993
2999 root->AddChild(child.Pass()); 2994 root->AddChild(child.Pass());
(...skipping 17 matching lines...) Expand all
3017 CreateScrollableLayer(1, surface_size, clip_layer.get()); 3012 CreateScrollableLayer(1, surface_size, clip_layer.get());
3018 content_layer->SetShouldScrollOnMainThread(true); 3013 content_layer->SetShouldScrollOnMainThread(true);
3019 content_layer->SetScrollClipLayer(Layer::INVALID_ID); 3014 content_layer->SetScrollClipLayer(Layer::INVALID_ID);
3020 3015
3021 // Note: we can use the same clip layer for both since both calls to 3016 // Note: we can use the same clip layer for both since both calls to
3022 // CreateScrollableLayer() use the same surface size. 3017 // CreateScrollableLayer() use the same surface size.
3023 scoped_ptr<LayerImpl> scroll_layer = 3018 scoped_ptr<LayerImpl> scroll_layer =
3024 CreateScrollableLayer(2, surface_size, clip_layer.get()); 3019 CreateScrollableLayer(2, surface_size, clip_layer.get());
3025 scroll_layer->AddChild(content_layer.Pass()); 3020 scroll_layer->AddChild(content_layer.Pass());
3026 clip_layer->AddChild(scroll_layer.Pass()); 3021 clip_layer->AddChild(scroll_layer.Pass());
3022 clip_layer->SetHasRenderSurface(true);
3027 3023
3028 host_impl_->active_tree()->SetRootLayer(clip_layer.Pass()); 3024 host_impl_->active_tree()->SetRootLayer(clip_layer.Pass());
3029 host_impl_->SetViewportSize(surface_size); 3025 host_impl_->SetViewportSize(surface_size);
3030 DrawFrame(); 3026 DrawFrame();
3031 3027
3032 // Scrolling fails because the content layer is asking to be scrolled on the 3028 // Scrolling fails because the content layer is asking to be scrolled on the
3033 // main thread. 3029 // main thread.
3034 EXPECT_EQ(InputHandler::ScrollOnMainThread, 3030 EXPECT_EQ(InputHandler::ScrollOnMainThread,
3035 host_impl_->ScrollBegin(gfx::Point(5, 5), 3031 host_impl_->ScrollBegin(gfx::Point(5, 5),
3036 InputHandler::Wheel)); 3032 InputHandler::Wheel));
3037 } 3033 }
3038 3034
3039 TEST_F(LayerTreeHostImplTest, ScrollRootAndChangePageScaleOnMainThread) { 3035 TEST_F(LayerTreeHostImplTest, ScrollRootAndChangePageScaleOnMainThread) {
3040 gfx::Size surface_size(20, 20); 3036 gfx::Size surface_size(20, 20);
3041 gfx::Size viewport_size(10, 10); 3037 gfx::Size viewport_size(10, 10);
3042 float page_scale = 2.f; 3038 float page_scale = 2.f;
3043 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 3039 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
3044 scoped_ptr<LayerImpl> root_clip = 3040 scoped_ptr<LayerImpl> root_clip =
3045 LayerImpl::Create(host_impl_->active_tree(), 2); 3041 LayerImpl::Create(host_impl_->active_tree(), 2);
3046 scoped_ptr<LayerImpl> root_scrolling = 3042 scoped_ptr<LayerImpl> root_scrolling =
3047 CreateScrollableLayer(3, surface_size, root_clip.get()); 3043 CreateScrollableLayer(3, surface_size, root_clip.get());
3048 EXPECT_EQ(viewport_size, root_clip->bounds()); 3044 EXPECT_EQ(viewport_size, root_clip->bounds());
3049 root_scrolling->SetIsContainerForFixedPositionLayers(true); 3045 root_scrolling->SetIsContainerForFixedPositionLayers(true);
3050 root_clip->AddChild(root_scrolling.Pass()); 3046 root_clip->AddChild(root_scrolling.Pass());
3051 root->AddChild(root_clip.Pass()); 3047 root->AddChild(root_clip.Pass());
3048 root->SetHasRenderSurface(true);
3052 host_impl_->active_tree()->SetRootLayer(root.Pass()); 3049 host_impl_->active_tree()->SetRootLayer(root.Pass());
3053 // The behaviour in this test assumes the page scale is applied at a layer 3050 // The behaviour in this test assumes the page scale is applied at a layer
3054 // above the clip layer. 3051 // above the clip layer.
3055 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 3, 3052 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 3,
3056 Layer::INVALID_ID); 3053 Layer::INVALID_ID);
3057 host_impl_->active_tree()->DidBecomeActive(); 3054 host_impl_->active_tree()->DidBecomeActive();
3058 host_impl_->SetViewportSize(viewport_size); 3055 host_impl_->SetViewportSize(viewport_size);
3059 DrawFrame(); 3056 DrawFrame();
3060 3057
3061 LayerImpl* root_scroll = 3058 LayerImpl* root_scroll =
(...skipping 30 matching lines...) Expand all
3092 float page_scale = 2.f; 3089 float page_scale = 2.f;
3093 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 3090 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
3094 scoped_ptr<LayerImpl> root_clip = 3091 scoped_ptr<LayerImpl> root_clip =
3095 LayerImpl::Create(host_impl_->active_tree(), 2); 3092 LayerImpl::Create(host_impl_->active_tree(), 2);
3096 scoped_ptr<LayerImpl> root_scrolling = 3093 scoped_ptr<LayerImpl> root_scrolling =
3097 CreateScrollableLayer(3, surface_size, root_clip.get()); 3094 CreateScrollableLayer(3, surface_size, root_clip.get());
3098 EXPECT_EQ(viewport_size, root_clip->bounds()); 3095 EXPECT_EQ(viewport_size, root_clip->bounds());
3099 root_scrolling->SetIsContainerForFixedPositionLayers(true); 3096 root_scrolling->SetIsContainerForFixedPositionLayers(true);
3100 root_clip->AddChild(root_scrolling.Pass()); 3097 root_clip->AddChild(root_scrolling.Pass());
3101 root->AddChild(root_clip.Pass()); 3098 root->AddChild(root_clip.Pass());
3099 root->SetHasRenderSurface(true);
3102 host_impl_->active_tree()->SetRootLayer(root.Pass()); 3100 host_impl_->active_tree()->SetRootLayer(root.Pass());
3103 // The behaviour in this test assumes the page scale is applied at a layer 3101 // The behaviour in this test assumes the page scale is applied at a layer
3104 // above the clip layer. 3102 // above the clip layer.
3105 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 3, 3103 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 3,
3106 Layer::INVALID_ID); 3104 Layer::INVALID_ID);
3107 host_impl_->active_tree()->DidBecomeActive(); 3105 host_impl_->active_tree()->DidBecomeActive();
3108 host_impl_->SetViewportSize(viewport_size); 3106 host_impl_->SetViewportSize(viewport_size);
3109 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, page_scale); 3107 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, page_scale);
3110 DrawFrame(); 3108 DrawFrame();
3111 3109
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
3197 EXPECT_EQ(new_page_scale, 3195 EXPECT_EQ(new_page_scale,
3198 grand_child->draw_transform().matrix().getDouble(0, 0)); 3196 grand_child->draw_transform().matrix().getDouble(0, 0));
3199 EXPECT_EQ(new_page_scale, 3197 EXPECT_EQ(new_page_scale,
3200 grand_child->draw_transform().matrix().getDouble(1, 1)); 3198 grand_child->draw_transform().matrix().getDouble(1, 1));
3201 } 3199 }
3202 3200
3203 TEST_F(LayerTreeHostImplTest, ScrollChildAndChangePageScaleOnMainThread) { 3201 TEST_F(LayerTreeHostImplTest, ScrollChildAndChangePageScaleOnMainThread) {
3204 gfx::Size surface_size(30, 30); 3202 gfx::Size surface_size(30, 30);
3205 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 3203 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
3206 root->SetBounds(gfx::Size(5, 5)); 3204 root->SetBounds(gfx::Size(5, 5));
3205 root->SetHasRenderSurface(true);
3207 scoped_ptr<LayerImpl> root_scrolling = 3206 scoped_ptr<LayerImpl> root_scrolling =
3208 LayerImpl::Create(host_impl_->active_tree(), 2); 3207 LayerImpl::Create(host_impl_->active_tree(), 2);
3209 root_scrolling->SetBounds(surface_size); 3208 root_scrolling->SetBounds(surface_size);
3210 root_scrolling->SetContentBounds(surface_size); 3209 root_scrolling->SetContentBounds(surface_size);
3211 root_scrolling->SetScrollClipLayer(root->id()); 3210 root_scrolling->SetScrollClipLayer(root->id());
3212 root_scrolling->SetIsContainerForFixedPositionLayers(true); 3211 root_scrolling->SetIsContainerForFixedPositionLayers(true);
3213 LayerImpl* root_scrolling_ptr = root_scrolling.get(); 3212 LayerImpl* root_scrolling_ptr = root_scrolling.get();
3214 root->AddChild(root_scrolling.Pass()); 3213 root->AddChild(root_scrolling.Pass());
3215 int child_scroll_layer_id = 3; 3214 int child_scroll_layer_id = 3;
3216 scoped_ptr<LayerImpl> child_scrolling = CreateScrollableLayer( 3215 scoped_ptr<LayerImpl> child_scrolling = CreateScrollableLayer(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
3252 } 3251 }
3253 3252
3254 TEST_F(LayerTreeHostImplTest, ScrollChildBeyondLimit) { 3253 TEST_F(LayerTreeHostImplTest, ScrollChildBeyondLimit) {
3255 // Scroll a child layer beyond its maximum scroll range and make sure the 3254 // Scroll a child layer beyond its maximum scroll range and make sure the
3256 // parent layer is scrolled on the axis on which the child was unable to 3255 // parent layer is scrolled on the axis on which the child was unable to
3257 // scroll. 3256 // scroll.
3258 gfx::Size surface_size(10, 10); 3257 gfx::Size surface_size(10, 10);
3259 gfx::Size content_size(20, 20); 3258 gfx::Size content_size(20, 20);
3260 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 3259 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
3261 root->SetBounds(surface_size); 3260 root->SetBounds(surface_size);
3262 3261 root->SetHasRenderSurface(true);
3263 scoped_ptr<LayerImpl> grand_child = 3262 scoped_ptr<LayerImpl> grand_child =
3264 CreateScrollableLayer(3, content_size, root.get()); 3263 CreateScrollableLayer(3, content_size, root.get());
3265 3264
3266 scoped_ptr<LayerImpl> child = 3265 scoped_ptr<LayerImpl> child =
3267 CreateScrollableLayer(2, content_size, root.get()); 3266 CreateScrollableLayer(2, content_size, root.get());
3268 LayerImpl* grand_child_layer = grand_child.get(); 3267 LayerImpl* grand_child_layer = grand_child.get();
3269 child->AddChild(grand_child.Pass()); 3268 child->AddChild(grand_child.Pass());
3270 3269
3271 LayerImpl* child_layer = child.get(); 3270 LayerImpl* child_layer = child.get();
3272 root->AddChild(child.Pass()); 3271 root->AddChild(child.Pass());
(...skipping 24 matching lines...) Expand all
3297 ExpectContains(*scroll_info.get(), child->id(), gfx::Vector2d(-3, 0)); 3296 ExpectContains(*scroll_info.get(), child->id(), gfx::Vector2d(-3, 0));
3298 } 3297 }
3299 } 3298 }
3300 3299
3301 TEST_F(LayerTreeHostImplTest, ScrollWithoutBubbling) { 3300 TEST_F(LayerTreeHostImplTest, ScrollWithoutBubbling) {
3302 // Scroll a child layer beyond its maximum scroll range and make sure the 3301 // Scroll a child layer beyond its maximum scroll range and make sure the
3303 // the scroll doesn't bubble up to the parent layer. 3302 // the scroll doesn't bubble up to the parent layer.
3304 gfx::Size surface_size(20, 20); 3303 gfx::Size surface_size(20, 20);
3305 gfx::Size viewport_size(10, 10); 3304 gfx::Size viewport_size(10, 10);
3306 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 3305 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
3306 root->SetHasRenderSurface(true);
3307 scoped_ptr<LayerImpl> root_scrolling = 3307 scoped_ptr<LayerImpl> root_scrolling =
3308 CreateScrollableLayer(2, surface_size, root.get()); 3308 CreateScrollableLayer(2, surface_size, root.get());
3309 root_scrolling->SetIsContainerForFixedPositionLayers(true); 3309 root_scrolling->SetIsContainerForFixedPositionLayers(true);
3310 3310
3311 scoped_ptr<LayerImpl> grand_child = 3311 scoped_ptr<LayerImpl> grand_child =
3312 CreateScrollableLayer(4, surface_size, root.get()); 3312 CreateScrollableLayer(4, surface_size, root.get());
3313 3313
3314 scoped_ptr<LayerImpl> child = 3314 scoped_ptr<LayerImpl> child =
3315 CreateScrollableLayer(3, surface_size, root.get()); 3315 CreateScrollableLayer(3, surface_size, root.get());
3316 LayerImpl* grand_child_layer = grand_child.get(); 3316 LayerImpl* grand_child_layer = grand_child.get();
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
3406 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, 4)); 3406 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, 4));
3407 } 3407 }
3408 } 3408 }
3409 TEST_F(LayerTreeHostImplTest, ScrollEventBubbling) { 3409 TEST_F(LayerTreeHostImplTest, ScrollEventBubbling) {
3410 // When we try to scroll a non-scrollable child layer, the scroll delta 3410 // When we try to scroll a non-scrollable child layer, the scroll delta
3411 // should be applied to one of its ancestors if possible. 3411 // should be applied to one of its ancestors if possible.
3412 gfx::Size surface_size(10, 10); 3412 gfx::Size surface_size(10, 10);
3413 gfx::Size content_size(20, 20); 3413 gfx::Size content_size(20, 20);
3414 scoped_ptr<LayerImpl> root_clip = 3414 scoped_ptr<LayerImpl> root_clip =
3415 LayerImpl::Create(host_impl_->active_tree(), 3); 3415 LayerImpl::Create(host_impl_->active_tree(), 3);
3416 root_clip->SetHasRenderSurface(true);
3416 scoped_ptr<LayerImpl> root = 3417 scoped_ptr<LayerImpl> root =
3417 CreateScrollableLayer(1, content_size, root_clip.get()); 3418 CreateScrollableLayer(1, content_size, root_clip.get());
3418 // Make 'root' the clip layer for child: since they have the same sizes the 3419 // Make 'root' the clip layer for child: since they have the same sizes the
3419 // child will have zero max_scroll_offset and scrolls will bubble. 3420 // child will have zero max_scroll_offset and scrolls will bubble.
3420 scoped_ptr<LayerImpl> child = 3421 scoped_ptr<LayerImpl> child =
3421 CreateScrollableLayer(2, content_size, root.get()); 3422 CreateScrollableLayer(2, content_size, root.get());
3422 child->SetIsContainerForFixedPositionLayers(true); 3423 child->SetIsContainerForFixedPositionLayers(true);
3423 root->SetBounds(content_size); 3424 root->SetBounds(content_size);
3424 3425
3425 int root_scroll_id = root->id(); 3426 int root_scroll_id = root->id();
(...skipping 23 matching lines...) Expand all
3449 } 3450 }
3450 } 3451 }
3451 3452
3452 TEST_F(LayerTreeHostImplTest, ScrollBeforeRedraw) { 3453 TEST_F(LayerTreeHostImplTest, ScrollBeforeRedraw) {
3453 gfx::Size surface_size(10, 10); 3454 gfx::Size surface_size(10, 10);
3454 scoped_ptr<LayerImpl> root_clip = 3455 scoped_ptr<LayerImpl> root_clip =
3455 LayerImpl::Create(host_impl_->active_tree(), 1); 3456 LayerImpl::Create(host_impl_->active_tree(), 1);
3456 scoped_ptr<LayerImpl> root_scroll = 3457 scoped_ptr<LayerImpl> root_scroll =
3457 CreateScrollableLayer(2, surface_size, root_clip.get()); 3458 CreateScrollableLayer(2, surface_size, root_clip.get());
3458 root_scroll->SetIsContainerForFixedPositionLayers(true); 3459 root_scroll->SetIsContainerForFixedPositionLayers(true);
3460 root_clip->SetHasRenderSurface(true);
3459 root_clip->AddChild(root_scroll.Pass()); 3461 root_clip->AddChild(root_scroll.Pass());
3460 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); 3462 host_impl_->active_tree()->SetRootLayer(root_clip.Pass());
3461 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2, 3463 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2,
3462 Layer::INVALID_ID); 3464 Layer::INVALID_ID);
3463 host_impl_->active_tree()->DidBecomeActive(); 3465 host_impl_->active_tree()->DidBecomeActive();
3464 host_impl_->SetViewportSize(surface_size); 3466 host_impl_->SetViewportSize(surface_size);
3465 3467
3466 // Draw one frame and then immediately rebuild the layer tree to mimic a tree 3468 // Draw one frame and then immediately rebuild the layer tree to mimic a tree
3467 // synchronization. 3469 // synchronization.
3468 DrawFrame(); 3470 DrawFrame();
3469 host_impl_->active_tree()->DetachLayerTree(); 3471 host_impl_->active_tree()->DetachLayerTree();
3470 scoped_ptr<LayerImpl> root_clip2 = 3472 scoped_ptr<LayerImpl> root_clip2 =
3471 LayerImpl::Create(host_impl_->active_tree(), 3); 3473 LayerImpl::Create(host_impl_->active_tree(), 3);
3472 scoped_ptr<LayerImpl> root_scroll2 = 3474 scoped_ptr<LayerImpl> root_scroll2 =
3473 CreateScrollableLayer(4, surface_size, root_clip2.get()); 3475 CreateScrollableLayer(4, surface_size, root_clip2.get());
3474 root_scroll2->SetIsContainerForFixedPositionLayers(true); 3476 root_scroll2->SetIsContainerForFixedPositionLayers(true);
3475 root_clip2->AddChild(root_scroll2.Pass()); 3477 root_clip2->AddChild(root_scroll2.Pass());
3478 root_clip2->SetHasRenderSurface(true);
3476 host_impl_->active_tree()->SetRootLayer(root_clip2.Pass()); 3479 host_impl_->active_tree()->SetRootLayer(root_clip2.Pass());
3477 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 4, 3480 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 4,
3478 Layer::INVALID_ID); 3481 Layer::INVALID_ID);
3479 host_impl_->active_tree()->DidBecomeActive(); 3482 host_impl_->active_tree()->DidBecomeActive();
3480 3483
3481 // Scrolling should still work even though we did not draw yet. 3484 // Scrolling should still work even though we did not draw yet.
3482 EXPECT_EQ(InputHandler::ScrollStarted, 3485 EXPECT_EQ(InputHandler::ScrollStarted,
3483 host_impl_->ScrollBegin(gfx::Point(5, 5), 3486 host_impl_->ScrollBegin(gfx::Point(5, 5),
3484 InputHandler::Wheel)); 3487 InputHandler::Wheel));
3485 } 3488 }
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
3980 host_impl_->ScrollEnd(); 3983 host_impl_->ScrollEnd();
3981 } 3984 }
3982 3985
3983 3986
3984 TEST_F(LayerTreeHostImplTest, OverscrollChildWithoutBubbling) { 3987 TEST_F(LayerTreeHostImplTest, OverscrollChildWithoutBubbling) {
3985 // Scroll child layers beyond their maximum scroll range and make sure root 3988 // Scroll child layers beyond their maximum scroll range and make sure root
3986 // overscroll does not accumulate. 3989 // overscroll does not accumulate.
3987 gfx::Size surface_size(10, 10); 3990 gfx::Size surface_size(10, 10);
3988 scoped_ptr<LayerImpl> root_clip = 3991 scoped_ptr<LayerImpl> root_clip =
3989 LayerImpl::Create(host_impl_->active_tree(), 4); 3992 LayerImpl::Create(host_impl_->active_tree(), 4);
3993 root_clip->SetHasRenderSurface(true);
3994
3990 scoped_ptr<LayerImpl> root = 3995 scoped_ptr<LayerImpl> root =
3991 CreateScrollableLayer(1, surface_size, root_clip.get()); 3996 CreateScrollableLayer(1, surface_size, root_clip.get());
3992 3997
3993 scoped_ptr<LayerImpl> grand_child = 3998 scoped_ptr<LayerImpl> grand_child =
3994 CreateScrollableLayer(3, surface_size, root_clip.get()); 3999 CreateScrollableLayer(3, surface_size, root_clip.get());
3995 4000
3996 scoped_ptr<LayerImpl> child = 4001 scoped_ptr<LayerImpl> child =
3997 CreateScrollableLayer(2, surface_size, root_clip.get()); 4002 CreateScrollableLayer(2, surface_size, root_clip.get());
3998 LayerImpl* grand_child_layer = grand_child.get(); 4003 LayerImpl* grand_child_layer = grand_child.get();
3999 child->AddChild(grand_child.Pass()); 4004 child->AddChild(grand_child.Pass());
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
4044 } 4049 }
4045 4050
4046 TEST_F(LayerTreeHostImplTest, OverscrollChildEventBubbling) { 4051 TEST_F(LayerTreeHostImplTest, OverscrollChildEventBubbling) {
4047 // When we try to scroll a non-scrollable child layer, the scroll delta 4052 // When we try to scroll a non-scrollable child layer, the scroll delta
4048 // should be applied to one of its ancestors if possible. Overscroll should 4053 // should be applied to one of its ancestors if possible. Overscroll should
4049 // be reflected only when it has bubbled up to the root scrolling layer. 4054 // be reflected only when it has bubbled up to the root scrolling layer.
4050 gfx::Size surface_size(10, 10); 4055 gfx::Size surface_size(10, 10);
4051 gfx::Size content_size(20, 20); 4056 gfx::Size content_size(20, 20);
4052 scoped_ptr<LayerImpl> root_clip = 4057 scoped_ptr<LayerImpl> root_clip =
4053 LayerImpl::Create(host_impl_->active_tree(), 3); 4058 LayerImpl::Create(host_impl_->active_tree(), 3);
4059 root_clip->SetHasRenderSurface(true);
4060
4054 scoped_ptr<LayerImpl> root = 4061 scoped_ptr<LayerImpl> root =
4055 CreateScrollableLayer(1, content_size, root_clip.get()); 4062 CreateScrollableLayer(1, content_size, root_clip.get());
4056 root->SetIsContainerForFixedPositionLayers(true); 4063 root->SetIsContainerForFixedPositionLayers(true);
4057 scoped_ptr<LayerImpl> child = 4064 scoped_ptr<LayerImpl> child =
4058 CreateScrollableLayer(2, content_size, root_clip.get()); 4065 CreateScrollableLayer(2, content_size, root_clip.get());
4059 4066
4060 child->SetScrollClipLayer(Layer::INVALID_ID); 4067 child->SetScrollClipLayer(Layer::INVALID_ID);
4061 root->AddChild(child.Pass()); 4068 root->AddChild(child.Pass());
4062 root_clip->AddChild(root.Pass()); 4069 root_clip->AddChild(root.Pass());
4063 4070
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
4100 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 4107 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
4101 EXPECT_EQ(gfx::Vector2dF(0, 10), host_impl_->accumulated_root_overscroll()); 4108 EXPECT_EQ(gfx::Vector2dF(0, 10), host_impl_->accumulated_root_overscroll());
4102 } 4109 }
4103 4110
4104 TEST_F(LayerTreeHostImplTest, NoOverscrollOnFractionalDeviceScale) { 4111 TEST_F(LayerTreeHostImplTest, NoOverscrollOnFractionalDeviceScale) {
4105 gfx::Size surface_size(980, 1439); 4112 gfx::Size surface_size(980, 1439);
4106 gfx::Size content_size(980, 1438); 4113 gfx::Size content_size(980, 1438);
4107 float device_scale_factor = 1.5f; 4114 float device_scale_factor = 1.5f;
4108 scoped_ptr<LayerImpl> root_clip = 4115 scoped_ptr<LayerImpl> root_clip =
4109 LayerImpl::Create(host_impl_->active_tree(), 3); 4116 LayerImpl::Create(host_impl_->active_tree(), 3);
4117 root_clip->SetHasRenderSurface(true);
4118
4110 scoped_ptr<LayerImpl> root = 4119 scoped_ptr<LayerImpl> root =
4111 CreateScrollableLayer(1, content_size, root_clip.get()); 4120 CreateScrollableLayer(1, content_size, root_clip.get());
4112 root->SetIsContainerForFixedPositionLayers(true); 4121 root->SetIsContainerForFixedPositionLayers(true);
4113 scoped_ptr<LayerImpl> child = 4122 scoped_ptr<LayerImpl> child =
4114 CreateScrollableLayer(2, content_size, root_clip.get()); 4123 CreateScrollableLayer(2, content_size, root_clip.get());
4115 root->scroll_clip_layer()->SetBounds(gfx::Size(320, 469)); 4124 root->scroll_clip_layer()->SetBounds(gfx::Size(320, 469));
4116 host_impl_->active_tree()->PushPageScaleFromMainThread(0.326531f, 0.326531f, 4125 host_impl_->active_tree()->PushPageScaleFromMainThread(0.326531f, 0.326531f,
4117 5.f); 4126 5.f);
4118 host_impl_->SetPageScaleOnActiveTree(0.326531f); 4127 host_impl_->SetPageScaleOnActiveTree(0.326531f);
4119 child->SetScrollClipLayer(Layer::INVALID_ID); 4128 child->SetScrollClipLayer(Layer::INVALID_ID);
(...skipping 19 matching lines...) Expand all
4139 4148
4140 host_impl_->ScrollEnd(); 4149 host_impl_->ScrollEnd();
4141 } 4150 }
4142 } 4151 }
4143 4152
4144 TEST_F(LayerTreeHostImplTest, NoOverscrollWhenNotAtEdge) { 4153 TEST_F(LayerTreeHostImplTest, NoOverscrollWhenNotAtEdge) {
4145 gfx::Size surface_size(100, 100); 4154 gfx::Size surface_size(100, 100);
4146 gfx::Size content_size(200, 200); 4155 gfx::Size content_size(200, 200);
4147 scoped_ptr<LayerImpl> root_clip = 4156 scoped_ptr<LayerImpl> root_clip =
4148 LayerImpl::Create(host_impl_->active_tree(), 3); 4157 LayerImpl::Create(host_impl_->active_tree(), 3);
4158 root_clip->SetHasRenderSurface(true);
4159
4149 scoped_ptr<LayerImpl> root = 4160 scoped_ptr<LayerImpl> root =
4150 CreateScrollableLayer(1, content_size, root_clip.get()); 4161 CreateScrollableLayer(1, content_size, root_clip.get());
4151 root->SetIsContainerForFixedPositionLayers(true); 4162 root->SetIsContainerForFixedPositionLayers(true);
4152 scoped_ptr<LayerImpl> child = 4163 scoped_ptr<LayerImpl> child =
4153 CreateScrollableLayer(2, content_size, root_clip.get()); 4164 CreateScrollableLayer(2, content_size, root_clip.get());
4154 4165
4155 child->SetScrollClipLayer(Layer::INVALID_ID); 4166 child->SetScrollClipLayer(Layer::INVALID_ID);
4156 root->AddChild(child.Pass()); 4167 root->AddChild(child.Pass());
4157 root_clip->AddChild(root.Pass()); 4168 root_clip->AddChild(root.Pass());
4158 4169
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
4285 ResourceProvider::ResourceId resource_id_; 4296 ResourceProvider::ResourceId resource_id_;
4286 }; 4297 };
4287 4298
4288 TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { 4299 TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
4289 { 4300 {
4290 scoped_ptr<LayerImpl> root = 4301 scoped_ptr<LayerImpl> root =
4291 LayerImpl::Create(host_impl_->active_tree(), 1); 4302 LayerImpl::Create(host_impl_->active_tree(), 1);
4292 root->SetBounds(gfx::Size(10, 10)); 4303 root->SetBounds(gfx::Size(10, 10));
4293 root->SetContentBounds(root->bounds()); 4304 root->SetContentBounds(root->bounds());
4294 root->SetDrawsContent(false); 4305 root->SetDrawsContent(false);
4306 root->SetHasRenderSurface(true);
4295 host_impl_->active_tree()->SetRootLayer(root.Pass()); 4307 host_impl_->active_tree()->SetRootLayer(root.Pass());
4296 } 4308 }
4297 LayerImpl* root = host_impl_->active_tree()->root_layer(); 4309 LayerImpl* root = host_impl_->active_tree()->root_layer();
4298 4310
4299 root->AddChild( 4311 root->AddChild(
4300 BlendStateCheckLayer::Create(host_impl_->active_tree(), 4312 BlendStateCheckLayer::Create(host_impl_->active_tree(),
4301 2, 4313 2,
4302 host_impl_->resource_provider())); 4314 host_impl_->resource_provider()));
4303 BlendStateCheckLayer* layer1 = 4315 BlendStateCheckLayer* layer1 =
4304 static_cast<BlendStateCheckLayer*>(root->children()[0]); 4316 static_cast<BlendStateCheckLayer*>(root->children()[0]);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
4394 EXPECT_TRUE(layer2->quads_appended()); 4406 EXPECT_TRUE(layer2->quads_appended());
4395 host_impl_->DidDrawAllLayers(frame); 4407 host_impl_->DidDrawAllLayers(frame);
4396 4408
4397 // Parent layer with translucent opacity and opaque content. Since it has a 4409 // Parent layer with translucent opacity and opaque content. Since it has a
4398 // drawing child, it's drawn to a render surface which carries the opacity, 4410 // drawing child, it's drawn to a render surface which carries the opacity,
4399 // so it's itself drawn without blending. 4411 // so it's itself drawn without blending.
4400 // Child layer with opaque content, drawn without blending (parent surface 4412 // Child layer with opaque content, drawn without blending (parent surface
4401 // carries the inherited opacity). 4413 // carries the inherited opacity).
4402 layer1->SetContentsOpaque(true); 4414 layer1->SetContentsOpaque(true);
4403 layer1->SetOpacity(0.5f); 4415 layer1->SetOpacity(0.5f);
4416 layer1->SetHasRenderSurface(true);
4404 layer1->SetExpectation(false, true); 4417 layer1->SetExpectation(false, true);
4405 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4418 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4406 layer2->SetExpectation(false, false); 4419 layer2->SetExpectation(false, false);
4407 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4420 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4408 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( 4421 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren(
4409 host_impl_->active_tree()->root_layer()); 4422 host_impl_->active_tree()->root_layer());
4410 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4423 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4411 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4424 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4412 EXPECT_TRUE(layer1->quads_appended()); 4425 EXPECT_TRUE(layer1->quads_appended());
4413 EXPECT_TRUE(layer2->quads_appended()); 4426 EXPECT_TRUE(layer2->quads_appended());
4414 host_impl_->DidDrawAllLayers(frame); 4427 host_impl_->DidDrawAllLayers(frame);
4428 layer1->SetHasRenderSurface(false);
4415 4429
4416 // Draw again, but with child non-opaque, to make sure 4430 // Draw again, but with child non-opaque, to make sure
4417 // layer1 not culled. 4431 // layer1 not culled.
4418 layer1->SetContentsOpaque(true); 4432 layer1->SetContentsOpaque(true);
4419 layer1->SetOpacity(1.f); 4433 layer1->SetOpacity(1.f);
4420 layer1->SetExpectation(false, false); 4434 layer1->SetExpectation(false, false);
4421 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4435 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4422 layer2->SetContentsOpaque(true); 4436 layer2->SetContentsOpaque(true);
4423 layer2->SetOpacity(0.5f); 4437 layer2->SetOpacity(0.5f);
4424 layer2->SetExpectation(true, false); 4438 layer2->SetExpectation(true, false);
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
4521 if (always_draw) { 4535 if (always_draw) {
4522 return FakeOutputSurface::CreateAlwaysDrawAndSwap3d(); 4536 return FakeOutputSurface::CreateAlwaysDrawAndSwap3d();
4523 } 4537 }
4524 return FakeOutputSurface::Create3d(); 4538 return FakeOutputSurface::Create3d();
4525 } 4539 }
4526 4540
4527 void SetupActiveTreeLayers() { 4541 void SetupActiveTreeLayers() {
4528 host_impl_->active_tree()->set_background_color(SK_ColorGRAY); 4542 host_impl_->active_tree()->set_background_color(SK_ColorGRAY);
4529 host_impl_->active_tree()->SetRootLayer( 4543 host_impl_->active_tree()->SetRootLayer(
4530 LayerImpl::Create(host_impl_->active_tree(), 1)); 4544 LayerImpl::Create(host_impl_->active_tree(), 1));
4545 host_impl_->active_tree()->root_layer()->SetHasRenderSurface(true);
4531 host_impl_->active_tree()->root_layer()->AddChild( 4546 host_impl_->active_tree()->root_layer()->AddChild(
4532 BlendStateCheckLayer::Create(host_impl_->active_tree(), 4547 BlendStateCheckLayer::Create(host_impl_->active_tree(),
4533 2, 4548 2,
4534 host_impl_->resource_provider())); 4549 host_impl_->resource_provider()));
4535 child_ = static_cast<BlendStateCheckLayer*>( 4550 child_ = static_cast<BlendStateCheckLayer*>(
4536 host_impl_->active_tree()->root_layer()->children()[0]); 4551 host_impl_->active_tree()->root_layer()->children()[0]);
4537 child_->SetExpectation(false, false); 4552 child_->SetExpectation(false, false);
4538 child_->SetContentsOpaque(true); 4553 child_->SetContentsOpaque(true);
4539 } 4554 }
4540 4555
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
4811 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create()); 4826 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create());
4812 scoped_ptr<OutputSurface> output_surface( 4827 scoped_ptr<OutputSurface> output_surface(
4813 FakeOutputSurface::Create3d(provider)); 4828 FakeOutputSurface::Create3d(provider));
4814 CreateHostImpl(DefaultSettings(), output_surface.Pass()); 4829 CreateHostImpl(DefaultSettings(), output_surface.Pass());
4815 4830
4816 scoped_ptr<LayerImpl> root = 4831 scoped_ptr<LayerImpl> root =
4817 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); 4832 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1);
4818 root->SetBounds(gfx::Size(10, 10)); 4833 root->SetBounds(gfx::Size(10, 10));
4819 root->SetContentBounds(gfx::Size(10, 10)); 4834 root->SetContentBounds(gfx::Size(10, 10));
4820 root->SetDrawsContent(true); 4835 root->SetDrawsContent(true);
4836 root->SetHasRenderSurface(true);
4821 host_impl_->active_tree()->SetRootLayer(root.Pass()); 4837 host_impl_->active_tree()->SetRootLayer(root.Pass());
4822 EXPECT_FALSE(provider->TestContext3d()->reshape_called()); 4838 EXPECT_FALSE(provider->TestContext3d()->reshape_called());
4823 provider->TestContext3d()->clear_reshape_called(); 4839 provider->TestContext3d()->clear_reshape_called();
4824 4840
4825 LayerTreeHostImpl::FrameData frame; 4841 LayerTreeHostImpl::FrameData frame;
4826 host_impl_->SetViewportSize(gfx::Size(10, 10)); 4842 host_impl_->SetViewportSize(gfx::Size(10, 10));
4827 host_impl_->SetDeviceScaleFactor(1.f); 4843 host_impl_->SetDeviceScaleFactor(1.f);
4828 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4844 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4829 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4845 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4830 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); 4846 EXPECT_TRUE(provider->TestContext3d()->reshape_called());
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
4879 &proxy_, 4895 &proxy_,
4880 &stats_instrumentation_, 4896 &stats_instrumentation_,
4881 shared_bitmap_manager.get(), 4897 shared_bitmap_manager.get(),
4882 NULL, 4898 NULL,
4883 0); 4899 0);
4884 layer_tree_host_impl->InitializeRenderer(output_surface.Pass()); 4900 layer_tree_host_impl->InitializeRenderer(output_surface.Pass());
4885 layer_tree_host_impl->SetViewportSize(gfx::Size(500, 500)); 4901 layer_tree_host_impl->SetViewportSize(gfx::Size(500, 500));
4886 4902
4887 scoped_ptr<LayerImpl> root = 4903 scoped_ptr<LayerImpl> root =
4888 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 1); 4904 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 1);
4905 root->SetHasRenderSurface(true);
4889 scoped_ptr<LayerImpl> child = 4906 scoped_ptr<LayerImpl> child =
4890 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 2); 4907 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 2);
4891 child->SetPosition(gfx::PointF(12.f, 13.f)); 4908 child->SetPosition(gfx::PointF(12.f, 13.f));
4892 child->SetBounds(gfx::Size(14, 15)); 4909 child->SetBounds(gfx::Size(14, 15));
4893 child->SetContentBounds(gfx::Size(14, 15)); 4910 child->SetContentBounds(gfx::Size(14, 15));
4894 child->SetDrawsContent(true); 4911 child->SetDrawsContent(true);
4895 root->SetBounds(gfx::Size(500, 500)); 4912 root->SetBounds(gfx::Size(500, 500));
4896 root->SetContentBounds(gfx::Size(500, 500)); 4913 root->SetContentBounds(gfx::Size(500, 500));
4897 root->SetDrawsContent(true); 4914 root->SetDrawsContent(true);
4898 root->AddChild(child.Pass()); 4915 root->AddChild(child.Pass());
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
4945 scoped_ptr<LayerImpl> root = 4962 scoped_ptr<LayerImpl> root =
4946 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); 4963 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1);
4947 scoped_ptr<LayerImpl> child = 4964 scoped_ptr<LayerImpl> child =
4948 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 2); 4965 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 2);
4949 child->SetBounds(gfx::Size(10, 10)); 4966 child->SetBounds(gfx::Size(10, 10));
4950 child->SetContentBounds(gfx::Size(10, 10)); 4967 child->SetContentBounds(gfx::Size(10, 10));
4951 child->SetDrawsContent(true); 4968 child->SetDrawsContent(true);
4952 root->SetBounds(gfx::Size(10, 10)); 4969 root->SetBounds(gfx::Size(10, 10));
4953 root->SetContentBounds(gfx::Size(10, 10)); 4970 root->SetContentBounds(gfx::Size(10, 10));
4954 root->SetDrawsContent(true); 4971 root->SetDrawsContent(true);
4955 root->SetForceRenderSurface(true); 4972 root->SetHasRenderSurface(true);
4956 root->AddChild(child.Pass()); 4973 root->AddChild(child.Pass());
4957 4974
4958 host_impl_->active_tree()->SetRootLayer(root.Pass()); 4975 host_impl_->active_tree()->SetRootLayer(root.Pass());
4959 4976
4960 LayerTreeHostImpl::FrameData frame; 4977 LayerTreeHostImpl::FrameData frame;
4961 4978
4962 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4979 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4963 EXPECT_EQ(1u, frame.render_surface_layer_list->size()); 4980 EXPECT_EQ(1u, frame.render_surface_layer_list->size());
4964 EXPECT_EQ(1u, frame.render_passes.size()); 4981 EXPECT_EQ(1u, frame.render_passes.size());
4965 host_impl_->DidDrawAllLayers(frame); 4982 host_impl_->DidDrawAllLayers(frame);
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
5194 LayerImpl::Create(my_host_impl->active_tree(), 1); 5211 LayerImpl::Create(my_host_impl->active_tree(), 1);
5195 scoped_ptr<LayerImpl> child = 5212 scoped_ptr<LayerImpl> child =
5196 LayerImpl::Create(my_host_impl->active_tree(), 2); 5213 LayerImpl::Create(my_host_impl->active_tree(), 2);
5197 scoped_ptr<LayerImpl> grand_child = 5214 scoped_ptr<LayerImpl> grand_child =
5198 FakeLayerWithQuads::Create(my_host_impl->active_tree(), 3); 5215 FakeLayerWithQuads::Create(my_host_impl->active_tree(), 3);
5199 5216
5200 gfx::Rect root_rect(0, 0, 100, 100); 5217 gfx::Rect root_rect(0, 0, 100, 100);
5201 gfx::Rect child_rect(10, 10, 50, 50); 5218 gfx::Rect child_rect(10, 10, 50, 50);
5202 gfx::Rect grand_child_rect(5, 5, 150, 150); 5219 gfx::Rect grand_child_rect(5, 5, 150, 150);
5203 5220
5204 root->CreateRenderSurface(); 5221 root->SetHasRenderSurface(true);
5205 root->SetPosition(root_rect.origin()); 5222 root->SetPosition(root_rect.origin());
5206 root->SetBounds(root_rect.size()); 5223 root->SetBounds(root_rect.size());
5207 root->SetContentBounds(root->bounds()); 5224 root->SetContentBounds(root->bounds());
5208 root->draw_properties().visible_content_rect = root_rect; 5225 root->draw_properties().visible_content_rect = root_rect;
5209 root->SetDrawsContent(false); 5226 root->SetDrawsContent(false);
5210 root->render_surface()->SetContentRect(gfx::Rect(root_rect.size())); 5227 root->render_surface()->SetContentRect(gfx::Rect(root_rect.size()));
5211 5228
5212 child->SetPosition(gfx::PointF(child_rect.x(), child_rect.y())); 5229 child->SetPosition(gfx::PointF(child_rect.x(), child_rect.y()));
5213 child->SetOpacity(0.5f); 5230 child->SetOpacity(0.5f);
5214 child->SetBounds(gfx::Size(child_rect.width(), child_rect.height())); 5231 child->SetBounds(gfx::Size(child_rect.width(), child_rect.height()));
5215 child->SetContentBounds(child->bounds()); 5232 child->SetContentBounds(child->bounds());
5216 child->draw_properties().visible_content_rect = child_rect; 5233 child->draw_properties().visible_content_rect = child_rect;
5217 child->SetDrawsContent(false); 5234 child->SetDrawsContent(false);
5218 child->SetForceRenderSurface(true); 5235 child->SetHasRenderSurface(true);
5219 5236
5220 grand_child->SetPosition(grand_child_rect.origin()); 5237 grand_child->SetPosition(grand_child_rect.origin());
5221 grand_child->SetBounds(grand_child_rect.size()); 5238 grand_child->SetBounds(grand_child_rect.size());
5222 grand_child->SetContentBounds(grand_child->bounds()); 5239 grand_child->SetContentBounds(grand_child->bounds());
5223 grand_child->draw_properties().visible_content_rect = grand_child_rect; 5240 grand_child->draw_properties().visible_content_rect = grand_child_rect;
5224 grand_child->SetDrawsContent(true); 5241 grand_child->SetDrawsContent(true);
5225 5242
5226 child->AddChild(grand_child.Pass()); 5243 child->AddChild(grand_child.Pass());
5227 root->AddChild(child.Pass()); 5244 root->AddChild(child.Pass());
5228 5245
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
5288 scoped_ptr<TestWebGraphicsContext3D> context = 5305 scoped_ptr<TestWebGraphicsContext3D> context =
5289 TestWebGraphicsContext3D::Create(); 5306 TestWebGraphicsContext3D::Create();
5290 TestWebGraphicsContext3D* context3d = context.get(); 5307 TestWebGraphicsContext3D* context3d = context.get();
5291 scoped_ptr<OutputSurface> output_surface( 5308 scoped_ptr<OutputSurface> output_surface(
5292 FakeOutputSurface::Create3d(context.Pass())); 5309 FakeOutputSurface::Create3d(context.Pass()));
5293 CreateHostImpl(DefaultSettings(), output_surface.Pass()); 5310 CreateHostImpl(DefaultSettings(), output_surface.Pass());
5294 5311
5295 scoped_ptr<LayerImpl> root_layer = 5312 scoped_ptr<LayerImpl> root_layer =
5296 LayerImpl::Create(host_impl_->active_tree(), 1); 5313 LayerImpl::Create(host_impl_->active_tree(), 1);
5297 root_layer->SetBounds(gfx::Size(10, 10)); 5314 root_layer->SetBounds(gfx::Size(10, 10));
5315 root_layer->SetHasRenderSurface(true);
5298 5316
5299 scoped_refptr<VideoFrame> softwareFrame = 5317 scoped_refptr<VideoFrame> softwareFrame =
5300 media::VideoFrame::CreateColorFrame( 5318 media::VideoFrame::CreateColorFrame(
5301 gfx::Size(4, 4), 0x80, 0x80, 0x80, base::TimeDelta()); 5319 gfx::Size(4, 4), 0x80, 0x80, 0x80, base::TimeDelta());
5302 FakeVideoFrameProvider provider; 5320 FakeVideoFrameProvider provider;
5303 provider.set_frame(softwareFrame); 5321 provider.set_frame(softwareFrame);
5304 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create( 5322 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create(
5305 host_impl_->active_tree(), 4, &provider, media::VIDEO_ROTATION_0); 5323 host_impl_->active_tree(), 4, &provider, media::VIDEO_ROTATION_0);
5306 video_layer->SetBounds(gfx::Size(10, 10)); 5324 video_layer->SetBounds(gfx::Size(10, 10));
5307 video_layer->SetContentBounds(gfx::Size(10, 10)); 5325 video_layer->SetContentBounds(gfx::Size(10, 10));
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
5462 } 5480 }
5463 }; 5481 };
5464 5482
5465 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { 5483 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) {
5466 scoped_ptr<SolidColorLayerImpl> root = 5484 scoped_ptr<SolidColorLayerImpl> root =
5467 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); 5485 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1);
5468 root->SetPosition(gfx::PointF()); 5486 root->SetPosition(gfx::PointF());
5469 root->SetBounds(gfx::Size(10, 10)); 5487 root->SetBounds(gfx::Size(10, 10));
5470 root->SetContentBounds(gfx::Size(10, 10)); 5488 root->SetContentBounds(gfx::Size(10, 10));
5471 root->SetDrawsContent(true); 5489 root->SetDrawsContent(true);
5490 root->SetHasRenderSurface(true);
5472 5491
5473 // Child layer is in the bottom right corner. 5492 // Child layer is in the bottom right corner.
5474 scoped_ptr<SolidColorLayerImpl> child = 5493 scoped_ptr<SolidColorLayerImpl> child =
5475 SolidColorLayerImpl::Create(host_impl_->active_tree(), 2); 5494 SolidColorLayerImpl::Create(host_impl_->active_tree(), 2);
5476 child->SetPosition(gfx::PointF(9.f, 9.f)); 5495 child->SetPosition(gfx::PointF(9.f, 9.f));
5477 child->SetBounds(gfx::Size(1, 1)); 5496 child->SetBounds(gfx::Size(1, 1));
5478 child->SetContentBounds(gfx::Size(1, 1)); 5497 child->SetContentBounds(gfx::Size(1, 1));
5479 child->SetDrawsContent(true); 5498 child->SetDrawsContent(true);
5480 root->AddChild(child.Pass()); 5499 root->AddChild(child.Pass());
5481 5500
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
5528 5547
5529 // Root 5548 // Root
5530 // | 5549 // |
5531 // +-- Scaling Layer (adds a 2x scale) 5550 // +-- Scaling Layer (adds a 2x scale)
5532 // | 5551 // |
5533 // +-- Content Layer 5552 // +-- Content Layer
5534 // +--Mask 5553 // +--Mask
5535 scoped_ptr<LayerImpl> scoped_root = 5554 scoped_ptr<LayerImpl> scoped_root =
5536 LayerImpl::Create(host_impl_->active_tree(), 1); 5555 LayerImpl::Create(host_impl_->active_tree(), 1);
5537 LayerImpl* root = scoped_root.get(); 5556 LayerImpl* root = scoped_root.get();
5557 root->SetHasRenderSurface(true);
5538 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); 5558 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass());
5539 5559
5540 scoped_ptr<LayerImpl> scoped_scaling_layer = 5560 scoped_ptr<LayerImpl> scoped_scaling_layer =
5541 LayerImpl::Create(host_impl_->active_tree(), 2); 5561 LayerImpl::Create(host_impl_->active_tree(), 2);
5542 LayerImpl* scaling_layer = scoped_scaling_layer.get(); 5562 LayerImpl* scaling_layer = scoped_scaling_layer.get();
5543 root->AddChild(scoped_scaling_layer.Pass()); 5563 root->AddChild(scoped_scaling_layer.Pass());
5544 5564
5545 scoped_ptr<LayerImpl> scoped_content_layer = 5565 scoped_ptr<LayerImpl> scoped_content_layer =
5546 LayerImpl::Create(host_impl_->active_tree(), 3); 5566 LayerImpl::Create(host_impl_->active_tree(), 3);
5547 LayerImpl* content_layer = scoped_content_layer.get(); 5567 LayerImpl* content_layer = scoped_content_layer.get();
5548 scaling_layer->AddChild(scoped_content_layer.Pass()); 5568 scaling_layer->AddChild(scoped_content_layer.Pass());
5549 5569
5550 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = 5570 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer =
5551 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); 5571 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4);
5552 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); 5572 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get();
5573 content_layer->SetHasRenderSurface(true);
5553 content_layer->SetMaskLayer(scoped_mask_layer.Pass()); 5574 content_layer->SetMaskLayer(scoped_mask_layer.Pass());
5554 5575
5555 gfx::Size root_size(100, 100); 5576 gfx::Size root_size(100, 100);
5556 root->SetBounds(root_size); 5577 root->SetBounds(root_size);
5557 root->SetContentBounds(root_size); 5578 root->SetContentBounds(root_size);
5558 root->SetPosition(gfx::PointF()); 5579 root->SetPosition(gfx::PointF());
5559 5580
5560 gfx::Size scaling_layer_size(50, 50); 5581 gfx::Size scaling_layer_size(50, 50);
5561 scaling_layer->SetBounds(scaling_layer_size); 5582 scaling_layer->SetBounds(scaling_layer_size);
5562 scaling_layer->SetContentBounds(scaling_layer_size); 5583 scaling_layer->SetContentBounds(scaling_layer_size);
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
5668 } 5689 }
5669 } 5690 }
5670 5691
5671 TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) { 5692 TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) {
5672 // The mask layer has bounds 100x100 but is attached to a layer with bounds 5693 // The mask layer has bounds 100x100 but is attached to a layer with bounds
5673 // 50x50. 5694 // 50x50.
5674 5695
5675 scoped_ptr<LayerImpl> scoped_root = 5696 scoped_ptr<LayerImpl> scoped_root =
5676 LayerImpl::Create(host_impl_->active_tree(), 1); 5697 LayerImpl::Create(host_impl_->active_tree(), 1);
5677 LayerImpl* root = scoped_root.get(); 5698 LayerImpl* root = scoped_root.get();
5699 root->SetHasRenderSurface(true);
5700
5678 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); 5701 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass());
5679 5702
5680 scoped_ptr<LayerImpl> scoped_content_layer = 5703 scoped_ptr<LayerImpl> scoped_content_layer =
5681 LayerImpl::Create(host_impl_->active_tree(), 3); 5704 LayerImpl::Create(host_impl_->active_tree(), 3);
5682 LayerImpl* content_layer = scoped_content_layer.get(); 5705 LayerImpl* content_layer = scoped_content_layer.get();
5683 root->AddChild(scoped_content_layer.Pass()); 5706 root->AddChild(scoped_content_layer.Pass());
5684 5707
5685 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = 5708 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer =
5686 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); 5709 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4);
5687 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); 5710 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get();
5688 content_layer->SetMaskLayer(scoped_mask_layer.Pass()); 5711 content_layer->SetMaskLayer(scoped_mask_layer.Pass());
5712 content_layer->SetHasRenderSurface(true);
5689 5713
5690 gfx::Size root_size(100, 100); 5714 gfx::Size root_size(100, 100);
5691 root->SetBounds(root_size); 5715 root->SetBounds(root_size);
5692 root->SetContentBounds(root_size); 5716 root->SetContentBounds(root_size);
5693 root->SetPosition(gfx::PointF()); 5717 root->SetPosition(gfx::PointF());
5694 5718
5695 gfx::Size layer_size(50, 50); 5719 gfx::Size layer_size(50, 50);
5696 content_layer->SetBounds(layer_size); 5720 content_layer->SetBounds(layer_size);
5697 content_layer->SetContentBounds(layer_size); 5721 content_layer->SetContentBounds(layer_size);
5698 content_layer->SetPosition(gfx::PointF()); 5722 content_layer->SetPosition(gfx::PointF());
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
5822 } 5846 }
5823 } 5847 }
5824 5848
5825 TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerWithDifferentBounds) { 5849 TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerWithDifferentBounds) {
5826 // The replica's mask layer has bounds 100x100 but the replica is of a 5850 // The replica's mask layer has bounds 100x100 but the replica is of a
5827 // layer with bounds 50x50. 5851 // layer with bounds 50x50.
5828 5852
5829 scoped_ptr<LayerImpl> scoped_root = 5853 scoped_ptr<LayerImpl> scoped_root =
5830 LayerImpl::Create(host_impl_->active_tree(), 1); 5854 LayerImpl::Create(host_impl_->active_tree(), 1);
5831 LayerImpl* root = scoped_root.get(); 5855 LayerImpl* root = scoped_root.get();
5856 root->SetHasRenderSurface(true);
5857
5832 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); 5858 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass());
5833 5859
5834 scoped_ptr<LayerImpl> scoped_content_layer = 5860 scoped_ptr<LayerImpl> scoped_content_layer =
5835 LayerImpl::Create(host_impl_->active_tree(), 3); 5861 LayerImpl::Create(host_impl_->active_tree(), 3);
5836 LayerImpl* content_layer = scoped_content_layer.get(); 5862 LayerImpl* content_layer = scoped_content_layer.get();
5837 root->AddChild(scoped_content_layer.Pass()); 5863 root->AddChild(scoped_content_layer.Pass());
5838 5864
5839 scoped_ptr<LayerImpl> scoped_replica_layer = 5865 scoped_ptr<LayerImpl> scoped_replica_layer =
5840 LayerImpl::Create(host_impl_->active_tree(), 2); 5866 LayerImpl::Create(host_impl_->active_tree(), 2);
5841 LayerImpl* replica_layer = scoped_replica_layer.get(); 5867 LayerImpl* replica_layer = scoped_replica_layer.get();
5842 content_layer->SetReplicaLayer(scoped_replica_layer.Pass()); 5868 content_layer->SetReplicaLayer(scoped_replica_layer.Pass());
5869 content_layer->SetHasRenderSurface(true);
5843 5870
5844 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = 5871 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer =
5845 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); 5872 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4);
5846 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); 5873 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get();
5847 replica_layer->SetMaskLayer(scoped_mask_layer.Pass()); 5874 replica_layer->SetMaskLayer(scoped_mask_layer.Pass());
5875 replica_layer->SetHasRenderSurface(true);
5848 5876
5849 gfx::Size root_size(100, 100); 5877 gfx::Size root_size(100, 100);
5850 root->SetBounds(root_size); 5878 root->SetBounds(root_size);
5851 root->SetContentBounds(root_size); 5879 root->SetContentBounds(root_size);
5852 root->SetPosition(gfx::PointF()); 5880 root->SetPosition(gfx::PointF());
5853 5881
5854 gfx::Size layer_size(50, 50); 5882 gfx::Size layer_size(50, 50);
5855 content_layer->SetBounds(layer_size); 5883 content_layer->SetBounds(layer_size);
5856 content_layer->SetContentBounds(layer_size); 5884 content_layer->SetContentBounds(layer_size);
5857 content_layer->SetPosition(gfx::PointF()); 5885 content_layer->SetPosition(gfx::PointF());
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
5977 } 6005 }
5978 } 6006 }
5979 6007
5980 TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerForSurfaceWithUnclippedChild) { 6008 TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerForSurfaceWithUnclippedChild) {
5981 // The replica is of a layer with bounds 50x50, but it has a child that causes 6009 // The replica is of a layer with bounds 50x50, but it has a child that causes
5982 // the surface bounds to be larger. 6010 // the surface bounds to be larger.
5983 6011
5984 scoped_ptr<LayerImpl> scoped_root = 6012 scoped_ptr<LayerImpl> scoped_root =
5985 LayerImpl::Create(host_impl_->active_tree(), 1); 6013 LayerImpl::Create(host_impl_->active_tree(), 1);
5986 LayerImpl* root = scoped_root.get(); 6014 LayerImpl* root = scoped_root.get();
6015 root->SetHasRenderSurface(true);
5987 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); 6016 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass());
5988 6017
5989 scoped_ptr<LayerImpl> scoped_content_layer = 6018 scoped_ptr<LayerImpl> scoped_content_layer =
5990 LayerImpl::Create(host_impl_->active_tree(), 2); 6019 LayerImpl::Create(host_impl_->active_tree(), 2);
5991 LayerImpl* content_layer = scoped_content_layer.get(); 6020 LayerImpl* content_layer = scoped_content_layer.get();
5992 root->AddChild(scoped_content_layer.Pass()); 6021 root->AddChild(scoped_content_layer.Pass());
5993 6022
5994 scoped_ptr<LayerImpl> scoped_content_child_layer = 6023 scoped_ptr<LayerImpl> scoped_content_child_layer =
5995 LayerImpl::Create(host_impl_->active_tree(), 3); 6024 LayerImpl::Create(host_impl_->active_tree(), 3);
5996 LayerImpl* content_child_layer = scoped_content_child_layer.get(); 6025 LayerImpl* content_child_layer = scoped_content_child_layer.get();
5997 content_layer->AddChild(scoped_content_child_layer.Pass()); 6026 content_layer->AddChild(scoped_content_child_layer.Pass());
5998 6027
5999 scoped_ptr<LayerImpl> scoped_replica_layer = 6028 scoped_ptr<LayerImpl> scoped_replica_layer =
6000 LayerImpl::Create(host_impl_->active_tree(), 4); 6029 LayerImpl::Create(host_impl_->active_tree(), 4);
6001 LayerImpl* replica_layer = scoped_replica_layer.get(); 6030 LayerImpl* replica_layer = scoped_replica_layer.get();
6002 content_layer->SetReplicaLayer(scoped_replica_layer.Pass()); 6031 content_layer->SetReplicaLayer(scoped_replica_layer.Pass());
6032 content_layer->SetHasRenderSurface(true);
6003 6033
6004 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = 6034 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer =
6005 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 5); 6035 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 5);
6006 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); 6036 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get();
6007 replica_layer->SetMaskLayer(scoped_mask_layer.Pass()); 6037 replica_layer->SetMaskLayer(scoped_mask_layer.Pass());
6038 replica_layer->SetHasRenderSurface(true);
6008 6039
6009 gfx::Size root_size(100, 100); 6040 gfx::Size root_size(100, 100);
6010 root->SetBounds(root_size); 6041 root->SetBounds(root_size);
6011 root->SetContentBounds(root_size); 6042 root->SetContentBounds(root_size);
6012 root->SetPosition(gfx::PointF()); 6043 root->SetPosition(gfx::PointF());
6013 6044
6014 gfx::Size layer_size(50, 50); 6045 gfx::Size layer_size(50, 50);
6015 content_layer->SetBounds(layer_size); 6046 content_layer->SetBounds(layer_size);
6016 content_layer->SetContentBounds(layer_size); 6047 content_layer->SetContentBounds(layer_size);
6017 content_layer->SetPosition(gfx::PointF()); 6048 content_layer->SetPosition(gfx::PointF());
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
6101 } 6132 }
6102 6133
6103 TEST_F(LayerTreeHostImplTest, MaskLayerForSurfaceWithClippedLayer) { 6134 TEST_F(LayerTreeHostImplTest, MaskLayerForSurfaceWithClippedLayer) {
6104 // The masked layer has bounds 50x50, but it has a child that causes 6135 // The masked layer has bounds 50x50, but it has a child that causes
6105 // the surface bounds to be larger. It also has a parent that clips the 6136 // the surface bounds to be larger. It also has a parent that clips the
6106 // masked layer and its surface. 6137 // masked layer and its surface.
6107 6138
6108 scoped_ptr<LayerImpl> scoped_root = 6139 scoped_ptr<LayerImpl> scoped_root =
6109 LayerImpl::Create(host_impl_->active_tree(), 1); 6140 LayerImpl::Create(host_impl_->active_tree(), 1);
6110 LayerImpl* root = scoped_root.get(); 6141 LayerImpl* root = scoped_root.get();
6142 root->SetHasRenderSurface(true);
6143
6111 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); 6144 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass());
6112 6145
6113 scoped_ptr<LayerImpl> scoped_clipping_layer = 6146 scoped_ptr<LayerImpl> scoped_clipping_layer =
6114 LayerImpl::Create(host_impl_->active_tree(), 2); 6147 LayerImpl::Create(host_impl_->active_tree(), 2);
6115 LayerImpl* clipping_layer = scoped_clipping_layer.get(); 6148 LayerImpl* clipping_layer = scoped_clipping_layer.get();
6116 root->AddChild(scoped_clipping_layer.Pass()); 6149 root->AddChild(scoped_clipping_layer.Pass());
6117 6150
6118 scoped_ptr<LayerImpl> scoped_content_layer = 6151 scoped_ptr<LayerImpl> scoped_content_layer =
6119 LayerImpl::Create(host_impl_->active_tree(), 3); 6152 LayerImpl::Create(host_impl_->active_tree(), 3);
6120 LayerImpl* content_layer = scoped_content_layer.get(); 6153 LayerImpl* content_layer = scoped_content_layer.get();
6121 clipping_layer->AddChild(scoped_content_layer.Pass()); 6154 clipping_layer->AddChild(scoped_content_layer.Pass());
6122 6155
6123 scoped_ptr<LayerImpl> scoped_content_child_layer = 6156 scoped_ptr<LayerImpl> scoped_content_child_layer =
6124 LayerImpl::Create(host_impl_->active_tree(), 4); 6157 LayerImpl::Create(host_impl_->active_tree(), 4);
6125 LayerImpl* content_child_layer = scoped_content_child_layer.get(); 6158 LayerImpl* content_child_layer = scoped_content_child_layer.get();
6126 content_layer->AddChild(scoped_content_child_layer.Pass()); 6159 content_layer->AddChild(scoped_content_child_layer.Pass());
6127 6160
6128 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = 6161 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer =
6129 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 6); 6162 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 6);
6130 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); 6163 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get();
6131 content_layer->SetMaskLayer(scoped_mask_layer.Pass()); 6164 content_layer->SetMaskLayer(scoped_mask_layer.Pass());
6165 content_layer->SetHasRenderSurface(true);
6132 6166
6133 gfx::Size root_size(100, 100); 6167 gfx::Size root_size(100, 100);
6134 root->SetBounds(root_size); 6168 root->SetBounds(root_size);
6135 root->SetContentBounds(root_size); 6169 root->SetContentBounds(root_size);
6136 root->SetPosition(gfx::PointF()); 6170 root->SetPosition(gfx::PointF());
6137 6171
6138 gfx::Rect clipping_rect(20, 10, 10, 20); 6172 gfx::Rect clipping_rect(20, 10, 10, 20);
6139 clipping_layer->SetBounds(clipping_rect.size()); 6173 clipping_layer->SetBounds(clipping_rect.size());
6140 clipping_layer->SetContentBounds(clipping_rect.size()); 6174 clipping_layer->SetContentBounds(clipping_rect.size());
6141 clipping_layer->SetPosition(clipping_rect.origin()); 6175 clipping_layer->SetPosition(clipping_rect.origin());
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
6207 gfx::ToCeiledSize(gfx::ScaleSize(root_size, device_scale_factor)); 6241 gfx::ToCeiledSize(gfx::ScaleSize(root_size, device_scale_factor));
6208 host_impl_->SetViewportSize(device_viewport_size); 6242 host_impl_->SetViewportSize(device_viewport_size);
6209 6243
6210 host_impl_->CreatePendingTree(); 6244 host_impl_->CreatePendingTree();
6211 host_impl_->pending_tree()->PushPageScaleFromMainThread(1.f, 1.f / 16.f, 6245 host_impl_->pending_tree()->PushPageScaleFromMainThread(1.f, 1.f / 16.f,
6212 16.f); 6246 16.f);
6213 6247
6214 scoped_ptr<LayerImpl> scoped_root = 6248 scoped_ptr<LayerImpl> scoped_root =
6215 LayerImpl::Create(host_impl_->pending_tree(), 1); 6249 LayerImpl::Create(host_impl_->pending_tree(), 1);
6216 LayerImpl* root = scoped_root.get(); 6250 LayerImpl* root = scoped_root.get();
6251 root->SetHasRenderSurface(true);
6217 6252
6218 host_impl_->pending_tree()->SetRootLayer(scoped_root.Pass()); 6253 host_impl_->pending_tree()->SetRootLayer(scoped_root.Pass());
6219 6254
6220 scoped_ptr<LayerImpl> scoped_scrolling_layer = 6255 scoped_ptr<LayerImpl> scoped_scrolling_layer =
6221 LayerImpl::Create(host_impl_->pending_tree(), 2); 6256 LayerImpl::Create(host_impl_->pending_tree(), 2);
6222 LayerImpl* scrolling_layer = scoped_scrolling_layer.get(); 6257 LayerImpl* scrolling_layer = scoped_scrolling_layer.get();
6223 root->AddChild(scoped_scrolling_layer.Pass()); 6258 root->AddChild(scoped_scrolling_layer.Pass());
6224 6259
6225 gfx::Size content_layer_bounds(100000, 100); 6260 gfx::Size content_layer_bounds(100000, 100);
6226 gfx::Size pile_tile_size(3000, 3000); 6261 gfx::Size pile_tile_size(3000, 3000);
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
6708 EXPECT_EQ(0u, context_provider->TestContext3d()->NumTextures()); 6743 EXPECT_EQ(0u, context_provider->TestContext3d()->NumTextures());
6709 } 6744 }
6710 6745
6711 TEST_F(LayerTreeHostImplTest, TouchFlingShouldNotBubble) { 6746 TEST_F(LayerTreeHostImplTest, TouchFlingShouldNotBubble) {
6712 // When flinging via touch, only the child should scroll (we should not 6747 // When flinging via touch, only the child should scroll (we should not
6713 // bubble). 6748 // bubble).
6714 gfx::Size surface_size(10, 10); 6749 gfx::Size surface_size(10, 10);
6715 gfx::Size content_size(20, 20); 6750 gfx::Size content_size(20, 20);
6716 scoped_ptr<LayerImpl> root_clip = 6751 scoped_ptr<LayerImpl> root_clip =
6717 LayerImpl::Create(host_impl_->active_tree(), 3); 6752 LayerImpl::Create(host_impl_->active_tree(), 3);
6753 root_clip->SetHasRenderSurface(true);
6754
6718 scoped_ptr<LayerImpl> root = 6755 scoped_ptr<LayerImpl> root =
6719 CreateScrollableLayer(1, content_size, root_clip.get()); 6756 CreateScrollableLayer(1, content_size, root_clip.get());
6720 root->SetIsContainerForFixedPositionLayers(true); 6757 root->SetIsContainerForFixedPositionLayers(true);
6721 scoped_ptr<LayerImpl> child = 6758 scoped_ptr<LayerImpl> child =
6722 CreateScrollableLayer(2, content_size, root_clip.get()); 6759 CreateScrollableLayer(2, content_size, root_clip.get());
6723 6760
6724 root->AddChild(child.Pass()); 6761 root->AddChild(child.Pass());
6725 int root_id = root->id(); 6762 int root_id = root->id();
6726 root_clip->AddChild(root.Pass()); 6763 root_clip->AddChild(root.Pass());
6727 6764
(...skipping 24 matching lines...) Expand all
6752 ASSERT_EQ(1u, scroll_info->scrolls.size()); 6789 ASSERT_EQ(1u, scroll_info->scrolls.size());
6753 ExpectNone(*scroll_info.get(), root_id); 6790 ExpectNone(*scroll_info.get(), root_id);
6754 } 6791 }
6755 } 6792 }
6756 6793
6757 TEST_F(LayerTreeHostImplTest, TouchFlingShouldLockToFirstScrolledLayer) { 6794 TEST_F(LayerTreeHostImplTest, TouchFlingShouldLockToFirstScrolledLayer) {
6758 // Scroll a child layer beyond its maximum scroll range and make sure the 6795 // Scroll a child layer beyond its maximum scroll range and make sure the
6759 // the scroll doesn't bubble up to the parent layer. 6796 // the scroll doesn't bubble up to the parent layer.
6760 gfx::Size surface_size(10, 10); 6797 gfx::Size surface_size(10, 10);
6761 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 6798 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
6799 root->SetHasRenderSurface(true);
6762 scoped_ptr<LayerImpl> root_scrolling = 6800 scoped_ptr<LayerImpl> root_scrolling =
6763 CreateScrollableLayer(2, surface_size, root.get()); 6801 CreateScrollableLayer(2, surface_size, root.get());
6764 6802
6765 scoped_ptr<LayerImpl> grand_child = 6803 scoped_ptr<LayerImpl> grand_child =
6766 CreateScrollableLayer(4, surface_size, root.get()); 6804 CreateScrollableLayer(4, surface_size, root.get());
6767 grand_child->SetScrollOffset(gfx::ScrollOffset(0, 2)); 6805 grand_child->SetScrollOffset(gfx::ScrollOffset(0, 2));
6768 6806
6769 scoped_ptr<LayerImpl> child = 6807 scoped_ptr<LayerImpl> child =
6770 CreateScrollableLayer(3, surface_size, root.get()); 6808 CreateScrollableLayer(3, surface_size, root.get());
6771 child->SetScrollOffset(gfx::ScrollOffset(0, 4)); 6809 child->SetScrollOffset(gfx::ScrollOffset(0, 4));
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
6822 } 6860 }
6823 } 6861 }
6824 6862
6825 TEST_F(LayerTreeHostImplTest, WheelFlingShouldBubble) { 6863 TEST_F(LayerTreeHostImplTest, WheelFlingShouldBubble) {
6826 // When flinging via wheel, the root should eventually scroll (we should 6864 // When flinging via wheel, the root should eventually scroll (we should
6827 // bubble). 6865 // bubble).
6828 gfx::Size surface_size(10, 10); 6866 gfx::Size surface_size(10, 10);
6829 gfx::Size content_size(20, 20); 6867 gfx::Size content_size(20, 20);
6830 scoped_ptr<LayerImpl> root_clip = 6868 scoped_ptr<LayerImpl> root_clip =
6831 LayerImpl::Create(host_impl_->active_tree(), 3); 6869 LayerImpl::Create(host_impl_->active_tree(), 3);
6870 root_clip->SetHasRenderSurface(true);
6832 scoped_ptr<LayerImpl> root_scroll = 6871 scoped_ptr<LayerImpl> root_scroll =
6833 CreateScrollableLayer(1, content_size, root_clip.get()); 6872 CreateScrollableLayer(1, content_size, root_clip.get());
6834 int root_scroll_id = root_scroll->id(); 6873 int root_scroll_id = root_scroll->id();
6835 scoped_ptr<LayerImpl> child = 6874 scoped_ptr<LayerImpl> child =
6836 CreateScrollableLayer(2, content_size, root_clip.get()); 6875 CreateScrollableLayer(2, content_size, root_clip.get());
6837 6876
6838 root_scroll->AddChild(child.Pass()); 6877 root_scroll->AddChild(child.Pass());
6839 root_clip->AddChild(root_scroll.Pass()); 6878 root_clip->AddChild(root_scroll.Pass());
6840 6879
6841 host_impl_->SetViewportSize(surface_size); 6880 host_impl_->SetViewportSize(surface_size);
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
7025 7064
7026 // Make sure LatencyInfo carried by LatencyInfoSwapPromise are passed 7065 // Make sure LatencyInfo carried by LatencyInfoSwapPromise are passed
7027 // to CompositorFrameMetadata after SwapBuffers(); 7066 // to CompositorFrameMetadata after SwapBuffers();
7028 TEST_F(LayerTreeHostImplTest, LatencyInfoPassedToCompositorFrameMetadata) { 7067 TEST_F(LayerTreeHostImplTest, LatencyInfoPassedToCompositorFrameMetadata) {
7029 scoped_ptr<SolidColorLayerImpl> root = 7068 scoped_ptr<SolidColorLayerImpl> root =
7030 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); 7069 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1);
7031 root->SetPosition(gfx::PointF()); 7070 root->SetPosition(gfx::PointF());
7032 root->SetBounds(gfx::Size(10, 10)); 7071 root->SetBounds(gfx::Size(10, 10));
7033 root->SetContentBounds(gfx::Size(10, 10)); 7072 root->SetContentBounds(gfx::Size(10, 10));
7034 root->SetDrawsContent(true); 7073 root->SetDrawsContent(true);
7074 root->SetHasRenderSurface(true);
7035 7075
7036 host_impl_->active_tree()->SetRootLayer(root.Pass()); 7076 host_impl_->active_tree()->SetRootLayer(root.Pass());
7037 7077
7038 FakeOutputSurface* fake_output_surface = 7078 FakeOutputSurface* fake_output_surface =
7039 static_cast<FakeOutputSurface*>(host_impl_->output_surface()); 7079 static_cast<FakeOutputSurface*>(host_impl_->output_surface());
7040 7080
7041 const std::vector<ui::LatencyInfo>& metadata_latency_before = 7081 const std::vector<ui::LatencyInfo>& metadata_latency_before =
7042 fake_output_surface->last_sent_frame().metadata.latency_info; 7082 fake_output_surface->last_sent_frame().metadata.latency_info;
7043 EXPECT_TRUE(metadata_latency_before.empty()); 7083 EXPECT_TRUE(metadata_latency_before.empty());
7044 7084
(...skipping 20 matching lines...) Expand all
7065 } 7105 }
7066 7106
7067 TEST_F(LayerTreeHostImplTest, SelectionBoundsPassedToCompositorFrameMetadata) { 7107 TEST_F(LayerTreeHostImplTest, SelectionBoundsPassedToCompositorFrameMetadata) {
7068 int root_layer_id = 1; 7108 int root_layer_id = 1;
7069 scoped_ptr<SolidColorLayerImpl> root = 7109 scoped_ptr<SolidColorLayerImpl> root =
7070 SolidColorLayerImpl::Create(host_impl_->active_tree(), root_layer_id); 7110 SolidColorLayerImpl::Create(host_impl_->active_tree(), root_layer_id);
7071 root->SetPosition(gfx::PointF()); 7111 root->SetPosition(gfx::PointF());
7072 root->SetBounds(gfx::Size(10, 10)); 7112 root->SetBounds(gfx::Size(10, 10));
7073 root->SetContentBounds(gfx::Size(10, 10)); 7113 root->SetContentBounds(gfx::Size(10, 10));
7074 root->SetDrawsContent(true); 7114 root->SetDrawsContent(true);
7115 root->SetHasRenderSurface(true);
7075 7116
7076 host_impl_->active_tree()->SetRootLayer(root.Pass()); 7117 host_impl_->active_tree()->SetRootLayer(root.Pass());
7077 7118
7078 // Ensure the default frame selection bounds are empty. 7119 // Ensure the default frame selection bounds are empty.
7079 FakeOutputSurface* fake_output_surface = 7120 FakeOutputSurface* fake_output_surface =
7080 static_cast<FakeOutputSurface*>(host_impl_->output_surface()); 7121 static_cast<FakeOutputSurface*>(host_impl_->output_surface());
7081 const ViewportSelectionBound& selection_start_before = 7122 const ViewportSelectionBound& selection_start_before =
7082 fake_output_surface->last_sent_frame().metadata.selection_start; 7123 fake_output_surface->last_sent_frame().metadata.selection_start;
7083 const ViewportSelectionBound& selection_end_before = 7124 const ViewportSelectionBound& selection_end_before =
7084 fake_output_surface->last_sent_frame().metadata.selection_end; 7125 fake_output_surface->last_sent_frame().metadata.selection_end;
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
7590 contents->SetBounds(content_size); 7631 contents->SetBounds(content_size);
7591 contents->SetContentBounds(content_size); 7632 contents->SetContentBounds(content_size);
7592 contents->SetPosition(gfx::PointF()); 7633 contents->SetPosition(gfx::PointF());
7593 7634
7594 outer_scroll->AddChild(contents.Pass()); 7635 outer_scroll->AddChild(contents.Pass());
7595 outer_clip->AddChild(outer_scroll.Pass()); 7636 outer_clip->AddChild(outer_scroll.Pass());
7596 inner_scroll->AddChild(outer_clip.Pass()); 7637 inner_scroll->AddChild(outer_clip.Pass());
7597 page_scale->AddChild(inner_scroll.Pass()); 7638 page_scale->AddChild(inner_scroll.Pass());
7598 inner_clip->AddChild(page_scale.Pass()); 7639 inner_clip->AddChild(page_scale.Pass());
7599 7640
7641 inner_clip->SetHasRenderSurface(true);
7600 layer_tree_impl->SetRootLayer(inner_clip.Pass()); 7642 layer_tree_impl->SetRootLayer(inner_clip.Pass());
7601 layer_tree_impl->SetViewportLayersFromIds( 7643 layer_tree_impl->SetViewportLayersFromIds(
7602 Layer::INVALID_ID, kPageScaleLayerId, kInnerViewportScrollLayerId, 7644 Layer::INVALID_ID, kPageScaleLayerId, kInnerViewportScrollLayerId,
7603 kOuterViewportScrollLayerId); 7645 kOuterViewportScrollLayerId);
7604 7646
7605 host_impl_->active_tree()->DidBecomeActive(); 7647 host_impl_->active_tree()->DidBecomeActive();
7606 } 7648 }
7607 }; 7649 };
7608 7650
7609 TEST_F(LayerTreeHostImplVirtualViewportTest, FlingScrollBubblesToInner) { 7651 TEST_F(LayerTreeHostImplVirtualViewportTest, FlingScrollBubblesToInner) {
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
8011 // surface. 8053 // surface.
8012 EXPECT_EQ(0, num_lost_surfaces_); 8054 EXPECT_EQ(0, num_lost_surfaces_);
8013 host_impl_->DidLoseOutputSurface(); 8055 host_impl_->DidLoseOutputSurface();
8014 EXPECT_EQ(1, num_lost_surfaces_); 8056 EXPECT_EQ(1, num_lost_surfaces_);
8015 host_impl_->DidLoseOutputSurface(); 8057 host_impl_->DidLoseOutputSurface();
8016 EXPECT_LE(1, num_lost_surfaces_); 8058 EXPECT_LE(1, num_lost_surfaces_);
8017 } 8059 }
8018 8060
8019 } // namespace 8061 } // namespace
8020 } // namespace cc 8062 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_common_unittest.cc ('k') | cc/trees/layer_tree_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698