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

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

Issue 2751783002: cc: Replace LayerIterator with iterator that walks layer list and effect tree (Closed)
Patch Set: Rebase Created 3 years, 8 months 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_common.cc ('k') | cc/trees/layer_tree_host_impl.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_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
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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_common.cc ('k') | cc/trees/layer_tree_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698