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

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

Issue 1479883002: cc: Fix draw transform computation for non-drawn layers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove LayerImpl::draw_transform() Created 5 years 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
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 <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 child->SetOpacity(0.f); 164 child->SetOpacity(0.f);
165 SetLayerPropertiesForTesting(grand_child, identity_matrix, gfx::Point3F(), 165 SetLayerPropertiesForTesting(grand_child, identity_matrix, gfx::Point3F(),
166 gfx::PointF(10, 10), gfx::Size(100, 100), true, 166 gfx::PointF(10, 10), gfx::Size(100, 100), true,
167 false, false); 167 false, false);
168 grand_child->SetTouchEventHandlerRegion(gfx::Rect(0, 0, 100, 100)); 168 grand_child->SetTouchEventHandlerRegion(gfx::Rect(0, 0, 100, 100));
169 169
170 ExecuteCalculateDrawProperties(parent); 170 ExecuteCalculateDrawProperties(parent);
171 171
172 // Check that we've computed draw properties for the subtree rooted at 172 // Check that we've computed draw properties for the subtree rooted at
173 // |child|. 173 // |child|.
174 EXPECT_FALSE(child->draw_transform().IsIdentity()); 174 EXPECT_FALSE(child->draw_properties().target_space_transform.IsIdentity());
175 EXPECT_FALSE(grand_child->draw_transform().IsIdentity()); 175 EXPECT_FALSE(
176 grand_child->draw_properties().target_space_transform.IsIdentity());
176 } 177 }
177 178
178 TEST_F(LayerTreeHostCommonTest, TransformsForSingleLayer) { 179 TEST_F(LayerTreeHostCommonTest, TransformsForSingleLayer) {
179 gfx::Transform identity_matrix; 180 gfx::Transform identity_matrix;
180 scoped_refptr<Layer> layer = Layer::Create(layer_settings()); 181 scoped_refptr<Layer> layer = Layer::Create(layer_settings());
181 182
182 scoped_refptr<Layer> root = Layer::Create(layer_settings()); 183 scoped_refptr<Layer> root = Layer::Create(layer_settings());
183 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), 184 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(),
184 gfx::PointF(), gfx::Size(1, 2), true, false); 185 gfx::PointF(), gfx::Size(1, 2), true, false);
185 root->AddChild(layer); 186 root->AddChild(layer);
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 root.get(), kDeviceScale, kPageScale, scroll_layer->parent()); 330 root.get(), kDeviceScale, kPageScale, scroll_layer->parent());
330 gfx::Transform expected_transform = identity_matrix; 331 gfx::Transform expected_transform = identity_matrix;
331 gfx::PointF sub_layer_screen_position = kScrollLayerPosition - kScrollDelta; 332 gfx::PointF sub_layer_screen_position = kScrollLayerPosition - kScrollDelta;
332 expected_transform.Translate(MathUtil::Round(sub_layer_screen_position.x() * 333 expected_transform.Translate(MathUtil::Round(sub_layer_screen_position.x() *
333 kPageScale * kDeviceScale), 334 kPageScale * kDeviceScale),
334 MathUtil::Round(sub_layer_screen_position.y() * 335 MathUtil::Round(sub_layer_screen_position.y() *
335 kPageScale * kDeviceScale)); 336 kPageScale * kDeviceScale));
336 expected_transform.Scale(kPageScale * kDeviceScale, 337 expected_transform.Scale(kPageScale * kDeviceScale,
337 kPageScale * kDeviceScale); 338 kPageScale * kDeviceScale);
338 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform, 339 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform,
339 sublayer->draw_transform()); 340 sublayer->DrawTransform());
340 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform, 341 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform,
341 sublayer->screen_space_transform()); 342 sublayer->screen_space_transform());
342 343
343 gfx::Transform arbitrary_translate; 344 gfx::Transform arbitrary_translate;
344 const float kTranslateX = 10.6f; 345 const float kTranslateX = 10.6f;
345 const float kTranslateY = 20.6f; 346 const float kTranslateY = 20.6f;
346 arbitrary_translate.Translate(kTranslateX, kTranslateY); 347 arbitrary_translate.Translate(kTranslateX, kTranslateY);
347 SetLayerPropertiesForTesting(scroll_layer, arbitrary_translate, 348 SetLayerPropertiesForTesting(scroll_layer, arbitrary_translate,
348 gfx::Point3F(), gfx::PointF(), gfx::Size(10, 20), 349 gfx::Point3F(), gfx::PointF(), gfx::Size(10, 20),
349 true, false, false); 350 true, false, false);
350 root->layer_tree_impl()->property_trees()->needs_rebuild = true; 351 root->layer_tree_impl()->property_trees()->needs_rebuild = true;
351 ExecuteCalculateDrawProperties( 352 ExecuteCalculateDrawProperties(
352 root.get(), kDeviceScale, kPageScale, scroll_layer->parent()); 353 root.get(), kDeviceScale, kPageScale, scroll_layer->parent());
353 expected_transform.MakeIdentity(); 354 expected_transform.MakeIdentity();
354 expected_transform.Translate( 355 expected_transform.Translate(
355 MathUtil::Round(kTranslateX * kPageScale * kDeviceScale + 356 MathUtil::Round(kTranslateX * kPageScale * kDeviceScale +
356 sub_layer_screen_position.x() * kPageScale * 357 sub_layer_screen_position.x() * kPageScale *
357 kDeviceScale), 358 kDeviceScale),
358 MathUtil::Round(kTranslateY * kPageScale * kDeviceScale + 359 MathUtil::Round(kTranslateY * kPageScale * kDeviceScale +
359 sub_layer_screen_position.y() * kPageScale * 360 sub_layer_screen_position.y() * kPageScale *
360 kDeviceScale)); 361 kDeviceScale));
361 expected_transform.Scale(kPageScale * kDeviceScale, 362 expected_transform.Scale(kPageScale * kDeviceScale,
362 kPageScale * kDeviceScale); 363 kPageScale * kDeviceScale);
363 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform, 364 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform,
364 sublayer->draw_transform()); 365 sublayer->DrawTransform());
365 } 366 }
366 367
367 TEST_F(LayerTreeHostCommonTest, TransformsForSimpleHierarchy) { 368 TEST_F(LayerTreeHostCommonTest, TransformsForSimpleHierarchy) {
368 gfx::Transform identity_matrix; 369 gfx::Transform identity_matrix;
369 scoped_refptr<Layer> root = Layer::Create(layer_settings()); 370 scoped_refptr<Layer> root = Layer::Create(layer_settings());
370 scoped_refptr<Layer> parent = Layer::Create(layer_settings()); 371 scoped_refptr<Layer> parent = Layer::Create(layer_settings());
371 scoped_refptr<Layer> child = Layer::Create(layer_settings()); 372 scoped_refptr<Layer> child = Layer::Create(layer_settings());
372 scoped_refptr<Layer> grand_child = Layer::Create(layer_settings()); 373 scoped_refptr<Layer> grand_child = Layer::Create(layer_settings());
373 root->AddChild(parent); 374 root->AddChild(parent);
374 parent->AddChild(child); 375 parent->AddChild(child);
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 false); 505 false);
505 ExecuteCalculateDrawProperties(root); 506 ExecuteCalculateDrawProperties(root);
506 507
507 // Render surface should have been created now. 508 // Render surface should have been created now.
508 ASSERT_TRUE(child->render_surface()); 509 ASSERT_TRUE(child->render_surface());
509 ASSERT_EQ(child, child->render_target()); 510 ASSERT_EQ(child, child->render_target());
510 511
511 // The child layer's draw transform should refer to its new render surface. 512 // The child layer's draw transform should refer to its new render surface.
512 // The screen-space transform, however, should still refer to the root. 513 // The screen-space transform, however, should still refer to the root.
513 EXPECT_TRANSFORMATION_MATRIX_EQ(surface_sublayer_transform, 514 EXPECT_TRANSFORMATION_MATRIX_EQ(surface_sublayer_transform,
514 child->draw_transform()); 515 child->DrawTransform());
515 EXPECT_TRANSFORMATION_MATRIX_EQ(parent_composite_transform, 516 EXPECT_TRANSFORMATION_MATRIX_EQ(parent_composite_transform,
516 child->screen_space_transform()); 517 child->screen_space_transform());
517 518
518 // Because the grand_child is the only drawable content, the child's render 519 // Because the grand_child is the only drawable content, the child's render
519 // surface will tighten its bounds to the grand_child. The scale at which the 520 // surface will tighten its bounds to the grand_child. The scale at which the
520 // surface's subtree is drawn must be removed from the composite transform. 521 // surface's subtree is drawn must be removed from the composite transform.
521 EXPECT_TRANSFORMATION_MATRIX_EQ( 522 EXPECT_TRANSFORMATION_MATRIX_EQ(
522 surface_sublayer_composite_transform, 523 surface_sublayer_composite_transform,
523 child->render_target()->render_surface()->draw_transform()); 524 child->render_target()->render_surface()->draw_transform());
524 525
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 expected_grand_child_screen_space_transform.Rotate(45.0); 564 expected_grand_child_screen_space_transform.Rotate(45.0);
564 expected_grand_child_screen_space_transform.Translate(2.0, 2.0); 565 expected_grand_child_screen_space_transform.Translate(2.0, 2.0);
565 566
566 // First compute draw properties with separate surfaces enabled. 567 // First compute draw properties with separate surfaces enabled.
567 ExecuteCalculateDrawProperties(root); 568 ExecuteCalculateDrawProperties(root);
568 569
569 // The grand child's draw transform should be its offset wrt the child. 570 // The grand child's draw transform should be its offset wrt the child.
570 gfx::Transform expected_grand_child_draw_transform; 571 gfx::Transform expected_grand_child_draw_transform;
571 expected_grand_child_draw_transform.Translate(2.0, 2.0); 572 expected_grand_child_draw_transform.Translate(2.0, 2.0);
572 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_draw_transform, 573 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_draw_transform,
573 grand_child->draw_transform()); 574 grand_child->DrawTransform());
574 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_screen_space_transform, 575 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_screen_space_transform,
575 grand_child->screen_space_transform()); 576 grand_child->screen_space_transform());
576 577
577 ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root); 578 ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
578 579
579 // With separate surfaces disabled, the grand child's draw transform should be 580 // With separate surfaces disabled, the grand child's draw transform should be
580 // the same as its screen space transform. 581 // the same as its screen space transform.
581 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_screen_space_transform, 582 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_screen_space_transform,
582 grand_child->draw_transform()); 583 grand_child->DrawTransform());
583 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_screen_space_transform, 584 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_screen_space_transform,
584 grand_child->screen_space_transform()); 585 grand_child->screen_space_transform());
585 } 586 }
586 587
587 TEST_F(LayerTreeHostCommonTest, TransformsForReplica) { 588 TEST_F(LayerTreeHostCommonTest, TransformsForReplica) {
588 LayerImpl* root = root_layer(); 589 LayerImpl* root = root_layer();
589 LayerImpl* parent = AddChildToRoot<LayerImpl>(); 590 LayerImpl* parent = AddChildToRoot<LayerImpl>();
590 LayerImpl* child = AddChild<LayerImpl>(parent); 591 LayerImpl* child = AddChild<LayerImpl>(parent);
591 LayerImpl* grand_child = AddChild<LayerImpl>(child); 592 LayerImpl* grand_child = AddChild<LayerImpl>(child);
592 grand_child->SetDrawsContent(true); 593 grand_child->SetDrawsContent(true);
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 EXPECT_EQ(render_surface1, child_of_rs1->render_target()); 804 EXPECT_EQ(render_surface1, child_of_rs1->render_target());
804 EXPECT_EQ(render_surface1, grand_child_of_rs1->render_target()); 805 EXPECT_EQ(render_surface1, grand_child_of_rs1->render_target());
805 806
806 EXPECT_EQ(render_surface2, render_surface2->render_target()); 807 EXPECT_EQ(render_surface2, render_surface2->render_target());
807 EXPECT_EQ(render_surface2, child_of_rs2->render_target()); 808 EXPECT_EQ(render_surface2, child_of_rs2->render_target());
808 EXPECT_EQ(render_surface2, grand_child_of_rs2->render_target()); 809 EXPECT_EQ(render_surface2, grand_child_of_rs2->render_target());
809 810
810 // Verify layer draw transforms note that draw transforms are described with 811 // Verify layer draw transforms note that draw transforms are described with
811 // respect to the nearest ancestor render surface but screen space transforms 812 // respect to the nearest ancestor render surface but screen space transforms
812 // are described with respect to the root. 813 // are described with respect to the root.
813 EXPECT_TRANSFORMATION_MATRIX_EQ(A, parent->draw_transform()); 814 EXPECT_TRANSFORMATION_MATRIX_EQ(A, parent->DrawTransform());
814 EXPECT_TRANSFORMATION_MATRIX_EQ(A * A, child_of_root->draw_transform()); 815 EXPECT_TRANSFORMATION_MATRIX_EQ(A * A, child_of_root->DrawTransform());
815 EXPECT_TRANSFORMATION_MATRIX_EQ(A * A * A, 816 EXPECT_TRANSFORMATION_MATRIX_EQ(A * A * A,
816 grand_child_of_root->draw_transform()); 817 grand_child_of_root->DrawTransform());
817 818
818 EXPECT_TRANSFORMATION_MATRIX_EQ(SS1, render_surface1->draw_transform()); 819 EXPECT_TRANSFORMATION_MATRIX_EQ(SS1, render_surface1->DrawTransform());
819 EXPECT_TRANSFORMATION_MATRIX_EQ(SS1 * A, child_of_rs1->draw_transform()); 820 EXPECT_TRANSFORMATION_MATRIX_EQ(SS1 * A, child_of_rs1->DrawTransform());
820 EXPECT_TRANSFORMATION_MATRIX_EQ(SS1 * A * A, 821 EXPECT_TRANSFORMATION_MATRIX_EQ(SS1 * A * A,
821 grand_child_of_rs1->draw_transform()); 822 grand_child_of_rs1->DrawTransform());
822 823
823 EXPECT_TRANSFORMATION_MATRIX_EQ(SS2, render_surface2->draw_transform()); 824 EXPECT_TRANSFORMATION_MATRIX_EQ(SS2, render_surface2->DrawTransform());
824 EXPECT_TRANSFORMATION_MATRIX_EQ(SS2 * A, child_of_rs2->draw_transform()); 825 EXPECT_TRANSFORMATION_MATRIX_EQ(SS2 * A, child_of_rs2->DrawTransform());
825 EXPECT_TRANSFORMATION_MATRIX_EQ(SS2 * A * A, 826 EXPECT_TRANSFORMATION_MATRIX_EQ(SS2 * A * A,
826 grand_child_of_rs2->draw_transform()); 827 grand_child_of_rs2->DrawTransform());
827 828
828 // Verify layer screen-space transforms 829 // Verify layer screen-space transforms
829 // 830 //
830 EXPECT_TRANSFORMATION_MATRIX_EQ(A, parent->screen_space_transform()); 831 EXPECT_TRANSFORMATION_MATRIX_EQ(A, parent->screen_space_transform());
831 EXPECT_TRANSFORMATION_MATRIX_EQ(A * A, 832 EXPECT_TRANSFORMATION_MATRIX_EQ(A * A,
832 child_of_root->screen_space_transform()); 833 child_of_root->screen_space_transform());
833 EXPECT_TRANSFORMATION_MATRIX_EQ( 834 EXPECT_TRANSFORMATION_MATRIX_EQ(
834 A * A * A, grand_child_of_root->screen_space_transform()); 835 A * A * A, grand_child_of_root->screen_space_transform());
835 836
836 EXPECT_TRANSFORMATION_MATRIX_EQ(A * A, 837 EXPECT_TRANSFORMATION_MATRIX_EQ(A * A,
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 950
950 ExecuteCalculateDrawProperties(root); 951 ExecuteCalculateDrawProperties(root);
951 952
952 // The child's draw transform should have been taken by its surface. 953 // The child's draw transform should have been taken by its surface.
953 ASSERT_TRUE(child->render_surface()); 954 ASSERT_TRUE(child->render_surface());
954 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_draw_transform, 955 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_draw_transform,
955 child->render_surface()->draw_transform()); 956 child->render_surface()->draw_transform());
956 EXPECT_TRANSFORMATION_MATRIX_EQ( 957 EXPECT_TRANSFORMATION_MATRIX_EQ(
957 expected_child_screen_space_transform, 958 expected_child_screen_space_transform,
958 child->render_surface()->screen_space_transform()); 959 child->render_surface()->screen_space_transform());
959 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix, child->draw_transform()); 960 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix, child->DrawTransform());
960 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_screen_space_transform, 961 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_screen_space_transform,
961 child->screen_space_transform()); 962 child->screen_space_transform());
962 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_draw_transform, 963 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_draw_transform,
963 grand_child->draw_transform()); 964 grand_child->DrawTransform());
964 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_screen_space_transform, 965 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_screen_space_transform,
965 grand_child->screen_space_transform()); 966 grand_child->screen_space_transform());
966 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_draw_transform, 967 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_draw_transform,
967 great_grand_child->draw_transform()); 968 great_grand_child->DrawTransform());
968 EXPECT_TRANSFORMATION_MATRIX_EQ( 969 EXPECT_TRANSFORMATION_MATRIX_EQ(
969 expected_great_grand_child_screen_space_transform, 970 expected_great_grand_child_screen_space_transform,
970 great_grand_child->screen_space_transform()); 971 great_grand_child->screen_space_transform());
971 } 972 }
972 973
973 TEST_F(LayerTreeHostCommonTest, LayerFullyContainedWithinClipInTargetSpace) { 974 TEST_F(LayerTreeHostCommonTest, LayerFullyContainedWithinClipInTargetSpace) {
974 scoped_refptr<Layer> root = Layer::Create(layer_settings()); 975 scoped_refptr<Layer> root = Layer::Create(layer_settings());
975 scoped_refptr<Layer> child = Layer::Create(layer_settings()); 976 scoped_refptr<Layer> child = Layer::Create(layer_settings());
976 scoped_refptr<LayerWithForcedDrawsContent> grand_child = 977 scoped_refptr<LayerWithForcedDrawsContent> grand_child =
977 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); 978 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings()));
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 SetLayerPropertiesForTesting(grand_child, identity_matrix, gfx::Point3F(), 1035 SetLayerPropertiesForTesting(grand_child, identity_matrix, gfx::Point3F(),
1035 gfx::PointF(), gfx::Size(10, 10), true, false, 1036 gfx::PointF(), gfx::Size(10, 10), true, false,
1036 false); 1037 false);
1037 1038
1038 ExecuteCalculateDrawProperties(root); 1039 ExecuteCalculateDrawProperties(root);
1039 1040
1040 ASSERT_TRUE(child->has_render_surface()); 1041 ASSERT_TRUE(child->has_render_surface());
1041 // This is the real test, the rest are sanity checks. 1042 // This is the real test, the rest are sanity checks.
1042 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix, 1043 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix,
1043 child->render_surface()->draw_transform()); 1044 child->render_surface()->draw_transform());
1044 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix, child->draw_transform()); 1045 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix, child->DrawTransform());
1045 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix, 1046 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix,
1046 grand_child->draw_transform()); 1047 grand_child->DrawTransform());
1047 } 1048 }
1048 1049
1049 TEST_F(LayerTreeHostCommonTest, TransformAboveRootLayer) { 1050 TEST_F(LayerTreeHostCommonTest, TransformAboveRootLayer) {
1050 // Transformations applied at the root of the tree should be forwarded 1051 // Transformations applied at the root of the tree should be forwarded
1051 // to child layers instead of applied to the root RenderSurface. 1052 // to child layers instead of applied to the root RenderSurface.
1052 const gfx::Transform identity_matrix; 1053 const gfx::Transform identity_matrix;
1053 LayerImpl* root = root_layer(); 1054 LayerImpl* root = root_layer();
1054 root->SetDrawsContent(true); 1055 root->SetDrawsContent(true);
1055 LayerImpl* child = AddChild<LayerImpl>(root); 1056 LayerImpl* child = AddChild<LayerImpl>(root);
1056 child->SetDrawsContent(true); 1057 child->SetDrawsContent(true);
1057 1058
1058 child->SetScrollClipLayer(root->id()); 1059 child->SetScrollClipLayer(root->id());
1059 1060
1060 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), 1061 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(),
1061 gfx::PointF(), gfx::Size(20, 20), true, false, 1062 gfx::PointF(), gfx::Size(20, 20), true, false,
1062 true); 1063 true);
1063 SetLayerPropertiesForTesting(child, identity_matrix, gfx::Point3F(), 1064 SetLayerPropertiesForTesting(child, identity_matrix, gfx::Point3F(),
1064 gfx::PointF(), gfx::Size(20, 20), true, false, 1065 gfx::PointF(), gfx::Size(20, 20), true, false,
1065 false); 1066 false);
1066 1067
1067 gfx::Transform translate; 1068 gfx::Transform translate;
1068 translate.Translate(50, 50); 1069 translate.Translate(50, 50);
1069 { 1070 {
1070 LayerImplList render_surface_layer_list_impl; 1071 LayerImplList render_surface_layer_list_impl;
1072 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
1071 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 1073 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
1072 root, root->bounds(), translate, &render_surface_layer_list_impl); 1074 root, root->bounds(), translate, &render_surface_layer_list_impl,
1075 root->layer_tree_impl()->current_render_surface_list_id());
1073 inputs.property_trees->needs_rebuild = true; 1076 inputs.property_trees->needs_rebuild = true;
1074 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1077 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1075 EXPECT_EQ(translate, root->draw_properties().target_space_transform); 1078 EXPECT_EQ(translate, root->draw_properties().target_space_transform);
1076 EXPECT_EQ(translate, child->draw_properties().target_space_transform); 1079 EXPECT_EQ(translate, child->draw_properties().target_space_transform);
1077 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1080 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1078 } 1081 }
1079 1082
1080 gfx::Transform scale; 1083 gfx::Transform scale;
1081 scale.Scale(2, 2); 1084 scale.Scale(2, 2);
1082 { 1085 {
1083 LayerImplList render_surface_layer_list_impl; 1086 LayerImplList render_surface_layer_list_impl;
1087 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
1084 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 1088 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
1085 root, root->bounds(), scale, &render_surface_layer_list_impl); 1089 root, root->bounds(), scale, &render_surface_layer_list_impl,
1090 root->layer_tree_impl()->current_render_surface_list_id());
1086 inputs.property_trees->needs_rebuild = true; 1091 inputs.property_trees->needs_rebuild = true;
1087 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1092 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1088 EXPECT_EQ(scale, root->draw_properties().target_space_transform); 1093 EXPECT_EQ(scale, root->draw_properties().target_space_transform);
1089 EXPECT_EQ(scale, child->draw_properties().target_space_transform); 1094 EXPECT_EQ(scale, child->draw_properties().target_space_transform);
1090 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1095 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1091 } 1096 }
1092 1097
1093 gfx::Transform rotate; 1098 gfx::Transform rotate;
1094 rotate.Rotate(2); 1099 rotate.Rotate(2);
1095 { 1100 {
1096 LayerImplList render_surface_layer_list_impl; 1101 LayerImplList render_surface_layer_list_impl;
1102 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
1097 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 1103 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
1098 root, root->bounds(), rotate, &render_surface_layer_list_impl); 1104 root, root->bounds(), rotate, &render_surface_layer_list_impl,
1105 root->layer_tree_impl()->current_render_surface_list_id());
1099 inputs.property_trees->needs_rebuild = true; 1106 inputs.property_trees->needs_rebuild = true;
1100 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1107 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1101 EXPECT_EQ(rotate, root->draw_properties().target_space_transform); 1108 EXPECT_EQ(rotate, root->draw_properties().target_space_transform);
1102 EXPECT_EQ(rotate, child->draw_properties().target_space_transform); 1109 EXPECT_EQ(rotate, child->draw_properties().target_space_transform);
1103 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1110 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1104 } 1111 }
1105 1112
1106 gfx::Transform composite; 1113 gfx::Transform composite;
1107 composite.ConcatTransform(translate); 1114 composite.ConcatTransform(translate);
1108 composite.ConcatTransform(scale); 1115 composite.ConcatTransform(scale);
1109 composite.ConcatTransform(rotate); 1116 composite.ConcatTransform(rotate);
1110 { 1117 {
1111 LayerImplList render_surface_layer_list_impl; 1118 LayerImplList render_surface_layer_list_impl;
1119 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
1112 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 1120 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
1113 root, root->bounds(), composite, &render_surface_layer_list_impl); 1121 root, root->bounds(), composite, &render_surface_layer_list_impl,
1122 root->layer_tree_impl()->current_render_surface_list_id());
1114 inputs.property_trees->needs_rebuild = true; 1123 inputs.property_trees->needs_rebuild = true;
1115 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1124 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1116 EXPECT_EQ(composite, root->draw_properties().target_space_transform); 1125 EXPECT_EQ(composite, root->draw_properties().target_space_transform);
1117 EXPECT_EQ(composite, child->draw_properties().target_space_transform); 1126 EXPECT_EQ(composite, child->draw_properties().target_space_transform);
1118 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1127 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1119 } 1128 }
1120 1129
1121 // Verify it composes correctly with device scale. 1130 // Verify it composes correctly with device scale.
1122 float device_scale_factor = 1.5f; 1131 float device_scale_factor = 1.5f;
1123 1132
1124 { 1133 {
1125 LayerImplList render_surface_layer_list_impl; 1134 LayerImplList render_surface_layer_list_impl;
1135 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
1126 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 1136 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
1127 root, root->bounds(), translate, &render_surface_layer_list_impl); 1137 root, root->bounds(), translate, &render_surface_layer_list_impl,
1138 root->layer_tree_impl()->current_render_surface_list_id());
1128 inputs.device_scale_factor = device_scale_factor; 1139 inputs.device_scale_factor = device_scale_factor;
1129 inputs.property_trees->needs_rebuild = true; 1140 inputs.property_trees->needs_rebuild = true;
1130 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1141 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1131 gfx::Transform device_scaled_translate = translate; 1142 gfx::Transform device_scaled_translate = translate;
1132 device_scaled_translate.Scale(device_scale_factor, device_scale_factor); 1143 device_scaled_translate.Scale(device_scale_factor, device_scale_factor);
1133 EXPECT_EQ(device_scaled_translate, 1144 EXPECT_EQ(device_scaled_translate,
1134 root->draw_properties().target_space_transform); 1145 root->draw_properties().target_space_transform);
1135 EXPECT_EQ(device_scaled_translate, 1146 EXPECT_EQ(device_scaled_translate,
1136 child->draw_properties().target_space_transform); 1147 child->draw_properties().target_space_transform);
1137 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1148 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1138 } 1149 }
1139 1150
1140 // Verify it composes correctly with page scale. 1151 // Verify it composes correctly with page scale.
1141 float page_scale_factor = 2.f; 1152 float page_scale_factor = 2.f;
1142 1153
1143 { 1154 {
1144 LayerImplList render_surface_layer_list_impl; 1155 LayerImplList render_surface_layer_list_impl;
1156 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
1145 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 1157 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
1146 root, root->bounds(), translate, &render_surface_layer_list_impl); 1158 root, root->bounds(), translate, &render_surface_layer_list_impl,
1159 root->layer_tree_impl()->current_render_surface_list_id());
1147 inputs.page_scale_factor = page_scale_factor; 1160 inputs.page_scale_factor = page_scale_factor;
1148 inputs.page_scale_layer = root; 1161 inputs.page_scale_layer = root;
1149 inputs.property_trees->needs_rebuild = true; 1162 inputs.property_trees->needs_rebuild = true;
1150 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1163 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1151 gfx::Transform page_scaled_translate = translate; 1164 gfx::Transform page_scaled_translate = translate;
1152 page_scaled_translate.Scale(page_scale_factor, page_scale_factor); 1165 page_scaled_translate.Scale(page_scale_factor, page_scale_factor);
1153 EXPECT_EQ(page_scaled_translate, 1166 EXPECT_EQ(page_scaled_translate,
1154 root->draw_properties().target_space_transform); 1167 root->draw_properties().target_space_transform);
1155 EXPECT_EQ(page_scaled_translate, 1168 EXPECT_EQ(page_scaled_translate,
1156 child->draw_properties().target_space_transform); 1169 child->draw_properties().target_space_transform);
1157 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1170 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1158 } 1171 }
1159 1172
1160 // Verify that it composes correctly with transforms directly on root layer. 1173 // Verify that it composes correctly with transforms directly on root layer.
1161 root->SetTransform(composite); 1174 root->SetTransform(composite);
1162 1175
1163 { 1176 {
1164 LayerImplList render_surface_layer_list_impl; 1177 LayerImplList render_surface_layer_list_impl;
1178 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
1165 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 1179 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
1166 root, root->bounds(), composite, &render_surface_layer_list_impl); 1180 root, root->bounds(), composite, &render_surface_layer_list_impl,
1181 root->layer_tree_impl()->current_render_surface_list_id());
1167 inputs.property_trees->needs_rebuild = true; 1182 inputs.property_trees->needs_rebuild = true;
1168 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1183 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1169 gfx::Transform compositeSquared = composite; 1184 gfx::Transform compositeSquared = composite;
1170 compositeSquared.ConcatTransform(composite); 1185 compositeSquared.ConcatTransform(composite);
1171 EXPECT_TRANSFORMATION_MATRIX_EQ( 1186 EXPECT_TRANSFORMATION_MATRIX_EQ(
1172 compositeSquared, root->draw_properties().target_space_transform); 1187 compositeSquared, root->draw_properties().target_space_transform);
1173 EXPECT_TRANSFORMATION_MATRIX_EQ( 1188 EXPECT_TRANSFORMATION_MATRIX_EQ(
1174 compositeSquared, child->draw_properties().target_space_transform); 1189 compositeSquared, child->draw_properties().target_space_transform);
1175 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1190 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1176 } 1191 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1215 const gfx::Transform identity_matrix; 1230 const gfx::Transform identity_matrix;
1216 SetLayerPropertiesForTesting(render_surface1, identity_matrix, gfx::Point3F(), 1231 SetLayerPropertiesForTesting(render_surface1, identity_matrix, gfx::Point3F(),
1217 gfx::PointF(), gfx::Size(10, 10), true, false, 1232 gfx::PointF(), gfx::Size(10, 10), true, false,
1218 true); 1233 true);
1219 SetLayerPropertiesForTesting(child, identity_matrix, gfx::Point3F(), 1234 SetLayerPropertiesForTesting(child, identity_matrix, gfx::Point3F(),
1220 gfx::PointF(), gfx::Size(10, 10), true, false, 1235 gfx::PointF(), gfx::Size(10, 10), true, false,
1221 false); 1236 false);
1222 render_surface1->SetOpacity(0.f); 1237 render_surface1->SetOpacity(0.f);
1223 1238
1224 LayerImplList render_surface_layer_list; 1239 LayerImplList render_surface_layer_list;
1240 parent->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
1225 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 1241 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
1226 parent, parent->bounds(), &render_surface_layer_list); 1242 parent, parent->bounds(), &render_surface_layer_list,
1243 parent->layer_tree_impl()->current_render_surface_list_id());
1227 inputs.can_adjust_raster_scales = true; 1244 inputs.can_adjust_raster_scales = true;
1228 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1245 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1229 1246
1230 // Since the layer is transparent, render_surface1->render_surface() should 1247 // Since the layer is transparent, render_surface1->render_surface() should
1231 // not have gotten added anywhere. Also, the drawable content rect should not 1248 // not have gotten added anywhere. Also, the drawable content rect should not
1232 // have been extended by the children. 1249 // have been extended by the children.
1233 ASSERT_TRUE(parent->render_surface()); 1250 ASSERT_TRUE(parent->render_surface());
1234 EXPECT_EQ(0U, parent->render_surface()->layer_list().size()); 1251 EXPECT_EQ(0U, parent->render_surface()->layer_list().size());
1235 EXPECT_EQ(1U, render_surface_layer_list.size()); 1252 EXPECT_EQ(1U, render_surface_layer_list.size());
1236 EXPECT_EQ(parent->id(), render_surface_layer_list.at(0)->id()); 1253 EXPECT_EQ(parent->id(), render_surface_layer_list.at(0)->id());
(...skipping 16 matching lines...) Expand all
1253 true); 1270 true);
1254 SetLayerPropertiesForTesting(child, identity_matrix, gfx::Point3F(), 1271 SetLayerPropertiesForTesting(child, identity_matrix, gfx::Point3F(),
1255 gfx::PointF(), gfx::Size(10, 10), true, false, 1272 gfx::PointF(), gfx::Size(10, 10), true, false,
1256 false); 1273 false);
1257 render_surface1->SetOpacity(0.f); 1274 render_surface1->SetOpacity(0.f);
1258 FilterOperations filters; 1275 FilterOperations filters;
1259 filters.Append(FilterOperation::CreateBlurFilter(1.5f)); 1276 filters.Append(FilterOperation::CreateBlurFilter(1.5f));
1260 render_surface1->SetBackgroundFilters(filters); 1277 render_surface1->SetBackgroundFilters(filters);
1261 1278
1262 LayerImplList render_surface_layer_list; 1279 LayerImplList render_surface_layer_list;
1280 parent->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
1263 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 1281 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
1264 parent, parent->bounds(), &render_surface_layer_list); 1282 parent, parent->bounds(), &render_surface_layer_list,
1283 parent->layer_tree_impl()->current_render_surface_list_id());
1265 inputs.can_adjust_raster_scales = true; 1284 inputs.can_adjust_raster_scales = true;
1266 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1285 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1267 1286
1268 // The layer is fully transparent, but has a background filter, so it 1287 // The layer is fully transparent, but has a background filter, so it
1269 // shouldn't be skipped. 1288 // shouldn't be skipped.
1270 ASSERT_TRUE(parent->render_surface()); 1289 ASSERT_TRUE(parent->render_surface());
1271 EXPECT_EQ(1U, parent->render_surface()->layer_list().size()); 1290 EXPECT_EQ(1U, parent->render_surface()->layer_list().size());
1272 EXPECT_EQ(2U, render_surface_layer_list.size()); 1291 EXPECT_EQ(2U, render_surface_layer_list.size());
1273 EXPECT_EQ(gfx::RectF(0, 0, 10, 10), 1292 EXPECT_EQ(gfx::RectF(0, 0, 10, 10),
1274 parent->render_surface()->DrawableContentRect()); 1293 parent->render_surface()->DrawableContentRect());
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
1483 1502
1484 gfx::Transform flattened_rotation_about_y = rotation_about_y_axis; 1503 gfx::Transform flattened_rotation_about_y = rotation_about_y_axis;
1485 flattened_rotation_about_y.FlattenTo2d(); 1504 flattened_rotation_about_y.FlattenTo2d();
1486 1505
1487 ExecuteCalculateDrawProperties(root); 1506 ExecuteCalculateDrawProperties(root);
1488 1507
1489 EXPECT_TRUE(parent->render_surface()); 1508 EXPECT_TRUE(parent->render_surface());
1490 EXPECT_FALSE(child->render_surface()); 1509 EXPECT_FALSE(child->render_surface());
1491 EXPECT_FALSE(grand_child->render_surface()); 1510 EXPECT_FALSE(grand_child->render_surface());
1492 1511
1493 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix, child->draw_transform()); 1512 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix, child->DrawTransform());
1494 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix, 1513 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_matrix,
1495 grand_child->draw_transform()); 1514 grand_child->DrawTransform());
1496 1515
1497 // The screen-space transform inherited by |child| and |grand_child| should 1516 // The screen-space transform inherited by |child| and |grand_child| should
1498 // have been flattened at their render target. In particular, the fact that 1517 // have been flattened at their render target. In particular, the fact that
1499 // |grand_child| happens to preserve 3d shouldn't affect this flattening. 1518 // |grand_child| happens to preserve 3d shouldn't affect this flattening.
1500 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_y, 1519 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_y,
1501 child->screen_space_transform()); 1520 child->screen_space_transform());
1502 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_y, 1521 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_y,
1503 grand_child->screen_space_transform()); 1522 grand_child->screen_space_transform());
1504 } 1523 }
1505 1524
(...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after
2198 gfx::Transform expected_leaf_draw_transform_with_surfaces; 2217 gfx::Transform expected_leaf_draw_transform_with_surfaces;
2199 expected_leaf_draw_transform_with_surfaces.Translate(16.0, 16.0); 2218 expected_leaf_draw_transform_with_surfaces.Translate(16.0, 16.0);
2200 2219
2201 gfx::Transform expected_leaf_draw_transform_without_surfaces; 2220 gfx::Transform expected_leaf_draw_transform_without_surfaces;
2202 expected_leaf_draw_transform_without_surfaces.Translate(30.0, 30.0); 2221 expected_leaf_draw_transform_without_surfaces.Translate(30.0, 30.0);
2203 2222
2204 ExecuteCalculateDrawProperties(root); 2223 ExecuteCalculateDrawProperties(root);
2205 EXPECT_EQ(gfx::Rect(16, 16, 2000, 2000), leaf_node->clip_rect()); 2224 EXPECT_EQ(gfx::Rect(16, 16, 2000, 2000), leaf_node->clip_rect());
2206 EXPECT_EQ(gfx::Rect(16, 16, 2000, 2000), leaf_node->drawable_content_rect()); 2225 EXPECT_EQ(gfx::Rect(16, 16, 2000, 2000), leaf_node->drawable_content_rect());
2207 EXPECT_EQ(expected_leaf_draw_transform_with_surfaces, 2226 EXPECT_EQ(expected_leaf_draw_transform_with_surfaces,
2208 leaf_node->draw_transform()); 2227 leaf_node->DrawTransform());
2209 2228
2210 ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root); 2229 ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
2211 EXPECT_EQ(gfx::Rect(6, 6, 396, 396), leaf_node->clip_rect()); 2230 EXPECT_EQ(gfx::Rect(6, 6, 396, 396), leaf_node->clip_rect());
2212 EXPECT_EQ(gfx::Rect(30, 30, 372, 372), leaf_node->drawable_content_rect()); 2231 EXPECT_EQ(gfx::Rect(30, 30, 372, 372), leaf_node->drawable_content_rect());
2213 EXPECT_EQ(expected_leaf_draw_transform_without_surfaces, 2232 EXPECT_EQ(expected_leaf_draw_transform_without_surfaces,
2214 leaf_node->draw_transform()); 2233 leaf_node->DrawTransform());
2215 2234
2216 ExecuteCalculateDrawProperties(root); 2235 ExecuteCalculateDrawProperties(root);
2217 EXPECT_EQ(gfx::Rect(16, 16, 2000, 2000), leaf_node->clip_rect()); 2236 EXPECT_EQ(gfx::Rect(16, 16, 2000, 2000), leaf_node->clip_rect());
2218 EXPECT_EQ(gfx::Rect(16, 16, 2000, 2000), leaf_node->drawable_content_rect()); 2237 EXPECT_EQ(gfx::Rect(16, 16, 2000, 2000), leaf_node->drawable_content_rect());
2219 EXPECT_EQ(expected_leaf_draw_transform_with_surfaces, 2238 EXPECT_EQ(expected_leaf_draw_transform_with_surfaces,
2220 leaf_node->draw_transform()); 2239 leaf_node->DrawTransform());
2221 } 2240 }
2222 2241
2223 TEST_F(LayerTreeHostCommonTest, AnimationsForRenderSurfaceHierarchy) { 2242 TEST_F(LayerTreeHostCommonTest, AnimationsForRenderSurfaceHierarchy) {
2224 LayerImpl* parent = root_layer(); 2243 LayerImpl* parent = root_layer();
2225 LayerImpl* render_surface1 = AddChildToRoot<LayerImpl>(); 2244 LayerImpl* render_surface1 = AddChildToRoot<LayerImpl>();
2226 LayerImpl* child_of_rs1 = AddChild<LayerImpl>(render_surface1); 2245 LayerImpl* child_of_rs1 = AddChild<LayerImpl>(render_surface1);
2227 LayerImpl* grand_child_of_rs1 = AddChild<LayerImpl>(child_of_rs1); 2246 LayerImpl* grand_child_of_rs1 = AddChild<LayerImpl>(child_of_rs1);
2228 LayerImpl* render_surface2 = AddChild<LayerImpl>(render_surface1); 2247 LayerImpl* render_surface2 = AddChild<LayerImpl>(render_surface1);
2229 LayerImpl* child_of_rs2 = AddChild<LayerImpl>(render_surface2); 2248 LayerImpl* child_of_rs2 = AddChild<LayerImpl>(render_surface2);
2230 LayerImpl* grand_child_of_rs2 = AddChild<LayerImpl>(child_of_rs2); 2249 LayerImpl* grand_child_of_rs2 = AddChild<LayerImpl>(child_of_rs2);
(...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after
3116 gfx::PointF(5.f, 5.f), gfx::Size(50, 50), true, 3135 gfx::PointF(5.f, 5.f), gfx::Size(50, 50), true,
3117 false, false); 3136 false, false);
3118 SetLayerPropertiesForTesting(child2, identity_matrix, gfx::Point3F(), 3137 SetLayerPropertiesForTesting(child2, identity_matrix, gfx::Point3F(),
3119 gfx::PointF(75.f, 75.f), gfx::Size(50, 50), true, 3138 gfx::PointF(75.f, 75.f), gfx::Size(50, 50), true,
3120 false, false); 3139 false, false);
3121 SetLayerPropertiesForTesting(child3, identity_matrix, gfx::Point3F(), 3140 SetLayerPropertiesForTesting(child3, identity_matrix, gfx::Point3F(),
3122 gfx::PointF(125.f, 125.f), gfx::Size(50, 50), 3141 gfx::PointF(125.f, 125.f), gfx::Size(50, 50),
3123 true, false, false); 3142 true, false, false);
3124 3143
3125 LayerImplList render_surface_layer_list_impl; 3144 LayerImplList render_surface_layer_list_impl;
3145 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
3126 // Now set the root render surface an empty clip. 3146 // Now set the root render surface an empty clip.
3127 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 3147 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
3128 root, gfx::Size(), &render_surface_layer_list_impl); 3148 root, gfx::Size(), &render_surface_layer_list_impl,
3149 root->layer_tree_impl()->current_render_surface_list_id());
3129 3150
3130 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 3151 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
3131 ASSERT_TRUE(root->render_surface()); 3152 ASSERT_TRUE(root->render_surface());
3132 EXPECT_FALSE(root->is_clipped()); 3153 EXPECT_FALSE(root->is_clipped());
3133 3154
3134 gfx::Rect empty; 3155 gfx::Rect empty;
3135 EXPECT_EQ(empty, root->render_surface()->clip_rect()); 3156 EXPECT_EQ(empty, root->render_surface()->clip_rect());
3136 EXPECT_TRUE(root->render_surface()->is_clipped()); 3157 EXPECT_TRUE(root->render_surface()->is_clipped());
3137 3158
3138 // Visible content rect calculation will check if the target surface is 3159 // Visible content rect calculation will check if the target surface is
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
3220 gfx::PointF(10.f, 10.f), gfx::Size(100, 100), 3241 gfx::PointF(10.f, 10.f), gfx::Size(100, 100),
3221 false, true, false); 3242 false, true, false);
3222 SetLayerPropertiesForTesting(grand_child, rotation, gfx::Point3F(), 3243 SetLayerPropertiesForTesting(grand_child, rotation, gfx::Point3F(),
3223 gfx::PointF(), gfx::Size(100, 100), false, true, 3244 gfx::PointF(), gfx::Size(100, 100), false, true,
3224 false); 3245 false);
3225 3246
3226 ExecuteCalculateDrawProperties(root); 3247 ExecuteCalculateDrawProperties(root);
3227 3248
3228 // Though all layers have invertible transforms, matrix multiplication using 3249 // Though all layers have invertible transforms, matrix multiplication using
3229 // floating-point math makes the draw transform uninvertible. 3250 // floating-point math makes the draw transform uninvertible.
3230 EXPECT_FALSE(grand_child->draw_transform().IsInvertible()); 3251 EXPECT_FALSE(grand_child->DrawTransform().IsInvertible());
3231 3252
3232 // CalcDrawProps only skips a subtree when a layer's own transform is 3253 // CalcDrawProps only skips a subtree when a layer's own transform is
3233 // uninvertible, not when its draw transform is invertible, since CDP makes 3254 // uninvertible, not when its draw transform is invertible, since CDP makes
3234 // skipping decisions before computing a layer's draw transform. Property 3255 // skipping decisions before computing a layer's draw transform. Property
3235 // trees make skipping decisions after computing draw transforms, so could be 3256 // trees make skipping decisions after computing draw transforms, so could be
3236 // made to skip layers with an uninvertible draw transform (once CDP is 3257 // made to skip layers with an uninvertible draw transform (once CDP is
3237 // deleted). 3258 // deleted).
3238 EXPECT_EQ(gfx::Rect(grand_child->bounds()), 3259 EXPECT_EQ(gfx::Rect(grand_child->bounds()),
3239 grand_child->visible_layer_rect()); 3260 grand_child->visible_layer_rect());
3240 } 3261 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
3288 host_impl.InitializeRenderer(output_surface.get()); 3309 host_impl.InitializeRenderer(output_surface.get());
3289 host_impl.active_tree()->BuildPropertyTreesForTesting(); 3310 host_impl.active_tree()->BuildPropertyTreesForTesting();
3290 bool update_lcd_text = false; 3311 bool update_lcd_text = false;
3291 host_impl.active_tree()->UpdateDrawProperties(update_lcd_text); 3312 host_impl.active_tree()->UpdateDrawProperties(update_lcd_text);
3292 3313
3293 LayerImpl* grand_child_ptr = 3314 LayerImpl* grand_child_ptr =
3294 host_impl.active_tree()->root_layer()->children()[0]->children()[0].get(); 3315 host_impl.active_tree()->root_layer()->children()[0]->children()[0].get();
3295 3316
3296 // Though all layers have invertible transforms, matrix multiplication using 3317 // Though all layers have invertible transforms, matrix multiplication using
3297 // floating-point math makes the draw transform uninvertible. 3318 // floating-point math makes the draw transform uninvertible.
3298 EXPECT_FALSE(grand_child_ptr->draw_transform().IsInvertible()); 3319 EXPECT_FALSE(grand_child_ptr->DrawTransform().IsInvertible());
3299 3320
3300 // Since |grand_child| has an uninvertible draw transform, it is treated as 3321 // Since |grand_child| has an uninvertible draw transform, it is treated as
3301 // unoccluded (even though |occluding_child| comes later in draw order, and 3322 // unoccluded (even though |occluding_child| comes later in draw order, and
3302 // hence potentially occludes it). 3323 // hence potentially occludes it).
3303 gfx::Rect layer_bounds = gfx::Rect(grand_child_ptr->bounds()); 3324 gfx::Rect layer_bounds = gfx::Rect(grand_child_ptr->bounds());
3304 EXPECT_EQ( 3325 EXPECT_EQ(
3305 layer_bounds, 3326 layer_bounds,
3306 grand_child_ptr->draw_properties() 3327 grand_child_ptr->draw_properties()
3307 .occlusion_in_content_space.GetUnoccludedContentRect(layer_bounds)); 3328 .occlusion_in_content_space.GetUnoccludedContentRect(layer_bounds));
3308 } 3329 }
(...skipping 1159 matching lines...) Expand 10 before | Expand all | Expand 10 after
4468 EXPECT_IDEAL_SCALE_EQ(device_scale_factor, child2); 4489 EXPECT_IDEAL_SCALE_EQ(device_scale_factor, child2);
4469 4490
4470 EXPECT_EQ(1u, render_surface_layer_list_impl()->size()); 4491 EXPECT_EQ(1u, render_surface_layer_list_impl()->size());
4471 4492
4472 // Verify parent transforms 4493 // Verify parent transforms
4473 gfx::Transform expected_parent_transform; 4494 gfx::Transform expected_parent_transform;
4474 expected_parent_transform.Scale(device_scale_factor, device_scale_factor); 4495 expected_parent_transform.Scale(device_scale_factor, device_scale_factor);
4475 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, 4496 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform,
4476 parent->screen_space_transform()); 4497 parent->screen_space_transform());
4477 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, 4498 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform,
4478 parent->draw_transform()); 4499 parent->DrawTransform());
4479 4500
4480 // Verify results of transformed parent rects 4501 // Verify results of transformed parent rects
4481 gfx::RectF parent_bounds(gfx::SizeF(parent->bounds())); 4502 gfx::RectF parent_bounds(gfx::SizeF(parent->bounds()));
4482 4503
4483 gfx::RectF parent_draw_rect = 4504 gfx::RectF parent_draw_rect =
4484 MathUtil::MapClippedRect(parent->draw_transform(), parent_bounds); 4505 MathUtil::MapClippedRect(parent->DrawTransform(), parent_bounds);
4485 gfx::RectF parent_screen_space_rect = 4506 gfx::RectF parent_screen_space_rect =
4486 MathUtil::MapClippedRect(parent->screen_space_transform(), parent_bounds); 4507 MathUtil::MapClippedRect(parent->screen_space_transform(), parent_bounds);
4487 4508
4488 gfx::RectF expected_parent_draw_rect(gfx::SizeF(parent->bounds())); 4509 gfx::RectF expected_parent_draw_rect(gfx::SizeF(parent->bounds()));
4489 expected_parent_draw_rect.Scale(device_scale_factor); 4510 expected_parent_draw_rect.Scale(device_scale_factor);
4490 EXPECT_FLOAT_RECT_EQ(expected_parent_draw_rect, parent_draw_rect); 4511 EXPECT_FLOAT_RECT_EQ(expected_parent_draw_rect, parent_draw_rect);
4491 EXPECT_FLOAT_RECT_EQ(expected_parent_draw_rect, parent_screen_space_rect); 4512 EXPECT_FLOAT_RECT_EQ(expected_parent_draw_rect, parent_screen_space_rect);
4492 4513
4493 // Verify child and child2 transforms. They should match. 4514 // Verify child and child2 transforms. They should match.
4494 gfx::Transform expected_child_transform; 4515 gfx::Transform expected_child_transform;
4495 expected_child_transform.Scale(device_scale_factor, device_scale_factor); 4516 expected_child_transform.Scale(device_scale_factor, device_scale_factor);
4496 expected_child_transform.Translate(child->position().x(), 4517 expected_child_transform.Translate(child->position().x(),
4497 child->position().y()); 4518 child->position().y());
4498 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, 4519 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform,
4499 child->draw_transform()); 4520 child->DrawTransform());
4500 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, 4521 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform,
4501 child->screen_space_transform()); 4522 child->screen_space_transform());
4502 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, 4523 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform,
4503 child2->draw_transform()); 4524 child2->DrawTransform());
4504 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, 4525 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform,
4505 child2->screen_space_transform()); 4526 child2->screen_space_transform());
4506 4527
4507 // Verify results of transformed child and child2 rects. They should 4528 // Verify results of transformed child and child2 rects. They should
4508 // match. 4529 // match.
4509 gfx::RectF child_bounds(gfx::SizeF(child->bounds())); 4530 gfx::RectF child_bounds(gfx::SizeF(child->bounds()));
4510 4531
4511 gfx::RectF child_draw_rect = 4532 gfx::RectF child_draw_rect =
4512 MathUtil::MapClippedRect(child->draw_transform(), child_bounds); 4533 MathUtil::MapClippedRect(child->DrawTransform(), child_bounds);
4513 gfx::RectF child_screen_space_rect = 4534 gfx::RectF child_screen_space_rect =
4514 MathUtil::MapClippedRect(child->screen_space_transform(), child_bounds); 4535 MathUtil::MapClippedRect(child->screen_space_transform(), child_bounds);
4515 4536
4516 gfx::RectF child2_draw_rect = 4537 gfx::RectF child2_draw_rect =
4517 MathUtil::MapClippedRect(child2->draw_transform(), child_bounds); 4538 MathUtil::MapClippedRect(child2->DrawTransform(), child_bounds);
4518 gfx::RectF child2_screen_space_rect = 4539 gfx::RectF child2_screen_space_rect =
4519 MathUtil::MapClippedRect(child2->screen_space_transform(), child_bounds); 4540 MathUtil::MapClippedRect(child2->screen_space_transform(), child_bounds);
4520 4541
4521 gfx::RectF expected_child_draw_rect(child->position(), 4542 gfx::RectF expected_child_draw_rect(child->position(),
4522 gfx::SizeF(child->bounds())); 4543 gfx::SizeF(child->bounds()));
4523 expected_child_draw_rect.Scale(device_scale_factor); 4544 expected_child_draw_rect.Scale(device_scale_factor);
4524 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_draw_rect); 4545 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_draw_rect);
4525 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_screen_space_rect); 4546 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_screen_space_rect);
4526 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child2_draw_rect); 4547 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child2_draw_rect);
4527 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child2_screen_space_rect); 4548 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child2_screen_space_rect);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
4586 EXPECT_FLOAT_EQ(max_2d_scale, 4607 EXPECT_FLOAT_EQ(max_2d_scale,
4587 std::max(target_space_transform_scales.x(), 4608 std::max(target_space_transform_scales.x(),
4588 target_space_transform_scales.y())); 4609 target_space_transform_scales.y()));
4589 4610
4590 EXPECT_EQ(3u, render_surface_layer_list_impl()->size()); 4611 EXPECT_EQ(3u, render_surface_layer_list_impl()->size());
4591 4612
4592 gfx::Transform expected_parent_draw_transform; 4613 gfx::Transform expected_parent_draw_transform;
4593 expected_parent_draw_transform.Scale(device_scale_factor * page_scale_factor, 4614 expected_parent_draw_transform.Scale(device_scale_factor * page_scale_factor,
4594 device_scale_factor * page_scale_factor); 4615 device_scale_factor * page_scale_factor);
4595 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_draw_transform, 4616 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_draw_transform,
4596 parent->draw_transform()); 4617 parent->DrawTransform());
4597 4618
4598 // The scale for the perspective surface is not known, so it is rendered 1:1 4619 // The scale for the perspective surface is not known, so it is rendered 1:1
4599 // with the screen, and then scaled during drawing. 4620 // with the screen, and then scaled during drawing.
4600 gfx::Transform expected_perspective_surface_draw_transform; 4621 gfx::Transform expected_perspective_surface_draw_transform;
4601 expected_perspective_surface_draw_transform.Translate( 4622 expected_perspective_surface_draw_transform.Translate(
4602 device_scale_factor * page_scale_factor * 4623 device_scale_factor * page_scale_factor *
4603 perspective_surface->position().x(), 4624 perspective_surface->position().x(),
4604 device_scale_factor * page_scale_factor * 4625 device_scale_factor * page_scale_factor *
4605 perspective_surface->position().y()); 4626 perspective_surface->position().y());
4606 expected_perspective_surface_draw_transform.PreconcatTransform( 4627 expected_perspective_surface_draw_transform.PreconcatTransform(
4607 perspective_matrix); 4628 perspective_matrix);
4608 expected_perspective_surface_draw_transform.PreconcatTransform( 4629 expected_perspective_surface_draw_transform.PreconcatTransform(
4609 scale_small_matrix); 4630 scale_small_matrix);
4610 gfx::Transform expected_perspective_surface_layer_draw_transform; 4631 gfx::Transform expected_perspective_surface_layer_draw_transform;
4611 expected_perspective_surface_layer_draw_transform.Scale( 4632 expected_perspective_surface_layer_draw_transform.Scale(
4612 device_scale_factor * page_scale_factor, 4633 device_scale_factor * page_scale_factor,
4613 device_scale_factor * page_scale_factor); 4634 device_scale_factor * page_scale_factor);
4614 EXPECT_TRANSFORMATION_MATRIX_EQ( 4635 EXPECT_TRANSFORMATION_MATRIX_EQ(
4615 expected_perspective_surface_draw_transform, 4636 expected_perspective_surface_draw_transform,
4616 perspective_surface->render_surface()->draw_transform()); 4637 perspective_surface->render_surface()->draw_transform());
4617 EXPECT_TRANSFORMATION_MATRIX_EQ( 4638 EXPECT_TRANSFORMATION_MATRIX_EQ(
4618 expected_perspective_surface_layer_draw_transform, 4639 expected_perspective_surface_layer_draw_transform,
4619 perspective_surface->draw_transform()); 4640 perspective_surface->DrawTransform());
4620 } 4641 }
4621 4642
4622 TEST_F(LayerTreeHostCommonScalingTest, SmallIdealScale) { 4643 TEST_F(LayerTreeHostCommonScalingTest, SmallIdealScale) {
4623 gfx::Transform parent_scale_matrix; 4644 gfx::Transform parent_scale_matrix;
4624 SkMScalar initial_parent_scale = 1.75; 4645 SkMScalar initial_parent_scale = 1.75;
4625 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); 4646 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale);
4626 4647
4627 gfx::Transform child_scale_matrix; 4648 gfx::Transform child_scale_matrix;
4628 SkMScalar initial_child_scale = 0.25; 4649 SkMScalar initial_child_scale = 0.25;
4629 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); 4650 child_scale_matrix.Scale(initial_child_scale, initial_child_scale);
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
4736 4757
4737 // We should have two render surfaces. The root's render surface and child's 4758 // We should have two render surfaces. The root's render surface and child's
4738 // render surface (it needs one because it has a replica layer). 4759 // render surface (it needs one because it has a replica layer).
4739 EXPECT_EQ(2u, render_surface_layer_list_impl()->size()); 4760 EXPECT_EQ(2u, render_surface_layer_list_impl()->size());
4740 4761
4741 gfx::Transform expected_parent_transform; 4762 gfx::Transform expected_parent_transform;
4742 expected_parent_transform.Scale(device_scale_factor, device_scale_factor); 4763 expected_parent_transform.Scale(device_scale_factor, device_scale_factor);
4743 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, 4764 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform,
4744 parent->screen_space_transform()); 4765 parent->screen_space_transform());
4745 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, 4766 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform,
4746 parent->draw_transform()); 4767 parent->DrawTransform());
4747 4768
4748 gfx::Transform expected_draw_transform; 4769 gfx::Transform expected_draw_transform;
4749 expected_draw_transform.Scale(device_scale_factor, device_scale_factor); 4770 expected_draw_transform.Scale(device_scale_factor, device_scale_factor);
4750 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_draw_transform, 4771 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_draw_transform,
4751 child->draw_transform()); 4772 child->DrawTransform());
4752 4773
4753 gfx::Transform expected_screen_space_transform; 4774 gfx::Transform expected_screen_space_transform;
4754 expected_screen_space_transform.Scale(device_scale_factor, 4775 expected_screen_space_transform.Scale(device_scale_factor,
4755 device_scale_factor); 4776 device_scale_factor);
4756 expected_screen_space_transform.Translate(child->position().x(), 4777 expected_screen_space_transform.Translate(child->position().x(),
4757 child->position().y()); 4778 child->position().y());
4758 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_screen_space_transform, 4779 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_screen_space_transform,
4759 child->screen_space_transform()); 4780 child->screen_space_transform());
4760 4781
4761 gfx::Transform expected_duplicate_child_draw_transform = 4782 gfx::Transform expected_duplicate_child_draw_transform =
4762 child->draw_transform(); 4783 child->DrawTransform();
4763 EXPECT_TRANSFORMATION_MATRIX_EQ(child->draw_transform(), 4784 EXPECT_TRANSFORMATION_MATRIX_EQ(child->DrawTransform(),
4764 duplicate_child_non_owner->draw_transform()); 4785 duplicate_child_non_owner->DrawTransform());
4765 EXPECT_TRANSFORMATION_MATRIX_EQ( 4786 EXPECT_TRANSFORMATION_MATRIX_EQ(
4766 child->screen_space_transform(), 4787 child->screen_space_transform(),
4767 duplicate_child_non_owner->screen_space_transform()); 4788 duplicate_child_non_owner->screen_space_transform());
4768 EXPECT_EQ(child->drawable_content_rect(), 4789 EXPECT_EQ(child->drawable_content_rect(),
4769 duplicate_child_non_owner->drawable_content_rect()); 4790 duplicate_child_non_owner->drawable_content_rect());
4770 EXPECT_EQ(child->bounds(), duplicate_child_non_owner->bounds()); 4791 EXPECT_EQ(child->bounds(), duplicate_child_non_owner->bounds());
4771 4792
4772 gfx::Transform expected_render_surface_draw_transform; 4793 gfx::Transform expected_render_surface_draw_transform;
4773 expected_render_surface_draw_transform.Translate( 4794 expected_render_surface_draw_transform.Translate(
4774 device_scale_factor * child->position().x(), 4795 device_scale_factor * child->position().x(),
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
4957 child->SetOpacity(0.0f); 4978 child->SetOpacity(0.0f);
4958 4979
4959 // Add opacity animation. 4980 // Add opacity animation.
4960 AddOpacityTransitionToController( 4981 AddOpacityTransitionToController(
4961 child->layer_animation_controller(), 10.0, 0.0f, 1.0f, false); 4982 child->layer_animation_controller(), 10.0, 0.0f, 1.0f, false);
4962 4983
4963 root->AddChild(std::move(child)); 4984 root->AddChild(std::move(child));
4964 root->SetHasRenderSurface(true); 4985 root->SetHasRenderSurface(true);
4965 4986
4966 LayerImplList render_surface_layer_list; 4987 LayerImplList render_surface_layer_list;
4988 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
4967 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 4989 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
4968 root.get(), root->bounds(), &render_surface_layer_list); 4990 root.get(), root->bounds(), &render_surface_layer_list,
4991 root->layer_tree_impl()->current_render_surface_list_id());
4969 inputs.can_adjust_raster_scales = true; 4992 inputs.can_adjust_raster_scales = true;
4970 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 4993 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
4971 4994
4972 // We should have one render surface and two layers. The child 4995 // We should have one render surface and two layers. The child
4973 // layer should be included even though it is transparent. 4996 // layer should be included even though it is transparent.
4974 ASSERT_EQ(1u, render_surface_layer_list.size()); 4997 ASSERT_EQ(1u, render_surface_layer_list.size());
4975 ASSERT_EQ(2u, root->render_surface()->layer_list().size()); 4998 ASSERT_EQ(2u, root->render_surface()->layer_list().size());
4976 } 4999 }
4977 5000
4978 using LCDTextTestParam = std::tr1::tuple<bool, bool, bool>; 5001 using LCDTextTestParam = std::tr1::tuple<bool, bool, bool>;
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
5228 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), 5251 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30),
5229 true, false, false); 5252 true, false, false);
5230 grand_child->SetDrawsContent(true); 5253 grand_child->SetDrawsContent(true);
5231 grand_child->SetHideLayerAndSubtree(true); 5254 grand_child->SetHideLayerAndSubtree(true);
5232 5255
5233 child->AddChild(std::move(grand_child)); 5256 child->AddChild(std::move(grand_child));
5234 root->AddChild(std::move(child)); 5257 root->AddChild(std::move(child));
5235 root->SetHasRenderSurface(true); 5258 root->SetHasRenderSurface(true);
5236 5259
5237 LayerImplList render_surface_layer_list; 5260 LayerImplList render_surface_layer_list;
5261 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
5238 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 5262 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
5239 root.get(), root->bounds(), &render_surface_layer_list); 5263 root.get(), root->bounds(), &render_surface_layer_list,
5264 root->layer_tree_impl()->current_render_surface_list_id());
5240 inputs.can_adjust_raster_scales = true; 5265 inputs.can_adjust_raster_scales = true;
5241 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 5266 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
5242 5267
5243 // We should have one render surface and two layers. The grand child has 5268 // We should have one render surface and two layers. The grand child has
5244 // hidden itself. 5269 // hidden itself.
5245 ASSERT_EQ(1u, render_surface_layer_list.size()); 5270 ASSERT_EQ(1u, render_surface_layer_list.size());
5246 ASSERT_EQ(2u, root->render_surface()->layer_list().size()); 5271 ASSERT_EQ(2u, root->render_surface()->layer_list().size());
5247 EXPECT_EQ(1, root->render_surface()->layer_list().at(0)->id()); 5272 EXPECT_EQ(1, root->render_surface()->layer_list().at(0)->id());
5248 EXPECT_EQ(2, root->render_surface()->layer_list().at(1)->id()); 5273 EXPECT_EQ(2, root->render_surface()->layer_list().at(1)->id());
5249 } 5274 }
(...skipping 24 matching lines...) Expand all
5274 LayerImpl::Create(host_impl.pending_tree(), 3); 5299 LayerImpl::Create(host_impl.pending_tree(), 3);
5275 SetLayerPropertiesForTesting(grand_child.get(), identity_matrix, 5300 SetLayerPropertiesForTesting(grand_child.get(), identity_matrix,
5276 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30), 5301 gfx::Point3F(), gfx::PointF(), gfx::Size(30, 30),
5277 true, false, false); 5302 true, false, false);
5278 grand_child->SetDrawsContent(true); 5303 grand_child->SetDrawsContent(true);
5279 5304
5280 child->AddChild(std::move(grand_child)); 5305 child->AddChild(std::move(grand_child));
5281 root->AddChild(std::move(child)); 5306 root->AddChild(std::move(child));
5282 5307
5283 LayerImplList render_surface_layer_list; 5308 LayerImplList render_surface_layer_list;
5309 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
5284 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 5310 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
5285 root.get(), root->bounds(), &render_surface_layer_list); 5311 root.get(), root->bounds(), &render_surface_layer_list,
5312 root->layer_tree_impl()->current_render_surface_list_id());
5286 inputs.can_adjust_raster_scales = true; 5313 inputs.can_adjust_raster_scales = true;
5287 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 5314 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
5288 5315
5289 // We should have one render surface and one layers. The child has 5316 // We should have one render surface and one layers. The child has
5290 // hidden itself and the grand child. 5317 // hidden itself and the grand child.
5291 ASSERT_EQ(1u, render_surface_layer_list.size()); 5318 ASSERT_EQ(1u, render_surface_layer_list.size());
5292 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 5319 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
5293 EXPECT_EQ(1, root->render_surface()->layer_list().at(0)->id()); 5320 EXPECT_EQ(1, root->render_surface()->layer_list().at(0)->id());
5294 } 5321 }
5295 5322
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
5373 copy_grand_parent_sibling_before_layer->SetHideLayerAndSubtree(true); 5400 copy_grand_parent_sibling_before_layer->SetHideLayerAndSubtree(true);
5374 copy_grand_parent_sibling_after_layer->SetHideLayerAndSubtree(true); 5401 copy_grand_parent_sibling_after_layer->SetHideLayerAndSubtree(true);
5375 5402
5376 std::vector<scoped_ptr<CopyOutputRequest>> copy_requests; 5403 std::vector<scoped_ptr<CopyOutputRequest>> copy_requests;
5377 copy_requests.push_back( 5404 copy_requests.push_back(
5378 CopyOutputRequest::CreateRequest(base::Bind(&EmptyCopyOutputCallback))); 5405 CopyOutputRequest::CreateRequest(base::Bind(&EmptyCopyOutputCallback)));
5379 copy_layer->PassCopyRequests(&copy_requests); 5406 copy_layer->PassCopyRequests(&copy_requests);
5380 EXPECT_TRUE(copy_layer->HasCopyRequest()); 5407 EXPECT_TRUE(copy_layer->HasCopyRequest());
5381 5408
5382 LayerImplList render_surface_layer_list; 5409 LayerImplList render_surface_layer_list;
5410 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
5383 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 5411 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
5384 root.get(), root->bounds(), &render_surface_layer_list); 5412 root.get(), root->bounds(), &render_surface_layer_list,
5413 root->layer_tree_impl()->current_render_surface_list_id());
5385 inputs.can_adjust_raster_scales = true; 5414 inputs.can_adjust_raster_scales = true;
5386 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 5415 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
5387 5416
5388 EXPECT_GT(root->num_layer_or_descendants_with_copy_request(), 0); 5417 EXPECT_GT(root->num_layer_or_descendants_with_copy_request(), 0);
5389 EXPECT_GT( 5418 EXPECT_GT(
5390 copy_grand_parent_layer->num_layer_or_descendants_with_copy_request(), 0); 5419 copy_grand_parent_layer->num_layer_or_descendants_with_copy_request(), 0);
5391 EXPECT_GT(copy_parent_layer->num_layer_or_descendants_with_copy_request(), 0); 5420 EXPECT_GT(copy_parent_layer->num_layer_or_descendants_with_copy_request(), 0);
5392 EXPECT_GT(copy_layer->num_layer_or_descendants_with_copy_request(), 0); 5421 EXPECT_GT(copy_layer->num_layer_or_descendants_with_copy_request(), 0);
5393 EXPECT_EQ(copy_child_layer->num_layer_or_descendants_with_copy_request(), 0); 5422 EXPECT_EQ(copy_child_layer->num_layer_or_descendants_with_copy_request(), 0);
5394 EXPECT_EQ(copy_grand_parent_sibling_before_layer 5423 EXPECT_EQ(copy_grand_parent_sibling_before_layer
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
5469 copy_requests.push_back( 5498 copy_requests.push_back(
5470 CopyOutputRequest::CreateRequest(base::Bind(&EmptyCopyOutputCallback))); 5499 CopyOutputRequest::CreateRequest(base::Bind(&EmptyCopyOutputCallback)));
5471 copy_layer->PassCopyRequests(&copy_requests); 5500 copy_layer->PassCopyRequests(&copy_requests);
5472 EXPECT_TRUE(copy_layer->HasCopyRequest()); 5501 EXPECT_TRUE(copy_layer->HasCopyRequest());
5473 5502
5474 copy_layer->AddChild(std::move(copy_child)); 5503 copy_layer->AddChild(std::move(copy_child));
5475 copy_parent->AddChild(std::move(copy_layer)); 5504 copy_parent->AddChild(std::move(copy_layer));
5476 root->AddChild(std::move(copy_parent)); 5505 root->AddChild(std::move(copy_parent));
5477 5506
5478 LayerImplList render_surface_layer_list; 5507 LayerImplList render_surface_layer_list;
5508 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
5479 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 5509 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
5480 root.get(), root->bounds(), &render_surface_layer_list); 5510 root.get(), root->bounds(), &render_surface_layer_list,
5511 root->layer_tree_impl()->current_render_surface_list_id());
5481 inputs.can_adjust_raster_scales = true; 5512 inputs.can_adjust_raster_scales = true;
5482 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 5513 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
5483 5514
5484 // We should have two render surface, as the others are clipped out. 5515 // We should have two render surface, as the others are clipped out.
5485 ASSERT_EQ(2u, render_surface_layer_list.size()); 5516 ASSERT_EQ(2u, render_surface_layer_list.size());
5486 EXPECT_EQ(root->id(), render_surface_layer_list.at(0)->id()); 5517 EXPECT_EQ(root->id(), render_surface_layer_list.at(0)->id());
5487 5518
5488 // The root render surface should only have 2 contributing layer, since the 5519 // The root render surface should only have 2 contributing layer, since the
5489 // other layers are empty/clipped away. 5520 // other layers are empty/clipped away.
5490 ASSERT_EQ(2u, root->render_surface()->layer_list().size()); 5521 ASSERT_EQ(2u, root->render_surface()->layer_list().size());
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after
6040 child2->Set3dSortingContextId(1); 6071 child2->Set3dSortingContextId(1);
6041 child3->Set3dSortingContextId(1); 6072 child3->Set3dSortingContextId(1);
6042 6073
6043 child2->AddChild(std::move(child3)); 6074 child2->AddChild(std::move(child3));
6044 child1->AddChild(std::move(child2)); 6075 child1->AddChild(std::move(child2));
6045 root->AddChild(std::move(child1)); 6076 root->AddChild(std::move(child1));
6046 6077
6047 { 6078 {
6048 LayerImplList render_surface_layer_list; 6079 LayerImplList render_surface_layer_list;
6049 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren(root.get()); 6080 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren(root.get());
6081 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
6050 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 6082 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
6051 root.get(), root->bounds(), &render_surface_layer_list); 6083 root.get(), root->bounds(), &render_surface_layer_list,
6084 root->layer_tree_impl()->current_render_surface_list_id());
6052 inputs.can_render_to_separate_surface = true; 6085 inputs.can_render_to_separate_surface = true;
6053 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 6086 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
6054 6087
6055 EXPECT_EQ(2u, render_surface_layer_list.size()); 6088 EXPECT_EQ(2u, render_surface_layer_list.size());
6056 6089
6057 int count_represents_target_render_surface = 0; 6090 int count_represents_target_render_surface = 0;
6058 int count_represents_contributing_render_surface = 0; 6091 int count_represents_contributing_render_surface = 0;
6059 int count_represents_itself = 0; 6092 int count_represents_itself = 0;
6060 LayerIterator end = LayerIterator::End(&render_surface_layer_list); 6093 LayerIterator end = LayerIterator::End(&render_surface_layer_list);
6061 for (LayerIterator it = LayerIterator::Begin(&render_surface_layer_list); 6094 for (LayerIterator it = LayerIterator::Begin(&render_surface_layer_list);
6062 it != end; ++it) { 6095 it != end; ++it) {
6063 if (it.represents_target_render_surface()) 6096 if (it.represents_target_render_surface())
6064 count_represents_target_render_surface++; 6097 count_represents_target_render_surface++;
6065 if (it.represents_contributing_render_surface()) 6098 if (it.represents_contributing_render_surface())
6066 count_represents_contributing_render_surface++; 6099 count_represents_contributing_render_surface++;
6067 if (it.represents_itself()) 6100 if (it.represents_itself())
6068 count_represents_itself++; 6101 count_represents_itself++;
6069 } 6102 }
6070 6103
6071 // Two render surfaces. 6104 // Two render surfaces.
6072 EXPECT_EQ(2, count_represents_target_render_surface); 6105 EXPECT_EQ(2, count_represents_target_render_surface);
6073 // Second render surface contributes to root render surface. 6106 // Second render surface contributes to root render surface.
6074 EXPECT_EQ(1, count_represents_contributing_render_surface); 6107 EXPECT_EQ(1, count_represents_contributing_render_surface);
6075 // All 4 layers represent itself. 6108 // All 4 layers represent itself.
6076 EXPECT_EQ(4, count_represents_itself); 6109 EXPECT_EQ(4, count_represents_itself);
6077 } 6110 }
6078 6111
6079 { 6112 {
6080 LayerImplList render_surface_layer_list; 6113 LayerImplList render_surface_layer_list;
6114 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
6081 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 6115 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
6082 root.get(), root->bounds(), &render_surface_layer_list); 6116 root.get(), root->bounds(), &render_surface_layer_list,
6117 root->layer_tree_impl()->current_render_surface_list_id());
6083 inputs.can_render_to_separate_surface = false; 6118 inputs.can_render_to_separate_surface = false;
6084 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 6119 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
6085 6120
6086 EXPECT_EQ(1u, render_surface_layer_list.size()); 6121 EXPECT_EQ(1u, render_surface_layer_list.size());
6087 6122
6088 int count_represents_target_render_surface = 0; 6123 int count_represents_target_render_surface = 0;
6089 int count_represents_contributing_render_surface = 0; 6124 int count_represents_contributing_render_surface = 0;
6090 int count_represents_itself = 0; 6125 int count_represents_itself = 0;
6091 LayerIterator end = LayerIterator::End(&render_surface_layer_list); 6126 LayerIterator end = LayerIterator::End(&render_surface_layer_list);
6092 for (LayerIterator it = LayerIterator::Begin(&render_surface_layer_list); 6127 for (LayerIterator it = LayerIterator::Begin(&render_surface_layer_list);
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after
6655 scroller->AddChild(std::move(fixed)); 6690 scroller->AddChild(std::move(fixed));
6656 container->AddChild(std::move(scroller)); 6691 container->AddChild(std::move(scroller));
6657 root->AddChild(std::move(container)); 6692 root->AddChild(std::move(container));
6658 6693
6659 // Rounded to integers already. 6694 // Rounded to integers already.
6660 { 6695 {
6661 gfx::Vector2dF scroll_delta(3.0, 5.0); 6696 gfx::Vector2dF scroll_delta(3.0, 5.0);
6662 scroll_layer->SetScrollDelta(scroll_delta); 6697 scroll_layer->SetScrollDelta(scroll_delta);
6663 6698
6664 LayerImplList render_surface_layer_list; 6699 LayerImplList render_surface_layer_list;
6700 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
6665 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 6701 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
6666 root.get(), root->bounds(), &render_surface_layer_list); 6702 root.get(), root->bounds(), &render_surface_layer_list,
6703 root->layer_tree_impl()->current_render_surface_list_id());
6667 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 6704 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
6668 6705
6669 EXPECT_TRANSFORMATION_MATRIX_EQ( 6706 EXPECT_TRANSFORMATION_MATRIX_EQ(
6670 container_layer->draw_properties().screen_space_transform, 6707 container_layer->draw_properties().screen_space_transform,
6671 fixed_layer->draw_properties().screen_space_transform); 6708 fixed_layer->draw_properties().screen_space_transform);
6672 EXPECT_VECTOR_EQ( 6709 EXPECT_VECTOR_EQ(
6673 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(), 6710 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(),
6674 container_offset); 6711 container_offset);
6675 EXPECT_VECTOR_EQ(scroll_layer->draw_properties() 6712 EXPECT_VECTOR_EQ(scroll_layer->draw_properties()
6676 .screen_space_transform.To2dTranslation(), 6713 .screen_space_transform.To2dTranslation(),
6677 container_offset - scroll_delta); 6714 container_offset - scroll_delta);
6678 } 6715 }
6679 6716
6680 // Scroll delta requiring rounding. 6717 // Scroll delta requiring rounding.
6681 { 6718 {
6682 gfx::Vector2dF scroll_delta(4.1f, 8.1f); 6719 gfx::Vector2dF scroll_delta(4.1f, 8.1f);
6683 scroll_layer->SetScrollDelta(scroll_delta); 6720 scroll_layer->SetScrollDelta(scroll_delta);
6684 6721
6685 gfx::Vector2dF rounded_scroll_delta(4.f, 8.f); 6722 gfx::Vector2dF rounded_scroll_delta(4.f, 8.f);
6686 6723
6687 LayerImplList render_surface_layer_list; 6724 LayerImplList render_surface_layer_list;
6725 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
6688 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 6726 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
6689 root.get(), root->bounds(), &render_surface_layer_list); 6727 root.get(), root->bounds(), &render_surface_layer_list,
6728 root->layer_tree_impl()->current_render_surface_list_id());
6690 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 6729 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
6691 6730
6692 EXPECT_TRANSFORMATION_MATRIX_EQ( 6731 EXPECT_TRANSFORMATION_MATRIX_EQ(
6693 container_layer->draw_properties().screen_space_transform, 6732 container_layer->draw_properties().screen_space_transform,
6694 fixed_layer->draw_properties().screen_space_transform); 6733 fixed_layer->draw_properties().screen_space_transform);
6695 EXPECT_VECTOR_EQ( 6734 EXPECT_VECTOR_EQ(
6696 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(), 6735 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(),
6697 container_offset); 6736 container_offset);
6698 EXPECT_VECTOR_EQ(scroll_layer->draw_properties() 6737 EXPECT_VECTOR_EQ(scroll_layer->draw_properties()
6699 .screen_space_transform.To2dTranslation(), 6738 .screen_space_transform.To2dTranslation(),
6700 container_offset - rounded_scroll_delta); 6739 container_offset - rounded_scroll_delta);
6701 } 6740 }
6702 6741
6703 // Scale is applied earlier in the tree. 6742 // Scale is applied earlier in the tree.
6704 { 6743 {
6705 gfx::Transform scaled_container_transform = container_transform; 6744 gfx::Transform scaled_container_transform = container_transform;
6706 scaled_container_transform.Scale3d(2.0, 2.0, 1.0); 6745 scaled_container_transform.Scale3d(2.0, 2.0, 1.0);
6707 container_layer->SetTransform(scaled_container_transform); 6746 container_layer->SetTransform(scaled_container_transform);
6708 root->layer_tree_impl()->property_trees()->needs_rebuild = true; 6747 root->layer_tree_impl()->property_trees()->needs_rebuild = true;
6709 root->layer_tree_impl() 6748 root->layer_tree_impl()
6710 ->property_trees() 6749 ->property_trees()
6711 ->transform_tree.set_source_to_parent_updates_allowed(true); 6750 ->transform_tree.set_source_to_parent_updates_allowed(true);
6712 6751
6713 gfx::Vector2dF scroll_delta(4.5f, 8.5f); 6752 gfx::Vector2dF scroll_delta(4.5f, 8.5f);
6714 scroll_layer->SetScrollDelta(scroll_delta); 6753 scroll_layer->SetScrollDelta(scroll_delta);
6715 6754
6716 LayerImplList render_surface_layer_list; 6755 LayerImplList render_surface_layer_list;
6756 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
6717 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 6757 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
6718 root.get(), root->bounds(), &render_surface_layer_list); 6758 root.get(), root->bounds(), &render_surface_layer_list,
6759 root->layer_tree_impl()->current_render_surface_list_id());
6719 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 6760 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
6720 6761
6721 EXPECT_TRANSFORMATION_MATRIX_EQ( 6762 EXPECT_TRANSFORMATION_MATRIX_EQ(
6722 container_layer->draw_properties().screen_space_transform, 6763 container_layer->draw_properties().screen_space_transform,
6723 fixed_layer->draw_properties().screen_space_transform); 6764 fixed_layer->draw_properties().screen_space_transform);
6724 EXPECT_VECTOR_EQ( 6765 EXPECT_VECTOR_EQ(
6725 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(), 6766 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(),
6726 container_offset); 6767 container_offset);
6727 6768
6728 container_layer->SetTransform(container_transform); 6769 container_layer->SetTransform(container_transform);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
6791 false, false); 6832 false, false);
6792 scroll_layer->PushScrollOffsetFromMainThread(scroll_offset); 6833 scroll_layer->PushScrollOffsetFromMainThread(scroll_offset);
6793 scroll_layer->SetScrollDelta(scroll_delta); 6834 scroll_layer->SetScrollDelta(scroll_delta);
6794 scroll_layer->SetScrollCompensationAdjustment(main_scroll_fractional_part); 6835 scroll_layer->SetScrollCompensationAdjustment(main_scroll_fractional_part);
6795 6836
6796 scroller->AddChild(std::move(fixed)); 6837 scroller->AddChild(std::move(fixed));
6797 container->AddChild(std::move(scroller)); 6838 container->AddChild(std::move(scroller));
6798 root->AddChild(std::move(container)); 6839 root->AddChild(std::move(container));
6799 6840
6800 LayerImplList render_surface_layer_list; 6841 LayerImplList render_surface_layer_list;
6842 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
6801 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 6843 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
6802 root.get(), root->bounds(), &render_surface_layer_list); 6844 root.get(), root->bounds(), &render_surface_layer_list,
6845 root->layer_tree_impl()->current_render_surface_list_id());
6803 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 6846 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
6804 6847
6805 EXPECT_TRANSFORMATION_MATRIX_EQ( 6848 EXPECT_TRANSFORMATION_MATRIX_EQ(
6806 container_layer->draw_properties().screen_space_transform, 6849 container_layer->draw_properties().screen_space_transform,
6807 fixed_layer->draw_properties().screen_space_transform); 6850 fixed_layer->draw_properties().screen_space_transform);
6808 EXPECT_VECTOR_EQ( 6851 EXPECT_VECTOR_EQ(
6809 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(), 6852 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(),
6810 container_offset); 6853 container_offset);
6811 6854
6812 gfx::ScrollOffset effective_scroll_offset = 6855 gfx::ScrollOffset effective_scroll_offset =
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
6865 AddAnimatedTransformToLayer(animated_layer, 1.0, start_operations, 6908 AddAnimatedTransformToLayer(animated_layer, 1.0, start_operations,
6866 end_operations); 6909 end_operations);
6867 6910
6868 gfx::Vector2dF scroll_delta(5.f, 9.f); 6911 gfx::Vector2dF scroll_delta(5.f, 9.f);
6869 scroller->SetScrollDelta(scroll_delta); 6912 scroller->SetScrollDelta(scroll_delta);
6870 6913
6871 ExecuteCalculateDrawProperties(root); 6914 ExecuteCalculateDrawProperties(root);
6872 6915
6873 gfx::Vector2dF expected_draw_transform_translation(-7.5f, -13.5f); 6916 gfx::Vector2dF expected_draw_transform_translation(-7.5f, -13.5f);
6874 EXPECT_VECTOR2DF_EQ(expected_draw_transform_translation, 6917 EXPECT_VECTOR2DF_EQ(expected_draw_transform_translation,
6875 scroller->draw_transform().To2dTranslation()); 6918 scroller->DrawTransform().To2dTranslation());
6876 } 6919 }
6877 6920
6878 class AnimationScaleFactorTrackingLayerImpl : public LayerImpl { 6921 class AnimationScaleFactorTrackingLayerImpl : public LayerImpl {
6879 public: 6922 public:
6880 static scoped_ptr<AnimationScaleFactorTrackingLayerImpl> Create( 6923 static scoped_ptr<AnimationScaleFactorTrackingLayerImpl> Create(
6881 LayerTreeImpl* tree_impl, 6924 LayerTreeImpl* tree_impl,
6882 int id) { 6925 int id) {
6883 return make_scoped_ptr( 6926 return make_scoped_ptr(
6884 new AnimationScaleFactorTrackingLayerImpl(tree_impl, id)); 6927 new AnimationScaleFactorTrackingLayerImpl(tree_impl, id));
6885 } 6928 }
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
7552 7595
7553 // Changing page-scale would affect ideal_contents_scale and 7596 // Changing page-scale would affect ideal_contents_scale and
7554 // maximum_animation_contents_scale. 7597 // maximum_animation_contents_scale.
7555 7598
7556 float page_scale_factor = 3.f; 7599 float page_scale_factor = 3.f;
7557 float device_scale_factor = 1.0f; 7600 float device_scale_factor = 1.0f;
7558 std::vector<LayerImpl*> render_surface_layer_list; 7601 std::vector<LayerImpl*> render_surface_layer_list;
7559 gfx::Size device_viewport_size = 7602 gfx::Size device_viewport_size =
7560 gfx::Size(root_layer->bounds().width() * device_scale_factor, 7603 gfx::Size(root_layer->bounds().width() * device_scale_factor,
7561 root_layer->bounds().height() * device_scale_factor); 7604 root_layer->bounds().height() * device_scale_factor);
7605 root_layer->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
7562 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 7606 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
7563 root_layer, device_viewport_size, &render_surface_layer_list); 7607 root_layer, device_viewport_size, &render_surface_layer_list,
7608 root_layer->layer_tree_impl()->current_render_surface_list_id());
7564 7609
7565 inputs.page_scale_factor = page_scale_factor; 7610 inputs.page_scale_factor = page_scale_factor;
7566 inputs.can_adjust_raster_scales = true; 7611 inputs.can_adjust_raster_scales = true;
7567 inputs.page_scale_layer = root_layer; 7612 inputs.page_scale_layer = root_layer;
7568 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 7613 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
7569 7614
7570 EXPECT_FLOAT_EQ(3.f, root_layer->GetIdealContentsScale()); 7615 EXPECT_FLOAT_EQ(3.f, root_layer->GetIdealContentsScale());
7571 EXPECT_FLOAT_EQ(9.f, child1_layer->GetIdealContentsScale()); 7616 EXPECT_FLOAT_EQ(9.f, child1_layer->GetIdealContentsScale());
7572 EXPECT_FLOAT_EQ(9.f, child1_layer->mask_layer()->GetIdealContentsScale()); 7617 EXPECT_FLOAT_EQ(9.f, child1_layer->mask_layer()->GetIdealContentsScale());
7573 EXPECT_FLOAT_EQ( 7618 EXPECT_FLOAT_EQ(
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
7722 identity_matrix, 7767 identity_matrix,
7723 gfx::Point3F(), 7768 gfx::Point3F(),
7724 gfx::PointF(), 7769 gfx::PointF(),
7725 sublayer_size, 7770 sublayer_size,
7726 false, 7771 false,
7727 false, 7772 false,
7728 false); 7773 false);
7729 sublayer->SetDrawsContent(true); 7774 sublayer->SetDrawsContent(true);
7730 7775
7731 LayerImplList layer_impl_list; 7776 LayerImplList layer_impl_list;
7777 root->layer_tree_impl()->IncrementRenderSurfaceListIdForTesting();
7732 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 7778 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
7733 root, device_viewport_size, &layer_impl_list); 7779 root, device_viewport_size, &layer_impl_list,
7780 root->layer_tree_impl()->current_render_surface_list_id());
7734 7781
7735 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 7782 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
7736 EXPECT_EQ(gfx::Rect(root_size), sublayer->visible_layer_rect()); 7783 EXPECT_EQ(gfx::Rect(root_size), sublayer->visible_layer_rect());
7737 7784
7738 root->SetBoundsDelta(gfx::Vector2dF(0.0, 50.0)); 7785 root->SetBoundsDelta(gfx::Vector2dF(0.0, 50.0));
7739 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 7786 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
7740 7787
7741 gfx::Rect affected_by_delta(0, 0, root_size.width(), 7788 gfx::Rect affected_by_delta(0, 0, root_size.width(),
7742 root_size.height() + 50); 7789 root_size.height() + 50);
7743 EXPECT_EQ(affected_by_delta, sublayer->visible_layer_rect()); 7790 EXPECT_EQ(affected_by_delta, sublayer->visible_layer_rect());
(...skipping 1525 matching lines...) Expand 10 before | Expand all | Expand 10 after
9269 bool root_in_rsll = 9316 bool root_in_rsll =
9270 std::find(rsll->begin(), rsll->end(), root) != rsll->end(); 9317 std::find(rsll->begin(), rsll->end(), root) != rsll->end();
9271 EXPECT_TRUE(root_in_rsll); 9318 EXPECT_TRUE(root_in_rsll);
9272 bool render_surface2_in_rsll = 9319 bool render_surface2_in_rsll =
9273 std::find(rsll->begin(), rsll->end(), render_surface2) != rsll->end(); 9320 std::find(rsll->begin(), rsll->end(), render_surface2) != rsll->end();
9274 EXPECT_FALSE(render_surface2_in_rsll); 9321 EXPECT_FALSE(render_surface2_in_rsll);
9275 } 9322 }
9276 9323
9277 } // namespace 9324 } // namespace
9278 } // namespace cc 9325 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698