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.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 #include "cc/quads/io_surface_draw_quad.h" | 31 #include "cc/quads/io_surface_draw_quad.h" |
32 #include "cc/quads/render_pass_draw_quad.h" | 32 #include "cc/quads/render_pass_draw_quad.h" |
33 #include "cc/quads/tile_draw_quad.h" | 33 #include "cc/quads/tile_draw_quad.h" |
34 #include "cc/test/fake_content_layer_client.h" | 34 #include "cc/test/fake_content_layer_client.h" |
35 #include "cc/test/fake_display_list_recording_source.h" | 35 #include "cc/test/fake_display_list_recording_source.h" |
36 #include "cc/test/fake_layer_tree_host_client.h" | 36 #include "cc/test/fake_layer_tree_host_client.h" |
37 #include "cc/test/fake_output_surface.h" | 37 #include "cc/test/fake_output_surface.h" |
38 #include "cc/test/fake_painted_scrollbar_layer.h" | 38 #include "cc/test/fake_painted_scrollbar_layer.h" |
39 #include "cc/test/fake_picture_layer.h" | 39 #include "cc/test/fake_picture_layer.h" |
40 #include "cc/test/fake_picture_layer_impl.h" | 40 #include "cc/test/fake_picture_layer_impl.h" |
41 #include "cc/test/fake_picture_pile.h" | |
42 #include "cc/test/fake_proxy.h" | 41 #include "cc/test/fake_proxy.h" |
43 #include "cc/test/fake_scoped_ui_resource.h" | 42 #include "cc/test/fake_scoped_ui_resource.h" |
44 #include "cc/test/fake_video_frame_provider.h" | 43 #include "cc/test/fake_video_frame_provider.h" |
45 #include "cc/test/geometry_test_utils.h" | 44 #include "cc/test/geometry_test_utils.h" |
46 #include "cc/test/layer_tree_test.h" | 45 #include "cc/test/layer_tree_test.h" |
47 #include "cc/test/test_shared_bitmap_manager.h" | 46 #include "cc/test/test_shared_bitmap_manager.h" |
48 #include "cc/test/test_web_graphics_context_3d.h" | 47 #include "cc/test/test_web_graphics_context_3d.h" |
49 #include "cc/trees/layer_tree_host_impl.h" | 48 #include "cc/trees/layer_tree_host_impl.h" |
50 #include "cc/trees/layer_tree_impl.h" | 49 #include "cc/trees/layer_tree_impl.h" |
51 #include "cc/trees/single_thread_proxy.h" | 50 #include "cc/trees/single_thread_proxy.h" |
(...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1143 | 1142 |
1144 // Tests that if a layer is not drawn because of some reason in the parent then | 1143 // Tests that if a layer is not drawn because of some reason in the parent then |
1145 // its damage is preserved until the next time it is drawn. | 1144 // its damage is preserved until the next time it is drawn. |
1146 class LayerTreeHostTestDamageWithScale : public LayerTreeHostTest { | 1145 class LayerTreeHostTestDamageWithScale : public LayerTreeHostTest { |
1147 public: | 1146 public: |
1148 LayerTreeHostTestDamageWithScale() {} | 1147 LayerTreeHostTestDamageWithScale() {} |
1149 | 1148 |
1150 void SetupTree() override { | 1149 void SetupTree() override { |
1151 client_.set_fill_with_nonsolid_color(true); | 1150 client_.set_fill_with_nonsolid_color(true); |
1152 | 1151 |
1153 scoped_ptr<FakePicturePile> pile( | 1152 scoped_ptr<FakeDisplayListRecordingSource> recording( |
1154 new FakePicturePile(LayerTreeSettings().minimum_contents_scale, | 1153 new FakeDisplayListRecordingSource( |
1155 LayerTreeSettings().default_tile_grid_size)); | 1154 LayerTreeSettings().default_tile_grid_size)); |
1156 root_layer_ = FakePictureLayer::CreateWithRecordingSource( | 1155 root_layer_ = FakePictureLayer::CreateWithRecordingSource( |
1157 layer_settings(), &client_, pile.Pass()); | 1156 layer_settings(), &client_, recording.Pass()); |
1158 root_layer_->SetBounds(gfx::Size(50, 50)); | 1157 root_layer_->SetBounds(gfx::Size(50, 50)); |
1159 | 1158 |
1160 pile.reset(new FakePicturePile(LayerTreeSettings().minimum_contents_scale, | 1159 recording.reset(new FakeDisplayListRecordingSource( |
1161 LayerTreeSettings().default_tile_grid_size)); | 1160 LayerTreeSettings().default_tile_grid_size)); |
1162 child_layer_ = FakePictureLayer::CreateWithRecordingSource( | 1161 child_layer_ = FakePictureLayer::CreateWithRecordingSource( |
1163 layer_settings(), &client_, pile.Pass()); | 1162 layer_settings(), &client_, recording.Pass()); |
1164 child_layer_->SetBounds(gfx::Size(25, 25)); | 1163 child_layer_->SetBounds(gfx::Size(25, 25)); |
1165 child_layer_->SetIsDrawable(true); | 1164 child_layer_->SetIsDrawable(true); |
1166 child_layer_->SetContentsOpaque(true); | 1165 child_layer_->SetContentsOpaque(true); |
1167 root_layer_->AddChild(child_layer_); | 1166 root_layer_->AddChild(child_layer_); |
1168 | 1167 |
1169 layer_tree_host()->SetRootLayer(root_layer_); | 1168 layer_tree_host()->SetRootLayer(root_layer_); |
1170 LayerTreeHostTest::SetupTree(); | 1169 LayerTreeHostTest::SetupTree(); |
1171 } | 1170 } |
1172 | 1171 |
1173 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 1172 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
(...skipping 3752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4926 | 4925 |
4927 scoped_refptr<Layer> root = Layer::Create(layer_settings()); | 4926 scoped_refptr<Layer> root = Layer::Create(layer_settings()); |
4928 root->SetBounds(gfx::Size(500, 500)); | 4927 root->SetBounds(gfx::Size(500, 500)); |
4929 | 4928 |
4930 scoped_refptr<Layer> pinch = Layer::Create(layer_settings()); | 4929 scoped_refptr<Layer> pinch = Layer::Create(layer_settings()); |
4931 pinch->SetBounds(gfx::Size(500, 500)); | 4930 pinch->SetBounds(gfx::Size(500, 500)); |
4932 pinch->SetScrollClipLayerId(root->id()); | 4931 pinch->SetScrollClipLayerId(root->id()); |
4933 pinch->SetIsContainerForFixedPositionLayers(true); | 4932 pinch->SetIsContainerForFixedPositionLayers(true); |
4934 root->AddChild(pinch); | 4933 root->AddChild(pinch); |
4935 | 4934 |
4936 scoped_ptr<FakePicturePile> pile( | 4935 scoped_ptr<FakeDisplayListRecordingSource> recording( |
4937 new FakePicturePile(LayerTreeSettings().minimum_contents_scale, | 4936 new FakeDisplayListRecordingSource( |
4938 LayerTreeSettings().default_tile_grid_size)); | 4937 LayerTreeSettings().default_tile_grid_size)); |
4939 pile->SetPlaybackAllowedEvent(&playback_allowed_event_); | 4938 recording->SetPlaybackAllowedEvent(&playback_allowed_event_); |
4940 scoped_refptr<FakePictureLayer> layer = | 4939 scoped_refptr<FakePictureLayer> layer = |
4941 FakePictureLayer::CreateWithRecordingSource(layer_settings(), &client_, | 4940 FakePictureLayer::CreateWithRecordingSource(layer_settings(), &client_, |
4942 pile.Pass()); | 4941 recording.Pass()); |
4943 layer->SetBounds(gfx::Size(500, 500)); | 4942 layer->SetBounds(gfx::Size(500, 500)); |
4944 layer->SetContentsOpaque(true); | 4943 layer->SetContentsOpaque(true); |
4945 // Avoid LCD text on the layer so we don't cause extra commits when we | 4944 // Avoid LCD text on the layer so we don't cause extra commits when we |
4946 // pinch. | 4945 // pinch. |
4947 pinch->AddChild(layer); | 4946 pinch->AddChild(layer); |
4948 | 4947 |
4949 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch); | 4948 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch); |
4950 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f); | 4949 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f); |
4951 layer_tree_host()->SetRootLayer(root); | 4950 layer_tree_host()->SetRootLayer(root); |
4952 LayerTreeHostTest::SetupTree(); | 4951 LayerTreeHostTest::SetupTree(); |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5130 void InitializeSettings(LayerTreeSettings* settings) override { | 5129 void InitializeSettings(LayerTreeSettings* settings) override { |
5131 settings->gpu_rasterization_forced = true; | 5130 settings->gpu_rasterization_forced = true; |
5132 } | 5131 } |
5133 | 5132 |
5134 void SetupTree() override { | 5133 void SetupTree() override { |
5135 client_.set_fill_with_nonsolid_color(true); | 5134 client_.set_fill_with_nonsolid_color(true); |
5136 | 5135 |
5137 scoped_refptr<Layer> root = Layer::Create(layer_settings()); | 5136 scoped_refptr<Layer> root = Layer::Create(layer_settings()); |
5138 root->SetBounds(gfx::Size(500, 500)); | 5137 root->SetBounds(gfx::Size(500, 500)); |
5139 | 5138 |
5140 scoped_ptr<FakePicturePile> pile( | 5139 scoped_ptr<FakeDisplayListRecordingSource> recording( |
5141 new FakePicturePile(LayerTreeSettings().minimum_contents_scale, | 5140 new FakeDisplayListRecordingSource( |
5142 LayerTreeSettings().default_tile_grid_size)); | 5141 LayerTreeSettings().default_tile_grid_size)); |
5143 scoped_refptr<FakePictureLayer> layer = | 5142 scoped_refptr<FakePictureLayer> layer = |
5144 FakePictureLayer::CreateWithRecordingSource(layer_settings(), &client_, | 5143 FakePictureLayer::CreateWithRecordingSource(layer_settings(), &client_, |
5145 pile.Pass()); | 5144 recording.Pass()); |
5146 layer->SetBounds(gfx::Size(500, 500)); | 5145 layer->SetBounds(gfx::Size(500, 500)); |
5147 layer->SetContentsOpaque(true); | 5146 layer->SetContentsOpaque(true); |
5148 root->AddChild(layer); | 5147 root->AddChild(layer); |
5149 | 5148 |
5150 layer_tree_host()->SetRootLayer(root); | 5149 layer_tree_host()->SetRootLayer(root); |
5151 LayerTreeHostTest::SetupTree(); | 5150 LayerTreeHostTest::SetupTree(); |
5152 } | 5151 } |
5153 | 5152 |
5154 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 5153 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
5155 | 5154 |
(...skipping 16 matching lines...) Expand all Loading... |
5172 GpuRasterizationRasterizesBorderTiles() : viewport_size_(1024, 2048) {} | 5171 GpuRasterizationRasterizesBorderTiles() : viewport_size_(1024, 2048) {} |
5173 | 5172 |
5174 void InitializeSettings(LayerTreeSettings* settings) override { | 5173 void InitializeSettings(LayerTreeSettings* settings) override { |
5175 settings->gpu_rasterization_enabled = true; | 5174 settings->gpu_rasterization_enabled = true; |
5176 settings->gpu_rasterization_forced = true; | 5175 settings->gpu_rasterization_forced = true; |
5177 } | 5176 } |
5178 | 5177 |
5179 void SetupTree() override { | 5178 void SetupTree() override { |
5180 client_.set_fill_with_nonsolid_color(true); | 5179 client_.set_fill_with_nonsolid_color(true); |
5181 | 5180 |
5182 scoped_ptr<FakePicturePile> pile( | 5181 scoped_ptr<FakeDisplayListRecordingSource> recording( |
5183 new FakePicturePile(LayerTreeSettings().minimum_contents_scale, | 5182 new FakeDisplayListRecordingSource( |
5184 LayerTreeSettings().default_tile_grid_size)); | 5183 LayerTreeSettings().default_tile_grid_size)); |
5185 scoped_refptr<FakePictureLayer> root = | 5184 scoped_refptr<FakePictureLayer> root = |
5186 FakePictureLayer::CreateWithRecordingSource(layer_settings(), &client_, | 5185 FakePictureLayer::CreateWithRecordingSource(layer_settings(), &client_, |
5187 pile.Pass()); | 5186 recording.Pass()); |
5188 root->SetBounds(gfx::Size(10000, 10000)); | 5187 root->SetBounds(gfx::Size(10000, 10000)); |
5189 root->SetContentsOpaque(true); | 5188 root->SetContentsOpaque(true); |
5190 | 5189 |
5191 layer_tree_host()->SetRootLayer(root); | 5190 layer_tree_host()->SetRootLayer(root); |
5192 LayerTreeHostTest::SetupTree(); | 5191 LayerTreeHostTest::SetupTree(); |
5193 layer_tree_host()->SetViewportSize(viewport_size_); | 5192 layer_tree_host()->SetViewportSize(viewport_size_); |
5194 } | 5193 } |
5195 | 5194 |
5196 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 5195 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
5197 | 5196 |
(...skipping 27 matching lines...) Expand all Loading... |
5225 | 5224 |
5226 scoped_refptr<Layer> root = Layer::Create(layer_settings()); | 5225 scoped_refptr<Layer> root = Layer::Create(layer_settings()); |
5227 root->SetBounds(gfx::Size(500, 500)); | 5226 root->SetBounds(gfx::Size(500, 500)); |
5228 | 5227 |
5229 scoped_refptr<Layer> pinch = Layer::Create(layer_settings()); | 5228 scoped_refptr<Layer> pinch = Layer::Create(layer_settings()); |
5230 pinch->SetBounds(gfx::Size(500, 500)); | 5229 pinch->SetBounds(gfx::Size(500, 500)); |
5231 pinch->SetScrollClipLayerId(root->id()); | 5230 pinch->SetScrollClipLayerId(root->id()); |
5232 pinch->SetIsContainerForFixedPositionLayers(true); | 5231 pinch->SetIsContainerForFixedPositionLayers(true); |
5233 root->AddChild(pinch); | 5232 root->AddChild(pinch); |
5234 | 5233 |
5235 scoped_ptr<FakePicturePile> pile( | 5234 scoped_ptr<FakeDisplayListRecordingSource> recording( |
5236 new FakePicturePile(LayerTreeSettings().minimum_contents_scale, | 5235 new FakeDisplayListRecordingSource( |
5237 LayerTreeSettings().default_tile_grid_size)); | 5236 LayerTreeSettings().default_tile_grid_size)); |
5238 pile->SetPlaybackAllowedEvent(&playback_allowed_event_); | 5237 recording->SetPlaybackAllowedEvent(&playback_allowed_event_); |
5239 scoped_refptr<FakePictureLayer> layer = | 5238 scoped_refptr<FakePictureLayer> layer = |
5240 FakePictureLayer::CreateWithRecordingSource(layer_settings(), &client_, | 5239 FakePictureLayer::CreateWithRecordingSource(layer_settings(), &client_, |
5241 pile.Pass()); | 5240 recording.Pass()); |
5242 layer->SetBounds(gfx::Size(500, 500)); | 5241 layer->SetBounds(gfx::Size(500, 500)); |
5243 layer->SetContentsOpaque(true); | 5242 layer->SetContentsOpaque(true); |
5244 // Avoid LCD text on the layer so we don't cause extra commits when we | 5243 // Avoid LCD text on the layer so we don't cause extra commits when we |
5245 // pinch. | 5244 // pinch. |
5246 pinch->AddChild(layer); | 5245 pinch->AddChild(layer); |
5247 | 5246 |
5248 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch); | 5247 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch); |
5249 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f); | 5248 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f); |
5250 layer_tree_host()->SetRootLayer(root); | 5249 layer_tree_host()->SetRootLayer(root); |
5251 LayerTreeHostTest::SetupTree(); | 5250 LayerTreeHostTest::SetupTree(); |
(...skipping 1001 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6253 ScrollAndScaleSet scale_info_; | 6252 ScrollAndScaleSet scale_info_; |
6254 ScrollAndScaleSet no_op_info_; | 6253 ScrollAndScaleSet no_op_info_; |
6255 bool requested_update_layers_; | 6254 bool requested_update_layers_; |
6256 int commit_count_; | 6255 int commit_count_; |
6257 }; | 6256 }; |
6258 | 6257 |
6259 MULTI_THREAD_TEST_F(LayerTreeHostScrollingAndScalingUpdatesLayers); | 6258 MULTI_THREAD_TEST_F(LayerTreeHostScrollingAndScalingUpdatesLayers); |
6260 | 6259 |
6261 } // namespace | 6260 } // namespace |
6262 } // namespace cc | 6261 } // namespace cc |
OLD | NEW |