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

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

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

Powered by Google App Engine
This is Rietveld 408576698