| 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 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 root->SetBounds(gfx::Size(10, 10)); | 185 root->SetBounds(gfx::Size(10, 10)); |
| 186 root->SetDrawsContent(true); | 186 root->SetDrawsContent(true); |
| 187 root->draw_properties().visible_layer_rect = gfx::Rect(0, 0, 10, 10); | 187 root->draw_properties().visible_layer_rect = gfx::Rect(0, 0, 10, 10); |
| 188 root->SetHasRenderSurface(true); | 188 root->SetHasRenderSurface(true); |
| 189 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 189 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 190 } | 190 } |
| 191 | 191 |
| 192 static void ExpectClearedScrollDeltasRecursive(LayerImpl* layer) { | 192 static void ExpectClearedScrollDeltasRecursive(LayerImpl* layer) { |
| 193 ASSERT_EQ(layer->ScrollDelta(), gfx::Vector2d()); | 193 ASSERT_EQ(layer->ScrollDelta(), gfx::Vector2d()); |
| 194 for (size_t i = 0; i < layer->children().size(); ++i) | 194 for (size_t i = 0; i < layer->children().size(); ++i) |
| 195 ExpectClearedScrollDeltasRecursive(layer->children()[i]); | 195 ExpectClearedScrollDeltasRecursive(layer->children()[i].get()); |
| 196 } | 196 } |
| 197 | 197 |
| 198 static ::testing::AssertionResult ScrollInfoContains( | 198 static ::testing::AssertionResult ScrollInfoContains( |
| 199 const ScrollAndScaleSet& scroll_info, | 199 const ScrollAndScaleSet& scroll_info, |
| 200 int id, | 200 int id, |
| 201 const gfx::Vector2d& scroll_delta) { | 201 const gfx::Vector2d& scroll_delta) { |
| 202 int times_encountered = 0; | 202 int times_encountered = 0; |
| 203 | 203 |
| 204 for (size_t i = 0; i < scroll_info.scrolls.size(); ++i) { | 204 for (size_t i = 0; i < scroll_info.scrolls.size(); ++i) { |
| 205 if (scroll_info.scrolls[i].layer_id != id) | 205 if (scroll_info.scrolls[i].layer_id != id) |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 // Sets up a typical virtual viewport setup with one child content layer. | 310 // Sets up a typical virtual viewport setup with one child content layer. |
| 311 // Returns a pointer to the content layer. | 311 // Returns a pointer to the content layer. |
| 312 LayerImpl* CreateBasicVirtualViewportLayers(const gfx::Size& viewport_size, | 312 LayerImpl* CreateBasicVirtualViewportLayers(const gfx::Size& viewport_size, |
| 313 const gfx::Size& content_size) { | 313 const gfx::Size& content_size) { |
| 314 // CreateScrollAndContentsLayers makes the outer viewport unscrollable and | 314 // CreateScrollAndContentsLayers makes the outer viewport unscrollable and |
| 315 // the inner a different size from the outer. We'll reuse its layer | 315 // the inner a different size from the outer. We'll reuse its layer |
| 316 // hierarchy but adjust the sizing to our needs. | 316 // hierarchy but adjust the sizing to our needs. |
| 317 CreateScrollAndContentsLayers(host_impl_->active_tree(), content_size); | 317 CreateScrollAndContentsLayers(host_impl_->active_tree(), content_size); |
| 318 | 318 |
| 319 LayerImpl* content_layer = | 319 LayerImpl* content_layer = |
| 320 host_impl_->OuterViewportScrollLayer()->children().back(); | 320 host_impl_->OuterViewportScrollLayer()->children().back().get(); |
| 321 content_layer->SetBounds(content_size); | 321 content_layer->SetBounds(content_size); |
| 322 host_impl_->OuterViewportScrollLayer()->SetBounds(content_size); | 322 host_impl_->OuterViewportScrollLayer()->SetBounds(content_size); |
| 323 | 323 |
| 324 LayerImpl* outer_clip = host_impl_->OuterViewportScrollLayer()->parent(); | 324 LayerImpl* outer_clip = host_impl_->OuterViewportScrollLayer()->parent(); |
| 325 outer_clip->SetBounds(viewport_size); | 325 outer_clip->SetBounds(viewport_size); |
| 326 | 326 |
| 327 LayerImpl* inner_clip_layer = | 327 LayerImpl* inner_clip_layer = |
| 328 host_impl_->InnerViewportScrollLayer()->parent()->parent(); | 328 host_impl_->InnerViewportScrollLayer()->parent()->parent(); |
| 329 inner_clip_layer->SetBounds(viewport_size); | 329 inner_clip_layer->SetBounds(viewport_size); |
| 330 host_impl_->InnerViewportScrollLayer()->SetBounds(viewport_size); | 330 host_impl_->InnerViewportScrollLayer()->SetBounds(viewport_size); |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 LayerImpl::Create(host_impl_->active_tree(), 1); | 525 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 526 root_clip->SetBounds(gfx::Size(10, 10)); | 526 root_clip->SetBounds(gfx::Size(10, 10)); |
| 527 LayerImpl* root_layer = root.get(); | 527 LayerImpl* root_layer = root.get(); |
| 528 root_clip->AddChild(root.Pass()); | 528 root_clip->AddChild(root.Pass()); |
| 529 root_layer->SetBounds(gfx::Size(110, 110)); | 529 root_layer->SetBounds(gfx::Size(110, 110)); |
| 530 root_layer->SetScrollClipLayer(root_clip->id()); | 530 root_layer->SetScrollClipLayer(root_clip->id()); |
| 531 root_layer->PushScrollOffsetFromMainThread(scroll_offset); | 531 root_layer->PushScrollOffsetFromMainThread(scroll_offset); |
| 532 root_layer->ScrollBy(scroll_delta); | 532 root_layer->ScrollBy(scroll_delta); |
| 533 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); | 533 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); |
| 534 } | 534 } |
| 535 LayerImpl* root = host_impl_->active_tree()->root_layer()->children()[0]; | 535 LayerImpl* root = |
| 536 host_impl_->active_tree()->root_layer()->children()[0].get(); |
| 536 | 537 |
| 537 scoped_ptr<ScrollAndScaleSet> scroll_info; | 538 scoped_ptr<ScrollAndScaleSet> scroll_info; |
| 538 | 539 |
| 539 scroll_info = host_impl_->ProcessScrollDeltas(); | 540 scroll_info = host_impl_->ProcessScrollDeltas(); |
| 540 ASSERT_EQ(scroll_info->scrolls.size(), 1u); | 541 ASSERT_EQ(scroll_info->scrolls.size(), 1u); |
| 541 EXPECT_TRUE(ScrollInfoContains(*scroll_info, root->id(), scroll_delta)); | 542 EXPECT_TRUE(ScrollInfoContains(*scroll_info, root->id(), scroll_delta)); |
| 542 | 543 |
| 543 gfx::Vector2d scroll_delta2(-5, 27); | 544 gfx::Vector2d scroll_delta2(-5, 27); |
| 544 root->ScrollBy(scroll_delta2); | 545 root->ScrollBy(scroll_delta2); |
| 545 scroll_info = host_impl_->ProcessScrollDeltas(); | 546 scroll_info = host_impl_->ProcessScrollDeltas(); |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 EXPECT_EQ(InputHandler::SCROLL_STARTED, | 738 EXPECT_EQ(InputHandler::SCROLL_STARTED, |
| 738 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); | 739 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); |
| 739 host_impl_->ScrollEnd(); | 740 host_impl_->ScrollEnd(); |
| 740 } | 741 } |
| 741 | 742 |
| 742 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnLayerTopology) { | 743 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnLayerTopology) { |
| 743 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 744 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
| 744 | 745 |
| 745 // Create a normal scrollable root layer | 746 // Create a normal scrollable root layer |
| 746 LayerImpl* root_scroll = SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 747 LayerImpl* root_scroll = SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 747 LayerImpl* root_child = root_scroll->children()[0]; | 748 LayerImpl* root_child = root_scroll->children()[0].get(); |
| 748 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 749 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 749 DrawFrame(); | 750 DrawFrame(); |
| 750 | 751 |
| 751 // Create two child scrollable layers | 752 // Create two child scrollable layers |
| 752 LayerImpl* child1 = 0; | 753 LayerImpl* child1 = 0; |
| 753 { | 754 { |
| 754 scoped_ptr<LayerImpl> scrollable_child_clip_1 = | 755 scoped_ptr<LayerImpl> scrollable_child_clip_1 = |
| 755 LayerImpl::Create(host_impl_->active_tree(), 6); | 756 LayerImpl::Create(host_impl_->active_tree(), 6); |
| 756 scoped_ptr<LayerImpl> scrollable_child_1 = CreateScrollableLayer( | 757 scoped_ptr<LayerImpl> scrollable_child_1 = CreateScrollableLayer( |
| 757 7, gfx::Size(10, 10), scrollable_child_clip_1.get()); | 758 7, gfx::Size(10, 10), scrollable_child_clip_1.get()); |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1035 EXPECT_TRUE(host_impl_->ScrollVerticallyByPage( | 1036 EXPECT_TRUE(host_impl_->ScrollVerticallyByPage( |
| 1036 gfx::Point(), SCROLL_BACKWARD)); | 1037 gfx::Point(), SCROLL_BACKWARD)); |
| 1037 } | 1038 } |
| 1038 | 1039 |
| 1039 TEST_F(LayerTreeHostImplTest, ScrollWithUserUnscrollableLayers) { | 1040 TEST_F(LayerTreeHostImplTest, ScrollWithUserUnscrollableLayers) { |
| 1040 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(200, 200)); | 1041 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(200, 200)); |
| 1041 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 1042 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| 1042 | 1043 |
| 1043 gfx::Size overflow_size(400, 400); | 1044 gfx::Size overflow_size(400, 400); |
| 1044 ASSERT_EQ(1u, scroll_layer->children().size()); | 1045 ASSERT_EQ(1u, scroll_layer->children().size()); |
| 1045 LayerImpl* overflow = scroll_layer->children()[0]; | 1046 LayerImpl* overflow = scroll_layer->children()[0].get(); |
| 1046 overflow->SetBounds(overflow_size); | 1047 overflow->SetBounds(overflow_size); |
| 1047 overflow->SetScrollClipLayer(scroll_layer->parent()->id()); | 1048 overflow->SetScrollClipLayer(scroll_layer->parent()->id()); |
| 1048 overflow->PushScrollOffsetFromMainThread(gfx::ScrollOffset()); | 1049 overflow->PushScrollOffsetFromMainThread(gfx::ScrollOffset()); |
| 1049 overflow->SetPosition(gfx::PointF()); | 1050 overflow->SetPosition(gfx::PointF()); |
| 1050 | 1051 |
| 1051 DrawFrame(); | 1052 DrawFrame(); |
| 1052 gfx::Point scroll_position(10, 10); | 1053 gfx::Point scroll_position(10, 10); |
| 1053 | 1054 |
| 1054 EXPECT_EQ(InputHandler::SCROLL_STARTED, | 1055 EXPECT_EQ(InputHandler::SCROLL_STARTED, |
| 1055 host_impl_->ScrollBegin(scroll_position, InputHandler::WHEEL)); | 1056 host_impl_->ScrollBegin(scroll_position, InputHandler::WHEEL)); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1091 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 1092 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
| 1092 | 1093 |
| 1093 host_impl_->CreatePendingTree(); | 1094 host_impl_->CreatePendingTree(); |
| 1094 host_impl_->pending_tree()->SetRootLayer( | 1095 host_impl_->pending_tree()->SetRootLayer( |
| 1095 LayerImpl::Create(host_impl_->pending_tree(), 1)); | 1096 LayerImpl::Create(host_impl_->pending_tree(), 1)); |
| 1096 LayerImpl* root = host_impl_->pending_tree()->root_layer(); | 1097 LayerImpl* root = host_impl_->pending_tree()->root_layer(); |
| 1097 root->SetBounds(gfx::Size(50, 50)); | 1098 root->SetBounds(gfx::Size(50, 50)); |
| 1098 root->SetHasRenderSurface(true); | 1099 root->SetHasRenderSurface(true); |
| 1099 | 1100 |
| 1100 root->AddChild(LayerImpl::Create(host_impl_->pending_tree(), 2)); | 1101 root->AddChild(LayerImpl::Create(host_impl_->pending_tree(), 2)); |
| 1101 LayerImpl* child = root->children()[0]; | 1102 LayerImpl* child = root->children()[0].get(); |
| 1102 child->SetBounds(gfx::Size(10, 10)); | 1103 child->SetBounds(gfx::Size(10, 10)); |
| 1103 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10); | 1104 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10); |
| 1104 child->SetDrawsContent(true); | 1105 child->SetDrawsContent(true); |
| 1105 AddAnimatedTransformToLayer(child, 10.0, 3, 0); | 1106 AddAnimatedTransformToLayer(child, 10.0, 3, 0); |
| 1106 | 1107 |
| 1107 EXPECT_FALSE(did_request_animate_); | 1108 EXPECT_FALSE(did_request_animate_); |
| 1108 EXPECT_FALSE(did_request_redraw_); | 1109 EXPECT_FALSE(did_request_redraw_); |
| 1109 EXPECT_FALSE(did_request_commit_); | 1110 EXPECT_FALSE(did_request_commit_); |
| 1110 | 1111 |
| 1111 host_impl_->AnimatePendingTreeAfterCommit(); | 1112 host_impl_->AnimatePendingTreeAfterCommit(); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1139 TEST_F(LayerTreeHostImplTest, AnimationSchedulingActiveTree) { | 1140 TEST_F(LayerTreeHostImplTest, AnimationSchedulingActiveTree) { |
| 1140 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 1141 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
| 1141 | 1142 |
| 1142 host_impl_->active_tree()->SetRootLayer( | 1143 host_impl_->active_tree()->SetRootLayer( |
| 1143 LayerImpl::Create(host_impl_->active_tree(), 1)); | 1144 LayerImpl::Create(host_impl_->active_tree(), 1)); |
| 1144 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 1145 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 1145 root->SetBounds(gfx::Size(50, 50)); | 1146 root->SetBounds(gfx::Size(50, 50)); |
| 1146 root->SetHasRenderSurface(true); | 1147 root->SetHasRenderSurface(true); |
| 1147 | 1148 |
| 1148 root->AddChild(LayerImpl::Create(host_impl_->active_tree(), 2)); | 1149 root->AddChild(LayerImpl::Create(host_impl_->active_tree(), 2)); |
| 1149 LayerImpl* child = root->children()[0]; | 1150 LayerImpl* child = root->children()[0].get(); |
| 1150 child->SetBounds(gfx::Size(10, 10)); | 1151 child->SetBounds(gfx::Size(10, 10)); |
| 1151 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10); | 1152 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10); |
| 1152 child->SetDrawsContent(true); | 1153 child->SetDrawsContent(true); |
| 1153 | 1154 |
| 1154 // Add a translate from 6,7 to 8,9. | 1155 // Add a translate from 6,7 to 8,9. |
| 1155 TransformOperations start; | 1156 TransformOperations start; |
| 1156 start.AppendTranslate(6.f, 7.f, 0.f); | 1157 start.AppendTranslate(6.f, 7.f, 0.f); |
| 1157 TransformOperations end; | 1158 TransformOperations end; |
| 1158 end.AppendTranslate(8.f, 9.f, 0.f); | 1159 end.AppendTranslate(8.f, 9.f, 0.f); |
| 1159 AddAnimatedTransformToLayer(child, 4.0, start, end); | 1160 AddAnimatedTransformToLayer(child, 4.0, start, end); |
| (...skipping 1609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2769 | 2770 |
| 2770 void ClearDidDrawCheck() { | 2771 void ClearDidDrawCheck() { |
| 2771 will_draw_called_ = false; | 2772 will_draw_called_ = false; |
| 2772 append_quads_called_ = false; | 2773 append_quads_called_ = false; |
| 2773 did_draw_called_ = false; | 2774 did_draw_called_ = false; |
| 2774 } | 2775 } |
| 2775 | 2776 |
| 2776 static void IgnoreResult(scoped_ptr<CopyOutputResult> result) {} | 2777 static void IgnoreResult(scoped_ptr<CopyOutputResult> result) {} |
| 2777 | 2778 |
| 2778 void AddCopyRequest() { | 2779 void AddCopyRequest() { |
| 2779 ScopedPtrVector<CopyOutputRequest> requests; | 2780 std::vector<scoped_ptr<CopyOutputRequest>> requests; |
| 2780 requests.push_back( | 2781 requests.push_back( |
| 2781 CopyOutputRequest::CreateRequest(base::Bind(&IgnoreResult))); | 2782 CopyOutputRequest::CreateRequest(base::Bind(&IgnoreResult))); |
| 2782 SetHasRenderSurface(true); | 2783 SetHasRenderSurface(true); |
| 2783 PassCopyRequests(&requests); | 2784 PassCopyRequests(&requests); |
| 2784 } | 2785 } |
| 2785 | 2786 |
| 2786 protected: | 2787 protected: |
| 2787 DidDrawCheckLayer(LayerTreeImpl* tree_impl, int id) | 2788 DidDrawCheckLayer(LayerTreeImpl* tree_impl, int id) |
| 2788 : LayerImpl(tree_impl, id), | 2789 : LayerImpl(tree_impl, id), |
| 2789 will_draw_returns_false_(false), | 2790 will_draw_returns_false_(false), |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2806 // The root layer is always drawn, so run this test on a child layer that | 2807 // The root layer is always drawn, so run this test on a child layer that |
| 2807 // will be masked out by the root layer's bounds. | 2808 // will be masked out by the root layer's bounds. |
| 2808 host_impl_->active_tree()->SetRootLayer( | 2809 host_impl_->active_tree()->SetRootLayer( |
| 2809 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 2810 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 2810 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( | 2811 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( |
| 2811 host_impl_->active_tree()->root_layer()); | 2812 host_impl_->active_tree()->root_layer()); |
| 2812 | 2813 |
| 2813 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 2814 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |
| 2814 root->SetHasRenderSurface(true); | 2815 root->SetHasRenderSurface(true); |
| 2815 DidDrawCheckLayer* layer = | 2816 DidDrawCheckLayer* layer = |
| 2816 static_cast<DidDrawCheckLayer*>(root->children()[0]); | 2817 static_cast<DidDrawCheckLayer*>(root->children()[0].get()); |
| 2817 | 2818 |
| 2818 { | 2819 { |
| 2819 LayerTreeHostImpl::FrameData frame; | 2820 LayerTreeHostImpl::FrameData frame; |
| 2820 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); | 2821 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); |
| 2821 host_impl_->DrawLayers(&frame); | 2822 host_impl_->DrawLayers(&frame); |
| 2822 host_impl_->DidDrawAllLayers(frame); | 2823 host_impl_->DidDrawAllLayers(frame); |
| 2823 | 2824 |
| 2824 EXPECT_TRUE(layer->will_draw_called()); | 2825 EXPECT_TRUE(layer->will_draw_called()); |
| 2825 EXPECT_TRUE(layer->append_quads_called()); | 2826 EXPECT_TRUE(layer->append_quads_called()); |
| 2826 EXPECT_TRUE(layer->did_draw_called()); | 2827 EXPECT_TRUE(layer->did_draw_called()); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2848 // The root layer is always drawn, so run this test on a child layer that | 2849 // The root layer is always drawn, so run this test on a child layer that |
| 2849 // will be masked out by the root layer's bounds. | 2850 // will be masked out by the root layer's bounds. |
| 2850 host_impl_->active_tree()->SetRootLayer( | 2851 host_impl_->active_tree()->SetRootLayer( |
| 2851 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 2852 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 2852 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( | 2853 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( |
| 2853 host_impl_->active_tree()->root_layer()); | 2854 host_impl_->active_tree()->root_layer()); |
| 2854 root->SetMasksToBounds(true); | 2855 root->SetMasksToBounds(true); |
| 2855 root->SetHasRenderSurface(true); | 2856 root->SetHasRenderSurface(true); |
| 2856 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 2857 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |
| 2857 DidDrawCheckLayer* layer = | 2858 DidDrawCheckLayer* layer = |
| 2858 static_cast<DidDrawCheckLayer*>(root->children()[0]); | 2859 static_cast<DidDrawCheckLayer*>(root->children()[0].get()); |
| 2859 // Ensure visible_layer_rect for layer is empty. | 2860 // Ensure visible_layer_rect for layer is empty. |
| 2860 layer->SetPosition(gfx::PointF(100.f, 100.f)); | 2861 layer->SetPosition(gfx::PointF(100.f, 100.f)); |
| 2861 layer->SetBounds(gfx::Size(10, 10)); | 2862 layer->SetBounds(gfx::Size(10, 10)); |
| 2862 | 2863 |
| 2863 LayerTreeHostImpl::FrameData frame; | 2864 LayerTreeHostImpl::FrameData frame; |
| 2864 | 2865 |
| 2865 EXPECT_FALSE(layer->will_draw_called()); | 2866 EXPECT_FALSE(layer->will_draw_called()); |
| 2866 EXPECT_FALSE(layer->did_draw_called()); | 2867 EXPECT_FALSE(layer->did_draw_called()); |
| 2867 | 2868 |
| 2868 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 2869 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2895 gfx::Size big_size(1000, 1000); | 2896 gfx::Size big_size(1000, 1000); |
| 2896 host_impl_->SetViewportSize(big_size); | 2897 host_impl_->SetViewportSize(big_size); |
| 2897 | 2898 |
| 2898 host_impl_->active_tree()->SetRootLayer( | 2899 host_impl_->active_tree()->SetRootLayer( |
| 2899 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 2900 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 2900 DidDrawCheckLayer* root = | 2901 DidDrawCheckLayer* root = |
| 2901 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2902 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2902 | 2903 |
| 2903 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 2904 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |
| 2904 DidDrawCheckLayer* occluded_layer = | 2905 DidDrawCheckLayer* occluded_layer = |
| 2905 static_cast<DidDrawCheckLayer*>(root->children()[0]); | 2906 static_cast<DidDrawCheckLayer*>(root->children()[0].get()); |
| 2906 | 2907 |
| 2907 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); | 2908 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); |
| 2908 root->SetHasRenderSurface(true); | 2909 root->SetHasRenderSurface(true); |
| 2909 DidDrawCheckLayer* top_layer = | 2910 DidDrawCheckLayer* top_layer = |
| 2910 static_cast<DidDrawCheckLayer*>(root->children()[1]); | 2911 static_cast<DidDrawCheckLayer*>(root->children()[1].get()); |
| 2911 // This layer covers the occluded_layer above. Make this layer large so it can | 2912 // This layer covers the occluded_layer above. Make this layer large so it can |
| 2912 // occlude. | 2913 // occlude. |
| 2913 top_layer->SetBounds(big_size); | 2914 top_layer->SetBounds(big_size); |
| 2914 top_layer->SetContentsOpaque(true); | 2915 top_layer->SetContentsOpaque(true); |
| 2915 | 2916 |
| 2916 LayerTreeHostImpl::FrameData frame; | 2917 LayerTreeHostImpl::FrameData frame; |
| 2917 | 2918 |
| 2918 EXPECT_FALSE(occluded_layer->will_draw_called()); | 2919 EXPECT_FALSE(occluded_layer->will_draw_called()); |
| 2919 EXPECT_FALSE(occluded_layer->did_draw_called()); | 2920 EXPECT_FALSE(occluded_layer->did_draw_called()); |
| 2920 EXPECT_FALSE(top_layer->will_draw_called()); | 2921 EXPECT_FALSE(top_layer->will_draw_called()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2932 | 2933 |
| 2933 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) { | 2934 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) { |
| 2934 host_impl_->active_tree()->SetRootLayer( | 2935 host_impl_->active_tree()->SetRootLayer( |
| 2935 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 2936 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 2936 DidDrawCheckLayer* root = | 2937 DidDrawCheckLayer* root = |
| 2937 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2938 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2938 | 2939 |
| 2939 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 2940 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |
| 2940 root->SetHasRenderSurface(true); | 2941 root->SetHasRenderSurface(true); |
| 2941 DidDrawCheckLayer* layer1 = | 2942 DidDrawCheckLayer* layer1 = |
| 2942 static_cast<DidDrawCheckLayer*>(root->children()[0]); | 2943 static_cast<DidDrawCheckLayer*>(root->children()[0].get()); |
| 2943 | 2944 |
| 2944 layer1->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); | 2945 layer1->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); |
| 2945 DidDrawCheckLayer* layer2 = | 2946 DidDrawCheckLayer* layer2 = |
| 2946 static_cast<DidDrawCheckLayer*>(layer1->children()[0]); | 2947 static_cast<DidDrawCheckLayer*>(layer1->children()[0].get()); |
| 2947 | 2948 |
| 2948 layer1->SetHasRenderSurface(true); | 2949 layer1->SetHasRenderSurface(true); |
| 2949 layer1->SetShouldFlattenTransform(true); | 2950 layer1->SetShouldFlattenTransform(true); |
| 2950 | 2951 |
| 2951 EXPECT_FALSE(root->did_draw_called()); | 2952 EXPECT_FALSE(root->did_draw_called()); |
| 2952 EXPECT_FALSE(layer1->did_draw_called()); | 2953 EXPECT_FALSE(layer1->did_draw_called()); |
| 2953 EXPECT_FALSE(layer2->did_draw_called()); | 2954 EXPECT_FALSE(layer2->did_draw_called()); |
| 2954 | 2955 |
| 2955 LayerTreeHostImpl::FrameData frame; | 2956 LayerTreeHostImpl::FrameData frame; |
| 2956 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( | 2957 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3106 | 3107 |
| 3107 LayerTreeHostImpl::FrameData frame; | 3108 LayerTreeHostImpl::FrameData frame; |
| 3108 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); | 3109 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); |
| 3109 host_impl_->DrawLayers(&frame); | 3110 host_impl_->DrawLayers(&frame); |
| 3110 host_impl_->DidDrawAllLayers(frame); | 3111 host_impl_->DidDrawAllLayers(frame); |
| 3111 host_impl_->SwapBuffers(frame); | 3112 host_impl_->SwapBuffers(frame); |
| 3112 | 3113 |
| 3113 for (size_t i = 0; i < cases.size(); ++i) { | 3114 for (size_t i = 0; i < cases.size(); ++i) { |
| 3114 const auto& testcase = cases[i]; | 3115 const auto& testcase = cases[i]; |
| 3115 std::vector<LayerImpl*> to_remove; | 3116 std::vector<LayerImpl*> to_remove; |
| 3116 for (auto* child : root->children()) | 3117 for (const auto& child : root->children()) |
| 3117 to_remove.push_back(child); | 3118 to_remove.push_back(child.get()); |
| 3118 for (auto* child : to_remove) | 3119 for (auto* child : to_remove) |
| 3119 root->RemoveChild(child); | 3120 root->RemoveChild(child); |
| 3120 | 3121 |
| 3121 std::ostringstream scope; | 3122 std::ostringstream scope; |
| 3122 scope << "Test case: " << i; | 3123 scope << "Test case: " << i; |
| 3123 SCOPED_TRACE(scope.str()); | 3124 SCOPED_TRACE(scope.str()); |
| 3124 | 3125 |
| 3125 root->AddChild(MissingTextureAnimatingLayer::Create( | 3126 root->AddChild(MissingTextureAnimatingLayer::Create( |
| 3126 host_impl_->active_tree(), 2, testcase.layer_before.has_missing_tile, | 3127 host_impl_->active_tree(), 2, testcase.layer_before.has_missing_tile, |
| 3127 testcase.layer_before.has_incomplete_tile, | 3128 testcase.layer_before.has_incomplete_tile, |
| 3128 testcase.layer_before.is_animating, host_impl_->resource_provider())); | 3129 testcase.layer_before.is_animating, host_impl_->resource_provider())); |
| 3129 DidDrawCheckLayer* before = | 3130 DidDrawCheckLayer* before = |
| 3130 static_cast<DidDrawCheckLayer*>(root->children().back()); | 3131 static_cast<DidDrawCheckLayer*>(root->children().back().get()); |
| 3131 if (testcase.layer_before.has_copy_request) | 3132 if (testcase.layer_before.has_copy_request) |
| 3132 before->AddCopyRequest(); | 3133 before->AddCopyRequest(); |
| 3133 | 3134 |
| 3134 root->AddChild(MissingTextureAnimatingLayer::Create( | 3135 root->AddChild(MissingTextureAnimatingLayer::Create( |
| 3135 host_impl_->active_tree(), 3, testcase.layer_between.has_missing_tile, | 3136 host_impl_->active_tree(), 3, testcase.layer_between.has_missing_tile, |
| 3136 testcase.layer_between.has_incomplete_tile, | 3137 testcase.layer_between.has_incomplete_tile, |
| 3137 testcase.layer_between.is_animating, host_impl_->resource_provider())); | 3138 testcase.layer_between.is_animating, host_impl_->resource_provider())); |
| 3138 DidDrawCheckLayer* between = | 3139 DidDrawCheckLayer* between = |
| 3139 static_cast<DidDrawCheckLayer*>(root->children().back()); | 3140 static_cast<DidDrawCheckLayer*>(root->children().back().get()); |
| 3140 if (testcase.layer_between.has_copy_request) | 3141 if (testcase.layer_between.has_copy_request) |
| 3141 between->AddCopyRequest(); | 3142 between->AddCopyRequest(); |
| 3142 | 3143 |
| 3143 root->AddChild(MissingTextureAnimatingLayer::Create( | 3144 root->AddChild(MissingTextureAnimatingLayer::Create( |
| 3144 host_impl_->active_tree(), 4, testcase.layer_after.has_missing_tile, | 3145 host_impl_->active_tree(), 4, testcase.layer_after.has_missing_tile, |
| 3145 testcase.layer_after.has_incomplete_tile, | 3146 testcase.layer_after.has_incomplete_tile, |
| 3146 testcase.layer_after.is_animating, host_impl_->resource_provider())); | 3147 testcase.layer_after.is_animating, host_impl_->resource_provider())); |
| 3147 DidDrawCheckLayer* after = | 3148 DidDrawCheckLayer* after = |
| 3148 static_cast<DidDrawCheckLayer*>(root->children().back()); | 3149 static_cast<DidDrawCheckLayer*>(root->children().back().get()); |
| 3149 if (testcase.layer_after.has_copy_request) | 3150 if (testcase.layer_after.has_copy_request) |
| 3150 after->AddCopyRequest(); | 3151 after->AddCopyRequest(); |
| 3151 | 3152 |
| 3152 if (testcase.high_res_required) | 3153 if (testcase.high_res_required) |
| 3153 host_impl_->SetRequiresHighResToDraw(); | 3154 host_impl_->SetRequiresHighResToDraw(); |
| 3154 | 3155 |
| 3155 LayerTreeHostImpl::FrameData frame; | 3156 LayerTreeHostImpl::FrameData frame; |
| 3156 EXPECT_EQ(testcase.expected_result, PrepareToDrawFrame(&frame)); | 3157 EXPECT_EQ(testcase.expected_result, PrepareToDrawFrame(&frame)); |
| 3157 host_impl_->DrawLayers(&frame); | 3158 host_impl_->DrawLayers(&frame); |
| 3158 host_impl_->DidDrawAllLayers(frame); | 3159 host_impl_->DidDrawAllLayers(frame); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3199 | 3200 |
| 3200 LayerTreeHostImpl::FrameData frame; | 3201 LayerTreeHostImpl::FrameData frame; |
| 3201 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); | 3202 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); |
| 3202 host_impl_->DrawLayers(&frame); | 3203 host_impl_->DrawLayers(&frame); |
| 3203 host_impl_->DidDrawAllLayers(frame); | 3204 host_impl_->DidDrawAllLayers(frame); |
| 3204 host_impl_->SwapBuffers(frame); | 3205 host_impl_->SwapBuffers(frame); |
| 3205 | 3206 |
| 3206 for (size_t i = 0; i < cases.size(); ++i) { | 3207 for (size_t i = 0; i < cases.size(); ++i) { |
| 3207 const auto& testcase = cases[i]; | 3208 const auto& testcase = cases[i]; |
| 3208 std::vector<LayerImpl*> to_remove; | 3209 std::vector<LayerImpl*> to_remove; |
| 3209 for (auto* child : root->children()) | 3210 for (const auto& child : root->children()) |
| 3210 to_remove.push_back(child); | 3211 to_remove.push_back(child.get()); |
| 3211 for (auto* child : to_remove) | 3212 for (auto* child : to_remove) |
| 3212 root->RemoveChild(child); | 3213 root->RemoveChild(child); |
| 3213 | 3214 |
| 3214 std::ostringstream scope; | 3215 std::ostringstream scope; |
| 3215 scope << "Test case: " << i; | 3216 scope << "Test case: " << i; |
| 3216 SCOPED_TRACE(scope.str()); | 3217 SCOPED_TRACE(scope.str()); |
| 3217 | 3218 |
| 3218 root->AddChild(MissingTextureAnimatingLayer::Create( | 3219 root->AddChild(MissingTextureAnimatingLayer::Create( |
| 3219 host_impl_->active_tree(), 2, testcase.layer_before.has_missing_tile, | 3220 host_impl_->active_tree(), 2, testcase.layer_before.has_missing_tile, |
| 3220 testcase.layer_before.has_incomplete_tile, | 3221 testcase.layer_before.has_incomplete_tile, |
| 3221 testcase.layer_before.is_animating, host_impl_->resource_provider())); | 3222 testcase.layer_before.is_animating, host_impl_->resource_provider())); |
| 3222 DidDrawCheckLayer* before = | 3223 DidDrawCheckLayer* before = |
| 3223 static_cast<DidDrawCheckLayer*>(root->children().back()); | 3224 static_cast<DidDrawCheckLayer*>(root->children().back().get()); |
| 3224 if (testcase.layer_before.has_copy_request) | 3225 if (testcase.layer_before.has_copy_request) |
| 3225 before->AddCopyRequest(); | 3226 before->AddCopyRequest(); |
| 3226 | 3227 |
| 3227 root->AddChild(MissingTextureAnimatingLayer::Create( | 3228 root->AddChild(MissingTextureAnimatingLayer::Create( |
| 3228 host_impl_->active_tree(), 3, testcase.layer_between.has_missing_tile, | 3229 host_impl_->active_tree(), 3, testcase.layer_between.has_missing_tile, |
| 3229 testcase.layer_between.has_incomplete_tile, | 3230 testcase.layer_between.has_incomplete_tile, |
| 3230 testcase.layer_between.is_animating, host_impl_->resource_provider())); | 3231 testcase.layer_between.is_animating, host_impl_->resource_provider())); |
| 3231 DidDrawCheckLayer* between = | 3232 DidDrawCheckLayer* between = |
| 3232 static_cast<DidDrawCheckLayer*>(root->children().back()); | 3233 static_cast<DidDrawCheckLayer*>(root->children().back().get()); |
| 3233 if (testcase.layer_between.has_copy_request) | 3234 if (testcase.layer_between.has_copy_request) |
| 3234 between->AddCopyRequest(); | 3235 between->AddCopyRequest(); |
| 3235 | 3236 |
| 3236 root->AddChild(MissingTextureAnimatingLayer::Create( | 3237 root->AddChild(MissingTextureAnimatingLayer::Create( |
| 3237 host_impl_->active_tree(), 4, testcase.layer_after.has_missing_tile, | 3238 host_impl_->active_tree(), 4, testcase.layer_after.has_missing_tile, |
| 3238 testcase.layer_after.has_incomplete_tile, | 3239 testcase.layer_after.has_incomplete_tile, |
| 3239 testcase.layer_after.is_animating, host_impl_->resource_provider())); | 3240 testcase.layer_after.is_animating, host_impl_->resource_provider())); |
| 3240 DidDrawCheckLayer* after = | 3241 DidDrawCheckLayer* after = |
| 3241 static_cast<DidDrawCheckLayer*>(root->children().back()); | 3242 static_cast<DidDrawCheckLayer*>(root->children().back().get()); |
| 3242 if (testcase.layer_after.has_copy_request) | 3243 if (testcase.layer_after.has_copy_request) |
| 3243 after->AddCopyRequest(); | 3244 after->AddCopyRequest(); |
| 3244 | 3245 |
| 3245 if (testcase.high_res_required) | 3246 if (testcase.high_res_required) |
| 3246 host_impl_->SetRequiresHighResToDraw(); | 3247 host_impl_->SetRequiresHighResToDraw(); |
| 3247 | 3248 |
| 3248 LayerTreeHostImpl::FrameData frame; | 3249 LayerTreeHostImpl::FrameData frame; |
| 3249 EXPECT_EQ(testcase.expected_result, PrepareToDrawFrame(&frame)); | 3250 EXPECT_EQ(testcase.expected_result, PrepareToDrawFrame(&frame)); |
| 3250 host_impl_->DrawLayers(&frame); | 3251 host_impl_->DrawLayers(&frame); |
| 3251 host_impl_->DidDrawAllLayers(frame); | 3252 host_impl_->DidDrawAllLayers(frame); |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3383 HidingTopControlsExpandsScrollableSize) { | 3384 HidingTopControlsExpandsScrollableSize) { |
| 3384 SetupTopControlsAndScrollLayerWithVirtualViewport( | 3385 SetupTopControlsAndScrollLayerWithVirtualViewport( |
| 3385 gfx::Size(50, 50), gfx::Size(50, 50), gfx::Size(50, 50)); | 3386 gfx::Size(50, 50), gfx::Size(50, 50), gfx::Size(50, 50)); |
| 3386 | 3387 |
| 3387 LayerTreeImpl* active_tree = host_impl_->active_tree(); | 3388 LayerTreeImpl* active_tree = host_impl_->active_tree(); |
| 3388 | 3389 |
| 3389 // Create a content layer beneath the outer viewport scroll layer. | 3390 // Create a content layer beneath the outer viewport scroll layer. |
| 3390 int id = host_impl_->OuterViewportScrollLayer()->id(); | 3391 int id = host_impl_->OuterViewportScrollLayer()->id(); |
| 3391 host_impl_->OuterViewportScrollLayer()->AddChild( | 3392 host_impl_->OuterViewportScrollLayer()->AddChild( |
| 3392 LayerImpl::Create(host_impl_->active_tree(), id + 2)); | 3393 LayerImpl::Create(host_impl_->active_tree(), id + 2)); |
| 3393 LayerImpl* content = active_tree->OuterViewportScrollLayer()->children()[0]; | 3394 LayerImpl* content = |
| 3395 active_tree->OuterViewportScrollLayer()->children()[0].get(); |
| 3394 content->SetBounds(gfx::Size(50, 50)); | 3396 content->SetBounds(gfx::Size(50, 50)); |
| 3395 | 3397 |
| 3396 DrawFrame(); | 3398 DrawFrame(); |
| 3397 | 3399 |
| 3398 LayerImpl* inner_container = active_tree->InnerViewportContainerLayer(); | 3400 LayerImpl* inner_container = active_tree->InnerViewportContainerLayer(); |
| 3399 LayerImpl* outer_container = active_tree->OuterViewportContainerLayer(); | 3401 LayerImpl* outer_container = active_tree->OuterViewportContainerLayer(); |
| 3400 | 3402 |
| 3401 // The top controls should start off showing so the viewport should be shrunk. | 3403 // The top controls should start off showing so the viewport should be shrunk. |
| 3402 ASSERT_EQ(gfx::Size(50, 50), inner_container->bounds()); | 3404 ASSERT_EQ(gfx::Size(50, 50), inner_container->bounds()); |
| 3403 ASSERT_EQ(gfx::Size(50, 50), outer_container->bounds()); | 3405 ASSERT_EQ(gfx::Size(50, 50), outer_container->bounds()); |
| (...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4217 default_page_scale_matrix.Scale(default_page_scale, default_page_scale); | 4219 default_page_scale_matrix.Scale(default_page_scale, default_page_scale); |
| 4218 | 4220 |
| 4219 float new_page_scale = 2.f; | 4221 float new_page_scale = 2.f; |
| 4220 gfx::Transform new_page_scale_matrix; | 4222 gfx::Transform new_page_scale_matrix; |
| 4221 new_page_scale_matrix.Scale(new_page_scale, new_page_scale); | 4223 new_page_scale_matrix.Scale(new_page_scale, new_page_scale); |
| 4222 | 4224 |
| 4223 // Create a normal scrollable root layer and another scrollable child layer. | 4225 // Create a normal scrollable root layer and another scrollable child layer. |
| 4224 LayerImpl* scroll = SetupScrollAndContentsLayers(surface_size); | 4226 LayerImpl* scroll = SetupScrollAndContentsLayers(surface_size); |
| 4225 scroll->SetDrawsContent(true); | 4227 scroll->SetDrawsContent(true); |
| 4226 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 4228 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 4227 LayerImpl* child = scroll->children()[0]; | 4229 LayerImpl* child = scroll->children()[0].get(); |
| 4228 child->SetDrawsContent(true); | 4230 child->SetDrawsContent(true); |
| 4229 | 4231 |
| 4230 scoped_ptr<LayerImpl> scrollable_child_clip = | 4232 scoped_ptr<LayerImpl> scrollable_child_clip = |
| 4231 LayerImpl::Create(host_impl_->active_tree(), 6); | 4233 LayerImpl::Create(host_impl_->active_tree(), 6); |
| 4232 scoped_ptr<LayerImpl> scrollable_child = | 4234 scoped_ptr<LayerImpl> scrollable_child = |
| 4233 CreateScrollableLayer(7, surface_size, scrollable_child_clip.get()); | 4235 CreateScrollableLayer(7, surface_size, scrollable_child_clip.get()); |
| 4234 scrollable_child_clip->AddChild(scrollable_child.Pass()); | 4236 scrollable_child_clip->AddChild(scrollable_child.Pass()); |
| 4235 child->AddChild(scrollable_child_clip.Pass()); | 4237 child->AddChild(scrollable_child_clip.Pass()); |
| 4236 LayerImpl* grand_child = child->children()[0]; | 4238 LayerImpl* grand_child = child->children()[0].get(); |
| 4237 grand_child->SetDrawsContent(true); | 4239 grand_child->SetDrawsContent(true); |
| 4238 | 4240 |
| 4239 // Set new page scale on impl thread by pinching. | 4241 // Set new page scale on impl thread by pinching. |
| 4240 RebuildPropertyTrees(); | 4242 RebuildPropertyTrees(); |
| 4241 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE); | 4243 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE); |
| 4242 host_impl_->PinchGestureBegin(); | 4244 host_impl_->PinchGestureBegin(); |
| 4243 host_impl_->PinchGestureUpdate(new_page_scale, gfx::Point()); | 4245 host_impl_->PinchGestureUpdate(new_page_scale, gfx::Point()); |
| 4244 host_impl_->PinchGestureEnd(); | 4246 host_impl_->PinchGestureEnd(); |
| 4245 host_impl_->ScrollEnd(); | 4247 host_impl_->ScrollEnd(); |
| 4246 DrawOneFrame(); | 4248 DrawOneFrame(); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4330 gfx::Vector2d scroll_delta(-8, -7); | 4332 gfx::Vector2d scroll_delta(-8, -7); |
| 4331 EXPECT_EQ(InputHandler::SCROLL_STARTED, | 4333 EXPECT_EQ(InputHandler::SCROLL_STARTED, |
| 4332 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); | 4334 host_impl_->ScrollBegin(gfx::Point(), InputHandler::WHEEL)); |
| 4333 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 4335 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
| 4334 host_impl_->ScrollEnd(); | 4336 host_impl_->ScrollEnd(); |
| 4335 | 4337 |
| 4336 scoped_ptr<ScrollAndScaleSet> scroll_info = | 4338 scoped_ptr<ScrollAndScaleSet> scroll_info = |
| 4337 host_impl_->ProcessScrollDeltas(); | 4339 host_impl_->ProcessScrollDeltas(); |
| 4338 | 4340 |
| 4339 // The grand child should have scrolled up to its limit. | 4341 // The grand child should have scrolled up to its limit. |
| 4340 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0]; | 4342 LayerImpl* child = |
| 4341 LayerImpl* grand_child = child->children()[0]; | 4343 host_impl_->active_tree()->root_layer()->children()[0].get(); |
| 4344 LayerImpl* grand_child = child->children()[0].get(); |
| 4342 EXPECT_TRUE(ScrollInfoContains(*scroll_info.get(), grand_child->id(), | 4345 EXPECT_TRUE(ScrollInfoContains(*scroll_info.get(), grand_child->id(), |
| 4343 gfx::Vector2d(0, -5))); | 4346 gfx::Vector2d(0, -5))); |
| 4344 | 4347 |
| 4345 // The child should not have scrolled. | 4348 // The child should not have scrolled. |
| 4346 ExpectNone(*scroll_info.get(), child->id()); | 4349 ExpectNone(*scroll_info.get(), child->id()); |
| 4347 } | 4350 } |
| 4348 } | 4351 } |
| 4349 | 4352 |
| 4350 TEST_F(LayerTreeHostImplTest, ScrollWithoutBubbling) { | 4353 TEST_F(LayerTreeHostImplTest, ScrollWithoutBubbling) { |
| 4351 // Scroll a child layer beyond its maximum scroll range and make sure the | 4354 // Scroll a child layer beyond its maximum scroll range and make sure the |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4386 host_impl_->ScrollBegin(gfx::Point(), | 4389 host_impl_->ScrollBegin(gfx::Point(), |
| 4387 InputHandler::NON_BUBBLING_GESTURE)); | 4390 InputHandler::NON_BUBBLING_GESTURE)); |
| 4388 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 4391 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
| 4389 host_impl_->ScrollEnd(); | 4392 host_impl_->ScrollEnd(); |
| 4390 | 4393 |
| 4391 scoped_ptr<ScrollAndScaleSet> scroll_info = | 4394 scoped_ptr<ScrollAndScaleSet> scroll_info = |
| 4392 host_impl_->ProcessScrollDeltas(); | 4395 host_impl_->ProcessScrollDeltas(); |
| 4393 | 4396 |
| 4394 // The grand child should have scrolled up to its limit. | 4397 // The grand child should have scrolled up to its limit. |
| 4395 LayerImpl* child = | 4398 LayerImpl* child = |
| 4396 host_impl_->active_tree()->root_layer()->children()[0]->children()[0]; | 4399 host_impl_->active_tree()->root_layer()->children()[0]->children() |
| 4397 LayerImpl* grand_child = child->children()[0]; | 4400 [0].get(); |
| 4401 LayerImpl* grand_child = child->children()[0].get(); |
| 4398 EXPECT_TRUE(ScrollInfoContains(*scroll_info.get(), grand_child->id(), | 4402 EXPECT_TRUE(ScrollInfoContains(*scroll_info.get(), grand_child->id(), |
| 4399 gfx::Vector2d(0, -2))); | 4403 gfx::Vector2d(0, -2))); |
| 4400 | 4404 |
| 4401 // The child should not have scrolled. | 4405 // The child should not have scrolled. |
| 4402 ExpectNone(*scroll_info.get(), child->id()); | 4406 ExpectNone(*scroll_info.get(), child->id()); |
| 4403 | 4407 |
| 4404 // The next time we scroll we should only scroll the parent. | 4408 // The next time we scroll we should only scroll the parent. |
| 4405 scroll_delta = gfx::Vector2d(0, -3); | 4409 scroll_delta = gfx::Vector2d(0, -3); |
| 4406 EXPECT_EQ(InputHandler::SCROLL_STARTED, | 4410 EXPECT_EQ(InputHandler::SCROLL_STARTED, |
| 4407 host_impl_->ScrollBegin(gfx::Point(5, 5), | 4411 host_impl_->ScrollBegin(gfx::Point(5, 5), |
| (...skipping 954 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5362 root->SetHasRenderSurface(true); | 5366 root->SetHasRenderSurface(true); |
| 5363 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 5367 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 5364 } | 5368 } |
| 5365 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 5369 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 5366 | 5370 |
| 5367 root->AddChild( | 5371 root->AddChild( |
| 5368 BlendStateCheckLayer::Create(host_impl_->active_tree(), | 5372 BlendStateCheckLayer::Create(host_impl_->active_tree(), |
| 5369 2, | 5373 2, |
| 5370 host_impl_->resource_provider())); | 5374 host_impl_->resource_provider())); |
| 5371 BlendStateCheckLayer* layer1 = | 5375 BlendStateCheckLayer* layer1 = |
| 5372 static_cast<BlendStateCheckLayer*>(root->children()[0]); | 5376 static_cast<BlendStateCheckLayer*>(root->children()[0].get()); |
| 5373 layer1->SetPosition(gfx::PointF(2.f, 2.f)); | 5377 layer1->SetPosition(gfx::PointF(2.f, 2.f)); |
| 5374 | 5378 |
| 5375 LayerTreeHostImpl::FrameData frame; | 5379 LayerTreeHostImpl::FrameData frame; |
| 5376 | 5380 |
| 5377 // Opaque layer, drawn without blending. | 5381 // Opaque layer, drawn without blending. |
| 5378 layer1->SetContentsOpaque(true); | 5382 layer1->SetContentsOpaque(true); |
| 5379 layer1->SetExpectation(false, false); | 5383 layer1->SetExpectation(false, false); |
| 5380 layer1->SetUpdateRect(gfx::Rect(layer1->bounds())); | 5384 layer1->SetUpdateRect(gfx::Rect(layer1->bounds())); |
| 5381 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); | 5385 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); |
| 5382 host_impl_->DrawLayers(&frame); | 5386 host_impl_->DrawLayers(&frame); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 5410 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); | 5414 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); |
| 5411 host_impl_->DrawLayers(&frame); | 5415 host_impl_->DrawLayers(&frame); |
| 5412 EXPECT_TRUE(layer1->quads_appended()); | 5416 EXPECT_TRUE(layer1->quads_appended()); |
| 5413 host_impl_->DidDrawAllLayers(frame); | 5417 host_impl_->DidDrawAllLayers(frame); |
| 5414 | 5418 |
| 5415 layer1->AddChild( | 5419 layer1->AddChild( |
| 5416 BlendStateCheckLayer::Create(host_impl_->active_tree(), | 5420 BlendStateCheckLayer::Create(host_impl_->active_tree(), |
| 5417 3, | 5421 3, |
| 5418 host_impl_->resource_provider())); | 5422 host_impl_->resource_provider())); |
| 5419 BlendStateCheckLayer* layer2 = | 5423 BlendStateCheckLayer* layer2 = |
| 5420 static_cast<BlendStateCheckLayer*>(layer1->children()[0]); | 5424 static_cast<BlendStateCheckLayer*>(layer1->children()[0].get()); |
| 5421 layer2->SetPosition(gfx::PointF(4.f, 4.f)); | 5425 layer2->SetPosition(gfx::PointF(4.f, 4.f)); |
| 5422 | 5426 |
| 5423 // 2 opaque layers, drawn without blending. | 5427 // 2 opaque layers, drawn without blending. |
| 5424 layer1->SetContentsOpaque(true); | 5428 layer1->SetContentsOpaque(true); |
| 5425 layer1->SetOpacity(1.f); | 5429 layer1->SetOpacity(1.f); |
| 5426 layer1->SetExpectation(false, false); | 5430 layer1->SetExpectation(false, false); |
| 5427 layer1->SetUpdateRect(gfx::Rect(layer1->bounds())); | 5431 layer1->SetUpdateRect(gfx::Rect(layer1->bounds())); |
| 5428 layer2->SetContentsOpaque(true); | 5432 layer2->SetContentsOpaque(true); |
| 5429 layer2->SetOpacity(1.f); | 5433 layer2->SetOpacity(1.f); |
| 5430 layer2->SetExpectation(false, false); | 5434 layer2->SetExpectation(false, false); |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5598 void SetupActiveTreeLayers() { | 5602 void SetupActiveTreeLayers() { |
| 5599 host_impl_->active_tree()->set_background_color(SK_ColorGRAY); | 5603 host_impl_->active_tree()->set_background_color(SK_ColorGRAY); |
| 5600 host_impl_->active_tree()->SetRootLayer( | 5604 host_impl_->active_tree()->SetRootLayer( |
| 5601 LayerImpl::Create(host_impl_->active_tree(), 1)); | 5605 LayerImpl::Create(host_impl_->active_tree(), 1)); |
| 5602 host_impl_->active_tree()->root_layer()->SetHasRenderSurface(true); | 5606 host_impl_->active_tree()->root_layer()->SetHasRenderSurface(true); |
| 5603 host_impl_->active_tree()->root_layer()->AddChild( | 5607 host_impl_->active_tree()->root_layer()->AddChild( |
| 5604 BlendStateCheckLayer::Create(host_impl_->active_tree(), | 5608 BlendStateCheckLayer::Create(host_impl_->active_tree(), |
| 5605 2, | 5609 2, |
| 5606 host_impl_->resource_provider())); | 5610 host_impl_->resource_provider())); |
| 5607 child_ = static_cast<BlendStateCheckLayer*>( | 5611 child_ = static_cast<BlendStateCheckLayer*>( |
| 5608 host_impl_->active_tree()->root_layer()->children()[0]); | 5612 host_impl_->active_tree()->root_layer()->children()[0].get()); |
| 5609 child_->SetExpectation(false, false); | 5613 child_->SetExpectation(false, false); |
| 5610 child_->SetContentsOpaque(true); | 5614 child_->SetContentsOpaque(true); |
| 5611 } | 5615 } |
| 5612 | 5616 |
| 5613 // Expect no gutter rects. | 5617 // Expect no gutter rects. |
| 5614 void TestLayerCoversFullViewport() { | 5618 void TestLayerCoversFullViewport() { |
| 5615 gfx::Rect layer_rect(viewport_size_); | 5619 gfx::Rect layer_rect(viewport_size_); |
| 5616 child_->SetPosition(gfx::PointF(layer_rect.origin())); | 5620 child_->SetPosition(gfx::PointF(layer_rect.origin())); |
| 5617 child_->SetBounds(layer_rect.size()); | 5621 child_->SetBounds(layer_rect.size()); |
| 5618 child_->SetQuadRect(gfx::Rect(layer_rect.size())); | 5622 child_->SetQuadRect(gfx::Rect(layer_rect.size())); |
| (...skipping 807 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6426 LayerTreeHostImpl::FrameData frame; | 6430 LayerTreeHostImpl::FrameData frame; |
| 6427 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); | 6431 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); |
| 6428 | 6432 |
| 6429 if (!expect_to_draw) { | 6433 if (!expect_to_draw) { |
| 6430 // With no damage, we don't draw, and no quads are created. | 6434 // With no damage, we don't draw, and no quads are created. |
| 6431 ASSERT_EQ(0u, frame.render_passes.size()); | 6435 ASSERT_EQ(0u, frame.render_passes.size()); |
| 6432 } else { | 6436 } else { |
| 6433 ASSERT_EQ(1u, frame.render_passes.size()); | 6437 ASSERT_EQ(1u, frame.render_passes.size()); |
| 6434 | 6438 |
| 6435 // Verify the damage rect for the root render pass. | 6439 // Verify the damage rect for the root render pass. |
| 6436 const RenderPass* root_render_pass = frame.render_passes.back(); | 6440 const RenderPass* root_render_pass = frame.render_passes.back().get(); |
| 6437 EXPECT_EQ(expected_damage, root_render_pass->damage_rect); | 6441 EXPECT_EQ(expected_damage, root_render_pass->damage_rect); |
| 6438 | 6442 |
| 6439 // Verify the root and child layers' quads are generated and not being | 6443 // Verify the root and child layers' quads are generated and not being |
| 6440 // culled. | 6444 // culled. |
| 6441 ASSERT_EQ(2u, root_render_pass->quad_list.size()); | 6445 ASSERT_EQ(2u, root_render_pass->quad_list.size()); |
| 6442 | 6446 |
| 6443 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0]; | 6447 LayerImpl* child = |
| 6448 host_impl_->active_tree()->root_layer()->children()[0].get(); |
| 6444 gfx::Rect expected_child_visible_rect(child->bounds()); | 6449 gfx::Rect expected_child_visible_rect(child->bounds()); |
| 6445 EXPECT_EQ(expected_child_visible_rect, | 6450 EXPECT_EQ(expected_child_visible_rect, |
| 6446 root_render_pass->quad_list.front()->visible_rect); | 6451 root_render_pass->quad_list.front()->visible_rect); |
| 6447 | 6452 |
| 6448 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 6453 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 6449 gfx::Rect expected_root_visible_rect(root->bounds()); | 6454 gfx::Rect expected_root_visible_rect(root->bounds()); |
| 6450 EXPECT_EQ(expected_root_visible_rect, | 6455 EXPECT_EQ(expected_root_visible_rect, |
| 6451 root_render_pass->quad_list.ElementAt(1)->visible_rect); | 6456 root_render_pass->quad_list.ElementAt(1)->visible_rect); |
| 6452 } | 6457 } |
| 6453 | 6458 |
| (...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6875 | 6880 |
| 6876 TEST_F(LayerTreeHostImplTest, ShutdownReleasesContext) { | 6881 TEST_F(LayerTreeHostImplTest, ShutdownReleasesContext) { |
| 6877 scoped_refptr<TestContextProvider> context_provider = | 6882 scoped_refptr<TestContextProvider> context_provider = |
| 6878 TestContextProvider::Create(); | 6883 TestContextProvider::Create(); |
| 6879 | 6884 |
| 6880 CreateHostImpl(DefaultSettings(), | 6885 CreateHostImpl(DefaultSettings(), |
| 6881 FakeOutputSurface::Create3d(context_provider)); | 6886 FakeOutputSurface::Create3d(context_provider)); |
| 6882 | 6887 |
| 6883 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); | 6888 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); |
| 6884 | 6889 |
| 6885 ScopedPtrVector<CopyOutputRequest> requests; | 6890 std::vector<scoped_ptr<CopyOutputRequest>> requests; |
| 6886 requests.push_back(CopyOutputRequest::CreateRequest( | 6891 requests.push_back(CopyOutputRequest::CreateRequest( |
| 6887 base::Bind(&ShutdownReleasesContext_Callback))); | 6892 base::Bind(&ShutdownReleasesContext_Callback))); |
| 6888 | 6893 |
| 6889 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 6894 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 6890 root->PassCopyRequests(&requests); | 6895 root->PassCopyRequests(&requests); |
| 6891 root->set_num_layer_or_descendant_with_copy_request(1); | 6896 root->set_num_layer_or_descendant_with_copy_request(1); |
| 6892 | 6897 |
| 6893 LayerTreeHostImpl::FrameData frame; | 6898 LayerTreeHostImpl::FrameData frame; |
| 6894 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); | 6899 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); |
| 6895 host_impl_->DrawLayers(&frame); | 6900 host_impl_->DrawLayers(&frame); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6974 | 6979 |
| 6975 root_scrolling->AddChild(child.Pass()); | 6980 root_scrolling->AddChild(child.Pass()); |
| 6976 root->AddChild(root_scrolling.Pass()); | 6981 root->AddChild(root_scrolling.Pass()); |
| 6977 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 6982 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 6978 host_impl_->active_tree()->DidBecomeActive(); | 6983 host_impl_->active_tree()->DidBecomeActive(); |
| 6979 host_impl_->SetViewportSize(surface_size); | 6984 host_impl_->SetViewportSize(surface_size); |
| 6980 DrawFrame(); | 6985 DrawFrame(); |
| 6981 { | 6986 { |
| 6982 scoped_ptr<ScrollAndScaleSet> scroll_info; | 6987 scoped_ptr<ScrollAndScaleSet> scroll_info; |
| 6983 LayerImpl* child = | 6988 LayerImpl* child = |
| 6984 host_impl_->active_tree()->root_layer()->children()[0]->children()[0]; | 6989 host_impl_->active_tree()->root_layer()->children()[0]->children() |
| 6985 LayerImpl* grand_child = child->children()[0]; | 6990 [0].get(); |
| 6991 LayerImpl* grand_child = child->children()[0].get(); |
| 6986 | 6992 |
| 6987 gfx::Vector2d scroll_delta(0, -2); | 6993 gfx::Vector2d scroll_delta(0, -2); |
| 6988 EXPECT_EQ(InputHandler::SCROLL_STARTED, | 6994 EXPECT_EQ(InputHandler::SCROLL_STARTED, |
| 6989 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); | 6995 host_impl_->ScrollBegin(gfx::Point(), InputHandler::GESTURE)); |
| 6990 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll); | 6996 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), scroll_delta).did_scroll); |
| 6991 | 6997 |
| 6992 // The grand child should have scrolled up to its limit. | 6998 // The grand child should have scrolled up to its limit. |
| 6993 scroll_info = host_impl_->ProcessScrollDeltas(); | 6999 scroll_info = host_impl_->ProcessScrollDeltas(); |
| 6994 ASSERT_EQ(1u, scroll_info->scrolls.size()); | 7000 ASSERT_EQ(1u, scroll_info->scrolls.size()); |
| 6995 EXPECT_TRUE( | 7001 EXPECT_TRUE( |
| (...skipping 1317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8313 { | 8319 { |
| 8314 LayerTreeHostImpl::FrameData frame; | 8320 LayerTreeHostImpl::FrameData frame; |
| 8315 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); | 8321 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); |
| 8316 EXPECT_TRUE(frame.has_no_damage); | 8322 EXPECT_TRUE(frame.has_no_damage); |
| 8317 } | 8323 } |
| 8318 } | 8324 } |
| 8319 | 8325 |
| 8320 TEST_F(LayerTreeHostImplTest, ExternalViewportAffectsVisibleRects) { | 8326 TEST_F(LayerTreeHostImplTest, ExternalViewportAffectsVisibleRects) { |
| 8321 const gfx::Size layer_size(100, 100); | 8327 const gfx::Size layer_size(100, 100); |
| 8322 SetupScrollAndContentsLayers(layer_size); | 8328 SetupScrollAndContentsLayers(layer_size); |
| 8323 LayerImpl* content_layer = | 8329 LayerImpl* content_layer = host_impl_->active_tree() |
| 8324 host_impl_->active_tree()->OuterViewportScrollLayer()->children()[0]; | 8330 ->OuterViewportScrollLayer() |
| 8331 ->children()[0] |
| 8332 .get(); |
| 8325 RebuildPropertyTrees(); | 8333 RebuildPropertyTrees(); |
| 8326 | 8334 |
| 8327 bool update_lcd_text = false; | 8335 bool update_lcd_text = false; |
| 8328 | 8336 |
| 8329 host_impl_->SetViewportSize(gfx::Size(90, 90)); | 8337 host_impl_->SetViewportSize(gfx::Size(90, 90)); |
| 8330 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); | 8338 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); |
| 8331 EXPECT_EQ(gfx::Rect(90, 90), content_layer->visible_layer_rect()); | 8339 EXPECT_EQ(gfx::Rect(90, 90), content_layer->visible_layer_rect()); |
| 8332 | 8340 |
| 8333 gfx::Transform external_transform; | 8341 gfx::Transform external_transform; |
| 8334 gfx::Rect external_viewport(10, 20); | 8342 gfx::Rect external_viewport(10, 20); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 8348 external_transform, external_viewport, external_clip, external_viewport, | 8356 external_transform, external_viewport, external_clip, external_viewport, |
| 8349 external_transform, resourceless_software_draw); | 8357 external_transform, resourceless_software_draw); |
| 8350 | 8358 |
| 8351 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); | 8359 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); |
| 8352 EXPECT_EQ(gfx::Rect(90, 90), content_layer->visible_layer_rect()); | 8360 EXPECT_EQ(gfx::Rect(90, 90), content_layer->visible_layer_rect()); |
| 8353 } | 8361 } |
| 8354 | 8362 |
| 8355 TEST_F(LayerTreeHostImplTest, ExternalTransformAffectsVisibleRects) { | 8363 TEST_F(LayerTreeHostImplTest, ExternalTransformAffectsVisibleRects) { |
| 8356 const gfx::Size layer_size(100, 100); | 8364 const gfx::Size layer_size(100, 100); |
| 8357 SetupScrollAndContentsLayers(layer_size); | 8365 SetupScrollAndContentsLayers(layer_size); |
| 8358 LayerImpl* content_layer = | 8366 LayerImpl* content_layer = host_impl_->active_tree() |
| 8359 host_impl_->active_tree()->OuterViewportScrollLayer()->children()[0]; | 8367 ->OuterViewportScrollLayer() |
| 8368 ->children()[0] |
| 8369 .get(); |
| 8360 RebuildPropertyTrees(); | 8370 RebuildPropertyTrees(); |
| 8361 | 8371 |
| 8362 bool update_lcd_text = false; | 8372 bool update_lcd_text = false; |
| 8363 | 8373 |
| 8364 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 8374 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
| 8365 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); | 8375 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); |
| 8366 EXPECT_EQ(gfx::Rect(50, 50), content_layer->visible_layer_rect()); | 8376 EXPECT_EQ(gfx::Rect(50, 50), content_layer->visible_layer_rect()); |
| 8367 | 8377 |
| 8368 gfx::Transform external_transform; | 8378 gfx::Transform external_transform; |
| 8369 external_transform.Translate(10, 10); | 8379 external_transform.Translate(10, 10); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 8386 external_transform, external_viewport, external_clip, external_viewport, | 8396 external_transform, external_viewport, external_clip, external_viewport, |
| 8387 external_transform, resourceless_software_draw); | 8397 external_transform, resourceless_software_draw); |
| 8388 | 8398 |
| 8389 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); | 8399 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); |
| 8390 EXPECT_EQ(gfx::Rect(50, 50), content_layer->visible_layer_rect()); | 8400 EXPECT_EQ(gfx::Rect(50, 50), content_layer->visible_layer_rect()); |
| 8391 } | 8401 } |
| 8392 | 8402 |
| 8393 TEST_F(LayerTreeHostImplTest, ExternalTransformAffectsSublayerScaleFactor) { | 8403 TEST_F(LayerTreeHostImplTest, ExternalTransformAffectsSublayerScaleFactor) { |
| 8394 const gfx::Size layer_size(100, 100); | 8404 const gfx::Size layer_size(100, 100); |
| 8395 SetupScrollAndContentsLayers(layer_size); | 8405 SetupScrollAndContentsLayers(layer_size); |
| 8396 LayerImpl* content_layer = | 8406 LayerImpl* content_layer = host_impl_->active_tree() |
| 8397 host_impl_->active_tree()->OuterViewportScrollLayer()->children()[0]; | 8407 ->OuterViewportScrollLayer() |
| 8408 ->children()[0] |
| 8409 .get(); |
| 8398 content_layer->AddChild(LayerImpl::Create(host_impl_->active_tree(), 100)); | 8410 content_layer->AddChild(LayerImpl::Create(host_impl_->active_tree(), 100)); |
| 8399 LayerImpl* test_layer = host_impl_->active_tree()->LayerById(100); | 8411 LayerImpl* test_layer = host_impl_->active_tree()->LayerById(100); |
| 8400 test_layer->SetHasRenderSurface(true); | 8412 test_layer->SetHasRenderSurface(true); |
| 8401 test_layer->SetDrawsContent(true); | 8413 test_layer->SetDrawsContent(true); |
| 8402 test_layer->SetBounds(layer_size); | 8414 test_layer->SetBounds(layer_size); |
| 8403 gfx::Transform perspective_transform; | 8415 gfx::Transform perspective_transform; |
| 8404 perspective_transform.ApplyPerspectiveDepth(2); | 8416 perspective_transform.ApplyPerspectiveDepth(2); |
| 8405 test_layer->SetTransform(perspective_transform); | 8417 test_layer->SetTransform(perspective_transform); |
| 8406 | 8418 |
| 8407 RebuildPropertyTrees(); | 8419 RebuildPropertyTrees(); |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8705 // we go from having a valid output surface to not having a valid output | 8717 // we go from having a valid output surface to not having a valid output |
| 8706 // surface. | 8718 // surface. |
| 8707 EXPECT_EQ(0, num_lost_surfaces_); | 8719 EXPECT_EQ(0, num_lost_surfaces_); |
| 8708 host_impl_->DidLoseOutputSurface(); | 8720 host_impl_->DidLoseOutputSurface(); |
| 8709 EXPECT_EQ(1, num_lost_surfaces_); | 8721 EXPECT_EQ(1, num_lost_surfaces_); |
| 8710 host_impl_->DidLoseOutputSurface(); | 8722 host_impl_->DidLoseOutputSurface(); |
| 8711 EXPECT_LE(1, num_lost_surfaces_); | 8723 EXPECT_LE(1, num_lost_surfaces_); |
| 8712 } | 8724 } |
| 8713 | 8725 |
| 8714 size_t CountRenderPassesWithId(const RenderPassList& list, RenderPassId id) { | 8726 size_t CountRenderPassesWithId(const RenderPassList& list, RenderPassId id) { |
| 8715 return std::count_if(list.begin(), list.end(), | 8727 return std::count_if( |
| 8716 [id](const RenderPass* p) { return p->id == id; }); | 8728 list.begin(), list.end(), |
| 8729 [id](const scoped_ptr<RenderPass>& p) { return p->id == id; }); |
| 8717 } | 8730 } |
| 8718 | 8731 |
| 8719 TEST_F(LayerTreeHostImplTest, RemoveUnreferencedRenderPass) { | 8732 TEST_F(LayerTreeHostImplTest, RemoveUnreferencedRenderPass) { |
| 8720 LayerTreeHostImpl::FrameData frame; | 8733 LayerTreeHostImpl::FrameData frame; |
| 8721 frame.render_passes.push_back(RenderPass::Create()); | 8734 frame.render_passes.push_back(RenderPass::Create()); |
| 8722 RenderPass* pass3 = frame.render_passes.back(); | 8735 RenderPass* pass3 = frame.render_passes.back().get(); |
| 8723 frame.render_passes.push_back(RenderPass::Create()); | 8736 frame.render_passes.push_back(RenderPass::Create()); |
| 8724 RenderPass* pass2 = frame.render_passes.back(); | 8737 RenderPass* pass2 = frame.render_passes.back().get(); |
| 8725 frame.render_passes.push_back(RenderPass::Create()); | 8738 frame.render_passes.push_back(RenderPass::Create()); |
| 8726 RenderPass* pass1 = frame.render_passes.back(); | 8739 RenderPass* pass1 = frame.render_passes.back().get(); |
| 8727 | 8740 |
| 8728 pass1->SetNew(RenderPassId(1, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); | 8741 pass1->SetNew(RenderPassId(1, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 8729 pass2->SetNew(RenderPassId(2, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); | 8742 pass2->SetNew(RenderPassId(2, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 8730 pass3->SetNew(RenderPassId(3, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); | 8743 pass3->SetNew(RenderPassId(3, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 8731 | 8744 |
| 8732 // Add a quad to each pass so they aren't empty. | 8745 // Add a quad to each pass so they aren't empty. |
| 8733 SolidColorDrawQuad* color_quad; | 8746 SolidColorDrawQuad* color_quad; |
| 8734 color_quad = pass1->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 8747 color_quad = pass1->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 8735 color_quad->material = DrawQuad::SOLID_COLOR; | 8748 color_quad->material = DrawQuad::SOLID_COLOR; |
| 8736 color_quad = pass2->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 8749 color_quad = pass2->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 8752 EXPECT_EQ(0u, | 8765 EXPECT_EQ(0u, |
| 8753 CountRenderPassesWithId(frame.render_passes, RenderPassId(2, 0))); | 8766 CountRenderPassesWithId(frame.render_passes, RenderPassId(2, 0))); |
| 8754 EXPECT_EQ(0u, | 8767 EXPECT_EQ(0u, |
| 8755 CountRenderPassesWithId(frame.render_passes, RenderPassId(3, 0))); | 8768 CountRenderPassesWithId(frame.render_passes, RenderPassId(3, 0))); |
| 8756 EXPECT_EQ(RenderPassId(1, 0), frame.render_passes[0]->id); | 8769 EXPECT_EQ(RenderPassId(1, 0), frame.render_passes[0]->id); |
| 8757 } | 8770 } |
| 8758 | 8771 |
| 8759 TEST_F(LayerTreeHostImplTest, RemoveEmptyRenderPass) { | 8772 TEST_F(LayerTreeHostImplTest, RemoveEmptyRenderPass) { |
| 8760 LayerTreeHostImpl::FrameData frame; | 8773 LayerTreeHostImpl::FrameData frame; |
| 8761 frame.render_passes.push_back(RenderPass::Create()); | 8774 frame.render_passes.push_back(RenderPass::Create()); |
| 8762 RenderPass* pass3 = frame.render_passes.back(); | 8775 RenderPass* pass3 = frame.render_passes.back().get(); |
| 8763 frame.render_passes.push_back(RenderPass::Create()); | 8776 frame.render_passes.push_back(RenderPass::Create()); |
| 8764 RenderPass* pass2 = frame.render_passes.back(); | 8777 RenderPass* pass2 = frame.render_passes.back().get(); |
| 8765 frame.render_passes.push_back(RenderPass::Create()); | 8778 frame.render_passes.push_back(RenderPass::Create()); |
| 8766 RenderPass* pass1 = frame.render_passes.back(); | 8779 RenderPass* pass1 = frame.render_passes.back().get(); |
| 8767 | 8780 |
| 8768 pass1->SetNew(RenderPassId(1, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); | 8781 pass1->SetNew(RenderPassId(1, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 8769 pass2->SetNew(RenderPassId(2, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); | 8782 pass2->SetNew(RenderPassId(2, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 8770 pass3->SetNew(RenderPassId(3, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); | 8783 pass3->SetNew(RenderPassId(3, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 8771 | 8784 |
| 8772 // pass1 is not empty, but pass2 and pass3 are. | 8785 // pass1 is not empty, but pass2 and pass3 are. |
| 8773 SolidColorDrawQuad* color_quad; | 8786 SolidColorDrawQuad* color_quad; |
| 8774 color_quad = pass1->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 8787 color_quad = pass1->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 8775 color_quad->material = DrawQuad::SOLID_COLOR; | 8788 color_quad->material = DrawQuad::SOLID_COLOR; |
| 8776 | 8789 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 8797 CountRenderPassesWithId(frame.render_passes, RenderPassId(3, 0))); | 8810 CountRenderPassesWithId(frame.render_passes, RenderPassId(3, 0))); |
| 8798 EXPECT_EQ(RenderPassId(1, 0), frame.render_passes[0]->id); | 8811 EXPECT_EQ(RenderPassId(1, 0), frame.render_passes[0]->id); |
| 8799 // The RenderPassDrawQuad should be removed from pass1. | 8812 // The RenderPassDrawQuad should be removed from pass1. |
| 8800 EXPECT_EQ(1u, pass1->quad_list.size()); | 8813 EXPECT_EQ(1u, pass1->quad_list.size()); |
| 8801 EXPECT_EQ(DrawQuad::SOLID_COLOR, pass1->quad_list.ElementAt(0)->material); | 8814 EXPECT_EQ(DrawQuad::SOLID_COLOR, pass1->quad_list.ElementAt(0)->material); |
| 8802 } | 8815 } |
| 8803 | 8816 |
| 8804 TEST_F(LayerTreeHostImplTest, DoNotRemoveEmptyRootRenderPass) { | 8817 TEST_F(LayerTreeHostImplTest, DoNotRemoveEmptyRootRenderPass) { |
| 8805 LayerTreeHostImpl::FrameData frame; | 8818 LayerTreeHostImpl::FrameData frame; |
| 8806 frame.render_passes.push_back(RenderPass::Create()); | 8819 frame.render_passes.push_back(RenderPass::Create()); |
| 8807 RenderPass* pass3 = frame.render_passes.back(); | 8820 RenderPass* pass3 = frame.render_passes.back().get(); |
| 8808 frame.render_passes.push_back(RenderPass::Create()); | 8821 frame.render_passes.push_back(RenderPass::Create()); |
| 8809 RenderPass* pass2 = frame.render_passes.back(); | 8822 RenderPass* pass2 = frame.render_passes.back().get(); |
| 8810 frame.render_passes.push_back(RenderPass::Create()); | 8823 frame.render_passes.push_back(RenderPass::Create()); |
| 8811 RenderPass* pass1 = frame.render_passes.back(); | 8824 RenderPass* pass1 = frame.render_passes.back().get(); |
| 8812 | 8825 |
| 8813 pass1->SetNew(RenderPassId(1, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); | 8826 pass1->SetNew(RenderPassId(1, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 8814 pass2->SetNew(RenderPassId(2, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); | 8827 pass2->SetNew(RenderPassId(2, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 8815 pass3->SetNew(RenderPassId(3, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); | 8828 pass3->SetNew(RenderPassId(3, 0), gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 8816 | 8829 |
| 8817 // pass3 is referenced by pass2. | 8830 // pass3 is referenced by pass2. |
| 8818 RenderPassDrawQuad* rpdq = | 8831 RenderPassDrawQuad* rpdq = |
| 8819 pass2->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); | 8832 pass2->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); |
| 8820 rpdq->material = DrawQuad::RENDER_PASS; | 8833 rpdq->material = DrawQuad::RENDER_PASS; |
| 8821 rpdq->render_pass_id = pass3->id; | 8834 rpdq->render_pass_id = pass3->id; |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9064 host_impl_->active_tree()->SetPageScaleOnActiveTree(2.f); | 9077 host_impl_->active_tree()->SetPageScaleOnActiveTree(2.f); |
| 9065 DrawFrame(); | 9078 DrawFrame(); |
| 9066 in_subtree_of_page_scale_layer = host_impl_->active_tree()->LayerById(100); | 9079 in_subtree_of_page_scale_layer = host_impl_->active_tree()->LayerById(100); |
| 9067 node = host_impl_->active_tree()->property_trees()->transform_tree.Node( | 9080 node = host_impl_->active_tree()->property_trees()->transform_tree.Node( |
| 9068 in_subtree_of_page_scale_layer->transform_tree_index()); | 9081 in_subtree_of_page_scale_layer->transform_tree_index()); |
| 9069 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(2.f, 2.f)); | 9082 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(2.f, 2.f)); |
| 9070 } | 9083 } |
| 9071 | 9084 |
| 9072 } // namespace | 9085 } // namespace |
| 9073 } // namespace cc | 9086 } // namespace cc |
| OLD | NEW |