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

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

Issue 2118993002: Detemplatize cc property nodes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 5 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>
(...skipping 22 matching lines...) Expand all
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"
37 #include "cc/test/fake_output_surface.h" 37 #include "cc/test/fake_output_surface.h"
38 #include "cc/test/fake_picture_layer.h" 38 #include "cc/test/fake_picture_layer.h"
39 #include "cc/test/fake_picture_layer_impl.h" 39 #include "cc/test/fake_picture_layer_impl.h"
40 #include "cc/test/geometry_test_utils.h" 40 #include "cc/test/geometry_test_utils.h"
41 #include "cc/test/layer_tree_host_common_test.h" 41 #include "cc/test/layer_tree_host_common_test.h"
42 #include "cc/test/test_task_graph_runner.h" 42 #include "cc/test/test_task_graph_runner.h"
43 #include "cc/trees/clip_node.h"
43 #include "cc/trees/draw_property_utils.h" 44 #include "cc/trees/draw_property_utils.h"
45 #include "cc/trees/effect_node.h"
44 #include "cc/trees/layer_tree_impl.h" 46 #include "cc/trees/layer_tree_impl.h"
47 #include "cc/trees/scroll_node.h"
45 #include "cc/trees/single_thread_proxy.h" 48 #include "cc/trees/single_thread_proxy.h"
46 #include "cc/trees/task_runner_provider.h" 49 #include "cc/trees/task_runner_provider.h"
50 #include "cc/trees/transform_node.h"
47 #include "testing/gmock/include/gmock/gmock.h" 51 #include "testing/gmock/include/gmock/gmock.h"
48 #include "testing/gtest/include/gtest/gtest.h" 52 #include "testing/gtest/include/gtest/gtest.h"
49 #include "third_party/skia/include/effects/SkOffsetImageFilter.h" 53 #include "third_party/skia/include/effects/SkOffsetImageFilter.h"
50 #include "ui/gfx/geometry/quad_f.h" 54 #include "ui/gfx/geometry/quad_f.h"
51 #include "ui/gfx/geometry/vector2d_conversions.h" 55 #include "ui/gfx/geometry/vector2d_conversions.h"
52 #include "ui/gfx/transform.h" 56 #include "ui/gfx/transform.h"
53 57
54 namespace cc { 58 namespace cc {
55 namespace { 59 namespace {
56 60
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 gfx::PointF(10, 10), gfx::Size(100, 100), true, 186 gfx::PointF(10, 10), gfx::Size(100, 100), true,
183 false); 187 false);
184 child->test_properties()->opacity = 0.f; 188 child->test_properties()->opacity = 0.f;
185 ExecuteCalculateDrawProperties(parent); 189 ExecuteCalculateDrawProperties(parent);
186 EffectTree& effect_tree = 190 EffectTree& effect_tree =
187 parent->layer_tree_impl()->property_trees()->effect_tree; 191 parent->layer_tree_impl()->property_trees()->effect_tree;
188 EffectNode* node = effect_tree.Node(child->effect_tree_index()); 192 EffectNode* node = effect_tree.Node(child->effect_tree_index());
189 const int transform_tree_size = parent->layer_tree_impl() 193 const int transform_tree_size = parent->layer_tree_impl()
190 ->property_trees() 194 ->property_trees()
191 ->transform_tree.next_available_id(); 195 ->transform_tree.next_available_id();
192 EXPECT_LT(node->data.transform_id, transform_tree_size); 196 EXPECT_LT(node->transform_id, transform_tree_size);
193 } 197 }
194 198
195 TEST_F(LayerTreeHostCommonTest, TransformsForSingleLayer) { 199 TEST_F(LayerTreeHostCommonTest, TransformsForSingleLayer) {
196 gfx::Transform identity_matrix; 200 gfx::Transform identity_matrix;
197 LayerImpl* root = root_layer_for_testing(); 201 LayerImpl* root = root_layer_for_testing();
198 LayerImpl* layer = AddChild<LayerImpl>(root); 202 LayerImpl* layer = AddChild<LayerImpl>(root);
199 203
200 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), 204 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(),
201 gfx::PointF(), gfx::Size(1, 2), true, false); 205 gfx::PointF(), gfx::Size(1, 2), true, false);
202 206
(...skipping 1163 matching lines...) Expand 10 before | Expand all | Expand 10 after
1366 } 1370 }
1367 // The layer is fully transparent, but has a background filter, so it 1371 // The layer is fully transparent, but has a background filter, so it
1368 // shouldn't be skipped and should be drawn. 1372 // shouldn't be skipped and should be drawn.
1369 ASSERT_TRUE(parent->render_surface()); 1373 ASSERT_TRUE(parent->render_surface());
1370 EXPECT_EQ(1U, parent->render_surface()->layer_list().size()); 1374 EXPECT_EQ(1U, parent->render_surface()->layer_list().size());
1371 EXPECT_EQ(gfx::RectF(0, 0, 10, 10), 1375 EXPECT_EQ(gfx::RectF(0, 0, 10, 10),
1372 parent->render_surface()->DrawableContentRect()); 1376 parent->render_surface()->DrawableContentRect());
1373 EffectTree& effect_tree = 1377 EffectTree& effect_tree =
1374 parent->layer_tree_impl()->property_trees()->effect_tree; 1378 parent->layer_tree_impl()->property_trees()->effect_tree;
1375 EffectNode* node = effect_tree.Node(render_surface1->effect_tree_index()); 1379 EffectNode* node = effect_tree.Node(render_surface1->effect_tree_index());
1376 EXPECT_TRUE(node->data.is_drawn); 1380 EXPECT_TRUE(node->is_drawn);
1377 1381
1378 // When parent is transparent, the layer should not be drawn. 1382 // When parent is transparent, the layer should not be drawn.
1379 parent->OnOpacityAnimated(0.f); 1383 parent->OnOpacityAnimated(0.f);
1380 render_surface1->OnOpacityAnimated(1.f); 1384 render_surface1->OnOpacityAnimated(1.f);
1381 render_surface1->set_visible_layer_rect(gfx::Rect()); 1385 render_surface1->set_visible_layer_rect(gfx::Rect());
1382 { 1386 {
1383 LayerImplList render_surface_layer_list; 1387 LayerImplList render_surface_layer_list;
1384 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 1388 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
1385 parent, parent->bounds(), &render_surface_layer_list); 1389 parent, parent->bounds(), &render_surface_layer_list);
1386 inputs.can_adjust_raster_scales = true; 1390 inputs.can_adjust_raster_scales = true;
1387 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); 1391 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
1388 } 1392 }
1389 1393
1390 node = effect_tree.Node(render_surface1->effect_tree_index()); 1394 node = effect_tree.Node(render_surface1->effect_tree_index());
1391 EXPECT_FALSE(node->data.is_drawn); 1395 EXPECT_FALSE(node->is_drawn);
1392 EXPECT_EQ(gfx::Rect(), render_surface1->visible_layer_rect()); 1396 EXPECT_EQ(gfx::Rect(), render_surface1->visible_layer_rect());
1393 } 1397 }
1394 1398
1395 TEST_F(LayerTreeHostCommonTest, RenderSurfaceListForFilter) { 1399 TEST_F(LayerTreeHostCommonTest, RenderSurfaceListForFilter) {
1396 LayerImpl* root = root_layer_for_testing(); 1400 LayerImpl* root = root_layer_for_testing();
1397 LayerImpl* parent = AddChild<LayerImpl>(root); 1401 LayerImpl* parent = AddChild<LayerImpl>(root);
1398 LayerImpl* child1 = AddChild<LayerImpl>(parent); 1402 LayerImpl* child1 = AddChild<LayerImpl>(parent);
1399 LayerImpl* child2 = AddChild<LayerImpl>(parent); 1403 LayerImpl* child2 = AddChild<LayerImpl>(parent);
1400 child1->SetDrawsContent(true); 1404 child1->SetDrawsContent(true);
1401 child2->SetDrawsContent(true); 1405 child2->SetDrawsContent(true);
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
1700 false); 1704 false);
1701 1705
1702 grand_child->test_properties()->should_flatten_transform = false; 1706 grand_child->test_properties()->should_flatten_transform = false;
1703 1707
1704 // Only grand_child should preserve 3d. 1708 // Only grand_child should preserve 3d.
1705 EXPECT_TRUE(root->test_properties()->should_flatten_transform); 1709 EXPECT_TRUE(root->test_properties()->should_flatten_transform);
1706 EXPECT_TRUE(parent->test_properties()->should_flatten_transform); 1710 EXPECT_TRUE(parent->test_properties()->should_flatten_transform);
1707 EXPECT_TRUE(child->test_properties()->should_flatten_transform); 1711 EXPECT_TRUE(child->test_properties()->should_flatten_transform);
1708 EXPECT_FALSE(grand_child->test_properties()->should_flatten_transform); 1712 EXPECT_FALSE(grand_child->test_properties()->should_flatten_transform);
1709 1713
1710 gfx::Transform expected_child_draw_transform = identity_matrix;
1711 gfx::Transform expected_grand_child_draw_transform = identity_matrix;
1712
1713 gfx::Transform flattened_rotation_about_y = rotation_about_y_axis; 1714 gfx::Transform flattened_rotation_about_y = rotation_about_y_axis;
1714 flattened_rotation_about_y.FlattenTo2d(); 1715 flattened_rotation_about_y.FlattenTo2d();
1715 1716
1716 ExecuteCalculateDrawProperties(root); 1717 ExecuteCalculateDrawProperties(root);
1717 1718
1718 EXPECT_TRUE(parent->render_surface()); 1719 EXPECT_TRUE(parent->render_surface());
1719 EXPECT_FALSE(child->render_surface()); 1720 EXPECT_FALSE(child->render_surface());
1720 EXPECT_FALSE(grand_child->render_surface()); 1721 EXPECT_FALSE(grand_child->render_surface());
1721 1722
1722 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix, child->DrawTransform()); 1723 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix, child->DrawTransform());
(...skipping 1945 matching lines...) Expand 10 before | Expand all | Expand 10 after
3668 gfx::PointF(), gfx::Size(100, 100), false, true, 3669 gfx::PointF(), gfx::Size(100, 100), false, true,
3669 false); 3670 false);
3670 3671
3671 ExecuteCalculateDrawProperties(root); 3672 ExecuteCalculateDrawProperties(root);
3672 3673
3673 // Though all layers have invertible transforms, matrix multiplication using 3674 // Though all layers have invertible transforms, matrix multiplication using
3674 // floating-point math makes the draw transform uninvertible. 3675 // floating-point math makes the draw transform uninvertible.
3675 EXPECT_FALSE(root->layer_tree_impl() 3676 EXPECT_FALSE(root->layer_tree_impl()
3676 ->property_trees() 3677 ->property_trees()
3677 ->transform_tree.Node(grand_child->transform_tree_index()) 3678 ->transform_tree.Node(grand_child->transform_tree_index())
3678 ->data.ancestors_are_invertible); 3679 ->ancestors_are_invertible);
3679 3680
3680 // CalcDrawProps skips a subtree when a layer's screen space transform is 3681 // CalcDrawProps skips a subtree when a layer's screen space transform is
3681 // uninvertible 3682 // uninvertible
3682 EXPECT_EQ(gfx::Rect(), grand_child->visible_layer_rect()); 3683 EXPECT_EQ(gfx::Rect(), grand_child->visible_layer_rect());
3683 } 3684 }
3684 3685
3685 TEST_F(LayerTreeHostCommonTest, 3686 TEST_F(LayerTreeHostCommonTest,
3686 OcclusionForLayerWithUninvertibleDrawTransform) { 3687 OcclusionForLayerWithUninvertibleDrawTransform) {
3687 FakeImplTaskRunnerProvider task_runner_provider; 3688 FakeImplTaskRunnerProvider task_runner_provider;
3688 TestSharedBitmapManager shared_bitmap_manager; 3689 TestSharedBitmapManager shared_bitmap_manager;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
3741 ->children[0] 3742 ->children[0]
3742 ->test_properties() 3743 ->test_properties()
3743 ->children[0]; 3744 ->children[0];
3744 3745
3745 // Though all layers have invertible transforms, matrix multiplication using 3746 // Though all layers have invertible transforms, matrix multiplication using
3746 // floating-point math makes the draw transform uninvertible. 3747 // floating-point math makes the draw transform uninvertible.
3747 EXPECT_FALSE( 3748 EXPECT_FALSE(
3748 host_impl.active_tree() 3749 host_impl.active_tree()
3749 ->property_trees() 3750 ->property_trees()
3750 ->transform_tree.Node(grand_child_ptr->transform_tree_index()) 3751 ->transform_tree.Node(grand_child_ptr->transform_tree_index())
3751 ->data.ancestors_are_invertible); 3752 ->ancestors_are_invertible);
3752 3753
3753 // Since |grand_child| has an uninvertible screen space transform, it is 3754 // Since |grand_child| has an uninvertible screen space transform, it is
3754 // skipped so 3755 // skipped so
3755 // that we are not computing its occlusion_in_content_space. 3756 // that we are not computing its occlusion_in_content_space.
3756 gfx::Rect layer_bounds = gfx::Rect(); 3757 gfx::Rect layer_bounds = gfx::Rect();
3757 EXPECT_EQ( 3758 EXPECT_EQ(
3758 layer_bounds, 3759 layer_bounds,
3759 grand_child_ptr->draw_properties() 3760 grand_child_ptr->draw_properties()
3760 .occlusion_in_content_space.GetUnoccludedContentRect(layer_bounds)); 3761 .occlusion_in_content_space.GetUnoccludedContentRect(layer_bounds));
3761 } 3762 }
(...skipping 1224 matching lines...) Expand 10 before | Expand all | Expand 10 after
4986 gfx::Transform expected_screen_space_transform; 4987 gfx::Transform expected_screen_space_transform;
4987 expected_screen_space_transform.Scale(device_scale_factor, 4988 expected_screen_space_transform.Scale(device_scale_factor,
4988 device_scale_factor); 4989 device_scale_factor);
4989 expected_screen_space_transform.Translate(child->position().x(), 4990 expected_screen_space_transform.Translate(child->position().x(),
4990 child->position().y()); 4991 child->position().y());
4991 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_screen_space_transform, 4992 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_screen_space_transform,
4992 child->ScreenSpaceTransform()); 4993 child->ScreenSpaceTransform());
4993 4994
4994 gfx::Transform expected_duplicate_child_draw_transform = 4995 gfx::Transform expected_duplicate_child_draw_transform =
4995 child->DrawTransform(); 4996 child->DrawTransform();
4996 EXPECT_TRANSFORMATION_MATRIX_EQ(child->DrawTransform(), 4997 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_duplicate_child_draw_transform,
4997 duplicate_child_non_owner->DrawTransform()); 4998 duplicate_child_non_owner->DrawTransform());
4998 EXPECT_TRANSFORMATION_MATRIX_EQ( 4999 EXPECT_TRANSFORMATION_MATRIX_EQ(
4999 child->ScreenSpaceTransform(), 5000 child->ScreenSpaceTransform(),
5000 duplicate_child_non_owner->ScreenSpaceTransform()); 5001 duplicate_child_non_owner->ScreenSpaceTransform());
5001 EXPECT_EQ(child->drawable_content_rect(), 5002 EXPECT_EQ(child->drawable_content_rect(),
5002 duplicate_child_non_owner->drawable_content_rect()); 5003 duplicate_child_non_owner->drawable_content_rect());
5003 EXPECT_EQ(child->bounds(), duplicate_child_non_owner->bounds()); 5004 EXPECT_EQ(child->bounds(), duplicate_child_non_owner->bounds());
5004 5005
5005 gfx::Transform expected_render_surface_draw_transform; 5006 gfx::Transform expected_render_surface_draw_transform;
5006 expected_render_surface_draw_transform.Translate( 5007 expected_render_surface_draw_transform.Translate(
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
5200 LayerImplList render_surface_layer_list2; 5201 LayerImplList render_surface_layer_list2;
5201 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs2( 5202 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs2(
5202 root_layer, root_layer->bounds(), &render_surface_layer_list2); 5203 root_layer, root_layer->bounds(), &render_surface_layer_list2);
5203 inputs2.can_adjust_raster_scales = true; 5204 inputs2.can_adjust_raster_scales = true;
5204 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs2); 5205 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs2);
5205 5206
5206 LayerImpl* child_ptr = root_layer->layer_tree_impl()->LayerById(2); 5207 LayerImpl* child_ptr = root_layer->layer_tree_impl()->LayerById(2);
5207 EffectTree& tree = 5208 EffectTree& tree =
5208 root_layer->layer_tree_impl()->property_trees()->effect_tree; 5209 root_layer->layer_tree_impl()->property_trees()->effect_tree;
5209 EffectNode* node = tree.Node(child_ptr->effect_tree_index()); 5210 EffectNode* node = tree.Node(child_ptr->effect_tree_index());
5210 EXPECT_FALSE(node->data.is_drawn); 5211 EXPECT_FALSE(node->is_drawn);
5211 5212
5212 // A layer should be drawn and it should contribute to drawn surface when 5213 // A layer should be drawn and it should contribute to drawn surface when
5213 // it has animating opacity even if it has opacity 0. 5214 // it has animating opacity even if it has opacity 0.
5214 root_layer->test_properties()->opacity = 1.0f; 5215 root_layer->test_properties()->opacity = 1.0f;
5215 child_ptr->test_properties()->opacity = 0.0f; 5216 child_ptr->test_properties()->opacity = 0.0f;
5216 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; 5217 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true;
5217 LayerImplList render_surface_layer_list3; 5218 LayerImplList render_surface_layer_list3;
5218 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs3( 5219 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs3(
5219 root_layer, root_layer->bounds(), &render_surface_layer_list3); 5220 root_layer, root_layer->bounds(), &render_surface_layer_list3);
5220 inputs3.can_adjust_raster_scales = true; 5221 inputs3.can_adjust_raster_scales = true;
5221 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs3); 5222 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs3);
5222 5223
5223 child_ptr = root_layer->layer_tree_impl()->LayerById(2); 5224 child_ptr = root_layer->layer_tree_impl()->LayerById(2);
5224 tree = root_layer->layer_tree_impl()->property_trees()->effect_tree; 5225 tree = root_layer->layer_tree_impl()->property_trees()->effect_tree;
5225 node = tree.Node(child_ptr->effect_tree_index()); 5226 node = tree.Node(child_ptr->effect_tree_index());
5226 EXPECT_TRUE(node->data.is_drawn); 5227 EXPECT_TRUE(node->is_drawn);
5227 EXPECT_TRUE(tree.ContributesToDrawnSurface(child_ptr->effect_tree_index())); 5228 EXPECT_TRUE(tree.ContributesToDrawnSurface(child_ptr->effect_tree_index()));
5228 5229
5229 // But if the opacity of the layer remains 0 after activation, it should not 5230 // But if the opacity of the layer remains 0 after activation, it should not
5230 // be drawn. 5231 // be drawn.
5231 host_impl.ActivateSyncTree(); 5232 host_impl.ActivateSyncTree();
5232 LayerImpl* active_root = host_impl.active_tree()->LayerById(root_layer->id()); 5233 LayerImpl* active_root = host_impl.active_tree()->LayerById(root_layer->id());
5233 LayerImpl* active_child = host_impl.active_tree()->LayerById(child_ptr->id()); 5234 LayerImpl* active_child = host_impl.active_tree()->LayerById(child_ptr->id());
5234 5235
5235 EffectTree& active_effect_tree = 5236 EffectTree& active_effect_tree =
5236 host_impl.active_tree()->property_trees()->effect_tree; 5237 host_impl.active_tree()->property_trees()->effect_tree;
5237 EXPECT_TRUE(active_effect_tree.needs_update()); 5238 EXPECT_TRUE(active_effect_tree.needs_update());
5238 5239
5239 ExecuteCalculateDrawProperties(active_root); 5240 ExecuteCalculateDrawProperties(active_root);
5240 5241
5241 node = active_effect_tree.Node(active_child->effect_tree_index()); 5242 node = active_effect_tree.Node(active_child->effect_tree_index());
5242 EXPECT_FALSE(node->data.is_drawn); 5243 EXPECT_FALSE(node->is_drawn);
5243 EXPECT_FALSE(active_effect_tree.ContributesToDrawnSurface( 5244 EXPECT_FALSE(active_effect_tree.ContributesToDrawnSurface(
5244 active_child->effect_tree_index())); 5245 active_child->effect_tree_index()));
5245 } 5246 }
5246 5247
5247 using LCDTextTestParam = std::tr1::tuple<bool, bool, bool>; 5248 using LCDTextTestParam = std::tr1::tuple<bool, bool, bool>;
5248 class LCDTextTest : public LayerTreeHostCommonTestBase, 5249 class LCDTextTest : public LayerTreeHostCommonTestBase,
5249 public testing::TestWithParam<LCDTextTestParam> { 5250 public testing::TestWithParam<LCDTextTestParam> {
5250 public: 5251 public:
5251 LCDTextTest() 5252 LCDTextTest()
5252 : LayerTreeHostCommonTestBase(LCDTextTestLayerTreeSettings()), 5253 : LayerTreeHostCommonTestBase(LCDTextTestLayerTreeSettings()),
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
5716 EXPECT_EQ(copy_child_layer->id(), 5717 EXPECT_EQ(copy_child_layer->id(),
5717 copy_layer->render_surface()->layer_list().at(1)->id()); 5718 copy_layer->render_surface()->layer_list().at(1)->id());
5718 5719
5719 // copy_grand_parent, copy_parent shouldn't be drawn because they are hidden, 5720 // copy_grand_parent, copy_parent shouldn't be drawn because they are hidden,
5720 // but the copy_layer and copy_child should be drawn for the copy request. 5721 // but the copy_layer and copy_child should be drawn for the copy request.
5721 // copy grand child should not be drawn as its hidden even in the copy 5722 // copy grand child should not be drawn as its hidden even in the copy
5722 // request. 5723 // request.
5723 EffectTree& tree = 5724 EffectTree& tree =
5724 root_layer->layer_tree_impl()->property_trees()->effect_tree; 5725 root_layer->layer_tree_impl()->property_trees()->effect_tree;
5725 EffectNode* node = tree.Node(copy_grand_parent_layer->effect_tree_index()); 5726 EffectNode* node = tree.Node(copy_grand_parent_layer->effect_tree_index());
5726 EXPECT_FALSE(node->data.is_drawn); 5727 EXPECT_FALSE(node->is_drawn);
5727 node = tree.Node(copy_parent_layer->effect_tree_index()); 5728 node = tree.Node(copy_parent_layer->effect_tree_index());
5728 EXPECT_FALSE(node->data.is_drawn); 5729 EXPECT_FALSE(node->is_drawn);
5729 node = tree.Node(copy_layer->effect_tree_index()); 5730 node = tree.Node(copy_layer->effect_tree_index());
5730 EXPECT_TRUE(node->data.is_drawn); 5731 EXPECT_TRUE(node->is_drawn);
5731 node = tree.Node(copy_child_layer->effect_tree_index()); 5732 node = tree.Node(copy_child_layer->effect_tree_index());
5732 EXPECT_TRUE(node->data.is_drawn); 5733 EXPECT_TRUE(node->is_drawn);
5733 node = tree.Node(copy_grand_child_layer->effect_tree_index()); 5734 node = tree.Node(copy_grand_child_layer->effect_tree_index());
5734 EXPECT_FALSE(node->data.is_drawn); 5735 EXPECT_FALSE(node->is_drawn);
5735 5736
5736 // Though copy_layer is drawn, it shouldn't contribute to drawn surface as its 5737 // Though copy_layer is drawn, it shouldn't contribute to drawn surface as its
5737 // actually hidden. 5738 // actually hidden.
5738 EXPECT_FALSE(copy_layer->render_surface()->contributes_to_drawn_surface()); 5739 EXPECT_FALSE(copy_layer->render_surface()->contributes_to_drawn_surface());
5739 } 5740 }
5740 5741
5741 TEST_F(LayerTreeHostCommonTest, ClippedOutCopyRequest) { 5742 TEST_F(LayerTreeHostCommonTest, ClippedOutCopyRequest) {
5742 FakeImplTaskRunnerProvider task_runner_provider; 5743 FakeImplTaskRunnerProvider task_runner_provider;
5743 TestSharedBitmapManager shared_bitmap_manager; 5744 TestSharedBitmapManager shared_bitmap_manager;
5744 TestTaskGraphRunner task_graph_runner; 5745 TestTaskGraphRunner task_graph_runner;
(...skipping 898 matching lines...) Expand 10 before | Expand all | Expand 10 after
6643 false, true, true); 6644 false, true, true);
6644 6645
6645 render_surface1->test_properties()->double_sided = false; 6646 render_surface1->test_properties()->double_sided = false;
6646 render_surface2->test_properties()->double_sided = false; 6647 render_surface2->test_properties()->double_sided = false;
6647 6648
6648 ExecuteCalculateDrawProperties(root); 6649 ExecuteCalculateDrawProperties(root);
6649 6650
6650 const EffectTree& tree = 6651 const EffectTree& tree =
6651 root->layer_tree_impl()->property_trees()->effect_tree; 6652 root->layer_tree_impl()->property_trees()->effect_tree;
6652 EXPECT_TRUE(tree.Node(render_surface1->effect_tree_index()) 6653 EXPECT_TRUE(tree.Node(render_surface1->effect_tree_index())
6653 ->data.hidden_by_backface_visibility); 6654 ->hidden_by_backface_visibility);
6654 EXPECT_TRUE(tree.Node(render_surface2->effect_tree_index()) 6655 EXPECT_TRUE(tree.Node(render_surface2->effect_tree_index())
6655 ->data.hidden_by_backface_visibility); 6656 ->hidden_by_backface_visibility);
6656 6657
6657 back_facing->OnTransformAnimated(identity_transform); 6658 back_facing->OnTransformAnimated(identity_transform);
6658 render_surface2->OnTransformAnimated(rotate_about_y); 6659 render_surface2->OnTransformAnimated(rotate_about_y);
6659 ExecuteCalculateDrawProperties(root); 6660 ExecuteCalculateDrawProperties(root);
6660 EXPECT_FALSE(tree.Node(render_surface1->effect_tree_index()) 6661 EXPECT_FALSE(tree.Node(render_surface1->effect_tree_index())
6661 ->data.hidden_by_backface_visibility); 6662 ->hidden_by_backface_visibility);
6662 EXPECT_TRUE(tree.Node(render_surface2->effect_tree_index()) 6663 EXPECT_TRUE(tree.Node(render_surface2->effect_tree_index())
6663 ->data.hidden_by_backface_visibility); 6664 ->hidden_by_backface_visibility);
6664 6665
6665 render_surface1->OnTransformAnimated(rotate_about_y); 6666 render_surface1->OnTransformAnimated(rotate_about_y);
6666 ExecuteCalculateDrawProperties(root); 6667 ExecuteCalculateDrawProperties(root);
6667 EXPECT_TRUE(tree.Node(render_surface1->effect_tree_index()) 6668 EXPECT_TRUE(tree.Node(render_surface1->effect_tree_index())
6668 ->data.hidden_by_backface_visibility); 6669 ->hidden_by_backface_visibility);
6669 EXPECT_TRUE(tree.Node(render_surface2->effect_tree_index()) 6670 EXPECT_TRUE(tree.Node(render_surface2->effect_tree_index())
6670 ->data.hidden_by_backface_visibility); 6671 ->hidden_by_backface_visibility);
6671 } 6672 }
6672 6673
6673 TEST_F(LayerTreeHostCommonTest, ClippedByScrollParent) { 6674 TEST_F(LayerTreeHostCommonTest, ClippedByScrollParent) {
6674 // Checks that the simple case (being clipped by a scroll parent that would 6675 // Checks that the simple case (being clipped by a scroll parent that would
6675 // have been processed before you anyhow) results in the right clips. 6676 // have been processed before you anyhow) results in the right clips.
6676 // 6677 //
6677 // + root 6678 // + root
6678 // + scroll_parent_border 6679 // + scroll_parent_border
6679 // | + scroll_parent_clip 6680 // | + scroll_parent_clip
6680 // | + scroll_parent 6681 // | + scroll_parent
(...skipping 2644 matching lines...) Expand 10 before | Expand all | Expand 10 after
9325 EXPECT_EQ(transform_node->owner_id, significant_transform->id()); 9326 EXPECT_EQ(transform_node->owner_id, significant_transform->id());
9326 9327
9327 EXPECT_TRUE(root->has_render_surface()); 9328 EXPECT_TRUE(root->has_render_surface());
9328 EXPECT_FALSE(significant_transform->has_render_surface()); 9329 EXPECT_FALSE(significant_transform->has_render_surface());
9329 EXPECT_TRUE(layer_clips_subtree->has_render_surface()); 9330 EXPECT_TRUE(layer_clips_subtree->has_render_surface());
9330 EXPECT_TRUE(render_surface->has_render_surface()); 9331 EXPECT_TRUE(render_surface->has_render_surface());
9331 EXPECT_FALSE(test_layer->has_render_surface()); 9332 EXPECT_FALSE(test_layer->has_render_surface());
9332 9333
9333 ClipTree& clip_tree = root->layer_tree_impl()->property_trees()->clip_tree; 9334 ClipTree& clip_tree = root->layer_tree_impl()->property_trees()->clip_tree;
9334 ClipNode* clip_node = clip_tree.Node(render_surface->clip_tree_index()); 9335 ClipNode* clip_node = clip_tree.Node(render_surface->clip_tree_index());
9335 EXPECT_FALSE(clip_node->data.applies_local_clip); 9336 EXPECT_FALSE(clip_node->applies_local_clip);
9336 EXPECT_EQ(gfx::Rect(20, 20), test_layer->visible_layer_rect()); 9337 EXPECT_EQ(gfx::Rect(20, 20), test_layer->visible_layer_rect());
9337 } 9338 }
9338 9339
9339 TEST_F(LayerTreeHostCommonTest, TransformOfParentClipNodeAncestorOfTarget) { 9340 TEST_F(LayerTreeHostCommonTest, TransformOfParentClipNodeAncestorOfTarget) {
9340 // Ensure that when parent clip node's transform is an ancestor of current 9341 // Ensure that when parent clip node's transform is an ancestor of current
9341 // clip node's target, clip is 'projected' from parent space to current 9342 // clip node's target, clip is 'projected' from parent space to current
9342 // target space and visible rects are calculated correctly. 9343 // target space and visible rects are calculated correctly.
9343 LayerImpl* root = root_layer_for_testing(); 9344 LayerImpl* root = root_layer_for_testing();
9344 LayerImpl* clip_layer = AddChild<LayerImpl>(root); 9345 LayerImpl* clip_layer = AddChild<LayerImpl>(root);
9345 LayerImpl* target_layer = AddChild<LayerImpl>(clip_layer); 9346 LayerImpl* target_layer = AddChild<LayerImpl>(clip_layer);
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after
9973 // We want layer between the two targets to create a clip node and transform 9974 // We want layer between the two targets to create a clip node and transform
9974 // node but it shouldn't create a render surface. 9975 // node but it shouldn't create a render surface.
9975 between_targets->SetMasksToBounds(true); 9976 between_targets->SetMasksToBounds(true);
9976 between_targets->Set3dSortingContextId(2); 9977 between_targets->Set3dSortingContextId(2);
9977 9978
9978 ExecuteCalculateDrawProperties(root); 9979 ExecuteCalculateDrawProperties(root);
9979 9980
9980 TransformTree& tree = 9981 TransformTree& tree =
9981 root->layer_tree_impl()->property_trees()->transform_tree; 9982 root->layer_tree_impl()->property_trees()->transform_tree;
9982 TransformNode* node = tree.Node(render_surface1->transform_tree_index()); 9983 TransformNode* node = tree.Node(render_surface1->transform_tree_index());
9983 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(2.f, 2.f)); 9984 EXPECT_EQ(node->sublayer_scale, gfx::Vector2dF(2.f, 2.f));
9984 9985
9985 node = tree.Node(between_targets->transform_tree_index()); 9986 node = tree.Node(between_targets->transform_tree_index());
9986 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(1.f, 1.f)); 9987 EXPECT_EQ(node->sublayer_scale, gfx::Vector2dF(1.f, 1.f));
9987 9988
9988 node = tree.Node(render_surface2->transform_tree_index()); 9989 node = tree.Node(render_surface2->transform_tree_index());
9989 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(2.f, 2.f)); 9990 EXPECT_EQ(node->sublayer_scale, gfx::Vector2dF(2.f, 2.f));
9990 9991
9991 EXPECT_EQ(gfx::Rect(15, 15), test_layer->visible_layer_rect()); 9992 EXPECT_EQ(gfx::Rect(15, 15), test_layer->visible_layer_rect());
9992 } 9993 }
9993 9994
9994 TEST_F(LayerTreeHostCommonTest, LargeTransformTest) { 9995 TEST_F(LayerTreeHostCommonTest, LargeTransformTest) {
9995 LayerImpl* root = root_layer_for_testing(); 9996 LayerImpl* root = root_layer_for_testing();
9996 LayerImpl* render_surface1 = AddChild<LayerImpl>(root); 9997 LayerImpl* render_surface1 = AddChild<LayerImpl>(root);
9997 LayerImpl* child = AddChild<LayerImpl>(render_surface1); 9998 LayerImpl* child = AddChild<LayerImpl>(render_surface1);
9998 9999
9999 const gfx::Transform identity_matrix; 10000 const gfx::Transform identity_matrix;
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
10119 animation->set_fill_mode(Animation::FillMode::NONE); 10120 animation->set_fill_mode(Animation::FillMode::NONE);
10120 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); 10121 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000));
10121 Animation* animation_ptr = animation.get(); 10122 Animation* animation_ptr = animation.get();
10122 AddAnimationToElementWithExistingPlayer(animated->element_id(), timeline(), 10123 AddAnimationToElementWithExistingPlayer(animated->element_id(), timeline(),
10123 std::move(animation)); 10124 std::move(animation));
10124 10125
10125 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 10126 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
10126 10127
10127 EffectTree& tree = root->layer_tree_host()->property_trees()->effect_tree; 10128 EffectTree& tree = root->layer_tree_host()->property_trees()->effect_tree;
10128 EffectNode* node = tree.Node(animated->effect_tree_index()); 10129 EffectNode* node = tree.Node(animated->effect_tree_index());
10129 EXPECT_FALSE(node->data.is_currently_animating_opacity); 10130 EXPECT_FALSE(node->is_currently_animating_opacity);
10130 EXPECT_TRUE(node->data.has_potential_opacity_animation); 10131 EXPECT_TRUE(node->has_potential_opacity_animation);
10131 10132
10132 animation_ptr->set_time_offset(base::TimeDelta::FromMilliseconds(0)); 10133 animation_ptr->set_time_offset(base::TimeDelta::FromMilliseconds(0));
10133 root->layer_tree_host()->AnimateLayers( 10134 root->layer_tree_host()->AnimateLayers(
10134 base::TimeTicks::FromInternalValue(std::numeric_limits<int64_t>::max())); 10135 base::TimeTicks::FromInternalValue(std::numeric_limits<int64_t>::max()));
10135 node = tree.Node(animated->effect_tree_index()); 10136 node = tree.Node(animated->effect_tree_index());
10136 EXPECT_TRUE(node->data.is_currently_animating_opacity); 10137 EXPECT_TRUE(node->is_currently_animating_opacity);
10137 EXPECT_TRUE(node->data.has_potential_opacity_animation); 10138 EXPECT_TRUE(node->has_potential_opacity_animation);
10138 10139
10139 player->AbortAnimations(TargetProperty::OPACITY, false /*needs_completion*/); 10140 player->AbortAnimations(TargetProperty::OPACITY, false /*needs_completion*/);
10140 node = tree.Node(animated->effect_tree_index()); 10141 node = tree.Node(animated->effect_tree_index());
10141 EXPECT_FALSE(node->data.is_currently_animating_opacity); 10142 EXPECT_FALSE(node->is_currently_animating_opacity);
10142 EXPECT_FALSE(node->data.has_potential_opacity_animation); 10143 EXPECT_FALSE(node->has_potential_opacity_animation);
10143 } 10144 }
10144 10145
10145 TEST_F(LayerTreeHostCommonTest, TransformAnimationsTrackingTest) { 10146 TEST_F(LayerTreeHostCommonTest, TransformAnimationsTrackingTest) {
10146 const gfx::Transform identity_matrix; 10147 const gfx::Transform identity_matrix;
10147 scoped_refptr<Layer> root = Layer::Create(); 10148 scoped_refptr<Layer> root = Layer::Create();
10148 scoped_refptr<LayerWithForcedDrawsContent> animated = 10149 scoped_refptr<LayerWithForcedDrawsContent> animated =
10149 make_scoped_refptr(new LayerWithForcedDrawsContent()); 10150 make_scoped_refptr(new LayerWithForcedDrawsContent());
10150 root->AddChild(animated); 10151 root->AddChild(animated);
10151 10152
10152 host()->SetRootLayer(root); 10153 host()->SetRootLayer(root);
(...skipping 30 matching lines...) Expand all
10183 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); 10184 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000));
10184 Animation* animation_ptr = animation.get(); 10185 Animation* animation_ptr = animation.get();
10185 AddAnimationToElementWithExistingPlayer(animated->element_id(), timeline(), 10186 AddAnimationToElementWithExistingPlayer(animated->element_id(), timeline(),
10186 std::move(animation)); 10187 std::move(animation));
10187 10188
10188 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 10189 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
10189 10190
10190 TransformTree& tree = 10191 TransformTree& tree =
10191 root->layer_tree_host()->property_trees()->transform_tree; 10192 root->layer_tree_host()->property_trees()->transform_tree;
10192 TransformNode* node = tree.Node(animated->transform_tree_index()); 10193 TransformNode* node = tree.Node(animated->transform_tree_index());
10193 EXPECT_FALSE(node->data.is_currently_animating); 10194 EXPECT_FALSE(node->is_currently_animating);
10194 EXPECT_TRUE(node->data.has_potential_animation); 10195 EXPECT_TRUE(node->has_potential_animation);
10195 10196
10196 animation_ptr->set_time_offset(base::TimeDelta::FromMilliseconds(0)); 10197 animation_ptr->set_time_offset(base::TimeDelta::FromMilliseconds(0));
10197 root->layer_tree_host()->AnimateLayers( 10198 root->layer_tree_host()->AnimateLayers(
10198 base::TimeTicks::FromInternalValue(std::numeric_limits<int64_t>::max())); 10199 base::TimeTicks::FromInternalValue(std::numeric_limits<int64_t>::max()));
10199 node = tree.Node(animated->transform_tree_index()); 10200 node = tree.Node(animated->transform_tree_index());
10200 EXPECT_TRUE(node->data.is_currently_animating); 10201 EXPECT_TRUE(node->is_currently_animating);
10201 EXPECT_TRUE(node->data.has_potential_animation); 10202 EXPECT_TRUE(node->has_potential_animation);
10202 10203
10203 player->AbortAnimations(TargetProperty::TRANSFORM, 10204 player->AbortAnimations(TargetProperty::TRANSFORM,
10204 false /*needs_completion*/); 10205 false /*needs_completion*/);
10205 node = tree.Node(animated->transform_tree_index()); 10206 node = tree.Node(animated->transform_tree_index());
10206 EXPECT_FALSE(node->data.is_currently_animating); 10207 EXPECT_FALSE(node->is_currently_animating);
10207 EXPECT_FALSE(node->data.has_potential_animation); 10208 EXPECT_FALSE(node->has_potential_animation);
10208 } 10209 }
10209 10210
10210 TEST_F(LayerTreeHostCommonTest, SerializeScrollUpdateInfo) { 10211 TEST_F(LayerTreeHostCommonTest, SerializeScrollUpdateInfo) {
10211 LayerTreeHostCommon::ScrollUpdateInfo scroll; 10212 LayerTreeHostCommon::ScrollUpdateInfo scroll;
10212 scroll.layer_id = 2; 10213 scroll.layer_id = 2;
10213 scroll.scroll_delta = gfx::Vector2d(5, 10); 10214 scroll.scroll_delta = gfx::Vector2d(5, 10);
10214 10215
10215 proto::ScrollUpdateInfo proto; 10216 proto::ScrollUpdateInfo proto;
10216 scroll.ToProtobuf(&proto); 10217 scroll.ToProtobuf(&proto);
10217 LayerTreeHostCommon::ScrollUpdateInfo new_scroll; 10218 LayerTreeHostCommon::ScrollUpdateInfo new_scroll;
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
10334 // Property tree root 10335 // Property tree root
10335 ScrollTree& scroll_tree = host()->property_trees()->scroll_tree; 10336 ScrollTree& scroll_tree = host()->property_trees()->scroll_tree;
10336 PropertyTrees property_trees; 10337 PropertyTrees property_trees;
10337 property_trees.is_main_thread = true; 10338 property_trees.is_main_thread = true;
10338 property_trees.is_active = false; 10339 property_trees.is_active = false;
10339 ScrollTree& expected_scroll_tree = property_trees.scroll_tree; 10340 ScrollTree& expected_scroll_tree = property_trees.scroll_tree;
10340 ScrollNode* property_tree_root = expected_scroll_tree.Node(0); 10341 ScrollNode* property_tree_root = expected_scroll_tree.Node(0);
10341 property_tree_root->id = kRootPropertyTreeNodeId; 10342 property_tree_root->id = kRootPropertyTreeNodeId;
10342 property_tree_root->parent_id = kInvalidPropertyTreeNodeId; 10343 property_tree_root->parent_id = kInvalidPropertyTreeNodeId;
10343 property_tree_root->owner_id = kInvalidPropertyTreeNodeId; 10344 property_tree_root->owner_id = kInvalidPropertyTreeNodeId;
10344 property_tree_root->data.scrollable = false; 10345 property_tree_root->scrollable = false;
10345 property_tree_root->data.main_thread_scrolling_reasons = 10346 property_tree_root->main_thread_scrolling_reasons =
10346 MainThreadScrollingReason::kNotScrollingOnMain; 10347 MainThreadScrollingReason::kNotScrollingOnMain;
10347 property_tree_root->data.contains_non_fast_scrollable_region = false; 10348 property_tree_root->contains_non_fast_scrollable_region = false;
10348 property_tree_root->data.transform_id = kRootPropertyTreeNodeId; 10349 property_tree_root->transform_id = kRootPropertyTreeNodeId;
10349 10350
10350 // The node owned by root1 10351 // The node owned by root1
10351 ScrollNode scroll_root1; 10352 ScrollNode scroll_root1;
10352 scroll_root1.id = 1; 10353 scroll_root1.id = 1;
10353 scroll_root1.owner_id = root1->id(); 10354 scroll_root1.owner_id = root1->id();
10354 scroll_root1.data.user_scrollable_horizontal = true; 10355 scroll_root1.user_scrollable_horizontal = true;
10355 scroll_root1.data.user_scrollable_vertical = true; 10356 scroll_root1.user_scrollable_vertical = true;
10356 scroll_root1.data.transform_id = root1->transform_tree_index(); 10357 scroll_root1.transform_id = root1->transform_tree_index();
10357 expected_scroll_tree.Insert(scroll_root1, 0); 10358 expected_scroll_tree.Insert(scroll_root1, 0);
10358 10359
10359 // The node owned by parent2 10360 // The node owned by parent2
10360 ScrollNode scroll_parent2; 10361 ScrollNode scroll_parent2;
10361 scroll_parent2.id = 2; 10362 scroll_parent2.id = 2;
10362 scroll_parent2.owner_id = parent2->id(); 10363 scroll_parent2.owner_id = parent2->id();
10363 scroll_parent2.data.scrollable = true; 10364 scroll_parent2.scrollable = true;
10364 scroll_parent2.data.main_thread_scrolling_reasons = 10365 scroll_parent2.main_thread_scrolling_reasons =
10365 parent2->main_thread_scrolling_reasons(); 10366 parent2->main_thread_scrolling_reasons();
10366 scroll_parent2.data.scroll_clip_layer_bounds = root1->bounds(); 10367 scroll_parent2.scroll_clip_layer_bounds = root1->bounds();
10367 scroll_parent2.data.bounds = parent2->bounds(); 10368 scroll_parent2.bounds = parent2->bounds();
10368 scroll_parent2.data.max_scroll_offset_affected_by_page_scale = true; 10369 scroll_parent2.max_scroll_offset_affected_by_page_scale = true;
10369 scroll_parent2.data.is_inner_viewport_scroll_layer = true; 10370 scroll_parent2.is_inner_viewport_scroll_layer = true;
10370 scroll_parent2.data.user_scrollable_horizontal = true; 10371 scroll_parent2.user_scrollable_horizontal = true;
10371 scroll_parent2.data.user_scrollable_vertical = true; 10372 scroll_parent2.user_scrollable_vertical = true;
10372 scroll_parent2.data.transform_id = parent2->transform_tree_index(); 10373 scroll_parent2.transform_id = parent2->transform_tree_index();
10373 expected_scroll_tree.Insert(scroll_parent2, 1); 10374 expected_scroll_tree.Insert(scroll_parent2, 1);
10374 10375
10375 // The node owned by child6 10376 // The node owned by child6
10376 ScrollNode scroll_child6; 10377 ScrollNode scroll_child6;
10377 scroll_child6.id = 3; 10378 scroll_child6.id = 3;
10378 scroll_child6.owner_id = child6->id(); 10379 scroll_child6.owner_id = child6->id();
10379 scroll_child6.data.main_thread_scrolling_reasons = 10380 scroll_child6.main_thread_scrolling_reasons =
10380 child6->main_thread_scrolling_reasons(); 10381 child6->main_thread_scrolling_reasons();
10381 scroll_child6.data.should_flatten = true; 10382 scroll_child6.should_flatten = true;
10382 scroll_child6.data.user_scrollable_horizontal = true; 10383 scroll_child6.user_scrollable_horizontal = true;
10383 scroll_child6.data.user_scrollable_vertical = true; 10384 scroll_child6.user_scrollable_vertical = true;
10384 scroll_child6.data.transform_id = child6->transform_tree_index(); 10385 scroll_child6.transform_id = child6->transform_tree_index();
10385 expected_scroll_tree.Insert(scroll_child6, 2); 10386 expected_scroll_tree.Insert(scroll_child6, 2);
10386 10387
10387 // The node owned by child7, child7 also owns a transform node 10388 // The node owned by child7, child7 also owns a transform node
10388 ScrollNode scroll_child7; 10389 ScrollNode scroll_child7;
10389 scroll_child7.id = 4; 10390 scroll_child7.id = 4;
10390 scroll_child7.owner_id = child7->id(); 10391 scroll_child7.owner_id = child7->id();
10391 scroll_child7.data.scrollable = true; 10392 scroll_child7.scrollable = true;
10392 scroll_child7.data.scroll_clip_layer_bounds = parent3->bounds(); 10393 scroll_child7.scroll_clip_layer_bounds = parent3->bounds();
10393 scroll_child7.data.bounds = child7->bounds(); 10394 scroll_child7.bounds = child7->bounds();
10394 scroll_child7.data.user_scrollable_horizontal = true; 10395 scroll_child7.user_scrollable_horizontal = true;
10395 scroll_child7.data.user_scrollable_vertical = true; 10396 scroll_child7.user_scrollable_vertical = true;
10396 scroll_child7.data.transform_id = child7->transform_tree_index(); 10397 scroll_child7.transform_id = child7->transform_tree_index();
10397 expected_scroll_tree.Insert(scroll_child7, 1); 10398 expected_scroll_tree.Insert(scroll_child7, 1);
10398 10399
10399 // The node owned by grand_child11, grand_child11 also owns a transform node 10400 // The node owned by grand_child11, grand_child11 also owns a transform node
10400 ScrollNode scroll_grand_child11; 10401 ScrollNode scroll_grand_child11;
10401 scroll_grand_child11.id = 5; 10402 scroll_grand_child11.id = 5;
10402 scroll_grand_child11.owner_id = grand_child11->id(); 10403 scroll_grand_child11.owner_id = grand_child11->id();
10403 scroll_grand_child11.data.scrollable = true; 10404 scroll_grand_child11.scrollable = true;
10404 scroll_grand_child11.data.user_scrollable_horizontal = true; 10405 scroll_grand_child11.user_scrollable_horizontal = true;
10405 scroll_grand_child11.data.user_scrollable_vertical = true; 10406 scroll_grand_child11.user_scrollable_vertical = true;
10406 scroll_grand_child11.data.transform_id = 10407 scroll_grand_child11.transform_id = grand_child11->transform_tree_index();
10407 grand_child11->transform_tree_index();
10408 expected_scroll_tree.Insert(scroll_grand_child11, 4); 10408 expected_scroll_tree.Insert(scroll_grand_child11, 4);
10409 10409
10410 // The node owned by parent5 10410 // The node owned by parent5
10411 ScrollNode scroll_parent5; 10411 ScrollNode scroll_parent5;
10412 scroll_parent5.id = 8; 10412 scroll_parent5.id = 8;
10413 scroll_parent5.owner_id = parent5->id(); 10413 scroll_parent5.owner_id = parent5->id();
10414 scroll_parent5.data.contains_non_fast_scrollable_region = true; 10414 scroll_parent5.contains_non_fast_scrollable_region = true;
10415 scroll_parent5.data.bounds = gfx::Size(10, 10); 10415 scroll_parent5.bounds = gfx::Size(10, 10);
10416 scroll_parent5.data.should_flatten = true; 10416 scroll_parent5.should_flatten = true;
10417 scroll_parent5.data.user_scrollable_horizontal = true; 10417 scroll_parent5.user_scrollable_horizontal = true;
10418 scroll_parent5.data.user_scrollable_vertical = true; 10418 scroll_parent5.user_scrollable_vertical = true;
10419 scroll_parent5.data.transform_id = parent5->transform_tree_index(); 10419 scroll_parent5.transform_id = parent5->transform_tree_index();
10420 expected_scroll_tree.Insert(scroll_parent5, 1); 10420 expected_scroll_tree.Insert(scroll_parent5, 1);
10421 10421
10422 expected_scroll_tree.SetScrollOffset(parent2->id(), gfx::ScrollOffset(0, 0)); 10422 expected_scroll_tree.SetScrollOffset(parent2->id(), gfx::ScrollOffset(0, 0));
10423 expected_scroll_tree.SetScrollOffset(child7->id(), gfx::ScrollOffset(0, 0)); 10423 expected_scroll_tree.SetScrollOffset(child7->id(), gfx::ScrollOffset(0, 0));
10424 expected_scroll_tree.SetScrollOffset(grand_child11->id(), 10424 expected_scroll_tree.SetScrollOffset(grand_child11->id(),
10425 gfx::ScrollOffset(0, 0)); 10425 gfx::ScrollOffset(0, 0));
10426 expected_scroll_tree.set_needs_update(false); 10426 expected_scroll_tree.set_needs_update(false);
10427 10427
10428 EXPECT_EQ(expected_scroll_tree, scroll_tree); 10428 EXPECT_EQ(expected_scroll_tree, scroll_tree);
10429 10429
10430 // Check other layers' scroll_tree_index 10430 // Check other layers' scroll_tree_index
10431 EXPECT_EQ(scroll_root1.id, page_scale_layer->scroll_tree_index()); 10431 EXPECT_EQ(scroll_root1.id, page_scale_layer->scroll_tree_index());
10432 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index()); 10432 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index());
10433 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index()); 10433 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index());
10434 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index()); 10434 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index());
10435 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index()); 10435 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index());
10436 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index()); 10436 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index());
10437 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index()); 10437 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index());
10438 } 10438 }
10439 10439
10440 } // namespace 10440 } // namespace
10441 } // namespace cc 10441 } // 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