| 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 |