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_common.h" | 5 #include "cc/trees/layer_tree_host_common.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
11 #include <set> | 11 #include <set> |
12 #include <vector> | 12 #include <vector> |
13 | 13 |
14 #include "base/memory/ptr_util.h" | 14 #include "base/memory/ptr_util.h" |
15 #include "cc/animation/animation_host.h" | 15 #include "cc/animation/animation_host.h" |
16 #include "cc/animation/animation_id_provider.h" | 16 #include "cc/animation/animation_id_provider.h" |
17 #include "cc/animation/animation_player.h" | 17 #include "cc/animation/animation_player.h" |
18 #include "cc/animation/keyframed_animation_curve.h" | 18 #include "cc/animation/keyframed_animation_curve.h" |
19 #include "cc/animation/transform_operations.h" | 19 #include "cc/animation/transform_operations.h" |
20 #include "cc/base/math_util.h" | 20 #include "cc/base/math_util.h" |
21 #include "cc/input/main_thread_scrolling_reason.h" | 21 #include "cc/input/main_thread_scrolling_reason.h" |
22 #include "cc/layers/content_layer_client.h" | 22 #include "cc/layers/content_layer_client.h" |
| 23 #include "cc/layers/effect_tree_layer_list_iterator.h" |
23 #include "cc/layers/layer.h" | 24 #include "cc/layers/layer.h" |
24 #include "cc/layers/layer_client.h" | 25 #include "cc/layers/layer_client.h" |
25 #include "cc/layers/layer_impl.h" | 26 #include "cc/layers/layer_impl.h" |
26 #include "cc/layers/layer_iterator.h" | |
27 #include "cc/layers/render_surface_impl.h" | 27 #include "cc/layers/render_surface_impl.h" |
28 #include "cc/layers/texture_layer_impl.h" | 28 #include "cc/layers/texture_layer_impl.h" |
29 #include "cc/output/copy_output_request.h" | 29 #include "cc/output/copy_output_request.h" |
30 #include "cc/output/copy_output_result.h" | 30 #include "cc/output/copy_output_result.h" |
31 #include "cc/test/animation_test_common.h" | 31 #include "cc/test/animation_test_common.h" |
32 #include "cc/test/fake_compositor_frame_sink.h" | 32 #include "cc/test/fake_compositor_frame_sink.h" |
33 #include "cc/test/fake_content_layer_client.h" | 33 #include "cc/test/fake_content_layer_client.h" |
34 #include "cc/test/fake_impl_task_runner_provider.h" | 34 #include "cc/test/fake_impl_task_runner_provider.h" |
35 #include "cc/test/fake_layer_tree_host.h" | 35 #include "cc/test/fake_layer_tree_host.h" |
36 #include "cc/test/fake_layer_tree_host_impl.h" | 36 #include "cc/test/fake_layer_tree_host_impl.h" |
(...skipping 6096 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6133 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 6133 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
6134 root_layer, root_layer->bounds(), &render_surface_layer_list); | 6134 root_layer, root_layer->bounds(), &render_surface_layer_list); |
6135 inputs.can_render_to_separate_surface = true; | 6135 inputs.can_render_to_separate_surface = true; |
6136 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 6136 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
6137 | 6137 |
6138 EXPECT_EQ(2u, render_surface_layer_list.size()); | 6138 EXPECT_EQ(2u, render_surface_layer_list.size()); |
6139 | 6139 |
6140 int count_represents_target_render_surface = 0; | 6140 int count_represents_target_render_surface = 0; |
6141 int count_represents_contributing_render_surface = 0; | 6141 int count_represents_contributing_render_surface = 0; |
6142 int count_represents_itself = 0; | 6142 int count_represents_itself = 0; |
6143 LayerIterator end = LayerIterator::End(&render_surface_layer_list); | 6143 for (EffectTreeLayerListIterator it(host_impl.active_tree()); |
6144 for (LayerIterator it = LayerIterator::Begin(&render_surface_layer_list); | 6144 it.state() != EffectTreeLayerListIterator::State::END; ++it) { |
6145 it != end; ++it) { | 6145 if (it.state() == EffectTreeLayerListIterator::State::TARGET_SURFACE) { |
6146 if (it.represents_target_render_surface()) | |
6147 count_represents_target_render_surface++; | 6146 count_represents_target_render_surface++; |
6148 if (it.represents_contributing_render_surface()) | 6147 } else if (it.state() == |
| 6148 EffectTreeLayerListIterator::State::CONTRIBUTING_SURFACE) { |
6149 count_represents_contributing_render_surface++; | 6149 count_represents_contributing_render_surface++; |
6150 if (it.represents_itself()) | 6150 } else { |
6151 count_represents_itself++; | 6151 count_represents_itself++; |
| 6152 } |
6152 } | 6153 } |
6153 | 6154 |
6154 // Two render surfaces. | 6155 // Two render surfaces. |
6155 EXPECT_EQ(2, count_represents_target_render_surface); | 6156 EXPECT_EQ(2, count_represents_target_render_surface); |
6156 // Second render surface contributes to root render surface. | 6157 // Second render surface contributes to root render surface. |
6157 EXPECT_EQ(1, count_represents_contributing_render_surface); | 6158 EXPECT_EQ(1, count_represents_contributing_render_surface); |
6158 // All 4 layers represent itself. | 6159 // All 4 layers represent itself. |
6159 EXPECT_EQ(4, count_represents_itself); | 6160 EXPECT_EQ(4, count_represents_itself); |
6160 } | 6161 } |
6161 | 6162 |
6162 { | 6163 { |
6163 LayerImplList render_surface_layer_list; | 6164 LayerImplList render_surface_layer_list; |
6164 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 6165 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
6165 root_layer, root_layer->bounds(), &render_surface_layer_list); | 6166 root_layer, root_layer->bounds(), &render_surface_layer_list); |
6166 inputs.can_render_to_separate_surface = false; | 6167 inputs.can_render_to_separate_surface = false; |
6167 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 6168 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
6168 | 6169 |
6169 EXPECT_EQ(1u, render_surface_layer_list.size()); | 6170 EXPECT_EQ(1u, render_surface_layer_list.size()); |
6170 | 6171 |
6171 int count_represents_target_render_surface = 0; | 6172 int count_represents_target_render_surface = 0; |
6172 int count_represents_contributing_render_surface = 0; | 6173 int count_represents_contributing_render_surface = 0; |
6173 int count_represents_itself = 0; | 6174 int count_represents_itself = 0; |
6174 LayerIterator end = LayerIterator::End(&render_surface_layer_list); | 6175 for (EffectTreeLayerListIterator it(host_impl.active_tree()); |
6175 for (LayerIterator it = LayerIterator::Begin(&render_surface_layer_list); | 6176 it.state() != EffectTreeLayerListIterator::State::END; ++it) { |
6176 it != end; ++it) { | 6177 if (it.state() == EffectTreeLayerListIterator::State::TARGET_SURFACE) { |
6177 if (it.represents_target_render_surface()) | |
6178 count_represents_target_render_surface++; | 6178 count_represents_target_render_surface++; |
6179 if (it.represents_contributing_render_surface()) | 6179 } else if (it.state() == |
| 6180 EffectTreeLayerListIterator::State::CONTRIBUTING_SURFACE) { |
6180 count_represents_contributing_render_surface++; | 6181 count_represents_contributing_render_surface++; |
6181 if (it.represents_itself()) | 6182 } else { |
6182 count_represents_itself++; | 6183 count_represents_itself++; |
| 6184 } |
6183 } | 6185 } |
6184 | 6186 |
6185 // Only root layer has a render surface. | 6187 // Only root layer has a render surface. |
6186 EXPECT_EQ(1, count_represents_target_render_surface); | 6188 EXPECT_EQ(1, count_represents_target_render_surface); |
6187 // No layer contributes a render surface to root render surface. | 6189 // No layer contributes a render surface to root render surface. |
6188 EXPECT_EQ(0, count_represents_contributing_render_surface); | 6190 EXPECT_EQ(0, count_represents_contributing_render_surface); |
6189 // All 4 layers represent itself. | 6191 // All 4 layers represent itself. |
6190 EXPECT_EQ(4, count_represents_itself); | 6192 EXPECT_EQ(4, count_represents_itself); |
6191 } | 6193 } |
6192 } | 6194 } |
(...skipping 2131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8324 EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw)); | 8326 EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw)); |
8325 EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw)); | 8327 EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw)); |
8326 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw)); | 8328 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw)); |
8327 | 8329 |
8328 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw)); | 8330 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw)); |
8329 EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw)); | 8331 EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw)); |
8330 EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw)); | 8332 EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw)); |
8331 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw)); | 8333 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw)); |
8332 } | 8334 } |
8333 | 8335 |
8334 static void GatherDrawnLayers(const LayerImplList* rsll, | 8336 static void GatherDrawnLayers(LayerTreeImpl* tree_impl, |
8335 std::set<LayerImpl*>* drawn_layers) { | 8337 std::set<LayerImpl*>* drawn_layers) { |
8336 for (LayerIterator it = LayerIterator::Begin(rsll), | 8338 for (EffectTreeLayerListIterator it(tree_impl); |
8337 end = LayerIterator::End(rsll); | 8339 it.state() != EffectTreeLayerListIterator::State::END; ++it) { |
8338 it != end; ++it) { | 8340 if (it.state() == EffectTreeLayerListIterator::State::LAYER) |
8339 LayerImpl* layer = *it; | 8341 drawn_layers->insert(it.current_layer()); |
8340 if (it.represents_itself()) | |
8341 drawn_layers->insert(layer); | |
8342 | 8342 |
8343 if (!it.represents_contributing_render_surface()) | 8343 if (it.state() != EffectTreeLayerListIterator::State::CONTRIBUTING_SURFACE) |
8344 continue; | 8344 continue; |
8345 | 8345 |
8346 if (layer->GetRenderSurface()->MaskLayer()) | 8346 if (it.current_render_surface()->MaskLayer()) |
8347 drawn_layers->insert(layer->GetRenderSurface()->MaskLayer()); | 8347 drawn_layers->insert(it.current_render_surface()->MaskLayer()); |
8348 } | 8348 } |
8349 } | 8349 } |
8350 | 8350 |
8351 TEST_F(LayerTreeHostCommonTest, RenderSurfaceLayerListMembership) { | 8351 TEST_F(LayerTreeHostCommonTest, RenderSurfaceLayerListMembership) { |
8352 FakeImplTaskRunnerProvider task_runner_provider; | 8352 FakeImplTaskRunnerProvider task_runner_provider; |
8353 TestTaskGraphRunner task_graph_runner; | 8353 TestTaskGraphRunner task_graph_runner; |
8354 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &task_graph_runner); | 8354 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &task_graph_runner); |
8355 | 8355 |
8356 std::unique_ptr<LayerImpl> grand_parent = | 8356 std::unique_ptr<LayerImpl> grand_parent = |
8357 LayerImpl::Create(host_impl.active_tree(), 1); | 8357 LayerImpl::Create(host_impl.active_tree(), 1); |
(...skipping 28 matching lines...) Expand all Loading... |
8386 ExecuteCalculateDrawProperties(grand_parent_raw); | 8386 ExecuteCalculateDrawProperties(grand_parent_raw); |
8387 | 8387 |
8388 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); | 8388 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); |
8389 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); | 8389 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); |
8390 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); | 8390 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); |
8391 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); | 8391 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); |
8392 EXPECT_FALSE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); | 8392 EXPECT_FALSE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); |
8393 | 8393 |
8394 std::set<LayerImpl*> expected; | 8394 std::set<LayerImpl*> expected; |
8395 std::set<LayerImpl*> actual; | 8395 std::set<LayerImpl*> actual; |
8396 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); | 8396 GatherDrawnLayers(host_impl.active_tree(), &actual); |
8397 EXPECT_EQ(expected, actual); | 8397 EXPECT_EQ(expected, actual); |
8398 | 8398 |
8399 // If we force render surface, but none of the layers are in the layer list, | 8399 // If we force render surface, but none of the layers are in the layer list, |
8400 // then this layer should not appear in RSLL. | 8400 // then this layer should not appear in RSLL. |
8401 grand_child1_raw->test_properties()->force_render_surface = true; | 8401 grand_child1_raw->test_properties()->force_render_surface = true; |
8402 grand_child1_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; | 8402 grand_child1_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; |
8403 | 8403 |
8404 ExecuteCalculateDrawProperties(grand_parent_raw); | 8404 ExecuteCalculateDrawProperties(grand_parent_raw); |
8405 | 8405 |
8406 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); | 8406 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); |
8407 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); | 8407 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); |
8408 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); | 8408 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); |
8409 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); | 8409 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); |
8410 EXPECT_FALSE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); | 8410 EXPECT_FALSE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); |
8411 | 8411 |
8412 expected.clear(); | 8412 expected.clear(); |
8413 actual.clear(); | 8413 actual.clear(); |
8414 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); | 8414 GatherDrawnLayers(host_impl.active_tree(), &actual); |
8415 EXPECT_EQ(expected, actual); | 8415 EXPECT_EQ(expected, actual); |
8416 | 8416 |
8417 // However, if we say that this layer also draws content, it will appear in | 8417 // However, if we say that this layer also draws content, it will appear in |
8418 // RSLL. | 8418 // RSLL. |
8419 grand_child1_raw->SetDrawsContent(true); | 8419 grand_child1_raw->SetDrawsContent(true); |
8420 | 8420 |
8421 ExecuteCalculateDrawProperties(grand_parent_raw); | 8421 ExecuteCalculateDrawProperties(grand_parent_raw); |
8422 | 8422 |
8423 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); | 8423 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); |
8424 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); | 8424 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); |
8425 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); | 8425 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); |
8426 EXPECT_TRUE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); | 8426 EXPECT_TRUE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); |
8427 EXPECT_FALSE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); | 8427 EXPECT_FALSE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); |
8428 | 8428 |
8429 expected.clear(); | 8429 expected.clear(); |
8430 expected.insert(grand_child1_raw); | 8430 expected.insert(grand_child1_raw); |
8431 | 8431 |
8432 actual.clear(); | 8432 actual.clear(); |
8433 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); | 8433 GatherDrawnLayers(host_impl.active_tree(), &actual); |
8434 EXPECT_EQ(expected, actual); | 8434 EXPECT_EQ(expected, actual); |
8435 | 8435 |
8436 // Now child is forced to have a render surface, and one if its children draws | 8436 // Now child is forced to have a render surface, and one if its children draws |
8437 // content. | 8437 // content. |
8438 grand_child1_raw->SetDrawsContent(false); | 8438 grand_child1_raw->SetDrawsContent(false); |
8439 grand_child1_raw->test_properties()->force_render_surface = false; | 8439 grand_child1_raw->test_properties()->force_render_surface = false; |
8440 grand_child1_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; | 8440 grand_child1_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; |
8441 child_raw->test_properties()->force_render_surface = true; | 8441 child_raw->test_properties()->force_render_surface = true; |
8442 grand_child2_raw->SetDrawsContent(true); | 8442 grand_child2_raw->SetDrawsContent(true); |
8443 | 8443 |
8444 ExecuteCalculateDrawProperties(grand_parent_raw); | 8444 ExecuteCalculateDrawProperties(grand_parent_raw); |
8445 | 8445 |
8446 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); | 8446 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); |
8447 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); | 8447 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); |
8448 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); | 8448 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); |
8449 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); | 8449 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); |
8450 EXPECT_TRUE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); | 8450 EXPECT_TRUE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); |
8451 | 8451 |
8452 expected.clear(); | 8452 expected.clear(); |
8453 expected.insert(grand_child2_raw); | 8453 expected.insert(grand_child2_raw); |
8454 | 8454 |
8455 actual.clear(); | 8455 actual.clear(); |
8456 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); | 8456 GatherDrawnLayers(host_impl.active_tree(), &actual); |
8457 EXPECT_EQ(expected, actual); | 8457 EXPECT_EQ(expected, actual); |
8458 | 8458 |
8459 // Add a mask layer to child. | 8459 // Add a mask layer to child. |
8460 child_raw->test_properties()->SetMaskLayer( | 8460 child_raw->test_properties()->SetMaskLayer( |
8461 LayerImpl::Create(host_impl.active_tree(), 6)); | 8461 LayerImpl::Create(host_impl.active_tree(), 6)); |
8462 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; | 8462 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; |
8463 | 8463 |
8464 ExecuteCalculateDrawProperties(grand_parent_raw); | 8464 ExecuteCalculateDrawProperties(grand_parent_raw); |
8465 | 8465 |
8466 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); | 8466 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); |
8467 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); | 8467 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); |
8468 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); | 8468 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); |
8469 EXPECT_TRUE(child_raw->test_properties() | 8469 EXPECT_TRUE(child_raw->test_properties() |
8470 ->mask_layer->is_drawn_render_surface_layer_list_member()); | 8470 ->mask_layer->is_drawn_render_surface_layer_list_member()); |
8471 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); | 8471 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); |
8472 EXPECT_TRUE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); | 8472 EXPECT_TRUE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); |
8473 | 8473 |
8474 expected.clear(); | 8474 expected.clear(); |
8475 expected.insert(grand_child2_raw); | 8475 expected.insert(grand_child2_raw); |
8476 expected.insert(child_raw->test_properties()->mask_layer); | 8476 expected.insert(child_raw->test_properties()->mask_layer); |
8477 | 8477 |
8478 expected.clear(); | 8478 expected.clear(); |
8479 expected.insert(grand_child2_raw); | 8479 expected.insert(grand_child2_raw); |
8480 expected.insert(child_raw->test_properties()->mask_layer); | 8480 expected.insert(child_raw->test_properties()->mask_layer); |
8481 | 8481 |
8482 actual.clear(); | 8482 actual.clear(); |
8483 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); | 8483 GatherDrawnLayers(host_impl.active_tree(), &actual); |
8484 EXPECT_EQ(expected, actual); | 8484 EXPECT_EQ(expected, actual); |
8485 | 8485 |
8486 ExecuteCalculateDrawProperties(grand_parent_raw); | 8486 ExecuteCalculateDrawProperties(grand_parent_raw); |
8487 | 8487 |
8488 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); | 8488 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); |
8489 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); | 8489 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); |
8490 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); | 8490 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); |
8491 EXPECT_TRUE(child_raw->test_properties() | 8491 EXPECT_TRUE(child_raw->test_properties() |
8492 ->mask_layer->is_drawn_render_surface_layer_list_member()); | 8492 ->mask_layer->is_drawn_render_surface_layer_list_member()); |
8493 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); | 8493 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); |
8494 EXPECT_TRUE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); | 8494 EXPECT_TRUE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); |
8495 | 8495 |
8496 expected.clear(); | 8496 expected.clear(); |
8497 expected.insert(grand_child2_raw); | 8497 expected.insert(grand_child2_raw); |
8498 expected.insert(child_raw->test_properties()->mask_layer); | 8498 expected.insert(child_raw->test_properties()->mask_layer); |
8499 | 8499 |
8500 actual.clear(); | 8500 actual.clear(); |
8501 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); | 8501 GatherDrawnLayers(host_impl.active_tree(), &actual); |
8502 EXPECT_EQ(expected, actual); | 8502 EXPECT_EQ(expected, actual); |
8503 | 8503 |
8504 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; | 8504 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; |
8505 | 8505 |
8506 // With nothing drawing, we should have no layers. | 8506 // With nothing drawing, we should have no layers. |
8507 grand_child2_raw->SetDrawsContent(false); | 8507 grand_child2_raw->SetDrawsContent(false); |
8508 | 8508 |
8509 ExecuteCalculateDrawProperties(grand_parent_raw); | 8509 ExecuteCalculateDrawProperties(grand_parent_raw); |
8510 | 8510 |
8511 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); | 8511 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); |
8512 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); | 8512 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); |
8513 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); | 8513 EXPECT_FALSE(child_raw->is_drawn_render_surface_layer_list_member()); |
8514 EXPECT_FALSE(child_raw->test_properties() | 8514 EXPECT_FALSE(child_raw->test_properties() |
8515 ->mask_layer->is_drawn_render_surface_layer_list_member()); | 8515 ->mask_layer->is_drawn_render_surface_layer_list_member()); |
8516 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); | 8516 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); |
8517 EXPECT_FALSE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); | 8517 EXPECT_FALSE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); |
8518 | 8518 |
8519 expected.clear(); | 8519 expected.clear(); |
8520 actual.clear(); | 8520 actual.clear(); |
8521 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); | 8521 GatherDrawnLayers(host_impl.active_tree(), &actual); |
8522 EXPECT_EQ(expected, actual); | 8522 EXPECT_EQ(expected, actual); |
8523 | 8523 |
8524 // Child itself draws means that we should have the child and the mask in the | 8524 // Child itself draws means that we should have the child and the mask in the |
8525 // list. | 8525 // list. |
8526 child_raw->SetDrawsContent(true); | 8526 child_raw->SetDrawsContent(true); |
8527 | 8527 |
8528 ExecuteCalculateDrawProperties(grand_parent_raw); | 8528 ExecuteCalculateDrawProperties(grand_parent_raw); |
8529 | 8529 |
8530 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); | 8530 EXPECT_FALSE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); |
8531 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); | 8531 EXPECT_FALSE(parent_raw->is_drawn_render_surface_layer_list_member()); |
8532 EXPECT_TRUE(child_raw->is_drawn_render_surface_layer_list_member()); | 8532 EXPECT_TRUE(child_raw->is_drawn_render_surface_layer_list_member()); |
8533 EXPECT_TRUE(child_raw->test_properties() | 8533 EXPECT_TRUE(child_raw->test_properties() |
8534 ->mask_layer->is_drawn_render_surface_layer_list_member()); | 8534 ->mask_layer->is_drawn_render_surface_layer_list_member()); |
8535 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); | 8535 EXPECT_FALSE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); |
8536 EXPECT_FALSE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); | 8536 EXPECT_FALSE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); |
8537 | 8537 |
8538 expected.clear(); | 8538 expected.clear(); |
8539 expected.insert(child_raw); | 8539 expected.insert(child_raw); |
8540 expected.insert(child_raw->test_properties()->mask_layer); | 8540 expected.insert(child_raw->test_properties()->mask_layer); |
8541 actual.clear(); | 8541 actual.clear(); |
8542 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); | 8542 GatherDrawnLayers(host_impl.active_tree(), &actual); |
8543 EXPECT_EQ(expected, actual); | 8543 EXPECT_EQ(expected, actual); |
8544 | 8544 |
8545 child_raw->test_properties()->SetMaskLayer(nullptr); | 8545 child_raw->test_properties()->SetMaskLayer(nullptr); |
8546 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; | 8546 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; |
8547 | 8547 |
8548 // Now everyone's a member! | 8548 // Now everyone's a member! |
8549 grand_parent_raw->SetDrawsContent(true); | 8549 grand_parent_raw->SetDrawsContent(true); |
8550 parent_raw->SetDrawsContent(true); | 8550 parent_raw->SetDrawsContent(true); |
8551 child_raw->SetDrawsContent(true); | 8551 child_raw->SetDrawsContent(true); |
8552 grand_child1_raw->SetDrawsContent(true); | 8552 grand_child1_raw->SetDrawsContent(true); |
8553 grand_child2_raw->SetDrawsContent(true); | 8553 grand_child2_raw->SetDrawsContent(true); |
8554 | 8554 |
8555 ExecuteCalculateDrawProperties(grand_parent_raw); | 8555 ExecuteCalculateDrawProperties(grand_parent_raw); |
8556 | 8556 |
8557 EXPECT_TRUE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); | 8557 EXPECT_TRUE(grand_parent_raw->is_drawn_render_surface_layer_list_member()); |
8558 EXPECT_TRUE(parent_raw->is_drawn_render_surface_layer_list_member()); | 8558 EXPECT_TRUE(parent_raw->is_drawn_render_surface_layer_list_member()); |
8559 EXPECT_TRUE(child_raw->is_drawn_render_surface_layer_list_member()); | 8559 EXPECT_TRUE(child_raw->is_drawn_render_surface_layer_list_member()); |
8560 EXPECT_TRUE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); | 8560 EXPECT_TRUE(grand_child1_raw->is_drawn_render_surface_layer_list_member()); |
8561 EXPECT_TRUE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); | 8561 EXPECT_TRUE(grand_child2_raw->is_drawn_render_surface_layer_list_member()); |
8562 | 8562 |
8563 expected.clear(); | 8563 expected.clear(); |
8564 expected.insert(grand_parent_raw); | 8564 expected.insert(grand_parent_raw); |
8565 expected.insert(parent_raw); | 8565 expected.insert(parent_raw); |
8566 expected.insert(child_raw); | 8566 expected.insert(child_raw); |
8567 expected.insert(grand_child1_raw); | 8567 expected.insert(grand_child1_raw); |
8568 expected.insert(grand_child2_raw); | 8568 expected.insert(grand_child2_raw); |
8569 | 8569 |
8570 actual.clear(); | 8570 actual.clear(); |
8571 GatherDrawnLayers(render_surface_layer_list_impl(), &actual); | 8571 GatherDrawnLayers(host_impl.active_tree(), &actual); |
8572 EXPECT_EQ(expected, actual); | 8572 EXPECT_EQ(expected, actual); |
8573 } | 8573 } |
8574 | 8574 |
8575 TEST_F(LayerTreeHostCommonTest, DrawPropertyScales) { | 8575 TEST_F(LayerTreeHostCommonTest, DrawPropertyScales) { |
8576 FakeImplTaskRunnerProvider task_runner_provider; | 8576 FakeImplTaskRunnerProvider task_runner_provider; |
8577 TestTaskGraphRunner task_graph_runner; | 8577 TestTaskGraphRunner task_graph_runner; |
8578 LayerTreeSettings settings = host()->GetSettings(); | 8578 LayerTreeSettings settings = host()->GetSettings(); |
8579 settings.layer_transforms_should_scale_layer_contents = true; | 8579 settings.layer_transforms_should_scale_layer_contents = true; |
8580 FakeLayerTreeHostImpl host_impl(settings, &task_runner_provider, | 8580 FakeLayerTreeHostImpl host_impl(settings, &task_runner_provider, |
8581 &task_graph_runner); | 8581 &task_graph_runner); |
(...skipping 1666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10248 LayerImpl* test = AddChild<LayerImpl>(hidden); | 10248 LayerImpl* test = AddChild<LayerImpl>(hidden); |
10249 | 10249 |
10250 root->SetBounds(gfx::Size(30, 30)); | 10250 root->SetBounds(gfx::Size(30, 30)); |
10251 hidden->SetBounds(gfx::Size(30, 30)); | 10251 hidden->SetBounds(gfx::Size(30, 30)); |
10252 hidden->test_properties()->force_render_surface = true; | 10252 hidden->test_properties()->force_render_surface = true; |
10253 hidden->test_properties()->hide_layer_and_subtree = true; | 10253 hidden->test_properties()->hide_layer_and_subtree = true; |
10254 test->SetBounds(gfx::Size(30, 30)); | 10254 test->SetBounds(gfx::Size(30, 30)); |
10255 test->test_properties()->force_render_surface = true; | 10255 test->test_properties()->force_render_surface = true; |
10256 | 10256 |
10257 ExecuteCalculateDrawProperties(root); | 10257 ExecuteCalculateDrawProperties(root); |
10258 EXPECT_TRUE(test->IsHidden()); | 10258 EXPECT_EQ(0.f, |
| 10259 test->GetRenderSurface()->OwningEffectNode()->screen_space_opacity); |
10259 | 10260 |
10260 hidden->test_properties()->hide_layer_and_subtree = false; | 10261 hidden->test_properties()->hide_layer_and_subtree = false; |
10261 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 10262 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
10262 ExecuteCalculateDrawProperties(root); | 10263 ExecuteCalculateDrawProperties(root); |
10263 EXPECT_FALSE(test->IsHidden()); | 10264 EXPECT_EQ(1.f, |
| 10265 test->GetRenderSurface()->OwningEffectNode()->screen_space_opacity); |
10264 } | 10266 } |
10265 | 10267 |
10266 TEST_F(LayerTreeHostCommonTest, TwoUnclippedRenderSurfaces) { | 10268 TEST_F(LayerTreeHostCommonTest, TwoUnclippedRenderSurfaces) { |
10267 LayerImpl* root = root_layer_for_testing(); | 10269 LayerImpl* root = root_layer_for_testing(); |
10268 LayerImpl* render_surface1 = AddChild<LayerImpl>(root); | 10270 LayerImpl* render_surface1 = AddChild<LayerImpl>(root); |
10269 LayerImpl* render_surface2 = AddChild<LayerImpl>(render_surface1); | 10271 LayerImpl* render_surface2 = AddChild<LayerImpl>(render_surface1); |
10270 LayerImpl* clip_child = AddChild<LayerImpl>(render_surface2); | 10272 LayerImpl* clip_child = AddChild<LayerImpl>(render_surface2); |
10271 | 10273 |
10272 root->SetBounds(gfx::Size(30, 30)); | 10274 root->SetBounds(gfx::Size(30, 30)); |
10273 root->SetMasksToBounds(true); | 10275 root->SetMasksToBounds(true); |
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10806 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index()); | 10808 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index()); |
10807 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index()); | 10809 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index()); |
10808 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index()); | 10810 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index()); |
10809 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index()); | 10811 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index()); |
10810 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index()); | 10812 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index()); |
10811 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index()); | 10813 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index()); |
10812 } | 10814 } |
10813 | 10815 |
10814 } // namespace | 10816 } // namespace |
10815 } // namespace cc | 10817 } // namespace cc |
OLD | NEW |