| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
| 6 | 6 |
| 7 #include <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 Loading... |
| 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 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 host_impl_->SetViewportSize(gfx::Size(10, 10)); | 178 host_impl_->SetViewportSize(gfx::Size(10, 10)); |
| 178 return init; | 179 return init; |
| 179 } | 180 } |
| 180 | 181 |
| 181 void SetupRootLayerImpl(scoped_ptr<LayerImpl> root) { | 182 void SetupRootLayerImpl(scoped_ptr<LayerImpl> root) { |
| 182 root->SetPosition(gfx::PointF()); | 183 root->SetPosition(gfx::PointF()); |
| 183 root->SetBounds(gfx::Size(10, 10)); | 184 root->SetBounds(gfx::Size(10, 10)); |
| 184 root->SetContentBounds(gfx::Size(10, 10)); | 185 root->SetContentBounds(gfx::Size(10, 10)); |
| 185 root->SetDrawsContent(true); | 186 root->SetDrawsContent(true); |
| 186 root->draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10); | 187 root->draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10); |
| 188 root->SetHasRenderSurface(true); |
| 187 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 189 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 188 } | 190 } |
| 189 | 191 |
| 190 static void ExpectClearedScrollDeltasRecursive(LayerImpl* layer) { | 192 static void ExpectClearedScrollDeltasRecursive(LayerImpl* layer) { |
| 191 ASSERT_EQ(layer->ScrollDelta(), gfx::Vector2d()); | 193 ASSERT_EQ(layer->ScrollDelta(), gfx::Vector2d()); |
| 192 for (size_t i = 0; i < layer->children().size(); ++i) | 194 for (size_t i = 0; i < layer->children().size(); ++i) |
| 193 ExpectClearedScrollDeltasRecursive(layer->children()[i]); | 195 ExpectClearedScrollDeltasRecursive(layer->children()[i]); |
| 194 } | 196 } |
| 195 | 197 |
| 196 static void ExpectContains(const ScrollAndScaleSet& scroll_info, | 198 static void ExpectContains(const ScrollAndScaleSet& scroll_info, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 223 LayerImpl* CreateScrollAndContentsLayers(LayerTreeImpl* layer_tree_impl, | 225 LayerImpl* CreateScrollAndContentsLayers(LayerTreeImpl* layer_tree_impl, |
| 224 const gfx::Size& content_size) { | 226 const gfx::Size& content_size) { |
| 225 const int kInnerViewportScrollLayerId = 2; | 227 const int kInnerViewportScrollLayerId = 2; |
| 226 const int kInnerViewportClipLayerId = 4; | 228 const int kInnerViewportClipLayerId = 4; |
| 227 const int kPageScaleLayerId = 5; | 229 const int kPageScaleLayerId = 5; |
| 228 scoped_ptr<LayerImpl> root = | 230 scoped_ptr<LayerImpl> root = |
| 229 LayerImpl::Create(layer_tree_impl, 1); | 231 LayerImpl::Create(layer_tree_impl, 1); |
| 230 root->SetBounds(content_size); | 232 root->SetBounds(content_size); |
| 231 root->SetContentBounds(content_size); | 233 root->SetContentBounds(content_size); |
| 232 root->SetPosition(gfx::PointF()); | 234 root->SetPosition(gfx::PointF()); |
| 235 root->SetHasRenderSurface(true); |
| 233 | 236 |
| 234 scoped_ptr<LayerImpl> scroll = | 237 scoped_ptr<LayerImpl> scroll = |
| 235 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId); | 238 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId); |
| 236 LayerImpl* scroll_layer = scroll.get(); | 239 LayerImpl* scroll_layer = scroll.get(); |
| 237 scroll->SetIsContainerForFixedPositionLayers(true); | 240 scroll->SetIsContainerForFixedPositionLayers(true); |
| 238 scroll->SetScrollOffset(gfx::ScrollOffset()); | 241 scroll->SetScrollOffset(gfx::ScrollOffset()); |
| 239 | 242 |
| 240 scoped_ptr<LayerImpl> clip = | 243 scoped_ptr<LayerImpl> clip = |
| 241 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId); | 244 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId); |
| 242 clip->SetBounds( | 245 clip->SetBounds( |
| (...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 | 567 |
| 565 // We should still be scrolling, because the scrolled layer also exists in the | 568 // We should still be scrolling, because the scrolled layer also exists in the |
| 566 // new tree. | 569 // new tree. |
| 567 gfx::Vector2d scroll_delta(0, 10); | 570 gfx::Vector2d scroll_delta(0, 10); |
| 568 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 571 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
| 569 host_impl_->ScrollEnd(); | 572 host_impl_->ScrollEnd(); |
| 570 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); | 573 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); |
| 571 ExpectContains(*scroll_info, scroll_layer->id(), scroll_delta); | 574 ExpectContains(*scroll_info, scroll_layer->id(), scroll_delta); |
| 572 } | 575 } |
| 573 | 576 |
| 574 TEST_F(LayerTreeHostImplTest, ClearRootRenderSurfaceAndScroll) { | |
| 575 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | |
| 576 host_impl_->SetViewportSize(gfx::Size(50, 50)); | |
| 577 DrawFrame(); | |
| 578 | |
| 579 // We should be able to scroll even if the root layer loses its render surface | |
| 580 // after the most recent render. | |
| 581 host_impl_->active_tree()->root_layer()->ClearRenderSurface(); | |
| 582 host_impl_->active_tree()->set_needs_update_draw_properties(); | |
| 583 | |
| 584 EXPECT_EQ(InputHandler::ScrollStarted, | |
| 585 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel)); | |
| 586 } | |
| 587 | |
| 588 TEST_F(LayerTreeHostImplTest, WheelEventHandlers) { | 577 TEST_F(LayerTreeHostImplTest, WheelEventHandlers) { |
| 589 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 578 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 590 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 579 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
| 591 DrawFrame(); | 580 DrawFrame(); |
| 592 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 581 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 593 | 582 |
| 594 root->SetHaveWheelEventHandlers(true); | 583 root->SetHaveWheelEventHandlers(true); |
| 595 | 584 |
| 596 // With registered event handlers, wheel scrolls have to go to the main | 585 // With registered event handlers, wheel scrolls have to go to the main |
| 597 // thread. | 586 // thread. |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 893 host_impl_->ScrollBegin(scroll_position, InputHandler::Wheel)); | 882 host_impl_->ScrollBegin(scroll_position, InputHandler::Wheel)); |
| 894 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 0), scroll_layer->TotalScrollOffset()); | 883 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 0), scroll_layer->TotalScrollOffset()); |
| 895 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->TotalScrollOffset()); | 884 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->TotalScrollOffset()); |
| 896 | 885 |
| 897 host_impl_->ScrollBy(scroll_position, scroll_delta); | 886 host_impl_->ScrollBy(scroll_position, scroll_delta); |
| 898 host_impl_->ScrollEnd(); | 887 host_impl_->ScrollEnd(); |
| 899 EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 10), scroll_layer->TotalScrollOffset()); | 888 EXPECT_VECTOR_EQ(gfx::Vector2dF(20, 10), scroll_layer->TotalScrollOffset()); |
| 900 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->TotalScrollOffset()); | 889 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->TotalScrollOffset()); |
| 901 } | 890 } |
| 902 | 891 |
| 903 TEST_F(LayerTreeHostImplTest, | |
| 904 ClearRootRenderSurfaceAndHitTestTouchHandlerRegion) { | |
| 905 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | |
| 906 host_impl_->SetViewportSize(gfx::Size(50, 50)); | |
| 907 DrawFrame(); | |
| 908 | |
| 909 // We should be able to hit test for touch event handlers even if the root | |
| 910 // layer loses its render surface after the most recent render. | |
| 911 host_impl_->active_tree()->root_layer()->ClearRenderSurface(); | |
| 912 host_impl_->active_tree()->set_needs_update_draw_properties(); | |
| 913 | |
| 914 EXPECT_EQ(host_impl_->HaveTouchEventHandlersAt(gfx::Point()), false); | |
| 915 } | |
| 916 | |
| 917 TEST_F(LayerTreeHostImplTest, ImplPinchZoom) { | 892 TEST_F(LayerTreeHostImplTest, ImplPinchZoom) { |
| 918 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 893 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 919 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 894 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
| 920 DrawFrame(); | 895 DrawFrame(); |
| 921 | 896 |
| 922 EXPECT_EQ(scroll_layer, host_impl_->InnerViewportScrollLayer()); | 897 EXPECT_EQ(scroll_layer, host_impl_->InnerViewportScrollLayer()); |
| 923 LayerImpl* container_layer = scroll_layer->scroll_clip_layer(); | 898 LayerImpl* container_layer = scroll_layer->scroll_clip_layer(); |
| 924 EXPECT_EQ(gfx::Size(50, 50), container_layer->bounds()); | 899 EXPECT_EQ(gfx::Size(50, 50), container_layer->bounds()); |
| 925 | 900 |
| 926 float min_page_scale = 1.f, max_page_scale = 4.f; | 901 float min_page_scale = 1.f, max_page_scale = 4.f; |
| (...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1438 contents->SetBounds(content_size); \ | 1413 contents->SetBounds(content_size); \ |
| 1439 contents->SetContentBounds(content_size); \ | 1414 contents->SetContentBounds(content_size); \ |
| 1440 \ | 1415 \ |
| 1441 scoped_ptr<SolidColorScrollbarLayerImpl> scrollbar = \ | 1416 scoped_ptr<SolidColorScrollbarLayerImpl> scrollbar = \ |
| 1442 SolidColorScrollbarLayerImpl::Create( \ | 1417 SolidColorScrollbarLayerImpl::Create( \ |
| 1443 host_impl_->active_tree(), 4, VERTICAL, 10, 0, false, true); \ | 1418 host_impl_->active_tree(), 4, VERTICAL, 10, 0, false, true); \ |
| 1444 EXPECT_FLOAT_EQ(0.f, scrollbar->opacity()); \ | 1419 EXPECT_FLOAT_EQ(0.f, scrollbar->opacity()); \ |
| 1445 \ | 1420 \ |
| 1446 scroll->AddChild(contents.Pass()); \ | 1421 scroll->AddChild(contents.Pass()); \ |
| 1447 root->AddChild(scroll.Pass()); \ | 1422 root->AddChild(scroll.Pass()); \ |
| 1423 root->SetHasRenderSurface(true); \ |
| 1448 scrollbar->SetScrollLayerAndClipLayerByIds(2, 1); \ | 1424 scrollbar->SetScrollLayerAndClipLayerByIds(2, 1); \ |
| 1449 root->AddChild(scrollbar.Pass()); \ | 1425 root->AddChild(scrollbar.Pass()); \ |
| 1450 \ | 1426 \ |
| 1451 host_impl_->active_tree()->SetRootLayer(root.Pass()); \ | 1427 host_impl_->active_tree()->SetRootLayer(root.Pass()); \ |
| 1452 host_impl_->active_tree()->SetViewportLayersFromIds( \ | 1428 host_impl_->active_tree()->SetViewportLayersFromIds( \ |
| 1453 1, 2, Layer::INVALID_ID); \ | 1429 1, 2, Layer::INVALID_ID); \ |
| 1454 host_impl_->active_tree()->DidBecomeActive(); \ | 1430 host_impl_->active_tree()->DidBecomeActive(); \ |
| 1455 DrawFrame(); | 1431 DrawFrame(); |
| 1456 | 1432 |
| 1457 TEST_F(LayerTreeHostImplTest, ScrollbarLinearFadeScheduling) { | 1433 TEST_F(LayerTreeHostImplTest, ScrollbarLinearFadeScheduling) { |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1582 gfx::ScaleSize(viewport_size, device_scale_factor)); | 1558 gfx::ScaleSize(viewport_size, device_scale_factor)); |
| 1583 gfx::Size content_size(1000, 1000); | 1559 gfx::Size content_size(1000, 1000); |
| 1584 | 1560 |
| 1585 CreateHostImpl(settings, CreateOutputSurface()); | 1561 CreateHostImpl(settings, CreateOutputSurface()); |
| 1586 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 1562 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 1587 host_impl_->SetViewportSize(device_viewport_size); | 1563 host_impl_->SetViewportSize(device_viewport_size); |
| 1588 | 1564 |
| 1589 scoped_ptr<LayerImpl> root = | 1565 scoped_ptr<LayerImpl> root = |
| 1590 LayerImpl::Create(host_impl_->active_tree(), 1); | 1566 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 1591 root->SetBounds(viewport_size); | 1567 root->SetBounds(viewport_size); |
| 1568 root->SetHasRenderSurface(true); |
| 1592 | 1569 |
| 1593 scoped_ptr<LayerImpl> scroll = | 1570 scoped_ptr<LayerImpl> scroll = |
| 1594 LayerImpl::Create(host_impl_->active_tree(), 2); | 1571 LayerImpl::Create(host_impl_->active_tree(), 2); |
| 1595 scroll->SetScrollClipLayer(root->id()); | 1572 scroll->SetScrollClipLayer(root->id()); |
| 1596 scroll->SetScrollOffset(gfx::ScrollOffset()); | 1573 scroll->SetScrollOffset(gfx::ScrollOffset()); |
| 1597 scroll->SetBounds(content_size); | 1574 scroll->SetBounds(content_size); |
| 1598 scroll->SetContentBounds(content_size); | 1575 scroll->SetContentBounds(content_size); |
| 1599 scroll->SetIsContainerForFixedPositionLayers(true); | 1576 scroll->SetIsContainerForFixedPositionLayers(true); |
| 1600 | 1577 |
| 1601 scoped_ptr<LayerImpl> contents = | 1578 scoped_ptr<LayerImpl> contents = |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1786 | 1763 |
| 1787 TEST_F(LayerTreeHostImplTest, WillDrawReturningFalseDoesNotCall) { | 1764 TEST_F(LayerTreeHostImplTest, WillDrawReturningFalseDoesNotCall) { |
| 1788 // The root layer is always drawn, so run this test on a child layer that | 1765 // The root layer is always drawn, so run this test on a child layer that |
| 1789 // will be masked out by the root layer's bounds. | 1766 // will be masked out by the root layer's bounds. |
| 1790 host_impl_->active_tree()->SetRootLayer( | 1767 host_impl_->active_tree()->SetRootLayer( |
| 1791 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 1768 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 1792 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( | 1769 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( |
| 1793 host_impl_->active_tree()->root_layer()); | 1770 host_impl_->active_tree()->root_layer()); |
| 1794 | 1771 |
| 1795 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 1772 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |
| 1773 root->SetHasRenderSurface(true); |
| 1796 DidDrawCheckLayer* layer = | 1774 DidDrawCheckLayer* layer = |
| 1797 static_cast<DidDrawCheckLayer*>(root->children()[0]); | 1775 static_cast<DidDrawCheckLayer*>(root->children()[0]); |
| 1798 | 1776 |
| 1799 { | 1777 { |
| 1800 LayerTreeHostImpl::FrameData frame; | 1778 LayerTreeHostImpl::FrameData frame; |
| 1801 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1779 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1802 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1780 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1803 host_impl_->DidDrawAllLayers(frame); | 1781 host_impl_->DidDrawAllLayers(frame); |
| 1804 | 1782 |
| 1805 EXPECT_TRUE(layer->will_draw_called()); | 1783 EXPECT_TRUE(layer->will_draw_called()); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1826 } | 1804 } |
| 1827 | 1805 |
| 1828 TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) { | 1806 TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) { |
| 1829 // The root layer is always drawn, so run this test on a child layer that | 1807 // The root layer is always drawn, so run this test on a child layer that |
| 1830 // will be masked out by the root layer's bounds. | 1808 // will be masked out by the root layer's bounds. |
| 1831 host_impl_->active_tree()->SetRootLayer( | 1809 host_impl_->active_tree()->SetRootLayer( |
| 1832 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 1810 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 1833 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( | 1811 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( |
| 1834 host_impl_->active_tree()->root_layer()); | 1812 host_impl_->active_tree()->root_layer()); |
| 1835 root->SetMasksToBounds(true); | 1813 root->SetMasksToBounds(true); |
| 1836 | 1814 root->SetHasRenderSurface(true); |
| 1837 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 1815 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |
| 1838 DidDrawCheckLayer* layer = | 1816 DidDrawCheckLayer* layer = |
| 1839 static_cast<DidDrawCheckLayer*>(root->children()[0]); | 1817 static_cast<DidDrawCheckLayer*>(root->children()[0]); |
| 1840 // Ensure visible_content_rect for layer is empty. | 1818 // Ensure visible_content_rect for layer is empty. |
| 1841 layer->SetPosition(gfx::PointF(100.f, 100.f)); | 1819 layer->SetPosition(gfx::PointF(100.f, 100.f)); |
| 1842 layer->SetBounds(gfx::Size(10, 10)); | 1820 layer->SetBounds(gfx::Size(10, 10)); |
| 1843 layer->SetContentBounds(gfx::Size(10, 10)); | 1821 layer->SetContentBounds(gfx::Size(10, 10)); |
| 1844 | 1822 |
| 1845 LayerTreeHostImpl::FrameData frame; | 1823 LayerTreeHostImpl::FrameData frame; |
| 1846 | 1824 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1879 host_impl_->active_tree()->SetRootLayer( | 1857 host_impl_->active_tree()->SetRootLayer( |
| 1880 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 1858 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 1881 DidDrawCheckLayer* root = | 1859 DidDrawCheckLayer* root = |
| 1882 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 1860 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 1883 | 1861 |
| 1884 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 1862 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |
| 1885 DidDrawCheckLayer* occluded_layer = | 1863 DidDrawCheckLayer* occluded_layer = |
| 1886 static_cast<DidDrawCheckLayer*>(root->children()[0]); | 1864 static_cast<DidDrawCheckLayer*>(root->children()[0]); |
| 1887 | 1865 |
| 1888 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); | 1866 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); |
| 1867 root->SetHasRenderSurface(true); |
| 1889 DidDrawCheckLayer* top_layer = | 1868 DidDrawCheckLayer* top_layer = |
| 1890 static_cast<DidDrawCheckLayer*>(root->children()[1]); | 1869 static_cast<DidDrawCheckLayer*>(root->children()[1]); |
| 1891 // This layer covers the occluded_layer above. Make this layer large so it can | 1870 // This layer covers the occluded_layer above. Make this layer large so it can |
| 1892 // occlude. | 1871 // occlude. |
| 1893 top_layer->SetBounds(big_size); | 1872 top_layer->SetBounds(big_size); |
| 1894 top_layer->SetContentBounds(big_size); | 1873 top_layer->SetContentBounds(big_size); |
| 1895 top_layer->SetContentsOpaque(true); | 1874 top_layer->SetContentsOpaque(true); |
| 1896 | 1875 |
| 1897 LayerTreeHostImpl::FrameData frame; | 1876 LayerTreeHostImpl::FrameData frame; |
| 1898 | 1877 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1911 EXPECT_TRUE(top_layer->did_draw_called()); | 1890 EXPECT_TRUE(top_layer->did_draw_called()); |
| 1912 } | 1891 } |
| 1913 | 1892 |
| 1914 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) { | 1893 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) { |
| 1915 host_impl_->active_tree()->SetRootLayer( | 1894 host_impl_->active_tree()->SetRootLayer( |
| 1916 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 1895 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 1917 DidDrawCheckLayer* root = | 1896 DidDrawCheckLayer* root = |
| 1918 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 1897 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 1919 | 1898 |
| 1920 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 1899 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |
| 1900 root->SetHasRenderSurface(true); |
| 1921 DidDrawCheckLayer* layer1 = | 1901 DidDrawCheckLayer* layer1 = |
| 1922 static_cast<DidDrawCheckLayer*>(root->children()[0]); | 1902 static_cast<DidDrawCheckLayer*>(root->children()[0]); |
| 1923 | 1903 |
| 1924 layer1->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); | 1904 layer1->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); |
| 1925 DidDrawCheckLayer* layer2 = | 1905 DidDrawCheckLayer* layer2 = |
| 1926 static_cast<DidDrawCheckLayer*>(layer1->children()[0]); | 1906 static_cast<DidDrawCheckLayer*>(layer1->children()[0]); |
| 1927 | 1907 |
| 1928 layer1->SetOpacity(0.3f); | 1908 layer1->SetHasRenderSurface(true); |
| 1929 layer1->SetShouldFlattenTransform(true); | 1909 layer1->SetShouldFlattenTransform(true); |
| 1930 | 1910 |
| 1931 EXPECT_FALSE(root->did_draw_called()); | 1911 EXPECT_FALSE(root->did_draw_called()); |
| 1932 EXPECT_FALSE(layer1->did_draw_called()); | 1912 EXPECT_FALSE(layer1->did_draw_called()); |
| 1933 EXPECT_FALSE(layer2->did_draw_called()); | 1913 EXPECT_FALSE(layer2->did_draw_called()); |
| 1934 | 1914 |
| 1935 LayerTreeHostImpl::FrameData frame; | 1915 LayerTreeHostImpl::FrameData frame; |
| 1936 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( | 1916 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( |
| 1937 host_impl_->active_tree()->root_layer()); | 1917 host_impl_->active_tree()->root_layer()); |
| 1938 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1918 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1990 | 1970 |
| 1991 bool tile_missing_; | 1971 bool tile_missing_; |
| 1992 bool had_incomplete_tile_; | 1972 bool had_incomplete_tile_; |
| 1993 }; | 1973 }; |
| 1994 | 1974 |
| 1995 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsOnDefault) { | 1975 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsOnDefault) { |
| 1996 host_impl_->active_tree()->SetRootLayer( | 1976 host_impl_->active_tree()->SetRootLayer( |
| 1997 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 1977 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 1998 DidDrawCheckLayer* root = | 1978 DidDrawCheckLayer* root = |
| 1999 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 1979 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2000 | 1980 root->SetHasRenderSurface(true); |
| 2001 bool tile_missing = false; | 1981 bool tile_missing = false; |
| 2002 bool had_incomplete_tile = false; | 1982 bool had_incomplete_tile = false; |
| 2003 bool is_animating = false; | 1983 bool is_animating = false; |
| 2004 root->AddChild( | 1984 root->AddChild( |
| 2005 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 1985 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2006 2, | 1986 2, |
| 2007 tile_missing, | 1987 tile_missing, |
| 2008 had_incomplete_tile, | 1988 had_incomplete_tile, |
| 2009 is_animating, | 1989 is_animating, |
| 2010 host_impl_->resource_provider())); | 1990 host_impl_->resource_provider())); |
| 2011 | 1991 |
| 2012 LayerTreeHostImpl::FrameData frame; | 1992 LayerTreeHostImpl::FrameData frame; |
| 2013 | 1993 |
| 2014 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1994 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2015 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1995 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2016 host_impl_->DidDrawAllLayers(frame); | 1996 host_impl_->DidDrawAllLayers(frame); |
| 2017 } | 1997 } |
| 2018 | 1998 |
| 2019 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithAnimatedLayer) { | 1999 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithAnimatedLayer) { |
| 2020 host_impl_->active_tree()->SetRootLayer( | 2000 host_impl_->active_tree()->SetRootLayer( |
| 2021 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 2001 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 2022 DidDrawCheckLayer* root = | 2002 DidDrawCheckLayer* root = |
| 2023 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2003 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2004 root->SetHasRenderSurface(true); |
| 2024 bool tile_missing = false; | 2005 bool tile_missing = false; |
| 2025 bool had_incomplete_tile = false; | 2006 bool had_incomplete_tile = false; |
| 2026 bool is_animating = true; | 2007 bool is_animating = true; |
| 2027 root->AddChild( | 2008 root->AddChild( |
| 2028 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 2009 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2029 2, | 2010 2, |
| 2030 tile_missing, | 2011 tile_missing, |
| 2031 had_incomplete_tile, | 2012 had_incomplete_tile, |
| 2032 is_animating, | 2013 is_animating, |
| 2033 host_impl_->resource_provider())); | 2014 host_impl_->resource_provider())); |
| 2034 | 2015 |
| 2035 LayerTreeHostImpl::FrameData frame; | 2016 LayerTreeHostImpl::FrameData frame; |
| 2036 | 2017 |
| 2037 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 2018 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2038 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2019 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2039 host_impl_->DidDrawAllLayers(frame); | 2020 host_impl_->DidDrawAllLayers(frame); |
| 2040 } | 2021 } |
| 2041 | 2022 |
| 2042 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithMissingTiles) { | 2023 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithMissingTiles) { |
| 2043 host_impl_->active_tree()->SetRootLayer( | 2024 host_impl_->active_tree()->SetRootLayer( |
| 2044 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); | 2025 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); |
| 2045 DidDrawCheckLayer* root = | 2026 DidDrawCheckLayer* root = |
| 2046 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2027 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2028 root->SetHasRenderSurface(true); |
| 2047 | 2029 |
| 2048 LayerTreeHostImpl::FrameData frame; | 2030 LayerTreeHostImpl::FrameData frame; |
| 2049 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 2031 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2050 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2032 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2051 host_impl_->DidDrawAllLayers(frame); | 2033 host_impl_->DidDrawAllLayers(frame); |
| 2052 host_impl_->SwapBuffers(frame); | 2034 host_impl_->SwapBuffers(frame); |
| 2053 | 2035 |
| 2054 bool tile_missing = true; | 2036 bool tile_missing = true; |
| 2055 bool had_incomplete_tile = false; | 2037 bool had_incomplete_tile = false; |
| 2056 bool is_animating = false; | 2038 bool is_animating = false; |
| 2057 root->AddChild( | 2039 root->AddChild( |
| 2058 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 2040 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2059 4, | 2041 4, |
| 2060 tile_missing, | 2042 tile_missing, |
| 2061 had_incomplete_tile, | 2043 had_incomplete_tile, |
| 2062 is_animating, | 2044 is_animating, |
| 2063 host_impl_->resource_provider())); | 2045 host_impl_->resource_provider())); |
| 2064 LayerTreeHostImpl::FrameData frame2; | 2046 LayerTreeHostImpl::FrameData frame2; |
| 2065 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame2)); | 2047 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame2)); |
| 2066 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); | 2048 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); |
| 2067 host_impl_->DidDrawAllLayers(frame2); | 2049 host_impl_->DidDrawAllLayers(frame2); |
| 2068 } | 2050 } |
| 2069 | 2051 |
| 2070 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithIncompleteTile) { | 2052 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithIncompleteTile) { |
| 2071 host_impl_->active_tree()->SetRootLayer( | 2053 host_impl_->active_tree()->SetRootLayer( |
| 2072 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); | 2054 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); |
| 2073 DidDrawCheckLayer* root = | 2055 DidDrawCheckLayer* root = |
| 2074 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2056 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2057 root->SetHasRenderSurface(true); |
| 2075 | 2058 |
| 2076 LayerTreeHostImpl::FrameData frame; | 2059 LayerTreeHostImpl::FrameData frame; |
| 2077 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 2060 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2078 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2061 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2079 host_impl_->DidDrawAllLayers(frame); | 2062 host_impl_->DidDrawAllLayers(frame); |
| 2080 host_impl_->SwapBuffers(frame); | 2063 host_impl_->SwapBuffers(frame); |
| 2081 | 2064 |
| 2082 bool tile_missing = false; | 2065 bool tile_missing = false; |
| 2083 bool had_incomplete_tile = true; | 2066 bool had_incomplete_tile = true; |
| 2084 bool is_animating = false; | 2067 bool is_animating = false; |
| 2085 root->AddChild( | 2068 root->AddChild( |
| 2086 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 2069 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2087 4, | 2070 4, |
| 2088 tile_missing, | 2071 tile_missing, |
| 2089 had_incomplete_tile, | 2072 had_incomplete_tile, |
| 2090 is_animating, | 2073 is_animating, |
| 2091 host_impl_->resource_provider())); | 2074 host_impl_->resource_provider())); |
| 2092 LayerTreeHostImpl::FrameData frame2; | 2075 LayerTreeHostImpl::FrameData frame2; |
| 2093 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame2)); | 2076 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame2)); |
| 2094 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); | 2077 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); |
| 2095 host_impl_->DidDrawAllLayers(frame2); | 2078 host_impl_->DidDrawAllLayers(frame2); |
| 2096 } | 2079 } |
| 2097 | 2080 |
| 2098 TEST_F(LayerTreeHostImplTest, | 2081 TEST_F(LayerTreeHostImplTest, |
| 2099 PrepareToDrawFailsWithAnimationAndMissingTilesUsesCheckerboard) { | 2082 PrepareToDrawFailsWithAnimationAndMissingTilesUsesCheckerboard) { |
| 2100 host_impl_->active_tree()->SetRootLayer( | 2083 host_impl_->active_tree()->SetRootLayer( |
| 2101 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); | 2084 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); |
| 2102 DidDrawCheckLayer* root = | 2085 DidDrawCheckLayer* root = |
| 2103 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2086 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2087 root->SetHasRenderSurface(true); |
| 2104 | 2088 |
| 2105 LayerTreeHostImpl::FrameData frame; | 2089 LayerTreeHostImpl::FrameData frame; |
| 2106 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 2090 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2107 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2091 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2108 host_impl_->DidDrawAllLayers(frame); | 2092 host_impl_->DidDrawAllLayers(frame); |
| 2109 host_impl_->SwapBuffers(frame); | 2093 host_impl_->SwapBuffers(frame); |
| 2110 | 2094 |
| 2111 bool tile_missing = true; | 2095 bool tile_missing = true; |
| 2112 bool had_incomplete_tile = false; | 2096 bool had_incomplete_tile = false; |
| 2113 bool is_animating = true; | 2097 bool is_animating = true; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 2124 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); | 2108 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); |
| 2125 host_impl_->DidDrawAllLayers(frame2); | 2109 host_impl_->DidDrawAllLayers(frame2); |
| 2126 } | 2110 } |
| 2127 | 2111 |
| 2128 TEST_F(LayerTreeHostImplTest, | 2112 TEST_F(LayerTreeHostImplTest, |
| 2129 PrepareToDrawSucceedsWithAnimationAndIncompleteTiles) { | 2113 PrepareToDrawSucceedsWithAnimationAndIncompleteTiles) { |
| 2130 host_impl_->active_tree()->SetRootLayer( | 2114 host_impl_->active_tree()->SetRootLayer( |
| 2131 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); | 2115 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); |
| 2132 DidDrawCheckLayer* root = | 2116 DidDrawCheckLayer* root = |
| 2133 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2117 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2118 root->SetHasRenderSurface(true); |
| 2134 | 2119 |
| 2135 LayerTreeHostImpl::FrameData frame; | 2120 LayerTreeHostImpl::FrameData frame; |
| 2136 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 2121 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2137 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2122 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2138 host_impl_->DidDrawAllLayers(frame); | 2123 host_impl_->DidDrawAllLayers(frame); |
| 2139 host_impl_->SwapBuffers(frame); | 2124 host_impl_->SwapBuffers(frame); |
| 2140 | 2125 |
| 2141 bool tile_missing = false; | 2126 bool tile_missing = false; |
| 2142 bool had_incomplete_tile = true; | 2127 bool had_incomplete_tile = true; |
| 2143 bool is_animating = true; | 2128 bool is_animating = true; |
| 2144 root->AddChild( | 2129 root->AddChild( |
| 2145 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 2130 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2146 6, | 2131 6, |
| 2147 tile_missing, | 2132 tile_missing, |
| 2148 had_incomplete_tile, | 2133 had_incomplete_tile, |
| 2149 is_animating, | 2134 is_animating, |
| 2150 host_impl_->resource_provider())); | 2135 host_impl_->resource_provider())); |
| 2151 LayerTreeHostImpl::FrameData frame2; | 2136 LayerTreeHostImpl::FrameData frame2; |
| 2152 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame2)); | 2137 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame2)); |
| 2153 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); | 2138 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); |
| 2154 host_impl_->DidDrawAllLayers(frame2); | 2139 host_impl_->DidDrawAllLayers(frame2); |
| 2155 } | 2140 } |
| 2156 | 2141 |
| 2157 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWhenHighResRequired) { | 2142 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWhenHighResRequired) { |
| 2158 host_impl_->active_tree()->SetRootLayer( | 2143 host_impl_->active_tree()->SetRootLayer( |
| 2159 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); | 2144 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); |
| 2160 DidDrawCheckLayer* root = | 2145 DidDrawCheckLayer* root = |
| 2161 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2146 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2147 root->SetHasRenderSurface(true); |
| 2162 | 2148 |
| 2163 LayerTreeHostImpl::FrameData frame; | 2149 LayerTreeHostImpl::FrameData frame; |
| 2164 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 2150 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2165 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2151 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2166 host_impl_->DidDrawAllLayers(frame); | 2152 host_impl_->DidDrawAllLayers(frame); |
| 2167 host_impl_->SwapBuffers(frame); | 2153 host_impl_->SwapBuffers(frame); |
| 2168 | 2154 |
| 2169 bool tile_missing = false; | 2155 bool tile_missing = false; |
| 2170 bool had_incomplete_tile = false; | 2156 bool had_incomplete_tile = false; |
| 2171 bool is_animating = false; | 2157 bool is_animating = false; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 2182 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); | 2168 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); |
| 2183 host_impl_->DidDrawAllLayers(frame2); | 2169 host_impl_->DidDrawAllLayers(frame2); |
| 2184 } | 2170 } |
| 2185 | 2171 |
| 2186 TEST_F(LayerTreeHostImplTest, | 2172 TEST_F(LayerTreeHostImplTest, |
| 2187 PrepareToDrawFailsWhenHighResRequiredAndIncompleteTiles) { | 2173 PrepareToDrawFailsWhenHighResRequiredAndIncompleteTiles) { |
| 2188 host_impl_->active_tree()->SetRootLayer( | 2174 host_impl_->active_tree()->SetRootLayer( |
| 2189 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); | 2175 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); |
| 2190 DidDrawCheckLayer* root = | 2176 DidDrawCheckLayer* root = |
| 2191 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2177 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2178 root->SetHasRenderSurface(true); |
| 2192 | 2179 |
| 2193 LayerTreeHostImpl::FrameData frame; | 2180 LayerTreeHostImpl::FrameData frame; |
| 2194 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 2181 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2195 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2182 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2196 host_impl_->DidDrawAllLayers(frame); | 2183 host_impl_->DidDrawAllLayers(frame); |
| 2197 host_impl_->SwapBuffers(frame); | 2184 host_impl_->SwapBuffers(frame); |
| 2198 | 2185 |
| 2199 bool tile_missing = false; | 2186 bool tile_missing = false; |
| 2200 bool had_incomplete_tile = true; | 2187 bool had_incomplete_tile = true; |
| 2201 bool is_animating = false; | 2188 bool is_animating = false; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2213 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); | 2200 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); |
| 2214 host_impl_->DidDrawAllLayers(frame2); | 2201 host_impl_->DidDrawAllLayers(frame2); |
| 2215 } | 2202 } |
| 2216 | 2203 |
| 2217 TEST_F(LayerTreeHostImplTest, | 2204 TEST_F(LayerTreeHostImplTest, |
| 2218 PrepareToDrawFailsWhenHighResRequiredAndMissingTile) { | 2205 PrepareToDrawFailsWhenHighResRequiredAndMissingTile) { |
| 2219 host_impl_->active_tree()->SetRootLayer( | 2206 host_impl_->active_tree()->SetRootLayer( |
| 2220 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); | 2207 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); |
| 2221 DidDrawCheckLayer* root = | 2208 DidDrawCheckLayer* root = |
| 2222 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2209 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2210 root->SetHasRenderSurface(true); |
| 2223 | 2211 |
| 2224 LayerTreeHostImpl::FrameData frame; | 2212 LayerTreeHostImpl::FrameData frame; |
| 2225 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 2213 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2226 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2214 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2227 host_impl_->DidDrawAllLayers(frame); | 2215 host_impl_->DidDrawAllLayers(frame); |
| 2228 host_impl_->SwapBuffers(frame); | 2216 host_impl_->SwapBuffers(frame); |
| 2229 | 2217 |
| 2230 bool tile_missing = true; | 2218 bool tile_missing = true; |
| 2231 bool had_incomplete_tile = false; | 2219 bool had_incomplete_tile = false; |
| 2232 bool is_animating = false; | 2220 bool is_animating = false; |
| 2233 root->AddChild( | 2221 root->AddChild( |
| 2234 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 2222 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2235 8, | 2223 8, |
| 2236 tile_missing, | 2224 tile_missing, |
| 2237 had_incomplete_tile, | 2225 had_incomplete_tile, |
| 2238 is_animating, | 2226 is_animating, |
| 2239 host_impl_->resource_provider())); | 2227 host_impl_->resource_provider())); |
| 2240 host_impl_->SetRequiresHighResToDraw(); | 2228 host_impl_->SetRequiresHighResToDraw(); |
| 2241 LayerTreeHostImpl::FrameData frame2; | 2229 LayerTreeHostImpl::FrameData frame2; |
| 2242 EXPECT_EQ(DRAW_ABORTED_MISSING_HIGH_RES_CONTENT, | 2230 EXPECT_EQ(DRAW_ABORTED_MISSING_HIGH_RES_CONTENT, |
| 2243 host_impl_->PrepareToDraw(&frame2)); | 2231 host_impl_->PrepareToDraw(&frame2)); |
| 2244 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); | 2232 host_impl_->DrawLayers(&frame2, gfx::FrameTime::Now()); |
| 2245 host_impl_->DidDrawAllLayers(frame2); | 2233 host_impl_->DidDrawAllLayers(frame2); |
| 2246 } | 2234 } |
| 2247 | 2235 |
| 2248 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { | 2236 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { |
| 2249 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 2237 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |
| 2250 root->SetScrollClipLayer(Layer::INVALID_ID); | 2238 root->SetScrollClipLayer(Layer::INVALID_ID); |
| 2239 root->SetHasRenderSurface(true); |
| 2251 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 2240 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 2252 DrawFrame(); | 2241 DrawFrame(); |
| 2253 | 2242 |
| 2254 // Scroll event is ignored because layer is not scrollable. | 2243 // Scroll event is ignored because layer is not scrollable. |
| 2255 EXPECT_EQ(InputHandler::ScrollIgnored, | 2244 EXPECT_EQ(InputHandler::ScrollIgnored, |
| 2256 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel)); | 2245 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel)); |
| 2257 EXPECT_FALSE(did_request_redraw_); | 2246 EXPECT_FALSE(did_request_redraw_); |
| 2258 EXPECT_FALSE(did_request_commit_); | 2247 EXPECT_FALSE(did_request_commit_); |
| 2259 } | 2248 } |
| 2260 | 2249 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2282 LayerImpl::Create(host_impl_->active_tree(), 2); | 2271 LayerImpl::Create(host_impl_->active_tree(), 2); |
| 2283 root_clip->SetBounds(clip_size_); | 2272 root_clip->SetBounds(clip_size_); |
| 2284 root->SetScrollClipLayer(root_clip->id()); | 2273 root->SetScrollClipLayer(root_clip->id()); |
| 2285 root->SetBounds(layer_size_); | 2274 root->SetBounds(layer_size_); |
| 2286 root->SetContentBounds(layer_size_); | 2275 root->SetContentBounds(layer_size_); |
| 2287 root->SetPosition(gfx::PointF()); | 2276 root->SetPosition(gfx::PointF()); |
| 2288 root->SetDrawsContent(false); | 2277 root->SetDrawsContent(false); |
| 2289 root->SetIsContainerForFixedPositionLayers(true); | 2278 root->SetIsContainerForFixedPositionLayers(true); |
| 2290 int inner_viewport_scroll_layer_id = root->id(); | 2279 int inner_viewport_scroll_layer_id = root->id(); |
| 2291 int page_scale_layer_id = root_clip->id(); | 2280 int page_scale_layer_id = root_clip->id(); |
| 2281 root_clip->SetHasRenderSurface(true); |
| 2292 root_clip->AddChild(root.Pass()); | 2282 root_clip->AddChild(root.Pass()); |
| 2283 root_clip->SetHasRenderSurface(true); |
| 2293 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); | 2284 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); |
| 2294 host_impl_->active_tree()->SetViewportLayersFromIds( | 2285 host_impl_->active_tree()->SetViewportLayersFromIds( |
| 2295 page_scale_layer_id, inner_viewport_scroll_layer_id, Layer::INVALID_ID); | 2286 page_scale_layer_id, inner_viewport_scroll_layer_id, Layer::INVALID_ID); |
| 2296 // Set a viewport size that is large enough to contain both the top controls | 2287 // Set a viewport size that is large enough to contain both the top controls |
| 2297 // and some content. | 2288 // and some content. |
| 2298 host_impl_->SetViewportSize(viewport_size_); | 2289 host_impl_->SetViewportSize(viewport_size_); |
| 2299 host_impl_->SetTopControlsLayoutHeight( | 2290 host_impl_->SetTopControlsLayoutHeight( |
| 2300 settings_.top_controls_height); | 2291 settings_.top_controls_height); |
| 2301 | 2292 |
| 2302 host_impl_->CreatePendingTree(); | 2293 host_impl_->CreatePendingTree(); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2342 scoped_ptr<LayerImpl> outer_clip = | 2333 scoped_ptr<LayerImpl> outer_clip = |
| 2343 LayerImpl::Create(host_impl_->active_tree(), 5); | 2334 LayerImpl::Create(host_impl_->active_tree(), 5); |
| 2344 | 2335 |
| 2345 root_clip->SetBounds(inner_viewport_size); | 2336 root_clip->SetBounds(inner_viewport_size); |
| 2346 root->SetScrollClipLayer(root_clip->id()); | 2337 root->SetScrollClipLayer(root_clip->id()); |
| 2347 root->SetBounds(outer_viewport_size); | 2338 root->SetBounds(outer_viewport_size); |
| 2348 root->SetContentBounds(outer_viewport_size); | 2339 root->SetContentBounds(outer_viewport_size); |
| 2349 root->SetPosition(gfx::PointF()); | 2340 root->SetPosition(gfx::PointF()); |
| 2350 root->SetDrawsContent(false); | 2341 root->SetDrawsContent(false); |
| 2351 root->SetIsContainerForFixedPositionLayers(true); | 2342 root->SetIsContainerForFixedPositionLayers(true); |
| 2352 | 2343 root_clip->SetHasRenderSurface(true); |
| 2353 outer_clip->SetBounds(outer_viewport_size); | 2344 outer_clip->SetBounds(outer_viewport_size); |
| 2354 outer_scroll->SetScrollClipLayer(outer_clip->id()); | 2345 outer_scroll->SetScrollClipLayer(outer_clip->id()); |
| 2355 outer_scroll->SetBounds(scroll_layer_size); | 2346 outer_scroll->SetBounds(scroll_layer_size); |
| 2356 outer_scroll->SetContentBounds(scroll_layer_size); | 2347 outer_scroll->SetContentBounds(scroll_layer_size); |
| 2357 outer_scroll->SetPosition(gfx::PointF()); | 2348 outer_scroll->SetPosition(gfx::PointF()); |
| 2358 outer_scroll->SetDrawsContent(false); | 2349 outer_scroll->SetDrawsContent(false); |
| 2359 outer_scroll->SetIsContainerForFixedPositionLayers(true); | 2350 outer_scroll->SetIsContainerForFixedPositionLayers(true); |
| 2360 | 2351 |
| 2361 int inner_viewport_scroll_layer_id = root->id(); | 2352 int inner_viewport_scroll_layer_id = root->id(); |
| 2362 int outer_viewport_scroll_layer_id = outer_scroll->id(); | 2353 int outer_viewport_scroll_layer_id = outer_scroll->id(); |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2796 | 2787 |
| 2797 scoped_ptr<LayerImpl> scroll_layer = | 2788 scoped_ptr<LayerImpl> scroll_layer = |
| 2798 LayerImpl::Create(host_impl_->active_tree(), 2); | 2789 LayerImpl::Create(host_impl_->active_tree(), 2); |
| 2799 scroll_layer->SetScrollClipLayer(3); | 2790 scroll_layer->SetScrollClipLayer(3); |
| 2800 scroll_layer->SetBounds(contents_size); | 2791 scroll_layer->SetBounds(contents_size); |
| 2801 scroll_layer->SetContentBounds(contents_size); | 2792 scroll_layer->SetContentBounds(contents_size); |
| 2802 scroll_layer->SetPosition(gfx::PointF()); | 2793 scroll_layer->SetPosition(gfx::PointF()); |
| 2803 scroll_layer->AddChild(content_layer.Pass()); | 2794 scroll_layer->AddChild(content_layer.Pass()); |
| 2804 scroll_clip_layer->AddChild(scroll_layer.Pass()); | 2795 scroll_clip_layer->AddChild(scroll_layer.Pass()); |
| 2805 | 2796 |
| 2797 scroll_clip_layer->SetHasRenderSurface(true); |
| 2806 host_impl_->active_tree()->SetRootLayer(scroll_clip_layer.Pass()); | 2798 host_impl_->active_tree()->SetRootLayer(scroll_clip_layer.Pass()); |
| 2807 host_impl_->SetViewportSize(surface_size); | 2799 host_impl_->SetViewportSize(surface_size); |
| 2808 DrawFrame(); | 2800 DrawFrame(); |
| 2809 | 2801 |
| 2810 EXPECT_EQ(InputHandler::ScrollStarted, | 2802 EXPECT_EQ(InputHandler::ScrollStarted, |
| 2811 host_impl_->ScrollBegin(gfx::Point(5, 5), | 2803 host_impl_->ScrollBegin(gfx::Point(5, 5), |
| 2812 InputHandler::Wheel)); | 2804 InputHandler::Wheel)); |
| 2813 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); | 2805 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); |
| 2814 host_impl_->ScrollEnd(); | 2806 host_impl_->ScrollEnd(); |
| 2815 EXPECT_TRUE(did_request_redraw_); | 2807 EXPECT_TRUE(did_request_redraw_); |
| 2816 EXPECT_TRUE(did_request_commit_); | 2808 EXPECT_TRUE(did_request_commit_); |
| 2817 } | 2809 } |
| 2818 | 2810 |
| 2819 TEST_F(LayerTreeHostImplTest, ScrollChildCallsCommitAndRedraw) { | 2811 TEST_F(LayerTreeHostImplTest, ScrollChildCallsCommitAndRedraw) { |
| 2820 gfx::Size surface_size(10, 10); | 2812 gfx::Size surface_size(10, 10); |
| 2821 gfx::Size contents_size(20, 20); | 2813 gfx::Size contents_size(20, 20); |
| 2822 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 2814 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |
| 2823 root->SetBounds(surface_size); | 2815 root->SetBounds(surface_size); |
| 2824 root->SetContentBounds(contents_size); | 2816 root->SetContentBounds(contents_size); |
| 2825 root->AddChild(CreateScrollableLayer(2, contents_size, root.get())); | 2817 root->AddChild(CreateScrollableLayer(2, contents_size, root.get())); |
| 2818 root->SetHasRenderSurface(true); |
| 2826 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 2819 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 2827 host_impl_->SetViewportSize(surface_size); | 2820 host_impl_->SetViewportSize(surface_size); |
| 2828 DrawFrame(); | 2821 DrawFrame(); |
| 2829 | 2822 |
| 2830 EXPECT_EQ(InputHandler::ScrollStarted, | 2823 EXPECT_EQ(InputHandler::ScrollStarted, |
| 2831 host_impl_->ScrollBegin(gfx::Point(5, 5), | 2824 host_impl_->ScrollBegin(gfx::Point(5, 5), |
| 2832 InputHandler::Wheel)); | 2825 InputHandler::Wheel)); |
| 2833 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); | 2826 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); |
| 2834 host_impl_->ScrollEnd(); | 2827 host_impl_->ScrollEnd(); |
| 2835 EXPECT_TRUE(did_request_redraw_); | 2828 EXPECT_TRUE(did_request_redraw_); |
| 2836 EXPECT_TRUE(did_request_commit_); | 2829 EXPECT_TRUE(did_request_commit_); |
| 2837 } | 2830 } |
| 2838 | 2831 |
| 2839 TEST_F(LayerTreeHostImplTest, ScrollMissesChild) { | 2832 TEST_F(LayerTreeHostImplTest, ScrollMissesChild) { |
| 2840 gfx::Size surface_size(10, 10); | 2833 gfx::Size surface_size(10, 10); |
| 2841 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 2834 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |
| 2842 root->AddChild(CreateScrollableLayer(2, surface_size, root.get())); | 2835 root->AddChild(CreateScrollableLayer(2, surface_size, root.get())); |
| 2836 root->SetHasRenderSurface(true); |
| 2843 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 2837 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 2844 host_impl_->SetViewportSize(surface_size); | 2838 host_impl_->SetViewportSize(surface_size); |
| 2845 DrawFrame(); | 2839 DrawFrame(); |
| 2846 | 2840 |
| 2847 // Scroll event is ignored because the input coordinate is outside the layer | 2841 // Scroll event is ignored because the input coordinate is outside the layer |
| 2848 // boundaries. | 2842 // boundaries. |
| 2849 EXPECT_EQ(InputHandler::ScrollIgnored, | 2843 EXPECT_EQ(InputHandler::ScrollIgnored, |
| 2850 host_impl_->ScrollBegin(gfx::Point(15, 5), | 2844 host_impl_->ScrollBegin(gfx::Point(15, 5), |
| 2851 InputHandler::Wheel)); | 2845 InputHandler::Wheel)); |
| 2852 EXPECT_FALSE(did_request_redraw_); | 2846 EXPECT_FALSE(did_request_redraw_); |
| 2853 EXPECT_FALSE(did_request_commit_); | 2847 EXPECT_FALSE(did_request_commit_); |
| 2854 } | 2848 } |
| 2855 | 2849 |
| 2856 TEST_F(LayerTreeHostImplTest, ScrollMissesBackfacingChild) { | 2850 TEST_F(LayerTreeHostImplTest, ScrollMissesBackfacingChild) { |
| 2857 gfx::Size surface_size(10, 10); | 2851 gfx::Size surface_size(10, 10); |
| 2858 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 2852 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |
| 2853 root->SetHasRenderSurface(true); |
| 2859 scoped_ptr<LayerImpl> child = | 2854 scoped_ptr<LayerImpl> child = |
| 2860 CreateScrollableLayer(2, surface_size, root.get()); | 2855 CreateScrollableLayer(2, surface_size, root.get()); |
| 2861 host_impl_->SetViewportSize(surface_size); | 2856 host_impl_->SetViewportSize(surface_size); |
| 2862 | 2857 |
| 2863 gfx::Transform matrix; | 2858 gfx::Transform matrix; |
| 2864 matrix.RotateAboutXAxis(180.0); | 2859 matrix.RotateAboutXAxis(180.0); |
| 2865 child->SetTransform(matrix); | 2860 child->SetTransform(matrix); |
| 2866 child->SetDoubleSided(false); | 2861 child->SetDoubleSided(false); |
| 2867 | 2862 |
| 2868 root->AddChild(child.Pass()); | 2863 root->AddChild(child.Pass()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 2886 CreateScrollableLayer(1, surface_size, clip_layer.get()); | 2881 CreateScrollableLayer(1, surface_size, clip_layer.get()); |
| 2887 content_layer->SetShouldScrollOnMainThread(true); | 2882 content_layer->SetShouldScrollOnMainThread(true); |
| 2888 content_layer->SetScrollClipLayer(Layer::INVALID_ID); | 2883 content_layer->SetScrollClipLayer(Layer::INVALID_ID); |
| 2889 | 2884 |
| 2890 // Note: we can use the same clip layer for both since both calls to | 2885 // Note: we can use the same clip layer for both since both calls to |
| 2891 // CreateScrollableLayer() use the same surface size. | 2886 // CreateScrollableLayer() use the same surface size. |
| 2892 scoped_ptr<LayerImpl> scroll_layer = | 2887 scoped_ptr<LayerImpl> scroll_layer = |
| 2893 CreateScrollableLayer(2, surface_size, clip_layer.get()); | 2888 CreateScrollableLayer(2, surface_size, clip_layer.get()); |
| 2894 scroll_layer->AddChild(content_layer.Pass()); | 2889 scroll_layer->AddChild(content_layer.Pass()); |
| 2895 clip_layer->AddChild(scroll_layer.Pass()); | 2890 clip_layer->AddChild(scroll_layer.Pass()); |
| 2891 clip_layer->SetHasRenderSurface(true); |
| 2896 | 2892 |
| 2897 host_impl_->active_tree()->SetRootLayer(clip_layer.Pass()); | 2893 host_impl_->active_tree()->SetRootLayer(clip_layer.Pass()); |
| 2898 host_impl_->SetViewportSize(surface_size); | 2894 host_impl_->SetViewportSize(surface_size); |
| 2899 DrawFrame(); | 2895 DrawFrame(); |
| 2900 | 2896 |
| 2901 // Scrolling fails because the content layer is asking to be scrolled on the | 2897 // Scrolling fails because the content layer is asking to be scrolled on the |
| 2902 // main thread. | 2898 // main thread. |
| 2903 EXPECT_EQ(InputHandler::ScrollOnMainThread, | 2899 EXPECT_EQ(InputHandler::ScrollOnMainThread, |
| 2904 host_impl_->ScrollBegin(gfx::Point(5, 5), | 2900 host_impl_->ScrollBegin(gfx::Point(5, 5), |
| 2905 InputHandler::Wheel)); | 2901 InputHandler::Wheel)); |
| 2906 } | 2902 } |
| 2907 | 2903 |
| 2908 TEST_F(LayerTreeHostImplTest, ScrollRootAndChangePageScaleOnMainThread) { | 2904 TEST_F(LayerTreeHostImplTest, ScrollRootAndChangePageScaleOnMainThread) { |
| 2909 gfx::Size surface_size(20, 20); | 2905 gfx::Size surface_size(20, 20); |
| 2910 gfx::Size viewport_size(10, 10); | 2906 gfx::Size viewport_size(10, 10); |
| 2911 float page_scale = 2.f; | 2907 float page_scale = 2.f; |
| 2912 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 2908 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |
| 2913 scoped_ptr<LayerImpl> root_clip = | 2909 scoped_ptr<LayerImpl> root_clip = |
| 2914 LayerImpl::Create(host_impl_->active_tree(), 2); | 2910 LayerImpl::Create(host_impl_->active_tree(), 2); |
| 2915 scoped_ptr<LayerImpl> root_scrolling = | 2911 scoped_ptr<LayerImpl> root_scrolling = |
| 2916 CreateScrollableLayer(3, surface_size, root_clip.get()); | 2912 CreateScrollableLayer(3, surface_size, root_clip.get()); |
| 2917 EXPECT_EQ(viewport_size, root_clip->bounds()); | 2913 EXPECT_EQ(viewport_size, root_clip->bounds()); |
| 2918 root_scrolling->SetIsContainerForFixedPositionLayers(true); | 2914 root_scrolling->SetIsContainerForFixedPositionLayers(true); |
| 2919 root_clip->AddChild(root_scrolling.Pass()); | 2915 root_clip->AddChild(root_scrolling.Pass()); |
| 2920 root->AddChild(root_clip.Pass()); | 2916 root->AddChild(root_clip.Pass()); |
| 2917 root->SetHasRenderSurface(true); |
| 2921 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 2918 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 2922 // The behaviour in this test assumes the page scale is applied at a layer | 2919 // The behaviour in this test assumes the page scale is applied at a layer |
| 2923 // above the clip layer. | 2920 // above the clip layer. |
| 2924 host_impl_->active_tree()->SetViewportLayersFromIds(1, 3, Layer::INVALID_ID); | 2921 host_impl_->active_tree()->SetViewportLayersFromIds(1, 3, Layer::INVALID_ID); |
| 2925 host_impl_->active_tree()->DidBecomeActive(); | 2922 host_impl_->active_tree()->DidBecomeActive(); |
| 2926 host_impl_->SetViewportSize(viewport_size); | 2923 host_impl_->SetViewportSize(viewport_size); |
| 2927 DrawFrame(); | 2924 DrawFrame(); |
| 2928 | 2925 |
| 2929 LayerImpl* root_scroll = | 2926 LayerImpl* root_scroll = |
| 2930 host_impl_->active_tree()->InnerViewportScrollLayer(); | 2927 host_impl_->active_tree()->InnerViewportScrollLayer(); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 2961 float page_scale = 2.f; | 2958 float page_scale = 2.f; |
| 2962 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 2959 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |
| 2963 scoped_ptr<LayerImpl> root_clip = | 2960 scoped_ptr<LayerImpl> root_clip = |
| 2964 LayerImpl::Create(host_impl_->active_tree(), 2); | 2961 LayerImpl::Create(host_impl_->active_tree(), 2); |
| 2965 scoped_ptr<LayerImpl> root_scrolling = | 2962 scoped_ptr<LayerImpl> root_scrolling = |
| 2966 CreateScrollableLayer(3, surface_size, root_clip.get()); | 2963 CreateScrollableLayer(3, surface_size, root_clip.get()); |
| 2967 EXPECT_EQ(viewport_size, root_clip->bounds()); | 2964 EXPECT_EQ(viewport_size, root_clip->bounds()); |
| 2968 root_scrolling->SetIsContainerForFixedPositionLayers(true); | 2965 root_scrolling->SetIsContainerForFixedPositionLayers(true); |
| 2969 root_clip->AddChild(root_scrolling.Pass()); | 2966 root_clip->AddChild(root_scrolling.Pass()); |
| 2970 root->AddChild(root_clip.Pass()); | 2967 root->AddChild(root_clip.Pass()); |
| 2968 root->SetHasRenderSurface(true); |
| 2971 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 2969 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 2972 // The behaviour in this test assumes the page scale is applied at a layer | 2970 // The behaviour in this test assumes the page scale is applied at a layer |
| 2973 // above the clip layer. | 2971 // above the clip layer. |
| 2974 host_impl_->active_tree()->SetViewportLayersFromIds(1, 3, Layer::INVALID_ID); | 2972 host_impl_->active_tree()->SetViewportLayersFromIds(1, 3, Layer::INVALID_ID); |
| 2975 host_impl_->active_tree()->DidBecomeActive(); | 2973 host_impl_->active_tree()->DidBecomeActive(); |
| 2976 host_impl_->SetViewportSize(viewport_size); | 2974 host_impl_->SetViewportSize(viewport_size); |
| 2977 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 1.f, page_scale); | 2975 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 1.f, page_scale); |
| 2978 DrawFrame(); | 2976 DrawFrame(); |
| 2979 | 2977 |
| 2980 LayerImpl* root_scroll = | 2978 LayerImpl* root_scroll = |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3065 EXPECT_EQ(new_page_scale, | 3063 EXPECT_EQ(new_page_scale, |
| 3066 grand_child->draw_transform().matrix().getDouble(0, 0)); | 3064 grand_child->draw_transform().matrix().getDouble(0, 0)); |
| 3067 EXPECT_EQ(new_page_scale, | 3065 EXPECT_EQ(new_page_scale, |
| 3068 grand_child->draw_transform().matrix().getDouble(1, 1)); | 3066 grand_child->draw_transform().matrix().getDouble(1, 1)); |
| 3069 } | 3067 } |
| 3070 | 3068 |
| 3071 TEST_F(LayerTreeHostImplTest, ScrollChildAndChangePageScaleOnMainThread) { | 3069 TEST_F(LayerTreeHostImplTest, ScrollChildAndChangePageScaleOnMainThread) { |
| 3072 gfx::Size surface_size(30, 30); | 3070 gfx::Size surface_size(30, 30); |
| 3073 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 3071 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |
| 3074 root->SetBounds(gfx::Size(5, 5)); | 3072 root->SetBounds(gfx::Size(5, 5)); |
| 3073 root->SetHasRenderSurface(true); |
| 3075 scoped_ptr<LayerImpl> root_scrolling = | 3074 scoped_ptr<LayerImpl> root_scrolling = |
| 3076 LayerImpl::Create(host_impl_->active_tree(), 2); | 3075 LayerImpl::Create(host_impl_->active_tree(), 2); |
| 3077 root_scrolling->SetBounds(surface_size); | 3076 root_scrolling->SetBounds(surface_size); |
| 3078 root_scrolling->SetContentBounds(surface_size); | 3077 root_scrolling->SetContentBounds(surface_size); |
| 3079 root_scrolling->SetScrollClipLayer(root->id()); | 3078 root_scrolling->SetScrollClipLayer(root->id()); |
| 3080 root_scrolling->SetIsContainerForFixedPositionLayers(true); | 3079 root_scrolling->SetIsContainerForFixedPositionLayers(true); |
| 3081 LayerImpl* root_scrolling_ptr = root_scrolling.get(); | 3080 LayerImpl* root_scrolling_ptr = root_scrolling.get(); |
| 3082 root->AddChild(root_scrolling.Pass()); | 3081 root->AddChild(root_scrolling.Pass()); |
| 3083 int child_scroll_layer_id = 3; | 3082 int child_scroll_layer_id = 3; |
| 3084 scoped_ptr<LayerImpl> child_scrolling = CreateScrollableLayer( | 3083 scoped_ptr<LayerImpl> child_scrolling = CreateScrollableLayer( |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3120 } | 3119 } |
| 3121 | 3120 |
| 3122 TEST_F(LayerTreeHostImplTest, ScrollChildBeyondLimit) { | 3121 TEST_F(LayerTreeHostImplTest, ScrollChildBeyondLimit) { |
| 3123 // Scroll a child layer beyond its maximum scroll range and make sure the | 3122 // Scroll a child layer beyond its maximum scroll range and make sure the |
| 3124 // parent layer is scrolled on the axis on which the child was unable to | 3123 // parent layer is scrolled on the axis on which the child was unable to |
| 3125 // scroll. | 3124 // scroll. |
| 3126 gfx::Size surface_size(10, 10); | 3125 gfx::Size surface_size(10, 10); |
| 3127 gfx::Size content_size(20, 20); | 3126 gfx::Size content_size(20, 20); |
| 3128 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 3127 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |
| 3129 root->SetBounds(surface_size); | 3128 root->SetBounds(surface_size); |
| 3130 | 3129 root->SetHasRenderSurface(true); |
| 3131 scoped_ptr<LayerImpl> grand_child = | 3130 scoped_ptr<LayerImpl> grand_child = |
| 3132 CreateScrollableLayer(3, content_size, root.get()); | 3131 CreateScrollableLayer(3, content_size, root.get()); |
| 3133 | 3132 |
| 3134 scoped_ptr<LayerImpl> child = | 3133 scoped_ptr<LayerImpl> child = |
| 3135 CreateScrollableLayer(2, content_size, root.get()); | 3134 CreateScrollableLayer(2, content_size, root.get()); |
| 3136 LayerImpl* grand_child_layer = grand_child.get(); | 3135 LayerImpl* grand_child_layer = grand_child.get(); |
| 3137 child->AddChild(grand_child.Pass()); | 3136 child->AddChild(grand_child.Pass()); |
| 3138 | 3137 |
| 3139 LayerImpl* child_layer = child.get(); | 3138 LayerImpl* child_layer = child.get(); |
| 3140 root->AddChild(child.Pass()); | 3139 root->AddChild(child.Pass()); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 3165 ExpectContains(*scroll_info.get(), child->id(), gfx::Vector2d(-3, 0)); | 3164 ExpectContains(*scroll_info.get(), child->id(), gfx::Vector2d(-3, 0)); |
| 3166 } | 3165 } |
| 3167 } | 3166 } |
| 3168 | 3167 |
| 3169 TEST_F(LayerTreeHostImplTest, ScrollWithoutBubbling) { | 3168 TEST_F(LayerTreeHostImplTest, ScrollWithoutBubbling) { |
| 3170 // Scroll a child layer beyond its maximum scroll range and make sure the | 3169 // Scroll a child layer beyond its maximum scroll range and make sure the |
| 3171 // the scroll doesn't bubble up to the parent layer. | 3170 // the scroll doesn't bubble up to the parent layer. |
| 3172 gfx::Size surface_size(20, 20); | 3171 gfx::Size surface_size(20, 20); |
| 3173 gfx::Size viewport_size(10, 10); | 3172 gfx::Size viewport_size(10, 10); |
| 3174 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 3173 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |
| 3174 root->SetHasRenderSurface(true); |
| 3175 scoped_ptr<LayerImpl> root_scrolling = | 3175 scoped_ptr<LayerImpl> root_scrolling = |
| 3176 CreateScrollableLayer(2, surface_size, root.get()); | 3176 CreateScrollableLayer(2, surface_size, root.get()); |
| 3177 root_scrolling->SetIsContainerForFixedPositionLayers(true); | 3177 root_scrolling->SetIsContainerForFixedPositionLayers(true); |
| 3178 | 3178 |
| 3179 scoped_ptr<LayerImpl> grand_child = | 3179 scoped_ptr<LayerImpl> grand_child = |
| 3180 CreateScrollableLayer(4, surface_size, root.get()); | 3180 CreateScrollableLayer(4, surface_size, root.get()); |
| 3181 | 3181 |
| 3182 scoped_ptr<LayerImpl> child = | 3182 scoped_ptr<LayerImpl> child = |
| 3183 CreateScrollableLayer(3, surface_size, root.get()); | 3183 CreateScrollableLayer(3, surface_size, root.get()); |
| 3184 LayerImpl* grand_child_layer = grand_child.get(); | 3184 LayerImpl* grand_child_layer = grand_child.get(); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3273 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, 4)); | 3273 ExpectContains(*scroll_info.get(), grand_child->id(), gfx::Vector2d(0, 4)); |
| 3274 } | 3274 } |
| 3275 } | 3275 } |
| 3276 TEST_F(LayerTreeHostImplTest, ScrollEventBubbling) { | 3276 TEST_F(LayerTreeHostImplTest, ScrollEventBubbling) { |
| 3277 // When we try to scroll a non-scrollable child layer, the scroll delta | 3277 // When we try to scroll a non-scrollable child layer, the scroll delta |
| 3278 // should be applied to one of its ancestors if possible. | 3278 // should be applied to one of its ancestors if possible. |
| 3279 gfx::Size surface_size(10, 10); | 3279 gfx::Size surface_size(10, 10); |
| 3280 gfx::Size content_size(20, 20); | 3280 gfx::Size content_size(20, 20); |
| 3281 scoped_ptr<LayerImpl> root_clip = | 3281 scoped_ptr<LayerImpl> root_clip = |
| 3282 LayerImpl::Create(host_impl_->active_tree(), 3); | 3282 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 3283 root_clip->SetHasRenderSurface(true); |
| 3283 scoped_ptr<LayerImpl> root = | 3284 scoped_ptr<LayerImpl> root = |
| 3284 CreateScrollableLayer(1, content_size, root_clip.get()); | 3285 CreateScrollableLayer(1, content_size, root_clip.get()); |
| 3285 // Make 'root' the clip layer for child: since they have the same sizes the | 3286 // Make 'root' the clip layer for child: since they have the same sizes the |
| 3286 // child will have zero max_scroll_offset and scrolls will bubble. | 3287 // child will have zero max_scroll_offset and scrolls will bubble. |
| 3287 scoped_ptr<LayerImpl> child = | 3288 scoped_ptr<LayerImpl> child = |
| 3288 CreateScrollableLayer(2, content_size, root.get()); | 3289 CreateScrollableLayer(2, content_size, root.get()); |
| 3289 child->SetIsContainerForFixedPositionLayers(true); | 3290 child->SetIsContainerForFixedPositionLayers(true); |
| 3290 root->SetBounds(content_size); | 3291 root->SetBounds(content_size); |
| 3291 | 3292 |
| 3292 int root_scroll_id = root->id(); | 3293 int root_scroll_id = root->id(); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 3315 } | 3316 } |
| 3316 } | 3317 } |
| 3317 | 3318 |
| 3318 TEST_F(LayerTreeHostImplTest, ScrollBeforeRedraw) { | 3319 TEST_F(LayerTreeHostImplTest, ScrollBeforeRedraw) { |
| 3319 gfx::Size surface_size(10, 10); | 3320 gfx::Size surface_size(10, 10); |
| 3320 scoped_ptr<LayerImpl> root_clip = | 3321 scoped_ptr<LayerImpl> root_clip = |
| 3321 LayerImpl::Create(host_impl_->active_tree(), 1); | 3322 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 3322 scoped_ptr<LayerImpl> root_scroll = | 3323 scoped_ptr<LayerImpl> root_scroll = |
| 3323 CreateScrollableLayer(2, surface_size, root_clip.get()); | 3324 CreateScrollableLayer(2, surface_size, root_clip.get()); |
| 3324 root_scroll->SetIsContainerForFixedPositionLayers(true); | 3325 root_scroll->SetIsContainerForFixedPositionLayers(true); |
| 3326 root_clip->SetHasRenderSurface(true); |
| 3325 root_clip->AddChild(root_scroll.Pass()); | 3327 root_clip->AddChild(root_scroll.Pass()); |
| 3326 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); | 3328 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); |
| 3327 host_impl_->active_tree()->SetViewportLayersFromIds(1, 2, Layer::INVALID_ID); | 3329 host_impl_->active_tree()->SetViewportLayersFromIds(1, 2, Layer::INVALID_ID); |
| 3328 host_impl_->active_tree()->DidBecomeActive(); | 3330 host_impl_->active_tree()->DidBecomeActive(); |
| 3329 host_impl_->SetViewportSize(surface_size); | 3331 host_impl_->SetViewportSize(surface_size); |
| 3330 | 3332 |
| 3331 // Draw one frame and then immediately rebuild the layer tree to mimic a tree | 3333 // Draw one frame and then immediately rebuild the layer tree to mimic a tree |
| 3332 // synchronization. | 3334 // synchronization. |
| 3333 DrawFrame(); | 3335 DrawFrame(); |
| 3334 host_impl_->active_tree()->DetachLayerTree(); | 3336 host_impl_->active_tree()->DetachLayerTree(); |
| 3335 scoped_ptr<LayerImpl> root_clip2 = | 3337 scoped_ptr<LayerImpl> root_clip2 = |
| 3336 LayerImpl::Create(host_impl_->active_tree(), 3); | 3338 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 3337 scoped_ptr<LayerImpl> root_scroll2 = | 3339 scoped_ptr<LayerImpl> root_scroll2 = |
| 3338 CreateScrollableLayer(4, surface_size, root_clip2.get()); | 3340 CreateScrollableLayer(4, surface_size, root_clip2.get()); |
| 3339 root_scroll2->SetIsContainerForFixedPositionLayers(true); | 3341 root_scroll2->SetIsContainerForFixedPositionLayers(true); |
| 3340 root_clip2->AddChild(root_scroll2.Pass()); | 3342 root_clip2->AddChild(root_scroll2.Pass()); |
| 3343 root_clip2->SetHasRenderSurface(true); |
| 3341 host_impl_->active_tree()->SetRootLayer(root_clip2.Pass()); | 3344 host_impl_->active_tree()->SetRootLayer(root_clip2.Pass()); |
| 3342 host_impl_->active_tree()->SetViewportLayersFromIds(3, 4, Layer::INVALID_ID); | 3345 host_impl_->active_tree()->SetViewportLayersFromIds(3, 4, Layer::INVALID_ID); |
| 3343 host_impl_->active_tree()->DidBecomeActive(); | 3346 host_impl_->active_tree()->DidBecomeActive(); |
| 3344 | 3347 |
| 3345 // Scrolling should still work even though we did not draw yet. | 3348 // Scrolling should still work even though we did not draw yet. |
| 3346 EXPECT_EQ(InputHandler::ScrollStarted, | 3349 EXPECT_EQ(InputHandler::ScrollStarted, |
| 3347 host_impl_->ScrollBegin(gfx::Point(5, 5), | 3350 host_impl_->ScrollBegin(gfx::Point(5, 5), |
| 3348 InputHandler::Wheel)); | 3351 InputHandler::Wheel)); |
| 3349 } | 3352 } |
| 3350 | 3353 |
| (...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3844 host_impl_->ScrollEnd(); | 3847 host_impl_->ScrollEnd(); |
| 3845 } | 3848 } |
| 3846 | 3849 |
| 3847 | 3850 |
| 3848 TEST_F(LayerTreeHostImplTest, OverscrollChildWithoutBubbling) { | 3851 TEST_F(LayerTreeHostImplTest, OverscrollChildWithoutBubbling) { |
| 3849 // Scroll child layers beyond their maximum scroll range and make sure root | 3852 // Scroll child layers beyond their maximum scroll range and make sure root |
| 3850 // overscroll does not accumulate. | 3853 // overscroll does not accumulate. |
| 3851 gfx::Size surface_size(10, 10); | 3854 gfx::Size surface_size(10, 10); |
| 3852 scoped_ptr<LayerImpl> root_clip = | 3855 scoped_ptr<LayerImpl> root_clip = |
| 3853 LayerImpl::Create(host_impl_->active_tree(), 4); | 3856 LayerImpl::Create(host_impl_->active_tree(), 4); |
| 3857 root_clip->SetHasRenderSurface(true); |
| 3858 |
| 3854 scoped_ptr<LayerImpl> root = | 3859 scoped_ptr<LayerImpl> root = |
| 3855 CreateScrollableLayer(1, surface_size, root_clip.get()); | 3860 CreateScrollableLayer(1, surface_size, root_clip.get()); |
| 3856 | 3861 |
| 3857 scoped_ptr<LayerImpl> grand_child = | 3862 scoped_ptr<LayerImpl> grand_child = |
| 3858 CreateScrollableLayer(3, surface_size, root_clip.get()); | 3863 CreateScrollableLayer(3, surface_size, root_clip.get()); |
| 3859 | 3864 |
| 3860 scoped_ptr<LayerImpl> child = | 3865 scoped_ptr<LayerImpl> child = |
| 3861 CreateScrollableLayer(2, surface_size, root_clip.get()); | 3866 CreateScrollableLayer(2, surface_size, root_clip.get()); |
| 3862 LayerImpl* grand_child_layer = grand_child.get(); | 3867 LayerImpl* grand_child_layer = grand_child.get(); |
| 3863 child->AddChild(grand_child.Pass()); | 3868 child->AddChild(grand_child.Pass()); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3908 } | 3913 } |
| 3909 | 3914 |
| 3910 TEST_F(LayerTreeHostImplTest, OverscrollChildEventBubbling) { | 3915 TEST_F(LayerTreeHostImplTest, OverscrollChildEventBubbling) { |
| 3911 // When we try to scroll a non-scrollable child layer, the scroll delta | 3916 // When we try to scroll a non-scrollable child layer, the scroll delta |
| 3912 // should be applied to one of its ancestors if possible. Overscroll should | 3917 // should be applied to one of its ancestors if possible. Overscroll should |
| 3913 // be reflected only when it has bubbled up to the root scrolling layer. | 3918 // be reflected only when it has bubbled up to the root scrolling layer. |
| 3914 gfx::Size surface_size(10, 10); | 3919 gfx::Size surface_size(10, 10); |
| 3915 gfx::Size content_size(20, 20); | 3920 gfx::Size content_size(20, 20); |
| 3916 scoped_ptr<LayerImpl> root_clip = | 3921 scoped_ptr<LayerImpl> root_clip = |
| 3917 LayerImpl::Create(host_impl_->active_tree(), 3); | 3922 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 3923 root_clip->SetHasRenderSurface(true); |
| 3924 |
| 3918 scoped_ptr<LayerImpl> root = | 3925 scoped_ptr<LayerImpl> root = |
| 3919 CreateScrollableLayer(1, content_size, root_clip.get()); | 3926 CreateScrollableLayer(1, content_size, root_clip.get()); |
| 3920 root->SetIsContainerForFixedPositionLayers(true); | 3927 root->SetIsContainerForFixedPositionLayers(true); |
| 3921 scoped_ptr<LayerImpl> child = | 3928 scoped_ptr<LayerImpl> child = |
| 3922 CreateScrollableLayer(2, content_size, root_clip.get()); | 3929 CreateScrollableLayer(2, content_size, root_clip.get()); |
| 3923 | 3930 |
| 3924 child->SetScrollClipLayer(Layer::INVALID_ID); | 3931 child->SetScrollClipLayer(Layer::INVALID_ID); |
| 3925 root->AddChild(child.Pass()); | 3932 root->AddChild(child.Pass()); |
| 3926 root_clip->AddChild(root.Pass()); | 3933 root_clip->AddChild(root.Pass()); |
| 3927 | 3934 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3963 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); | 3970 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); |
| 3964 EXPECT_EQ(gfx::Vector2dF(0, 10), host_impl_->accumulated_root_overscroll()); | 3971 EXPECT_EQ(gfx::Vector2dF(0, 10), host_impl_->accumulated_root_overscroll()); |
| 3965 } | 3972 } |
| 3966 | 3973 |
| 3967 TEST_F(LayerTreeHostImplTest, NoOverscrollOnFractionalDeviceScale) { | 3974 TEST_F(LayerTreeHostImplTest, NoOverscrollOnFractionalDeviceScale) { |
| 3968 gfx::Size surface_size(980, 1439); | 3975 gfx::Size surface_size(980, 1439); |
| 3969 gfx::Size content_size(980, 1438); | 3976 gfx::Size content_size(980, 1438); |
| 3970 float device_scale_factor = 1.5f; | 3977 float device_scale_factor = 1.5f; |
| 3971 scoped_ptr<LayerImpl> root_clip = | 3978 scoped_ptr<LayerImpl> root_clip = |
| 3972 LayerImpl::Create(host_impl_->active_tree(), 3); | 3979 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 3980 root_clip->SetHasRenderSurface(true); |
| 3981 |
| 3973 scoped_ptr<LayerImpl> root = | 3982 scoped_ptr<LayerImpl> root = |
| 3974 CreateScrollableLayer(1, content_size, root_clip.get()); | 3983 CreateScrollableLayer(1, content_size, root_clip.get()); |
| 3975 root->SetIsContainerForFixedPositionLayers(true); | 3984 root->SetIsContainerForFixedPositionLayers(true); |
| 3976 scoped_ptr<LayerImpl> child = | 3985 scoped_ptr<LayerImpl> child = |
| 3977 CreateScrollableLayer(2, content_size, root_clip.get()); | 3986 CreateScrollableLayer(2, content_size, root_clip.get()); |
| 3978 root->scroll_clip_layer()->SetBounds(gfx::Size(320, 469)); | 3987 root->scroll_clip_layer()->SetBounds(gfx::Size(320, 469)); |
| 3979 host_impl_->active_tree()->SetPageScaleFactorAndLimits( | 3988 host_impl_->active_tree()->SetPageScaleFactorAndLimits( |
| 3980 0.326531f, 0.326531f, 5.f); | 3989 0.326531f, 0.326531f, 5.f); |
| 3981 host_impl_->active_tree()->SetPageScaleDelta(1.f); | 3990 host_impl_->active_tree()->SetPageScaleDelta(1.f); |
| 3982 child->SetScrollClipLayer(Layer::INVALID_ID); | 3991 child->SetScrollClipLayer(Layer::INVALID_ID); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 4001 | 4010 |
| 4002 host_impl_->ScrollEnd(); | 4011 host_impl_->ScrollEnd(); |
| 4003 } | 4012 } |
| 4004 } | 4013 } |
| 4005 | 4014 |
| 4006 TEST_F(LayerTreeHostImplTest, NoOverscrollWhenNotAtEdge) { | 4015 TEST_F(LayerTreeHostImplTest, NoOverscrollWhenNotAtEdge) { |
| 4007 gfx::Size surface_size(100, 100); | 4016 gfx::Size surface_size(100, 100); |
| 4008 gfx::Size content_size(200, 200); | 4017 gfx::Size content_size(200, 200); |
| 4009 scoped_ptr<LayerImpl> root_clip = | 4018 scoped_ptr<LayerImpl> root_clip = |
| 4010 LayerImpl::Create(host_impl_->active_tree(), 3); | 4019 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 4020 root_clip->SetHasRenderSurface(true); |
| 4021 |
| 4011 scoped_ptr<LayerImpl> root = | 4022 scoped_ptr<LayerImpl> root = |
| 4012 CreateScrollableLayer(1, content_size, root_clip.get()); | 4023 CreateScrollableLayer(1, content_size, root_clip.get()); |
| 4013 root->SetIsContainerForFixedPositionLayers(true); | 4024 root->SetIsContainerForFixedPositionLayers(true); |
| 4014 scoped_ptr<LayerImpl> child = | 4025 scoped_ptr<LayerImpl> child = |
| 4015 CreateScrollableLayer(2, content_size, root_clip.get()); | 4026 CreateScrollableLayer(2, content_size, root_clip.get()); |
| 4016 | 4027 |
| 4017 child->SetScrollClipLayer(Layer::INVALID_ID); | 4028 child->SetScrollClipLayer(Layer::INVALID_ID); |
| 4018 root->AddChild(child.Pass()); | 4029 root->AddChild(child.Pass()); |
| 4019 root_clip->AddChild(root.Pass()); | 4030 root_clip->AddChild(root.Pass()); |
| 4020 | 4031 |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4145 ResourceProvider::ResourceId resource_id_; | 4156 ResourceProvider::ResourceId resource_id_; |
| 4146 }; | 4157 }; |
| 4147 | 4158 |
| 4148 TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { | 4159 TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
| 4149 { | 4160 { |
| 4150 scoped_ptr<LayerImpl> root = | 4161 scoped_ptr<LayerImpl> root = |
| 4151 LayerImpl::Create(host_impl_->active_tree(), 1); | 4162 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 4152 root->SetBounds(gfx::Size(10, 10)); | 4163 root->SetBounds(gfx::Size(10, 10)); |
| 4153 root->SetContentBounds(root->bounds()); | 4164 root->SetContentBounds(root->bounds()); |
| 4154 root->SetDrawsContent(false); | 4165 root->SetDrawsContent(false); |
| 4166 root->SetHasRenderSurface(true); |
| 4155 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 4167 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 4156 } | 4168 } |
| 4157 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 4169 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 4158 | 4170 |
| 4159 root->AddChild( | 4171 root->AddChild( |
| 4160 BlendStateCheckLayer::Create(host_impl_->active_tree(), | 4172 BlendStateCheckLayer::Create(host_impl_->active_tree(), |
| 4161 2, | 4173 2, |
| 4162 host_impl_->resource_provider())); | 4174 host_impl_->resource_provider())); |
| 4163 BlendStateCheckLayer* layer1 = | 4175 BlendStateCheckLayer* layer1 = |
| 4164 static_cast<BlendStateCheckLayer*>(root->children()[0]); | 4176 static_cast<BlendStateCheckLayer*>(root->children()[0]); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4254 EXPECT_TRUE(layer2->quads_appended()); | 4266 EXPECT_TRUE(layer2->quads_appended()); |
| 4255 host_impl_->DidDrawAllLayers(frame); | 4267 host_impl_->DidDrawAllLayers(frame); |
| 4256 | 4268 |
| 4257 // Parent layer with translucent opacity and opaque content. Since it has a | 4269 // Parent layer with translucent opacity and opaque content. Since it has a |
| 4258 // drawing child, it's drawn to a render surface which carries the opacity, | 4270 // drawing child, it's drawn to a render surface which carries the opacity, |
| 4259 // so it's itself drawn without blending. | 4271 // so it's itself drawn without blending. |
| 4260 // Child layer with opaque content, drawn without blending (parent surface | 4272 // Child layer with opaque content, drawn without blending (parent surface |
| 4261 // carries the inherited opacity). | 4273 // carries the inherited opacity). |
| 4262 layer1->SetContentsOpaque(true); | 4274 layer1->SetContentsOpaque(true); |
| 4263 layer1->SetOpacity(0.5f); | 4275 layer1->SetOpacity(0.5f); |
| 4276 layer1->SetHasRenderSurface(true); |
| 4264 layer1->SetExpectation(false, true); | 4277 layer1->SetExpectation(false, true); |
| 4265 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); | 4278 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); |
| 4266 layer2->SetExpectation(false, false); | 4279 layer2->SetExpectation(false, false); |
| 4267 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds())); | 4280 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds())); |
| 4268 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( | 4281 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( |
| 4269 host_impl_->active_tree()->root_layer()); | 4282 host_impl_->active_tree()->root_layer()); |
| 4270 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4283 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 4271 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4284 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4272 EXPECT_TRUE(layer1->quads_appended()); | 4285 EXPECT_TRUE(layer1->quads_appended()); |
| 4273 EXPECT_TRUE(layer2->quads_appended()); | 4286 EXPECT_TRUE(layer2->quads_appended()); |
| 4274 host_impl_->DidDrawAllLayers(frame); | 4287 host_impl_->DidDrawAllLayers(frame); |
| 4288 layer1->SetHasRenderSurface(false); |
| 4275 | 4289 |
| 4276 // Draw again, but with child non-opaque, to make sure | 4290 // Draw again, but with child non-opaque, to make sure |
| 4277 // layer1 not culled. | 4291 // layer1 not culled. |
| 4278 layer1->SetContentsOpaque(true); | 4292 layer1->SetContentsOpaque(true); |
| 4279 layer1->SetOpacity(1.f); | 4293 layer1->SetOpacity(1.f); |
| 4280 layer1->SetExpectation(false, false); | 4294 layer1->SetExpectation(false, false); |
| 4281 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); | 4295 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); |
| 4282 layer2->SetContentsOpaque(true); | 4296 layer2->SetContentsOpaque(true); |
| 4283 layer2->SetOpacity(0.5f); | 4297 layer2->SetOpacity(0.5f); |
| 4284 layer2->SetExpectation(true, false); | 4298 layer2->SetExpectation(true, false); |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4381 if (always_draw) { | 4395 if (always_draw) { |
| 4382 return FakeOutputSurface::CreateAlwaysDrawAndSwap3d(); | 4396 return FakeOutputSurface::CreateAlwaysDrawAndSwap3d(); |
| 4383 } | 4397 } |
| 4384 return FakeOutputSurface::Create3d(); | 4398 return FakeOutputSurface::Create3d(); |
| 4385 } | 4399 } |
| 4386 | 4400 |
| 4387 void SetupActiveTreeLayers() { | 4401 void SetupActiveTreeLayers() { |
| 4388 host_impl_->active_tree()->set_background_color(SK_ColorGRAY); | 4402 host_impl_->active_tree()->set_background_color(SK_ColorGRAY); |
| 4389 host_impl_->active_tree()->SetRootLayer( | 4403 host_impl_->active_tree()->SetRootLayer( |
| 4390 LayerImpl::Create(host_impl_->active_tree(), 1)); | 4404 LayerImpl::Create(host_impl_->active_tree(), 1)); |
| 4405 host_impl_->active_tree()->root_layer()->SetHasRenderSurface(true); |
| 4391 host_impl_->active_tree()->root_layer()->AddChild( | 4406 host_impl_->active_tree()->root_layer()->AddChild( |
| 4392 BlendStateCheckLayer::Create(host_impl_->active_tree(), | 4407 BlendStateCheckLayer::Create(host_impl_->active_tree(), |
| 4393 2, | 4408 2, |
| 4394 host_impl_->resource_provider())); | 4409 host_impl_->resource_provider())); |
| 4395 child_ = static_cast<BlendStateCheckLayer*>( | 4410 child_ = static_cast<BlendStateCheckLayer*>( |
| 4396 host_impl_->active_tree()->root_layer()->children()[0]); | 4411 host_impl_->active_tree()->root_layer()->children()[0]); |
| 4397 child_->SetExpectation(false, false); | 4412 child_->SetExpectation(false, false); |
| 4398 child_->SetContentsOpaque(true); | 4413 child_->SetContentsOpaque(true); |
| 4399 } | 4414 } |
| 4400 | 4415 |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4671 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create()); | 4686 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create()); |
| 4672 scoped_ptr<OutputSurface> output_surface( | 4687 scoped_ptr<OutputSurface> output_surface( |
| 4673 FakeOutputSurface::Create3d(provider)); | 4688 FakeOutputSurface::Create3d(provider)); |
| 4674 CreateHostImpl(DefaultSettings(), output_surface.Pass()); | 4689 CreateHostImpl(DefaultSettings(), output_surface.Pass()); |
| 4675 | 4690 |
| 4676 scoped_ptr<LayerImpl> root = | 4691 scoped_ptr<LayerImpl> root = |
| 4677 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); | 4692 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); |
| 4678 root->SetBounds(gfx::Size(10, 10)); | 4693 root->SetBounds(gfx::Size(10, 10)); |
| 4679 root->SetContentBounds(gfx::Size(10, 10)); | 4694 root->SetContentBounds(gfx::Size(10, 10)); |
| 4680 root->SetDrawsContent(true); | 4695 root->SetDrawsContent(true); |
| 4696 root->SetHasRenderSurface(true); |
| 4681 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 4697 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 4682 EXPECT_FALSE(provider->TestContext3d()->reshape_called()); | 4698 EXPECT_FALSE(provider->TestContext3d()->reshape_called()); |
| 4683 provider->TestContext3d()->clear_reshape_called(); | 4699 provider->TestContext3d()->clear_reshape_called(); |
| 4684 | 4700 |
| 4685 LayerTreeHostImpl::FrameData frame; | 4701 LayerTreeHostImpl::FrameData frame; |
| 4686 host_impl_->SetViewportSize(gfx::Size(10, 10)); | 4702 host_impl_->SetViewportSize(gfx::Size(10, 10)); |
| 4687 host_impl_->SetDeviceScaleFactor(1.f); | 4703 host_impl_->SetDeviceScaleFactor(1.f); |
| 4688 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4704 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 4689 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4705 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4690 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); | 4706 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4739 &proxy_, | 4755 &proxy_, |
| 4740 &stats_instrumentation_, | 4756 &stats_instrumentation_, |
| 4741 shared_bitmap_manager.get(), | 4757 shared_bitmap_manager.get(), |
| 4742 NULL, | 4758 NULL, |
| 4743 0); | 4759 0); |
| 4744 layer_tree_host_impl->InitializeRenderer(output_surface.Pass()); | 4760 layer_tree_host_impl->InitializeRenderer(output_surface.Pass()); |
| 4745 layer_tree_host_impl->SetViewportSize(gfx::Size(500, 500)); | 4761 layer_tree_host_impl->SetViewportSize(gfx::Size(500, 500)); |
| 4746 | 4762 |
| 4747 scoped_ptr<LayerImpl> root = | 4763 scoped_ptr<LayerImpl> root = |
| 4748 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 1); | 4764 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 1); |
| 4765 root->SetHasRenderSurface(true); |
| 4749 scoped_ptr<LayerImpl> child = | 4766 scoped_ptr<LayerImpl> child = |
| 4750 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 2); | 4767 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 2); |
| 4751 child->SetPosition(gfx::PointF(12.f, 13.f)); | 4768 child->SetPosition(gfx::PointF(12.f, 13.f)); |
| 4752 child->SetBounds(gfx::Size(14, 15)); | 4769 child->SetBounds(gfx::Size(14, 15)); |
| 4753 child->SetContentBounds(gfx::Size(14, 15)); | 4770 child->SetContentBounds(gfx::Size(14, 15)); |
| 4754 child->SetDrawsContent(true); | 4771 child->SetDrawsContent(true); |
| 4755 root->SetBounds(gfx::Size(500, 500)); | 4772 root->SetBounds(gfx::Size(500, 500)); |
| 4756 root->SetContentBounds(gfx::Size(500, 500)); | 4773 root->SetContentBounds(gfx::Size(500, 500)); |
| 4757 root->SetDrawsContent(true); | 4774 root->SetDrawsContent(true); |
| 4758 root->AddChild(child.Pass()); | 4775 root->AddChild(child.Pass()); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4805 scoped_ptr<LayerImpl> root = | 4822 scoped_ptr<LayerImpl> root = |
| 4806 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); | 4823 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); |
| 4807 scoped_ptr<LayerImpl> child = | 4824 scoped_ptr<LayerImpl> child = |
| 4808 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 2); | 4825 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 2); |
| 4809 child->SetBounds(gfx::Size(10, 10)); | 4826 child->SetBounds(gfx::Size(10, 10)); |
| 4810 child->SetContentBounds(gfx::Size(10, 10)); | 4827 child->SetContentBounds(gfx::Size(10, 10)); |
| 4811 child->SetDrawsContent(true); | 4828 child->SetDrawsContent(true); |
| 4812 root->SetBounds(gfx::Size(10, 10)); | 4829 root->SetBounds(gfx::Size(10, 10)); |
| 4813 root->SetContentBounds(gfx::Size(10, 10)); | 4830 root->SetContentBounds(gfx::Size(10, 10)); |
| 4814 root->SetDrawsContent(true); | 4831 root->SetDrawsContent(true); |
| 4815 root->SetForceRenderSurface(true); | 4832 root->SetHasRenderSurface(true); |
| 4816 root->AddChild(child.Pass()); | 4833 root->AddChild(child.Pass()); |
| 4817 | 4834 |
| 4818 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 4835 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 4819 | 4836 |
| 4820 LayerTreeHostImpl::FrameData frame; | 4837 LayerTreeHostImpl::FrameData frame; |
| 4821 | 4838 |
| 4822 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4839 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 4823 EXPECT_EQ(1u, frame.render_surface_layer_list->size()); | 4840 EXPECT_EQ(1u, frame.render_surface_layer_list->size()); |
| 4824 EXPECT_EQ(1u, frame.render_passes.size()); | 4841 EXPECT_EQ(1u, frame.render_passes.size()); |
| 4825 host_impl_->DidDrawAllLayers(frame); | 4842 host_impl_->DidDrawAllLayers(frame); |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5054 LayerImpl::Create(my_host_impl->active_tree(), 1); | 5071 LayerImpl::Create(my_host_impl->active_tree(), 1); |
| 5055 scoped_ptr<LayerImpl> child = | 5072 scoped_ptr<LayerImpl> child = |
| 5056 LayerImpl::Create(my_host_impl->active_tree(), 2); | 5073 LayerImpl::Create(my_host_impl->active_tree(), 2); |
| 5057 scoped_ptr<LayerImpl> grand_child = | 5074 scoped_ptr<LayerImpl> grand_child = |
| 5058 FakeLayerWithQuads::Create(my_host_impl->active_tree(), 3); | 5075 FakeLayerWithQuads::Create(my_host_impl->active_tree(), 3); |
| 5059 | 5076 |
| 5060 gfx::Rect root_rect(0, 0, 100, 100); | 5077 gfx::Rect root_rect(0, 0, 100, 100); |
| 5061 gfx::Rect child_rect(10, 10, 50, 50); | 5078 gfx::Rect child_rect(10, 10, 50, 50); |
| 5062 gfx::Rect grand_child_rect(5, 5, 150, 150); | 5079 gfx::Rect grand_child_rect(5, 5, 150, 150); |
| 5063 | 5080 |
| 5064 root->CreateRenderSurface(); | 5081 root->SetHasRenderSurface(true); |
| 5065 root->SetPosition(root_rect.origin()); | 5082 root->SetPosition(root_rect.origin()); |
| 5066 root->SetBounds(root_rect.size()); | 5083 root->SetBounds(root_rect.size()); |
| 5067 root->SetContentBounds(root->bounds()); | 5084 root->SetContentBounds(root->bounds()); |
| 5068 root->draw_properties().visible_content_rect = root_rect; | 5085 root->draw_properties().visible_content_rect = root_rect; |
| 5069 root->SetDrawsContent(false); | 5086 root->SetDrawsContent(false); |
| 5070 root->render_surface()->SetContentRect(gfx::Rect(root_rect.size())); | 5087 root->render_surface()->SetContentRect(gfx::Rect(root_rect.size())); |
| 5071 | 5088 |
| 5072 child->SetPosition(gfx::PointF(child_rect.x(), child_rect.y())); | 5089 child->SetPosition(gfx::PointF(child_rect.x(), child_rect.y())); |
| 5073 child->SetOpacity(0.5f); | 5090 child->SetOpacity(0.5f); |
| 5074 child->SetBounds(gfx::Size(child_rect.width(), child_rect.height())); | 5091 child->SetBounds(gfx::Size(child_rect.width(), child_rect.height())); |
| 5075 child->SetContentBounds(child->bounds()); | 5092 child->SetContentBounds(child->bounds()); |
| 5076 child->draw_properties().visible_content_rect = child_rect; | 5093 child->draw_properties().visible_content_rect = child_rect; |
| 5077 child->SetDrawsContent(false); | 5094 child->SetDrawsContent(false); |
| 5078 child->SetForceRenderSurface(true); | 5095 child->SetHasRenderSurface(true); |
| 5079 | 5096 |
| 5080 grand_child->SetPosition(grand_child_rect.origin()); | 5097 grand_child->SetPosition(grand_child_rect.origin()); |
| 5081 grand_child->SetBounds(grand_child_rect.size()); | 5098 grand_child->SetBounds(grand_child_rect.size()); |
| 5082 grand_child->SetContentBounds(grand_child->bounds()); | 5099 grand_child->SetContentBounds(grand_child->bounds()); |
| 5083 grand_child->draw_properties().visible_content_rect = grand_child_rect; | 5100 grand_child->draw_properties().visible_content_rect = grand_child_rect; |
| 5084 grand_child->SetDrawsContent(true); | 5101 grand_child->SetDrawsContent(true); |
| 5085 | 5102 |
| 5086 child->AddChild(grand_child.Pass()); | 5103 child->AddChild(grand_child.Pass()); |
| 5087 root->AddChild(child.Pass()); | 5104 root->AddChild(child.Pass()); |
| 5088 | 5105 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5148 scoped_ptr<TestWebGraphicsContext3D> context = | 5165 scoped_ptr<TestWebGraphicsContext3D> context = |
| 5149 TestWebGraphicsContext3D::Create(); | 5166 TestWebGraphicsContext3D::Create(); |
| 5150 TestWebGraphicsContext3D* context3d = context.get(); | 5167 TestWebGraphicsContext3D* context3d = context.get(); |
| 5151 scoped_ptr<OutputSurface> output_surface( | 5168 scoped_ptr<OutputSurface> output_surface( |
| 5152 FakeOutputSurface::Create3d(context.Pass())); | 5169 FakeOutputSurface::Create3d(context.Pass())); |
| 5153 CreateHostImpl(DefaultSettings(), output_surface.Pass()); | 5170 CreateHostImpl(DefaultSettings(), output_surface.Pass()); |
| 5154 | 5171 |
| 5155 scoped_ptr<LayerImpl> root_layer = | 5172 scoped_ptr<LayerImpl> root_layer = |
| 5156 LayerImpl::Create(host_impl_->active_tree(), 1); | 5173 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 5157 root_layer->SetBounds(gfx::Size(10, 10)); | 5174 root_layer->SetBounds(gfx::Size(10, 10)); |
| 5175 root_layer->SetHasRenderSurface(true); |
| 5158 | 5176 |
| 5159 scoped_refptr<VideoFrame> softwareFrame = | 5177 scoped_refptr<VideoFrame> softwareFrame = |
| 5160 media::VideoFrame::CreateColorFrame( | 5178 media::VideoFrame::CreateColorFrame( |
| 5161 gfx::Size(4, 4), 0x80, 0x80, 0x80, base::TimeDelta()); | 5179 gfx::Size(4, 4), 0x80, 0x80, 0x80, base::TimeDelta()); |
| 5162 FakeVideoFrameProvider provider; | 5180 FakeVideoFrameProvider provider; |
| 5163 provider.set_frame(softwareFrame); | 5181 provider.set_frame(softwareFrame); |
| 5164 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create( | 5182 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create( |
| 5165 host_impl_->active_tree(), 4, &provider, media::VIDEO_ROTATION_0); | 5183 host_impl_->active_tree(), 4, &provider, media::VIDEO_ROTATION_0); |
| 5166 video_layer->SetBounds(gfx::Size(10, 10)); | 5184 video_layer->SetBounds(gfx::Size(10, 10)); |
| 5167 video_layer->SetContentBounds(gfx::Size(10, 10)); | 5185 video_layer->SetContentBounds(gfx::Size(10, 10)); |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5322 } | 5340 } |
| 5323 }; | 5341 }; |
| 5324 | 5342 |
| 5325 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { | 5343 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { |
| 5326 scoped_ptr<SolidColorLayerImpl> root = | 5344 scoped_ptr<SolidColorLayerImpl> root = |
| 5327 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); | 5345 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); |
| 5328 root->SetPosition(gfx::PointF()); | 5346 root->SetPosition(gfx::PointF()); |
| 5329 root->SetBounds(gfx::Size(10, 10)); | 5347 root->SetBounds(gfx::Size(10, 10)); |
| 5330 root->SetContentBounds(gfx::Size(10, 10)); | 5348 root->SetContentBounds(gfx::Size(10, 10)); |
| 5331 root->SetDrawsContent(true); | 5349 root->SetDrawsContent(true); |
| 5350 root->SetHasRenderSurface(true); |
| 5332 | 5351 |
| 5333 // Child layer is in the bottom right corner. | 5352 // Child layer is in the bottom right corner. |
| 5334 scoped_ptr<SolidColorLayerImpl> child = | 5353 scoped_ptr<SolidColorLayerImpl> child = |
| 5335 SolidColorLayerImpl::Create(host_impl_->active_tree(), 2); | 5354 SolidColorLayerImpl::Create(host_impl_->active_tree(), 2); |
| 5336 child->SetPosition(gfx::PointF(9.f, 9.f)); | 5355 child->SetPosition(gfx::PointF(9.f, 9.f)); |
| 5337 child->SetBounds(gfx::Size(1, 1)); | 5356 child->SetBounds(gfx::Size(1, 1)); |
| 5338 child->SetContentBounds(gfx::Size(1, 1)); | 5357 child->SetContentBounds(gfx::Size(1, 1)); |
| 5339 child->SetDrawsContent(true); | 5358 child->SetDrawsContent(true); |
| 5340 root->AddChild(child.Pass()); | 5359 root->AddChild(child.Pass()); |
| 5341 | 5360 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5388 | 5407 |
| 5389 // Root | 5408 // Root |
| 5390 // | | 5409 // | |
| 5391 // +-- Scaling Layer (adds a 2x scale) | 5410 // +-- Scaling Layer (adds a 2x scale) |
| 5392 // | | 5411 // | |
| 5393 // +-- Content Layer | 5412 // +-- Content Layer |
| 5394 // +--Mask | 5413 // +--Mask |
| 5395 scoped_ptr<LayerImpl> scoped_root = | 5414 scoped_ptr<LayerImpl> scoped_root = |
| 5396 LayerImpl::Create(host_impl_->active_tree(), 1); | 5415 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 5397 LayerImpl* root = scoped_root.get(); | 5416 LayerImpl* root = scoped_root.get(); |
| 5417 root->SetHasRenderSurface(true); |
| 5398 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); | 5418 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); |
| 5399 | 5419 |
| 5400 scoped_ptr<LayerImpl> scoped_scaling_layer = | 5420 scoped_ptr<LayerImpl> scoped_scaling_layer = |
| 5401 LayerImpl::Create(host_impl_->active_tree(), 2); | 5421 LayerImpl::Create(host_impl_->active_tree(), 2); |
| 5402 LayerImpl* scaling_layer = scoped_scaling_layer.get(); | 5422 LayerImpl* scaling_layer = scoped_scaling_layer.get(); |
| 5403 root->AddChild(scoped_scaling_layer.Pass()); | 5423 root->AddChild(scoped_scaling_layer.Pass()); |
| 5404 | 5424 |
| 5405 scoped_ptr<LayerImpl> scoped_content_layer = | 5425 scoped_ptr<LayerImpl> scoped_content_layer = |
| 5406 LayerImpl::Create(host_impl_->active_tree(), 3); | 5426 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 5407 LayerImpl* content_layer = scoped_content_layer.get(); | 5427 LayerImpl* content_layer = scoped_content_layer.get(); |
| 5408 scaling_layer->AddChild(scoped_content_layer.Pass()); | 5428 scaling_layer->AddChild(scoped_content_layer.Pass()); |
| 5409 | 5429 |
| 5410 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = | 5430 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = |
| 5411 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); | 5431 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); |
| 5412 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); | 5432 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); |
| 5433 content_layer->SetHasRenderSurface(true); |
| 5413 content_layer->SetMaskLayer(scoped_mask_layer.Pass()); | 5434 content_layer->SetMaskLayer(scoped_mask_layer.Pass()); |
| 5414 | 5435 |
| 5415 gfx::Size root_size(100, 100); | 5436 gfx::Size root_size(100, 100); |
| 5416 root->SetBounds(root_size); | 5437 root->SetBounds(root_size); |
| 5417 root->SetContentBounds(root_size); | 5438 root->SetContentBounds(root_size); |
| 5418 root->SetPosition(gfx::PointF()); | 5439 root->SetPosition(gfx::PointF()); |
| 5419 | 5440 |
| 5420 gfx::Size scaling_layer_size(50, 50); | 5441 gfx::Size scaling_layer_size(50, 50); |
| 5421 scaling_layer->SetBounds(scaling_layer_size); | 5442 scaling_layer->SetBounds(scaling_layer_size); |
| 5422 scaling_layer->SetContentBounds(scaling_layer_size); | 5443 scaling_layer->SetContentBounds(scaling_layer_size); |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5528 } | 5549 } |
| 5529 } | 5550 } |
| 5530 | 5551 |
| 5531 TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) { | 5552 TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) { |
| 5532 // The mask layer has bounds 100x100 but is attached to a layer with bounds | 5553 // The mask layer has bounds 100x100 but is attached to a layer with bounds |
| 5533 // 50x50. | 5554 // 50x50. |
| 5534 | 5555 |
| 5535 scoped_ptr<LayerImpl> scoped_root = | 5556 scoped_ptr<LayerImpl> scoped_root = |
| 5536 LayerImpl::Create(host_impl_->active_tree(), 1); | 5557 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 5537 LayerImpl* root = scoped_root.get(); | 5558 LayerImpl* root = scoped_root.get(); |
| 5559 root->SetHasRenderSurface(true); |
| 5560 |
| 5538 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); | 5561 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); |
| 5539 | 5562 |
| 5540 scoped_ptr<LayerImpl> scoped_content_layer = | 5563 scoped_ptr<LayerImpl> scoped_content_layer = |
| 5541 LayerImpl::Create(host_impl_->active_tree(), 3); | 5564 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 5542 LayerImpl* content_layer = scoped_content_layer.get(); | 5565 LayerImpl* content_layer = scoped_content_layer.get(); |
| 5543 root->AddChild(scoped_content_layer.Pass()); | 5566 root->AddChild(scoped_content_layer.Pass()); |
| 5544 | 5567 |
| 5545 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = | 5568 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = |
| 5546 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); | 5569 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); |
| 5547 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); | 5570 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); |
| 5548 content_layer->SetMaskLayer(scoped_mask_layer.Pass()); | 5571 content_layer->SetMaskLayer(scoped_mask_layer.Pass()); |
| 5572 content_layer->SetHasRenderSurface(true); |
| 5549 | 5573 |
| 5550 gfx::Size root_size(100, 100); | 5574 gfx::Size root_size(100, 100); |
| 5551 root->SetBounds(root_size); | 5575 root->SetBounds(root_size); |
| 5552 root->SetContentBounds(root_size); | 5576 root->SetContentBounds(root_size); |
| 5553 root->SetPosition(gfx::PointF()); | 5577 root->SetPosition(gfx::PointF()); |
| 5554 | 5578 |
| 5555 gfx::Size layer_size(50, 50); | 5579 gfx::Size layer_size(50, 50); |
| 5556 content_layer->SetBounds(layer_size); | 5580 content_layer->SetBounds(layer_size); |
| 5557 content_layer->SetContentBounds(layer_size); | 5581 content_layer->SetContentBounds(layer_size); |
| 5558 content_layer->SetPosition(gfx::PointF()); | 5582 content_layer->SetPosition(gfx::PointF()); |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5682 } | 5706 } |
| 5683 } | 5707 } |
| 5684 | 5708 |
| 5685 TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerWithDifferentBounds) { | 5709 TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerWithDifferentBounds) { |
| 5686 // The replica's mask layer has bounds 100x100 but the replica is of a | 5710 // The replica's mask layer has bounds 100x100 but the replica is of a |
| 5687 // layer with bounds 50x50. | 5711 // layer with bounds 50x50. |
| 5688 | 5712 |
| 5689 scoped_ptr<LayerImpl> scoped_root = | 5713 scoped_ptr<LayerImpl> scoped_root = |
| 5690 LayerImpl::Create(host_impl_->active_tree(), 1); | 5714 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 5691 LayerImpl* root = scoped_root.get(); | 5715 LayerImpl* root = scoped_root.get(); |
| 5716 root->SetHasRenderSurface(true); |
| 5717 |
| 5692 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); | 5718 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); |
| 5693 | 5719 |
| 5694 scoped_ptr<LayerImpl> scoped_content_layer = | 5720 scoped_ptr<LayerImpl> scoped_content_layer = |
| 5695 LayerImpl::Create(host_impl_->active_tree(), 3); | 5721 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 5696 LayerImpl* content_layer = scoped_content_layer.get(); | 5722 LayerImpl* content_layer = scoped_content_layer.get(); |
| 5697 root->AddChild(scoped_content_layer.Pass()); | 5723 root->AddChild(scoped_content_layer.Pass()); |
| 5698 | 5724 |
| 5699 scoped_ptr<LayerImpl> scoped_replica_layer = | 5725 scoped_ptr<LayerImpl> scoped_replica_layer = |
| 5700 LayerImpl::Create(host_impl_->active_tree(), 2); | 5726 LayerImpl::Create(host_impl_->active_tree(), 2); |
| 5701 LayerImpl* replica_layer = scoped_replica_layer.get(); | 5727 LayerImpl* replica_layer = scoped_replica_layer.get(); |
| 5702 content_layer->SetReplicaLayer(scoped_replica_layer.Pass()); | 5728 content_layer->SetReplicaLayer(scoped_replica_layer.Pass()); |
| 5729 content_layer->SetHasRenderSurface(true); |
| 5703 | 5730 |
| 5704 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = | 5731 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = |
| 5705 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); | 5732 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); |
| 5706 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); | 5733 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); |
| 5707 replica_layer->SetMaskLayer(scoped_mask_layer.Pass()); | 5734 replica_layer->SetMaskLayer(scoped_mask_layer.Pass()); |
| 5735 replica_layer->SetHasRenderSurface(true); |
| 5708 | 5736 |
| 5709 gfx::Size root_size(100, 100); | 5737 gfx::Size root_size(100, 100); |
| 5710 root->SetBounds(root_size); | 5738 root->SetBounds(root_size); |
| 5711 root->SetContentBounds(root_size); | 5739 root->SetContentBounds(root_size); |
| 5712 root->SetPosition(gfx::PointF()); | 5740 root->SetPosition(gfx::PointF()); |
| 5713 | 5741 |
| 5714 gfx::Size layer_size(50, 50); | 5742 gfx::Size layer_size(50, 50); |
| 5715 content_layer->SetBounds(layer_size); | 5743 content_layer->SetBounds(layer_size); |
| 5716 content_layer->SetContentBounds(layer_size); | 5744 content_layer->SetContentBounds(layer_size); |
| 5717 content_layer->SetPosition(gfx::PointF()); | 5745 content_layer->SetPosition(gfx::PointF()); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5837 } | 5865 } |
| 5838 } | 5866 } |
| 5839 | 5867 |
| 5840 TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerForSurfaceWithUnclippedChild) { | 5868 TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerForSurfaceWithUnclippedChild) { |
| 5841 // The replica is of a layer with bounds 50x50, but it has a child that causes | 5869 // The replica is of a layer with bounds 50x50, but it has a child that causes |
| 5842 // the surface bounds to be larger. | 5870 // the surface bounds to be larger. |
| 5843 | 5871 |
| 5844 scoped_ptr<LayerImpl> scoped_root = | 5872 scoped_ptr<LayerImpl> scoped_root = |
| 5845 LayerImpl::Create(host_impl_->active_tree(), 1); | 5873 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 5846 LayerImpl* root = scoped_root.get(); | 5874 LayerImpl* root = scoped_root.get(); |
| 5875 root->SetHasRenderSurface(true); |
| 5847 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); | 5876 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); |
| 5848 | 5877 |
| 5849 scoped_ptr<LayerImpl> scoped_content_layer = | 5878 scoped_ptr<LayerImpl> scoped_content_layer = |
| 5850 LayerImpl::Create(host_impl_->active_tree(), 2); | 5879 LayerImpl::Create(host_impl_->active_tree(), 2); |
| 5851 LayerImpl* content_layer = scoped_content_layer.get(); | 5880 LayerImpl* content_layer = scoped_content_layer.get(); |
| 5852 root->AddChild(scoped_content_layer.Pass()); | 5881 root->AddChild(scoped_content_layer.Pass()); |
| 5853 | 5882 |
| 5854 scoped_ptr<LayerImpl> scoped_content_child_layer = | 5883 scoped_ptr<LayerImpl> scoped_content_child_layer = |
| 5855 LayerImpl::Create(host_impl_->active_tree(), 3); | 5884 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 5856 LayerImpl* content_child_layer = scoped_content_child_layer.get(); | 5885 LayerImpl* content_child_layer = scoped_content_child_layer.get(); |
| 5857 content_layer->AddChild(scoped_content_child_layer.Pass()); | 5886 content_layer->AddChild(scoped_content_child_layer.Pass()); |
| 5858 | 5887 |
| 5859 scoped_ptr<LayerImpl> scoped_replica_layer = | 5888 scoped_ptr<LayerImpl> scoped_replica_layer = |
| 5860 LayerImpl::Create(host_impl_->active_tree(), 4); | 5889 LayerImpl::Create(host_impl_->active_tree(), 4); |
| 5861 LayerImpl* replica_layer = scoped_replica_layer.get(); | 5890 LayerImpl* replica_layer = scoped_replica_layer.get(); |
| 5862 content_layer->SetReplicaLayer(scoped_replica_layer.Pass()); | 5891 content_layer->SetReplicaLayer(scoped_replica_layer.Pass()); |
| 5892 content_layer->SetHasRenderSurface(true); |
| 5863 | 5893 |
| 5864 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = | 5894 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = |
| 5865 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 5); | 5895 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 5); |
| 5866 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); | 5896 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); |
| 5867 replica_layer->SetMaskLayer(scoped_mask_layer.Pass()); | 5897 replica_layer->SetMaskLayer(scoped_mask_layer.Pass()); |
| 5898 replica_layer->SetHasRenderSurface(true); |
| 5868 | 5899 |
| 5869 gfx::Size root_size(100, 100); | 5900 gfx::Size root_size(100, 100); |
| 5870 root->SetBounds(root_size); | 5901 root->SetBounds(root_size); |
| 5871 root->SetContentBounds(root_size); | 5902 root->SetContentBounds(root_size); |
| 5872 root->SetPosition(gfx::PointF()); | 5903 root->SetPosition(gfx::PointF()); |
| 5873 | 5904 |
| 5874 gfx::Size layer_size(50, 50); | 5905 gfx::Size layer_size(50, 50); |
| 5875 content_layer->SetBounds(layer_size); | 5906 content_layer->SetBounds(layer_size); |
| 5876 content_layer->SetContentBounds(layer_size); | 5907 content_layer->SetContentBounds(layer_size); |
| 5877 content_layer->SetPosition(gfx::PointF()); | 5908 content_layer->SetPosition(gfx::PointF()); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5961 } | 5992 } |
| 5962 | 5993 |
| 5963 TEST_F(LayerTreeHostImplTest, MaskLayerForSurfaceWithClippedLayer) { | 5994 TEST_F(LayerTreeHostImplTest, MaskLayerForSurfaceWithClippedLayer) { |
| 5964 // The masked layer has bounds 50x50, but it has a child that causes | 5995 // The masked layer has bounds 50x50, but it has a child that causes |
| 5965 // the surface bounds to be larger. It also has a parent that clips the | 5996 // the surface bounds to be larger. It also has a parent that clips the |
| 5966 // masked layer and its surface. | 5997 // masked layer and its surface. |
| 5967 | 5998 |
| 5968 scoped_ptr<LayerImpl> scoped_root = | 5999 scoped_ptr<LayerImpl> scoped_root = |
| 5969 LayerImpl::Create(host_impl_->active_tree(), 1); | 6000 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 5970 LayerImpl* root = scoped_root.get(); | 6001 LayerImpl* root = scoped_root.get(); |
| 6002 root->SetHasRenderSurface(true); |
| 6003 |
| 5971 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); | 6004 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); |
| 5972 | 6005 |
| 5973 scoped_ptr<LayerImpl> scoped_clipping_layer = | 6006 scoped_ptr<LayerImpl> scoped_clipping_layer = |
| 5974 LayerImpl::Create(host_impl_->active_tree(), 2); | 6007 LayerImpl::Create(host_impl_->active_tree(), 2); |
| 5975 LayerImpl* clipping_layer = scoped_clipping_layer.get(); | 6008 LayerImpl* clipping_layer = scoped_clipping_layer.get(); |
| 5976 root->AddChild(scoped_clipping_layer.Pass()); | 6009 root->AddChild(scoped_clipping_layer.Pass()); |
| 5977 | 6010 |
| 5978 scoped_ptr<LayerImpl> scoped_content_layer = | 6011 scoped_ptr<LayerImpl> scoped_content_layer = |
| 5979 LayerImpl::Create(host_impl_->active_tree(), 3); | 6012 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 5980 LayerImpl* content_layer = scoped_content_layer.get(); | 6013 LayerImpl* content_layer = scoped_content_layer.get(); |
| 5981 clipping_layer->AddChild(scoped_content_layer.Pass()); | 6014 clipping_layer->AddChild(scoped_content_layer.Pass()); |
| 5982 | 6015 |
| 5983 scoped_ptr<LayerImpl> scoped_content_child_layer = | 6016 scoped_ptr<LayerImpl> scoped_content_child_layer = |
| 5984 LayerImpl::Create(host_impl_->active_tree(), 4); | 6017 LayerImpl::Create(host_impl_->active_tree(), 4); |
| 5985 LayerImpl* content_child_layer = scoped_content_child_layer.get(); | 6018 LayerImpl* content_child_layer = scoped_content_child_layer.get(); |
| 5986 content_layer->AddChild(scoped_content_child_layer.Pass()); | 6019 content_layer->AddChild(scoped_content_child_layer.Pass()); |
| 5987 | 6020 |
| 5988 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = | 6021 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = |
| 5989 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 6); | 6022 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 6); |
| 5990 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); | 6023 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); |
| 5991 content_layer->SetMaskLayer(scoped_mask_layer.Pass()); | 6024 content_layer->SetMaskLayer(scoped_mask_layer.Pass()); |
| 6025 content_layer->SetHasRenderSurface(true); |
| 5992 | 6026 |
| 5993 gfx::Size root_size(100, 100); | 6027 gfx::Size root_size(100, 100); |
| 5994 root->SetBounds(root_size); | 6028 root->SetBounds(root_size); |
| 5995 root->SetContentBounds(root_size); | 6029 root->SetContentBounds(root_size); |
| 5996 root->SetPosition(gfx::PointF()); | 6030 root->SetPosition(gfx::PointF()); |
| 5997 | 6031 |
| 5998 gfx::Rect clipping_rect(20, 10, 10, 20); | 6032 gfx::Rect clipping_rect(20, 10, 10, 20); |
| 5999 clipping_layer->SetBounds(clipping_rect.size()); | 6033 clipping_layer->SetBounds(clipping_rect.size()); |
| 6000 clipping_layer->SetContentBounds(clipping_rect.size()); | 6034 clipping_layer->SetContentBounds(clipping_rect.size()); |
| 6001 clipping_layer->SetPosition(clipping_rect.origin()); | 6035 clipping_layer->SetPosition(clipping_rect.origin()); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6067 gfx::ToCeiledSize(gfx::ScaleSize(root_size, device_scale_factor)); | 6101 gfx::ToCeiledSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 6068 host_impl_->SetViewportSize(device_viewport_size); | 6102 host_impl_->SetViewportSize(device_viewport_size); |
| 6069 | 6103 |
| 6070 host_impl_->CreatePendingTree(); | 6104 host_impl_->CreatePendingTree(); |
| 6071 host_impl_->pending_tree() | 6105 host_impl_->pending_tree() |
| 6072 ->SetPageScaleFactorAndLimits(1.f, 1.f / 16.f, 16.f); | 6106 ->SetPageScaleFactorAndLimits(1.f, 1.f / 16.f, 16.f); |
| 6073 | 6107 |
| 6074 scoped_ptr<LayerImpl> scoped_root = | 6108 scoped_ptr<LayerImpl> scoped_root = |
| 6075 LayerImpl::Create(host_impl_->pending_tree(), 1); | 6109 LayerImpl::Create(host_impl_->pending_tree(), 1); |
| 6076 LayerImpl* root = scoped_root.get(); | 6110 LayerImpl* root = scoped_root.get(); |
| 6111 root->SetHasRenderSurface(true); |
| 6077 | 6112 |
| 6078 host_impl_->pending_tree()->SetRootLayer(scoped_root.Pass()); | 6113 host_impl_->pending_tree()->SetRootLayer(scoped_root.Pass()); |
| 6079 | 6114 |
| 6080 scoped_ptr<LayerImpl> scoped_scrolling_layer = | 6115 scoped_ptr<LayerImpl> scoped_scrolling_layer = |
| 6081 LayerImpl::Create(host_impl_->pending_tree(), 2); | 6116 LayerImpl::Create(host_impl_->pending_tree(), 2); |
| 6082 LayerImpl* scrolling_layer = scoped_scrolling_layer.get(); | 6117 LayerImpl* scrolling_layer = scoped_scrolling_layer.get(); |
| 6083 root->AddChild(scoped_scrolling_layer.Pass()); | 6118 root->AddChild(scoped_scrolling_layer.Pass()); |
| 6084 | 6119 |
| 6085 gfx::Size content_layer_bounds(100000, 100); | 6120 gfx::Size content_layer_bounds(100000, 100); |
| 6086 gfx::Size pile_tile_size(3000, 3000); | 6121 gfx::Size pile_tile_size(3000, 3000); |
| (...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6568 EXPECT_EQ(0u, context_provider->TestContext3d()->NumTextures()); | 6603 EXPECT_EQ(0u, context_provider->TestContext3d()->NumTextures()); |
| 6569 } | 6604 } |
| 6570 | 6605 |
| 6571 TEST_F(LayerTreeHostImplTest, TouchFlingShouldNotBubble) { | 6606 TEST_F(LayerTreeHostImplTest, TouchFlingShouldNotBubble) { |
| 6572 // When flinging via touch, only the child should scroll (we should not | 6607 // When flinging via touch, only the child should scroll (we should not |
| 6573 // bubble). | 6608 // bubble). |
| 6574 gfx::Size surface_size(10, 10); | 6609 gfx::Size surface_size(10, 10); |
| 6575 gfx::Size content_size(20, 20); | 6610 gfx::Size content_size(20, 20); |
| 6576 scoped_ptr<LayerImpl> root_clip = | 6611 scoped_ptr<LayerImpl> root_clip = |
| 6577 LayerImpl::Create(host_impl_->active_tree(), 3); | 6612 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 6613 root_clip->SetHasRenderSurface(true); |
| 6614 |
| 6578 scoped_ptr<LayerImpl> root = | 6615 scoped_ptr<LayerImpl> root = |
| 6579 CreateScrollableLayer(1, content_size, root_clip.get()); | 6616 CreateScrollableLayer(1, content_size, root_clip.get()); |
| 6580 root->SetIsContainerForFixedPositionLayers(true); | 6617 root->SetIsContainerForFixedPositionLayers(true); |
| 6581 scoped_ptr<LayerImpl> child = | 6618 scoped_ptr<LayerImpl> child = |
| 6582 CreateScrollableLayer(2, content_size, root_clip.get()); | 6619 CreateScrollableLayer(2, content_size, root_clip.get()); |
| 6583 | 6620 |
| 6584 root->AddChild(child.Pass()); | 6621 root->AddChild(child.Pass()); |
| 6585 int root_id = root->id(); | 6622 int root_id = root->id(); |
| 6586 root_clip->AddChild(root.Pass()); | 6623 root_clip->AddChild(root.Pass()); |
| 6587 | 6624 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 6611 ASSERT_EQ(1u, scroll_info->scrolls.size()); | 6648 ASSERT_EQ(1u, scroll_info->scrolls.size()); |
| 6612 ExpectNone(*scroll_info.get(), root_id); | 6649 ExpectNone(*scroll_info.get(), root_id); |
| 6613 } | 6650 } |
| 6614 } | 6651 } |
| 6615 | 6652 |
| 6616 TEST_F(LayerTreeHostImplTest, TouchFlingShouldLockToFirstScrolledLayer) { | 6653 TEST_F(LayerTreeHostImplTest, TouchFlingShouldLockToFirstScrolledLayer) { |
| 6617 // Scroll a child layer beyond its maximum scroll range and make sure the | 6654 // Scroll a child layer beyond its maximum scroll range and make sure the |
| 6618 // the scroll doesn't bubble up to the parent layer. | 6655 // the scroll doesn't bubble up to the parent layer. |
| 6619 gfx::Size surface_size(10, 10); | 6656 gfx::Size surface_size(10, 10); |
| 6620 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 6657 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |
| 6658 root->SetHasRenderSurface(true); |
| 6621 scoped_ptr<LayerImpl> root_scrolling = | 6659 scoped_ptr<LayerImpl> root_scrolling = |
| 6622 CreateScrollableLayer(2, surface_size, root.get()); | 6660 CreateScrollableLayer(2, surface_size, root.get()); |
| 6623 | 6661 |
| 6624 scoped_ptr<LayerImpl> grand_child = | 6662 scoped_ptr<LayerImpl> grand_child = |
| 6625 CreateScrollableLayer(4, surface_size, root.get()); | 6663 CreateScrollableLayer(4, surface_size, root.get()); |
| 6626 grand_child->SetScrollOffset(gfx::ScrollOffset(0, 2)); | 6664 grand_child->SetScrollOffset(gfx::ScrollOffset(0, 2)); |
| 6627 | 6665 |
| 6628 scoped_ptr<LayerImpl> child = | 6666 scoped_ptr<LayerImpl> child = |
| 6629 CreateScrollableLayer(3, surface_size, root.get()); | 6667 CreateScrollableLayer(3, surface_size, root.get()); |
| 6630 child->SetScrollOffset(gfx::ScrollOffset(0, 4)); | 6668 child->SetScrollOffset(gfx::ScrollOffset(0, 4)); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6681 } | 6719 } |
| 6682 } | 6720 } |
| 6683 | 6721 |
| 6684 TEST_F(LayerTreeHostImplTest, WheelFlingShouldBubble) { | 6722 TEST_F(LayerTreeHostImplTest, WheelFlingShouldBubble) { |
| 6685 // When flinging via wheel, the root should eventually scroll (we should | 6723 // When flinging via wheel, the root should eventually scroll (we should |
| 6686 // bubble). | 6724 // bubble). |
| 6687 gfx::Size surface_size(10, 10); | 6725 gfx::Size surface_size(10, 10); |
| 6688 gfx::Size content_size(20, 20); | 6726 gfx::Size content_size(20, 20); |
| 6689 scoped_ptr<LayerImpl> root_clip = | 6727 scoped_ptr<LayerImpl> root_clip = |
| 6690 LayerImpl::Create(host_impl_->active_tree(), 3); | 6728 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 6729 root_clip->SetHasRenderSurface(true); |
| 6691 scoped_ptr<LayerImpl> root_scroll = | 6730 scoped_ptr<LayerImpl> root_scroll = |
| 6692 CreateScrollableLayer(1, content_size, root_clip.get()); | 6731 CreateScrollableLayer(1, content_size, root_clip.get()); |
| 6693 int root_scroll_id = root_scroll->id(); | 6732 int root_scroll_id = root_scroll->id(); |
| 6694 scoped_ptr<LayerImpl> child = | 6733 scoped_ptr<LayerImpl> child = |
| 6695 CreateScrollableLayer(2, content_size, root_clip.get()); | 6734 CreateScrollableLayer(2, content_size, root_clip.get()); |
| 6696 | 6735 |
| 6697 root_scroll->AddChild(child.Pass()); | 6736 root_scroll->AddChild(child.Pass()); |
| 6698 root_clip->AddChild(root_scroll.Pass()); | 6737 root_clip->AddChild(root_scroll.Pass()); |
| 6699 | 6738 |
| 6700 host_impl_->SetViewportSize(surface_size); | 6739 host_impl_->SetViewportSize(surface_size); |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6884 | 6923 |
| 6885 // Make sure LatencyInfo carried by LatencyInfoSwapPromise are passed | 6924 // Make sure LatencyInfo carried by LatencyInfoSwapPromise are passed |
| 6886 // to CompositorFrameMetadata after SwapBuffers(); | 6925 // to CompositorFrameMetadata after SwapBuffers(); |
| 6887 TEST_F(LayerTreeHostImplTest, LatencyInfoPassedToCompositorFrameMetadata) { | 6926 TEST_F(LayerTreeHostImplTest, LatencyInfoPassedToCompositorFrameMetadata) { |
| 6888 scoped_ptr<SolidColorLayerImpl> root = | 6927 scoped_ptr<SolidColorLayerImpl> root = |
| 6889 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); | 6928 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); |
| 6890 root->SetPosition(gfx::PointF()); | 6929 root->SetPosition(gfx::PointF()); |
| 6891 root->SetBounds(gfx::Size(10, 10)); | 6930 root->SetBounds(gfx::Size(10, 10)); |
| 6892 root->SetContentBounds(gfx::Size(10, 10)); | 6931 root->SetContentBounds(gfx::Size(10, 10)); |
| 6893 root->SetDrawsContent(true); | 6932 root->SetDrawsContent(true); |
| 6933 root->SetHasRenderSurface(true); |
| 6894 | 6934 |
| 6895 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 6935 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 6896 | 6936 |
| 6897 FakeOutputSurface* fake_output_surface = | 6937 FakeOutputSurface* fake_output_surface = |
| 6898 static_cast<FakeOutputSurface*>(host_impl_->output_surface()); | 6938 static_cast<FakeOutputSurface*>(host_impl_->output_surface()); |
| 6899 | 6939 |
| 6900 const std::vector<ui::LatencyInfo>& metadata_latency_before = | 6940 const std::vector<ui::LatencyInfo>& metadata_latency_before = |
| 6901 fake_output_surface->last_sent_frame().metadata.latency_info; | 6941 fake_output_surface->last_sent_frame().metadata.latency_info; |
| 6902 EXPECT_TRUE(metadata_latency_before.empty()); | 6942 EXPECT_TRUE(metadata_latency_before.empty()); |
| 6903 | 6943 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 6924 } | 6964 } |
| 6925 | 6965 |
| 6926 TEST_F(LayerTreeHostImplTest, SelectionBoundsPassedToCompositorFrameMetadata) { | 6966 TEST_F(LayerTreeHostImplTest, SelectionBoundsPassedToCompositorFrameMetadata) { |
| 6927 int root_layer_id = 1; | 6967 int root_layer_id = 1; |
| 6928 scoped_ptr<SolidColorLayerImpl> root = | 6968 scoped_ptr<SolidColorLayerImpl> root = |
| 6929 SolidColorLayerImpl::Create(host_impl_->active_tree(), root_layer_id); | 6969 SolidColorLayerImpl::Create(host_impl_->active_tree(), root_layer_id); |
| 6930 root->SetPosition(gfx::PointF()); | 6970 root->SetPosition(gfx::PointF()); |
| 6931 root->SetBounds(gfx::Size(10, 10)); | 6971 root->SetBounds(gfx::Size(10, 10)); |
| 6932 root->SetContentBounds(gfx::Size(10, 10)); | 6972 root->SetContentBounds(gfx::Size(10, 10)); |
| 6933 root->SetDrawsContent(true); | 6973 root->SetDrawsContent(true); |
| 6974 root->SetHasRenderSurface(true); |
| 6934 | 6975 |
| 6935 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 6976 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 6936 | 6977 |
| 6937 // Ensure the default frame selection bounds are empty. | 6978 // Ensure the default frame selection bounds are empty. |
| 6938 FakeOutputSurface* fake_output_surface = | 6979 FakeOutputSurface* fake_output_surface = |
| 6939 static_cast<FakeOutputSurface*>(host_impl_->output_surface()); | 6980 static_cast<FakeOutputSurface*>(host_impl_->output_surface()); |
| 6940 const ViewportSelectionBound& selection_start_before = | 6981 const ViewportSelectionBound& selection_start_before = |
| 6941 fake_output_surface->last_sent_frame().metadata.selection_start; | 6982 fake_output_surface->last_sent_frame().metadata.selection_start; |
| 6942 const ViewportSelectionBound& selection_end_before = | 6983 const ViewportSelectionBound& selection_end_before = |
| 6943 fake_output_surface->last_sent_frame().metadata.selection_end; | 6984 fake_output_surface->last_sent_frame().metadata.selection_end; |
| (...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7421 contents->SetBounds(content_size); | 7462 contents->SetBounds(content_size); |
| 7422 contents->SetContentBounds(content_size); | 7463 contents->SetContentBounds(content_size); |
| 7423 contents->SetPosition(gfx::PointF()); | 7464 contents->SetPosition(gfx::PointF()); |
| 7424 | 7465 |
| 7425 outer_scroll->AddChild(contents.Pass()); | 7466 outer_scroll->AddChild(contents.Pass()); |
| 7426 outer_clip->AddChild(outer_scroll.Pass()); | 7467 outer_clip->AddChild(outer_scroll.Pass()); |
| 7427 inner_scroll->AddChild(outer_clip.Pass()); | 7468 inner_scroll->AddChild(outer_clip.Pass()); |
| 7428 page_scale->AddChild(inner_scroll.Pass()); | 7469 page_scale->AddChild(inner_scroll.Pass()); |
| 7429 inner_clip->AddChild(page_scale.Pass()); | 7470 inner_clip->AddChild(page_scale.Pass()); |
| 7430 | 7471 |
| 7472 inner_clip->SetHasRenderSurface(true); |
| 7431 layer_tree_impl->SetRootLayer(inner_clip.Pass()); | 7473 layer_tree_impl->SetRootLayer(inner_clip.Pass()); |
| 7432 layer_tree_impl->SetViewportLayersFromIds(kPageScaleLayerId, | 7474 layer_tree_impl->SetViewportLayersFromIds(kPageScaleLayerId, |
| 7433 kInnerViewportScrollLayerId, kOuterViewportScrollLayerId); | 7475 kInnerViewportScrollLayerId, kOuterViewportScrollLayerId); |
| 7434 | 7476 |
| 7435 host_impl_->active_tree()->DidBecomeActive(); | 7477 host_impl_->active_tree()->DidBecomeActive(); |
| 7436 } | 7478 } |
| 7437 }; | 7479 }; |
| 7438 | 7480 |
| 7439 TEST_F(LayerTreeHostImplVirtualViewportTest, FlingScrollBubblesToInner) { | 7481 TEST_F(LayerTreeHostImplVirtualViewportTest, FlingScrollBubblesToInner) { |
| 7440 gfx::Size content_size = gfx::Size(100, 160); | 7482 gfx::Size content_size = gfx::Size(100, 160); |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7706 // surface. | 7748 // surface. |
| 7707 EXPECT_EQ(0, num_lost_surfaces_); | 7749 EXPECT_EQ(0, num_lost_surfaces_); |
| 7708 host_impl_->DidLoseOutputSurface(); | 7750 host_impl_->DidLoseOutputSurface(); |
| 7709 EXPECT_EQ(1, num_lost_surfaces_); | 7751 EXPECT_EQ(1, num_lost_surfaces_); |
| 7710 host_impl_->DidLoseOutputSurface(); | 7752 host_impl_->DidLoseOutputSurface(); |
| 7711 EXPECT_LE(1, num_lost_surfaces_); | 7753 EXPECT_LE(1, num_lost_surfaces_); |
| 7712 } | 7754 } |
| 7713 | 7755 |
| 7714 } // namespace | 7756 } // namespace |
| 7715 } // namespace cc | 7757 } // namespace cc |
| OLD | NEW |