OLD | NEW |
---|---|
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/trees/layer_tree_host_common.h" | 5 #include "cc/trees/layer_tree_host_common.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "cc/animation/layer_animation_controller.h" | 9 #include "cc/animation/layer_animation_controller.h" |
10 #include "cc/animation/transform_operations.h" | 10 #include "cc/animation/transform_operations.h" |
11 #include "cc/base/math_util.h" | 11 #include "cc/base/math_util.h" |
12 #include "cc/layers/content_layer.h" | 12 #include "cc/layers/content_layer.h" |
13 #include "cc/layers/content_layer_client.h" | 13 #include "cc/layers/content_layer_client.h" |
14 #include "cc/layers/layer.h" | 14 #include "cc/layers/layer.h" |
15 #include "cc/layers/layer_client.h" | 15 #include "cc/layers/layer_client.h" |
16 #include "cc/layers/layer_impl.h" | 16 #include "cc/layers/layer_impl.h" |
17 #include "cc/layers/layer_iterator.h" | 17 #include "cc/layers/layer_iterator.h" |
18 #include "cc/layers/render_surface.h" | 18 #include "cc/layers/render_surface.h" |
19 #include "cc/layers/render_surface_impl.h" | 19 #include "cc/layers/render_surface_impl.h" |
20 #include "cc/output/copy_output_request.h" | 20 #include "cc/output/copy_output_request.h" |
21 #include "cc/output/copy_output_result.h" | 21 #include "cc/output/copy_output_result.h" |
22 #include "cc/test/animation_test_common.h" | 22 #include "cc/test/animation_test_common.h" |
23 #include "cc/test/fake_impl_proxy.h" | 23 #include "cc/test/fake_impl_proxy.h" |
24 #include "cc/test/fake_layer_tree_host.h" | 24 #include "cc/test/fake_layer_tree_host.h" |
25 #include "cc/test/fake_layer_tree_host_impl.h" | 25 #include "cc/test/fake_layer_tree_host_impl.h" |
26 #include "cc/test/fake_picture_layer.h" | |
27 #include "cc/test/fake_picture_layer_impl.h" | |
26 #include "cc/test/geometry_test_utils.h" | 28 #include "cc/test/geometry_test_utils.h" |
27 #include "cc/test/layer_tree_host_common_test.h" | 29 #include "cc/test/layer_tree_host_common_test.h" |
28 #include "cc/trees/layer_tree_impl.h" | 30 #include "cc/trees/layer_tree_impl.h" |
29 #include "cc/trees/proxy.h" | 31 #include "cc/trees/proxy.h" |
30 #include "cc/trees/single_thread_proxy.h" | 32 #include "cc/trees/single_thread_proxy.h" |
31 #include "testing/gmock/include/gmock/gmock.h" | 33 #include "testing/gmock/include/gmock/gmock.h" |
32 #include "testing/gtest/include/gtest/gtest.h" | 34 #include "testing/gtest/include/gtest/gtest.h" |
33 #include "ui/gfx/quad_f.h" | 35 #include "ui/gfx/quad_f.h" |
34 #include "ui/gfx/transform.h" | 36 #include "ui/gfx/transform.h" |
35 | 37 |
(...skipping 17 matching lines...) Expand all Loading... | |
53 MockContentLayerClient() {} | 55 MockContentLayerClient() {} |
54 virtual ~MockContentLayerClient() {} | 56 virtual ~MockContentLayerClient() {} |
55 virtual void PaintContents( | 57 virtual void PaintContents( |
56 SkCanvas* canvas, | 58 SkCanvas* canvas, |
57 const gfx::Rect& clip, | 59 const gfx::Rect& clip, |
58 ContentLayerClient::GraphicsContextStatus gc_status) OVERRIDE {} | 60 ContentLayerClient::GraphicsContextStatus gc_status) OVERRIDE {} |
59 virtual void DidChangeLayerCanUseLCDText() OVERRIDE {} | 61 virtual void DidChangeLayerCanUseLCDText() OVERRIDE {} |
60 virtual bool FillsBoundsCompletely() const OVERRIDE { return false; } | 62 virtual bool FillsBoundsCompletely() const OVERRIDE { return false; } |
61 }; | 63 }; |
62 | 64 |
63 scoped_refptr<ContentLayer> CreateDrawableContentLayer( | 65 scoped_refptr<FakePictureLayer> CreateDrawablePictureLayer( |
64 ContentLayerClient* delegate) { | 66 ContentLayerClient* delegate) { |
65 scoped_refptr<ContentLayer> to_return = ContentLayer::Create(delegate); | 67 scoped_refptr<FakePictureLayer> to_return = |
68 FakePictureLayer::Create(delegate); | |
66 to_return->SetIsDrawable(true); | 69 to_return->SetIsDrawable(true); |
67 return to_return; | 70 return to_return; |
68 } | 71 } |
69 | 72 |
70 #define EXPECT_CONTENTS_SCALE_EQ(expected, layer) \ | 73 #define EXPECT_CONTENTS_SCALE_EQ(expected, layer) \ |
71 do { \ | 74 do { \ |
72 EXPECT_FLOAT_EQ(expected, layer->contents_scale_x()); \ | 75 EXPECT_FLOAT_EQ(expected, layer->contents_scale_x()); \ |
73 EXPECT_FLOAT_EQ(expected, layer->contents_scale_y()); \ | 76 EXPECT_FLOAT_EQ(expected, layer->contents_scale_y()); \ |
74 } while (false) | 77 } while (false) |
75 | 78 |
(...skipping 3178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3254 EXPECT_RECT_EQ(gfx::Rect(0, 0, 26, 50), child1->visible_content_rect()); | 3257 EXPECT_RECT_EQ(gfx::Rect(0, 0, 26, 50), child1->visible_content_rect()); |
3255 | 3258 |
3256 // The child's DrawableContentRect is unclipped. | 3259 // The child's DrawableContentRect is unclipped. |
3257 EXPECT_RECT_EQ(unclipped_surface_content, child1->drawable_content_rect()); | 3260 EXPECT_RECT_EQ(unclipped_surface_content, child1->drawable_content_rect()); |
3258 } | 3261 } |
3259 | 3262 |
3260 TEST_F(LayerTreeHostCommonTest, DrawableAndVisibleContentRectsInHighDPI) { | 3263 TEST_F(LayerTreeHostCommonTest, DrawableAndVisibleContentRectsInHighDPI) { |
3261 MockContentLayerClient client; | 3264 MockContentLayerClient client; |
3262 | 3265 |
3263 scoped_refptr<Layer> root = Layer::Create(); | 3266 scoped_refptr<Layer> root = Layer::Create(); |
3264 scoped_refptr<ContentLayer> render_surface1 = | 3267 scoped_refptr<FakePictureLayer> render_surface1 = |
3265 CreateDrawableContentLayer(&client); | 3268 CreateDrawablePictureLayer(&client); |
3266 scoped_refptr<ContentLayer> render_surface2 = | 3269 scoped_refptr<FakePictureLayer> render_surface2 = |
3267 CreateDrawableContentLayer(&client); | 3270 CreateDrawablePictureLayer(&client); |
3268 scoped_refptr<ContentLayer> child1 = CreateDrawableContentLayer(&client); | 3271 scoped_refptr<FakePictureLayer> child1 = CreateDrawablePictureLayer(&client); |
3269 scoped_refptr<ContentLayer> child2 = CreateDrawableContentLayer(&client); | 3272 scoped_refptr<FakePictureLayer> child2 = CreateDrawablePictureLayer(&client); |
3270 scoped_refptr<ContentLayer> child3 = CreateDrawableContentLayer(&client); | 3273 scoped_refptr<FakePictureLayer> child3 = CreateDrawablePictureLayer(&client); |
3271 root->AddChild(render_surface1); | 3274 root->AddChild(render_surface1); |
3272 render_surface1->AddChild(render_surface2); | 3275 render_surface1->AddChild(render_surface2); |
3273 render_surface2->AddChild(child1); | 3276 render_surface2->AddChild(child1); |
3274 render_surface2->AddChild(child2); | 3277 render_surface2->AddChild(child2); |
3275 render_surface2->AddChild(child3); | 3278 render_surface2->AddChild(child3); |
3276 | 3279 |
3277 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); | 3280 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); |
3278 host->SetRootLayer(root); | 3281 host->SetRootLayer(root); |
3279 | 3282 |
3280 gfx::Transform identity_matrix; | 3283 gfx::Transform identity_matrix; |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3346 | 3349 |
3347 EXPECT_RECT_EQ(gfx::Rect(10, 10, 100, 100), child1->drawable_content_rect()); | 3350 EXPECT_RECT_EQ(gfx::Rect(10, 10, 100, 100), child1->drawable_content_rect()); |
3348 EXPECT_RECT_EQ(gfx::Rect(150, 150, 100, 100), | 3351 EXPECT_RECT_EQ(gfx::Rect(150, 150, 100, 100), |
3349 child2->drawable_content_rect()); | 3352 child2->drawable_content_rect()); |
3350 EXPECT_RECT_EQ(gfx::Rect(250, 250, 100, 100), | 3353 EXPECT_RECT_EQ(gfx::Rect(250, 250, 100, 100), |
3351 child3->drawable_content_rect()); | 3354 child3->drawable_content_rect()); |
3352 | 3355 |
3353 // The root layer does not actually draw content of its own. | 3356 // The root layer does not actually draw content of its own. |
3354 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_content_rect()); | 3357 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_content_rect()); |
3355 | 3358 |
3356 // All layer visible content rects are expressed in content space of each | 3359 // All layer visible content rects are not expressed in content space of each |
3357 // layer, so they are also scaled by the device_scale_factor. | 3360 // layer, so they are also not scaled by the device_scale_factor. |
3358 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 8), | 3361 EXPECT_RECT_EQ(gfx::Rect(0, 0, 3, 4), |
3359 render_surface1->visible_content_rect()); | 3362 render_surface1->visible_content_rect()); |
3360 EXPECT_RECT_EQ(gfx::Rect(0, 0, 14, 26), | 3363 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 13), |
3361 render_surface2->visible_content_rect()); | 3364 render_surface2->visible_content_rect()); |
3362 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), child1->visible_content_rect()); | 3365 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_content_rect()); |
3363 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), child2->visible_content_rect()); | 3366 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_content_rect()); |
3364 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), child3->visible_content_rect()); | 3367 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_content_rect()); |
3365 } | 3368 } |
3366 | 3369 |
3367 TEST_F(LayerTreeHostCommonTest, BackFaceCullingWithoutPreserves3d) { | 3370 TEST_F(LayerTreeHostCommonTest, BackFaceCullingWithoutPreserves3d) { |
3368 // Verify the behavior of back-face culling when there are no preserve-3d | 3371 // Verify the behavior of back-face culling when there are no preserve-3d |
3369 // layers. Note that 3d transforms still apply in this case, but they are | 3372 // layers. Note that 3d transforms still apply in this case, but they are |
3370 // "flattened" to each parent layer according to current W3C spec. | 3373 // "flattened" to each parent layer according to current W3C spec. |
3371 | 3374 |
3372 const gfx::Transform identity_matrix; | 3375 const gfx::Transform identity_matrix; |
3373 scoped_refptr<Layer> parent = Layer::Create(); | 3376 scoped_refptr<Layer> parent = Layer::Create(); |
3374 scoped_refptr<LayerWithForcedDrawsContent> front_facing_child = | 3377 scoped_refptr<LayerWithForcedDrawsContent> front_facing_child = |
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4002 2u, | 4005 2u, |
4003 render_surface_layer_list.at(1)->render_surface()->layer_list().size()); | 4006 render_surface_layer_list.at(1)->render_surface()->layer_list().size()); |
4004 EXPECT_EQ(front_facing_surface->id(), | 4007 EXPECT_EQ(front_facing_surface->id(), |
4005 render_surface_layer_list.at(1) | 4008 render_surface_layer_list.at(1) |
4006 ->render_surface()->layer_list().at(0)->id()); | 4009 ->render_surface()->layer_list().at(0)->id()); |
4007 EXPECT_EQ(child1->id(), | 4010 EXPECT_EQ(child1->id(), |
4008 render_surface_layer_list.at(1) | 4011 render_surface_layer_list.at(1) |
4009 ->render_surface()->layer_list().at(1)->id()); | 4012 ->render_surface()->layer_list().at(1)->id()); |
4010 } | 4013 } |
4011 | 4014 |
4015 class NoScalePictureLayer : public PictureLayer { | |
4016 public: | |
4017 static scoped_refptr<NoScalePictureLayer> Create(ContentLayerClient* client) { | |
4018 return make_scoped_refptr(new NoScalePictureLayer(client)); | |
4019 } | |
4020 | |
4021 virtual void CalculateContentsScale(float ideal_contents_scale, | |
4022 float* contents_scale_x, | |
4023 float* contents_scale_y, | |
4024 gfx::Size* contentBounds) OVERRIDE { | |
4025 // Skip over the ContentLayer's method to the base Layer class. | |
4026 Layer::CalculateContentsScale(ideal_contents_scale, | |
4027 contents_scale_x, | |
4028 contents_scale_y, | |
4029 contentBounds); | |
4030 } | |
4031 | |
4032 private: | |
4033 explicit NoScalePictureLayer(ContentLayerClient* client) | |
4034 : PictureLayer(client) {} | |
4035 virtual ~NoScalePictureLayer() {} | |
4036 }; | |
4037 | |
4038 scoped_refptr<NoScalePictureLayer> CreateNoScaleDrawablePictureLayer( | |
4039 ContentLayerClient* delegate) { | |
4040 scoped_refptr<NoScalePictureLayer> to_return = | |
4041 NoScalePictureLayer::Create(delegate); | |
4042 to_return->SetIsDrawable(true); | |
4043 return to_return; | |
4044 } | |
4045 | |
4012 class NoScaleContentLayer : public ContentLayer { | 4046 class NoScaleContentLayer : public ContentLayer { |
4013 public: | 4047 public: |
4014 static scoped_refptr<NoScaleContentLayer> Create(ContentLayerClient* client) { | 4048 static scoped_refptr<NoScaleContentLayer> Create(ContentLayerClient* client) { |
4015 return make_scoped_refptr(new NoScaleContentLayer(client)); | 4049 return make_scoped_refptr(new NoScaleContentLayer(client)); |
4016 } | 4050 } |
4017 | 4051 |
4018 virtual void CalculateContentsScale(float ideal_contents_scale, | 4052 virtual void CalculateContentsScale(float ideal_contents_scale, |
4019 float* contents_scale_x, | 4053 float* contents_scale_x, |
4020 float* contents_scale_y, | 4054 float* contents_scale_y, |
4021 gfx::Size* content_bounds) OVERRIDE { | 4055 gfx::Size* content_bounds) OVERRIDE { |
(...skipping 16 matching lines...) Expand all Loading... | |
4038 NoScaleContentLayer::Create(delegate); | 4072 NoScaleContentLayer::Create(delegate); |
4039 to_return->SetIsDrawable(true); | 4073 to_return->SetIsDrawable(true); |
4040 return to_return; | 4074 return to_return; |
4041 } | 4075 } |
4042 | 4076 |
4043 TEST_F(LayerTreeHostCommonTest, LayerTransformsInHighDPI) { | 4077 TEST_F(LayerTreeHostCommonTest, LayerTransformsInHighDPI) { |
4044 // Verify draw and screen space transforms of layers not in a surface. | 4078 // Verify draw and screen space transforms of layers not in a surface. |
4045 MockContentLayerClient delegate; | 4079 MockContentLayerClient delegate; |
4046 gfx::Transform identity_matrix; | 4080 gfx::Transform identity_matrix; |
4047 | 4081 |
4048 scoped_refptr<ContentLayer> parent = CreateDrawableContentLayer(&delegate); | 4082 scoped_refptr<FakePictureLayer> parent = |
4083 CreateDrawablePictureLayer(&delegate); | |
4049 SetLayerPropertiesForTesting(parent.get(), | 4084 SetLayerPropertiesForTesting(parent.get(), |
4050 identity_matrix, | 4085 identity_matrix, |
4051 gfx::Point3F(), | 4086 gfx::Point3F(), |
4052 gfx::PointF(), | 4087 gfx::PointF(), |
4053 gfx::Size(100, 100), | 4088 gfx::Size(100, 100), |
4054 false, | 4089 false, |
4055 true); | 4090 true); |
4056 | 4091 |
4057 scoped_refptr<ContentLayer> child = CreateDrawableContentLayer(&delegate); | 4092 scoped_refptr<FakePictureLayer> child = CreateDrawablePictureLayer(&delegate); |
4058 SetLayerPropertiesForTesting(child.get(), | 4093 SetLayerPropertiesForTesting(child.get(), |
4059 identity_matrix, | 4094 identity_matrix, |
4060 gfx::Point3F(), | 4095 gfx::Point3F(), |
4061 gfx::PointF(2.f, 2.f), | 4096 gfx::PointF(2.f, 2.f), |
4062 gfx::Size(10, 10), | 4097 gfx::Size(10, 10), |
4063 false, | 4098 false, |
4064 true); | 4099 true); |
4065 | 4100 |
4066 scoped_refptr<ContentLayer> child_empty = | 4101 scoped_refptr<FakePictureLayer> child_empty = |
4067 CreateDrawableContentLayer(&delegate); | 4102 CreateDrawablePictureLayer(&delegate); |
4068 SetLayerPropertiesForTesting(child_empty.get(), | 4103 SetLayerPropertiesForTesting(child_empty.get(), |
4069 identity_matrix, | 4104 identity_matrix, |
4070 gfx::Point3F(), | 4105 gfx::Point3F(), |
4071 gfx::PointF(2.f, 2.f), | 4106 gfx::PointF(2.f, 2.f), |
4072 gfx::Size(), | 4107 gfx::Size(), |
4073 false, | 4108 false, |
4074 true); | 4109 true); |
4075 | 4110 |
4076 scoped_refptr<NoScaleContentLayer> child_no_scale = | 4111 scoped_refptr<NoScalePictureLayer> child_no_scale = |
4077 CreateNoScaleDrawableContentLayer(&delegate); | 4112 CreateNoScaleDrawablePictureLayer(&delegate); |
4078 SetLayerPropertiesForTesting(child_no_scale.get(), | 4113 SetLayerPropertiesForTesting(child_no_scale.get(), |
4079 identity_matrix, | 4114 identity_matrix, |
4080 gfx::Point3F(), | 4115 gfx::Point3F(), |
4081 gfx::PointF(2.f, 2.f), | 4116 gfx::PointF(2.f, 2.f), |
4082 gfx::Size(10, 10), | 4117 gfx::Size(10, 10), |
4083 false, | 4118 false, |
4084 true); | 4119 true); |
4085 | 4120 |
4086 parent->AddChild(child); | 4121 parent->AddChild(child); |
4087 parent->AddChild(child_empty); | 4122 parent->AddChild(child_empty); |
4088 parent->AddChild(child_no_scale); | 4123 parent->AddChild(child_no_scale); |
4089 | 4124 |
4090 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); | 4125 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); |
4091 host->SetRootLayer(parent); | 4126 host->SetRootLayer(parent); |
4092 | 4127 |
4093 float device_scale_factor = 2.5f; | 4128 float device_scale_factor = 2.5f; |
4094 float page_scale_factor = 1.f; | 4129 float page_scale_factor = 1.f; |
4095 | 4130 |
4096 RenderSurfaceLayerList render_surface_layer_list; | 4131 RenderSurfaceLayerList render_surface_layer_list; |
4097 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 4132 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
4098 parent.get(), parent->bounds(), &render_surface_layer_list); | 4133 parent.get(), parent->bounds(), &render_surface_layer_list); |
4099 inputs.device_scale_factor = device_scale_factor; | 4134 inputs.device_scale_factor = device_scale_factor; |
4100 inputs.page_scale_factor = page_scale_factor; | 4135 inputs.page_scale_factor = page_scale_factor; |
4101 inputs.can_adjust_raster_scales = true; | 4136 inputs.can_adjust_raster_scales = true; |
4102 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 4137 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
4103 | 4138 |
4104 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, parent); | 4139 EXPECT_CONTENTS_SCALE_EQ(1, parent); |
4105 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, child); | 4140 EXPECT_CONTENTS_SCALE_EQ(1, child); |
4106 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | 4141 EXPECT_CONTENTS_SCALE_EQ(1, child_empty); |
4107 child_empty); | |
4108 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); | 4142 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); |
4109 | 4143 |
4110 EXPECT_EQ(1u, render_surface_layer_list.size()); | 4144 EXPECT_EQ(1u, render_surface_layer_list.size()); |
4111 | 4145 |
4112 // Verify parent transforms | 4146 // Verify parent transforms |
4113 gfx::Transform expected_parent_transform; | 4147 gfx::Transform expected_parent_transform; |
4148 expected_parent_transform.Scale(device_scale_factor * page_scale_factor, | |
4149 device_scale_factor * page_scale_factor); | |
4114 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, | 4150 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, |
4115 parent->screen_space_transform()); | 4151 parent->screen_space_transform()); |
4116 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, | 4152 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, |
4117 parent->draw_transform()); | 4153 parent->draw_transform()); |
4118 | 4154 |
4119 // Verify results of transformed parent rects | 4155 // Verify results of transformed parent rects |
4120 gfx::RectF parent_content_bounds(parent->content_bounds()); | 4156 gfx::RectF parent_content_bounds(parent->content_bounds()); |
4121 | 4157 |
4122 gfx::RectF parent_draw_rect = | 4158 gfx::RectF parent_draw_rect = |
4123 MathUtil::MapClippedRect(parent->draw_transform(), parent_content_bounds); | 4159 MathUtil::MapClippedRect(parent->draw_transform(), parent_content_bounds); |
4124 gfx::RectF parent_screen_space_rect = MathUtil::MapClippedRect( | 4160 gfx::RectF parent_screen_space_rect = MathUtil::MapClippedRect( |
4125 parent->screen_space_transform(), parent_content_bounds); | 4161 parent->screen_space_transform(), parent_content_bounds); |
4126 | 4162 |
4127 gfx::RectF expected_parent_draw_rect(parent->bounds()); | 4163 gfx::RectF expected_parent_draw_rect(parent->bounds()); |
4128 expected_parent_draw_rect.Scale(device_scale_factor); | 4164 expected_parent_draw_rect.Scale(device_scale_factor); |
4129 EXPECT_FLOAT_RECT_EQ(expected_parent_draw_rect, parent_draw_rect); | 4165 EXPECT_FLOAT_RECT_EQ(expected_parent_draw_rect, parent_draw_rect); |
4130 EXPECT_FLOAT_RECT_EQ(expected_parent_draw_rect, parent_screen_space_rect); | 4166 EXPECT_FLOAT_RECT_EQ(expected_parent_draw_rect, parent_screen_space_rect); |
4131 | 4167 |
4132 // Verify child and child_empty transforms. They should match. | 4168 // Verify child and child_empty transforms. They should match. |
4133 gfx::Transform expected_child_transform; | 4169 gfx::Transform expected_child_transform; |
4134 expected_child_transform.Translate( | 4170 expected_child_transform.Translate( |
4135 device_scale_factor * child->position().x(), | 4171 device_scale_factor * child->position().x(), |
4136 device_scale_factor * child->position().y()); | 4172 device_scale_factor * child->position().y()); |
4173 expected_child_transform.Scale(device_scale_factor, device_scale_factor); | |
4137 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 4174 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
4138 child->draw_transform()); | 4175 child->draw_transform()); |
4139 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 4176 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
4140 child->screen_space_transform()); | 4177 child->screen_space_transform()); |
4141 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 4178 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
4142 child_empty->draw_transform()); | 4179 child_empty->draw_transform()); |
4143 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 4180 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
4144 child_empty->screen_space_transform()); | 4181 child_empty->screen_space_transform()); |
4145 | 4182 |
4146 // Verify results of transformed child and child_empty rects. They should | 4183 // Verify results of transformed child and child_empty rects. They should |
(...skipping 13 matching lines...) Expand all Loading... | |
4160 gfx::RectF expected_child_draw_rect(child->position(), child->bounds()); | 4197 gfx::RectF expected_child_draw_rect(child->position(), child->bounds()); |
4161 expected_child_draw_rect.Scale(device_scale_factor); | 4198 expected_child_draw_rect.Scale(device_scale_factor); |
4162 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_draw_rect); | 4199 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_draw_rect); |
4163 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_screen_space_rect); | 4200 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_screen_space_rect); |
4164 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_empty_draw_rect); | 4201 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_empty_draw_rect); |
4165 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_empty_screen_space_rect); | 4202 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_empty_screen_space_rect); |
4166 | 4203 |
4167 // Verify child_no_scale transforms | 4204 // Verify child_no_scale transforms |
4168 gfx::Transform expected_child_no_scale_transform = child->draw_transform(); | 4205 gfx::Transform expected_child_no_scale_transform = child->draw_transform(); |
4169 // All transforms operate on content rects. The child's content rect | 4206 // All transforms operate on content rects. The child's content rect |
4170 // incorporates device scale, but the child_no_scale does not; add it here. | 4207 // incorporates device scale, the child_no_scale also does. |
4171 expected_child_no_scale_transform.Scale(device_scale_factor, | 4208 |
4172 device_scale_factor); | |
4173 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_no_scale_transform, | 4209 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_no_scale_transform, |
4174 child_no_scale->draw_transform()); | 4210 child_no_scale->draw_transform()); |
4175 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_no_scale_transform, | 4211 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_no_scale_transform, |
4176 child_no_scale->screen_space_transform()); | 4212 child_no_scale->screen_space_transform()); |
4177 } | 4213 } |
4178 | 4214 |
4179 TEST_F(LayerTreeHostCommonTest, SurfaceLayerTransformsInHighDPI) { | 4215 TEST_F(LayerTreeHostCommonTest, SurfaceLayerTransformsInHighDPI) { |
4180 // Verify draw and screen space transforms of layers in a surface. | 4216 // Verify draw and screen space transforms of layers in a surface. |
4181 MockContentLayerClient delegate; | 4217 MockContentLayerClient delegate; |
4182 gfx::Transform identity_matrix; | 4218 gfx::Transform identity_matrix; |
4183 | 4219 |
4184 gfx::Transform perspective_matrix; | 4220 gfx::Transform perspective_matrix; |
4185 perspective_matrix.ApplyPerspectiveDepth(2.0); | 4221 perspective_matrix.ApplyPerspectiveDepth(2.0); |
4186 | 4222 |
4187 gfx::Transform scale_small_matrix; | 4223 gfx::Transform scale_small_matrix; |
4188 scale_small_matrix.Scale(SK_MScalar1 / 10.f, SK_MScalar1 / 12.f); | 4224 scale_small_matrix.Scale(SK_MScalar1 / 10.f, SK_MScalar1 / 12.f); |
4189 | 4225 |
4190 scoped_refptr<Layer> root = Layer::Create(); | 4226 scoped_refptr<Layer> root = Layer::Create(); |
4191 | 4227 |
4192 scoped_refptr<ContentLayer> parent = CreateDrawableContentLayer(&delegate); | 4228 scoped_refptr<FakePictureLayer> parent = |
4229 CreateDrawablePictureLayer(&delegate); | |
4193 SetLayerPropertiesForTesting(parent.get(), | 4230 SetLayerPropertiesForTesting(parent.get(), |
4194 identity_matrix, | 4231 identity_matrix, |
4195 gfx::Point3F(), | 4232 gfx::Point3F(), |
4196 gfx::PointF(), | 4233 gfx::PointF(), |
4197 gfx::Size(100, 100), | 4234 gfx::Size(100, 100), |
4198 false, | 4235 false, |
4199 true); | 4236 true); |
4200 | 4237 |
4201 scoped_refptr<ContentLayer> perspective_surface = | 4238 scoped_refptr<FakePictureLayer> perspective_surface = |
4202 CreateDrawableContentLayer(&delegate); | 4239 CreateDrawablePictureLayer(&delegate); |
4203 SetLayerPropertiesForTesting(perspective_surface.get(), | 4240 SetLayerPropertiesForTesting(perspective_surface.get(), |
4204 perspective_matrix * scale_small_matrix, | 4241 perspective_matrix * scale_small_matrix, |
4205 gfx::Point3F(), | 4242 gfx::Point3F(), |
4206 gfx::PointF(2.f, 2.f), | 4243 gfx::PointF(2.f, 2.f), |
4207 gfx::Size(10, 10), | 4244 gfx::Size(10, 10), |
4208 false, | 4245 false, |
4209 true); | 4246 true); |
4210 | 4247 |
4211 scoped_refptr<ContentLayer> scale_surface = | 4248 scoped_refptr<FakePictureLayer> scale_surface = |
4212 CreateDrawableContentLayer(&delegate); | 4249 CreateDrawablePictureLayer(&delegate); |
4213 SetLayerPropertiesForTesting(scale_surface.get(), | 4250 SetLayerPropertiesForTesting(scale_surface.get(), |
4214 scale_small_matrix, | 4251 scale_small_matrix, |
4215 gfx::Point3F(), | 4252 gfx::Point3F(), |
4216 gfx::PointF(2.f, 2.f), | 4253 gfx::PointF(2.f, 2.f), |
4217 gfx::Size(10, 10), | 4254 gfx::Size(10, 10), |
4218 false, | 4255 false, |
4219 true); | 4256 true); |
4220 | 4257 |
4221 perspective_surface->SetForceRenderSurface(true); | 4258 perspective_surface->SetForceRenderSurface(true); |
4222 scale_surface->SetForceRenderSurface(true); | 4259 scale_surface->SetForceRenderSurface(true); |
(...skipping 10 matching lines...) Expand all Loading... | |
4233 | 4270 |
4234 RenderSurfaceLayerList render_surface_layer_list; | 4271 RenderSurfaceLayerList render_surface_layer_list; |
4235 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 4272 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
4236 root.get(), parent->bounds(), &render_surface_layer_list); | 4273 root.get(), parent->bounds(), &render_surface_layer_list); |
4237 inputs.device_scale_factor = device_scale_factor; | 4274 inputs.device_scale_factor = device_scale_factor; |
4238 inputs.page_scale_factor = page_scale_factor; | 4275 inputs.page_scale_factor = page_scale_factor; |
4239 inputs.page_scale_application_layer = root.get(); | 4276 inputs.page_scale_application_layer = root.get(); |
4240 inputs.can_adjust_raster_scales = true; | 4277 inputs.can_adjust_raster_scales = true; |
4241 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 4278 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
4242 | 4279 |
4243 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, parent); | 4280 EXPECT_CONTENTS_SCALE_EQ(1, parent); |
4244 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | 4281 EXPECT_CONTENTS_SCALE_EQ(1, perspective_surface); |
4245 perspective_surface); | 4282 EXPECT_CONTENTS_SCALE_EQ(1, scale_surface); |
4246 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | |
4247 scale_surface); | |
4248 | 4283 |
4249 EXPECT_EQ(3u, render_surface_layer_list.size()); | 4284 EXPECT_EQ(3u, render_surface_layer_list.size()); |
4250 | 4285 |
4251 gfx::Transform expected_parent_draw_transform; | 4286 gfx::Transform expected_parent_draw_transform; |
4287 expected_parent_draw_transform.Scale(device_scale_factor * page_scale_factor, | |
4288 device_scale_factor * page_scale_factor); | |
4252 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_draw_transform, | 4289 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_draw_transform, |
4253 parent->draw_transform()); | 4290 parent->draw_transform()); |
4254 | 4291 |
4255 // The scaled surface is rendered at its appropriate scale, and drawn 1:1 | 4292 // The scaled surface is rendered at its appropriate scale, and drawn 1:1 |
4256 // into its target. | 4293 // into its target. |
4257 gfx::Transform expected_scale_surface_draw_transform; | 4294 gfx::Transform expected_scale_surface_draw_transform; |
4258 expected_scale_surface_draw_transform.Translate( | 4295 expected_scale_surface_draw_transform.Translate( |
4259 device_scale_factor * page_scale_factor * scale_surface->position().x(), | 4296 device_scale_factor * page_scale_factor * scale_surface->position().x(), |
4260 device_scale_factor * page_scale_factor * scale_surface->position().y()); | 4297 device_scale_factor * page_scale_factor * scale_surface->position().y()); |
4261 EXPECT_TRANSFORMATION_MATRIX_EQ( | 4298 EXPECT_TRANSFORMATION_MATRIX_EQ( |
4262 expected_scale_surface_draw_transform, | 4299 expected_scale_surface_draw_transform, |
4263 scale_surface->render_surface()->draw_transform()); | 4300 scale_surface->render_surface()->draw_transform()); |
4264 gfx::Transform expected_scale_surface_layer_draw_transform = | 4301 gfx::Transform expected_scale_surface_layer_draw_transform = |
4265 scale_small_matrix; | 4302 scale_small_matrix; |
4303 expected_scale_surface_layer_draw_transform.Scale( | |
4304 device_scale_factor * page_scale_factor, | |
4305 device_scale_factor * page_scale_factor); | |
4266 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_scale_surface_layer_draw_transform, | 4306 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_scale_surface_layer_draw_transform, |
4267 scale_surface->draw_transform()); | 4307 scale_surface->draw_transform()); |
4268 | 4308 |
4269 // The scale for the perspective surface is not known, so it is rendered 1:1 | 4309 // The scale for the perspective surface is not known, so it is rendered 1:1 |
4270 // with the screen, and then scaled during drawing. | 4310 // with the screen, and then scaled during drawing. |
4271 gfx::Transform expected_perspective_surface_draw_transform; | 4311 gfx::Transform expected_perspective_surface_draw_transform; |
4272 expected_perspective_surface_draw_transform.Translate( | 4312 expected_perspective_surface_draw_transform.Translate( |
4273 device_scale_factor * page_scale_factor * | 4313 device_scale_factor * page_scale_factor * |
4274 perspective_surface->position().x(), | 4314 perspective_surface->position().x(), |
4275 device_scale_factor * page_scale_factor * | 4315 device_scale_factor * page_scale_factor * |
4276 perspective_surface->position().y()); | 4316 perspective_surface->position().y()); |
4277 expected_perspective_surface_draw_transform.PreconcatTransform( | 4317 expected_perspective_surface_draw_transform.PreconcatTransform( |
4278 perspective_matrix); | 4318 perspective_matrix); |
4279 expected_perspective_surface_draw_transform.PreconcatTransform( | 4319 expected_perspective_surface_draw_transform.PreconcatTransform( |
4280 scale_small_matrix); | 4320 scale_small_matrix); |
4281 gfx::Transform expected_perspective_surface_layer_draw_transform; | 4321 gfx::Transform expected_perspective_surface_layer_draw_transform; |
4322 expected_perspective_surface_layer_draw_transform.Scale( | |
4323 device_scale_factor * page_scale_factor, | |
4324 device_scale_factor * page_scale_factor); | |
4282 EXPECT_TRANSFORMATION_MATRIX_EQ( | 4325 EXPECT_TRANSFORMATION_MATRIX_EQ( |
4283 expected_perspective_surface_draw_transform, | 4326 expected_perspective_surface_draw_transform, |
4284 perspective_surface->render_surface()->draw_transform()); | 4327 perspective_surface->render_surface()->draw_transform()); |
4285 EXPECT_TRANSFORMATION_MATRIX_EQ( | 4328 EXPECT_TRANSFORMATION_MATRIX_EQ( |
4286 expected_perspective_surface_layer_draw_transform, | 4329 expected_perspective_surface_layer_draw_transform, |
4287 perspective_surface->draw_transform()); | 4330 perspective_surface->draw_transform()); |
4288 } | 4331 } |
4289 | 4332 |
4290 TEST_F(LayerTreeHostCommonTest, | 4333 TEST_F(LayerTreeHostCommonTest, |
4291 LayerTransformsInHighDPIAccurateScaleZeroChildPosition) { | 4334 LayerTransformsInHighDPIAccurateScaleZeroChildPosition) { |
4292 // Verify draw and screen space transforms of layers not in a surface. | 4335 // Verify draw and screen space transforms of layers not in a surface. |
4293 MockContentLayerClient delegate; | 4336 MockContentLayerClient delegate; |
4294 gfx::Transform identity_matrix; | 4337 gfx::Transform identity_matrix; |
4295 | 4338 |
4296 scoped_refptr<ContentLayer> parent = CreateDrawableContentLayer(&delegate); | 4339 scoped_refptr<FakePictureLayer> parent = |
4340 CreateDrawablePictureLayer(&delegate); | |
4297 SetLayerPropertiesForTesting(parent.get(), | 4341 SetLayerPropertiesForTesting(parent.get(), |
4298 identity_matrix, | 4342 identity_matrix, |
4299 gfx::Point3F(), | 4343 gfx::Point3F(), |
4300 gfx::PointF(), | 4344 gfx::PointF(), |
4301 gfx::Size(133, 133), | 4345 gfx::Size(133, 133), |
4302 false, | 4346 false, |
4303 true); | 4347 true); |
4304 | 4348 |
4305 scoped_refptr<ContentLayer> child = CreateDrawableContentLayer(&delegate); | 4349 scoped_refptr<FakePictureLayer> child = CreateDrawablePictureLayer(&delegate); |
4306 SetLayerPropertiesForTesting(child.get(), | 4350 SetLayerPropertiesForTesting(child.get(), |
4307 identity_matrix, | 4351 identity_matrix, |
4308 gfx::Point3F(), | 4352 gfx::Point3F(), |
4309 gfx::PointF(), | 4353 gfx::PointF(), |
4310 gfx::Size(13, 13), | 4354 gfx::Size(13, 13), |
4311 false, | 4355 false, |
4312 true); | 4356 true); |
4313 | 4357 |
4314 scoped_refptr<NoScaleContentLayer> child_no_scale = | 4358 scoped_refptr<NoScalePictureLayer> child_no_scale = |
4315 CreateNoScaleDrawableContentLayer(&delegate); | 4359 CreateNoScaleDrawablePictureLayer(&delegate); |
4316 SetLayerPropertiesForTesting(child_no_scale.get(), | 4360 SetLayerPropertiesForTesting(child_no_scale.get(), |
4317 identity_matrix, | 4361 identity_matrix, |
4318 gfx::Point3F(), | 4362 gfx::Point3F(), |
4319 gfx::PointF(), | 4363 gfx::PointF(), |
4320 gfx::Size(13, 13), | 4364 gfx::Size(13, 13), |
4321 false, | 4365 false, |
4322 true); | 4366 true); |
4323 | 4367 |
4324 parent->AddChild(child); | 4368 parent->AddChild(child); |
4325 parent->AddChild(child_no_scale); | 4369 parent->AddChild(child_no_scale); |
4326 | 4370 |
4327 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); | 4371 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); |
4328 host->SetRootLayer(parent); | 4372 host->SetRootLayer(parent); |
4329 | 4373 |
4330 float device_scale_factor = 1.7f; | 4374 float device_scale_factor = 1.7f; |
4331 float page_scale_factor = 1.f; | 4375 float page_scale_factor = 1.f; |
4332 | 4376 |
4333 RenderSurfaceLayerList render_surface_layer_list; | 4377 RenderSurfaceLayerList render_surface_layer_list; |
4334 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 4378 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
4335 parent.get(), parent->bounds(), &render_surface_layer_list); | 4379 parent.get(), parent->bounds(), &render_surface_layer_list); |
4336 inputs.device_scale_factor = device_scale_factor; | 4380 inputs.device_scale_factor = device_scale_factor; |
4337 inputs.page_scale_factor = page_scale_factor; | 4381 inputs.page_scale_factor = page_scale_factor; |
4338 inputs.page_scale_application_layer = parent.get(); | 4382 inputs.page_scale_application_layer = parent.get(); |
4339 inputs.can_adjust_raster_scales = true; | 4383 inputs.can_adjust_raster_scales = true; |
4340 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 4384 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
4341 | 4385 |
4342 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, parent); | 4386 EXPECT_CONTENTS_SCALE_EQ(1, parent); |
danakj
2014/09/17 14:55:58
we should check the layer's ideal_contents_scale i
| |
4343 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, child); | 4387 EXPECT_CONTENTS_SCALE_EQ(1, child); |
4344 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); | 4388 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); |
4345 | 4389 |
4346 EXPECT_EQ(1u, render_surface_layer_list.size()); | 4390 EXPECT_EQ(1u, render_surface_layer_list.size()); |
4347 | 4391 |
4348 // Verify parent transforms | 4392 // Verify parent transforms |
4349 gfx::Transform expected_parent_transform; | 4393 gfx::Transform expected_parent_transform; |
4394 expected_parent_transform.Scale(device_scale_factor * page_scale_factor, | |
4395 device_scale_factor * page_scale_factor); | |
4350 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, | 4396 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, |
4351 parent->screen_space_transform()); | 4397 parent->screen_space_transform()); |
4352 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, | 4398 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, |
4353 parent->draw_transform()); | 4399 parent->draw_transform()); |
4354 | 4400 |
4355 // Verify results of transformed parent rects | 4401 // Verify results of transformed parent rects |
4356 gfx::RectF parent_content_bounds(parent->content_bounds()); | 4402 gfx::RectF parent_content_bounds(parent->content_bounds()); |
4357 | 4403 |
4358 gfx::RectF parent_draw_rect = | 4404 gfx::RectF parent_draw_rect = |
4359 MathUtil::MapClippedRect(parent->draw_transform(), parent_content_bounds); | 4405 MathUtil::MapClippedRect(parent->draw_transform(), parent_content_bounds); |
4360 gfx::RectF parent_screen_space_rect = MathUtil::MapClippedRect( | 4406 gfx::RectF parent_screen_space_rect = MathUtil::MapClippedRect( |
4361 parent->screen_space_transform(), parent_content_bounds); | 4407 parent->screen_space_transform(), parent_content_bounds); |
4362 | 4408 |
4363 gfx::RectF expected_parent_draw_rect(parent->bounds()); | 4409 gfx::RectF expected_parent_draw_rect(parent->bounds()); |
4364 expected_parent_draw_rect.Scale(device_scale_factor); | 4410 expected_parent_draw_rect.Scale(device_scale_factor); |
4365 expected_parent_draw_rect.set_width(ceil(expected_parent_draw_rect.width())); | 4411 expected_parent_draw_rect.set_width((expected_parent_draw_rect.width())); |
4366 expected_parent_draw_rect.set_height( | 4412 expected_parent_draw_rect.set_height((expected_parent_draw_rect.height())); |
4367 ceil(expected_parent_draw_rect.height())); | |
4368 EXPECT_FLOAT_RECT_EQ(expected_parent_draw_rect, parent_draw_rect); | 4413 EXPECT_FLOAT_RECT_EQ(expected_parent_draw_rect, parent_draw_rect); |
4369 EXPECT_FLOAT_RECT_EQ(expected_parent_draw_rect, parent_screen_space_rect); | 4414 EXPECT_FLOAT_RECT_EQ(expected_parent_draw_rect, parent_screen_space_rect); |
4370 | 4415 |
4371 // Verify child transforms | 4416 // Verify child transforms |
4372 gfx::Transform expected_child_transform; | 4417 gfx::Transform expected_child_transform; |
4418 expected_child_transform.Scale(device_scale_factor * page_scale_factor, | |
4419 device_scale_factor * page_scale_factor); | |
4373 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 4420 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
4374 child->draw_transform()); | 4421 child->draw_transform()); |
4375 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 4422 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
4376 child->screen_space_transform()); | 4423 child->screen_space_transform()); |
4377 | 4424 |
4378 // Verify results of transformed child rects | 4425 // Verify results of transformed child rects |
4379 gfx::RectF child_content_bounds(child->content_bounds()); | 4426 gfx::RectF child_content_bounds(child->content_bounds()); |
4380 | 4427 |
4381 gfx::RectF child_draw_rect = | 4428 gfx::RectF child_draw_rect = |
4382 MathUtil::MapClippedRect(child->draw_transform(), child_content_bounds); | 4429 MathUtil::MapClippedRect(child->draw_transform(), child_content_bounds); |
4383 gfx::RectF child_screen_space_rect = MathUtil::MapClippedRect( | 4430 gfx::RectF child_screen_space_rect = MathUtil::MapClippedRect( |
4384 child->screen_space_transform(), child_content_bounds); | 4431 child->screen_space_transform(), child_content_bounds); |
4385 | 4432 |
4386 gfx::RectF expected_child_draw_rect(child->bounds()); | 4433 gfx::RectF expected_child_draw_rect(child->bounds()); |
4387 expected_child_draw_rect.Scale(device_scale_factor); | 4434 expected_child_draw_rect.Scale(device_scale_factor); |
4388 expected_child_draw_rect.set_width(ceil(expected_child_draw_rect.width())); | 4435 expected_child_draw_rect.set_width((expected_child_draw_rect.width())); |
4389 expected_child_draw_rect.set_height(ceil(expected_child_draw_rect.height())); | 4436 expected_child_draw_rect.set_height((expected_child_draw_rect.height())); |
4390 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_draw_rect); | 4437 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_draw_rect); |
4391 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_screen_space_rect); | 4438 EXPECT_FLOAT_RECT_EQ(expected_child_draw_rect, child_screen_space_rect); |
4392 | 4439 |
4393 // Verify child_no_scale transforms | 4440 // Verify child_no_scale transforms |
4394 gfx::Transform expected_child_no_scale_transform = child->draw_transform(); | 4441 gfx::Transform expected_child_no_scale_transform = child->draw_transform(); |
4395 // All transforms operate on content rects. The child's content rect | 4442 // All transforms operate on content rects. The child's content rect |
4396 // incorporates device scale, but the child_no_scale does not; add it here. | 4443 // incorporates device scale, the child_no_scale also does. |
4397 expected_child_no_scale_transform.Scale(device_scale_factor, | |
4398 device_scale_factor); | |
4399 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_no_scale_transform, | 4444 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_no_scale_transform, |
4400 child_no_scale->draw_transform()); | 4445 child_no_scale->draw_transform()); |
4401 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_no_scale_transform, | 4446 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_no_scale_transform, |
4402 child_no_scale->screen_space_transform()); | 4447 child_no_scale->screen_space_transform()); |
4403 } | 4448 } |
4404 | 4449 |
4405 TEST_F(LayerTreeHostCommonTest, ContentsScale) { | 4450 TEST_F(LayerTreeHostCommonTest, ContentsScale) { |
4406 MockContentLayerClient delegate; | 4451 MockContentLayerClient delegate; |
4407 gfx::Transform identity_matrix; | 4452 gfx::Transform identity_matrix; |
4408 | 4453 |
4409 gfx::Transform parent_scale_matrix; | 4454 gfx::Transform parent_scale_matrix; |
4410 SkMScalar initial_parent_scale = 1.75; | 4455 SkMScalar initial_parent_scale = 1.75; |
4411 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); | 4456 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); |
4412 | 4457 |
4413 gfx::Transform child_scale_matrix; | 4458 gfx::Transform child_scale_matrix; |
4414 SkMScalar initial_child_scale = 1.25; | 4459 SkMScalar initial_child_scale = 1.25; |
4415 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); | 4460 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); |
4416 | 4461 |
4417 scoped_refptr<Layer> root = Layer::Create(); | 4462 scoped_refptr<Layer> root = Layer::Create(); |
4418 root->SetBounds(gfx::Size(100, 100)); | 4463 root->SetBounds(gfx::Size(100, 100)); |
4419 | 4464 |
4420 scoped_refptr<ContentLayer> parent = CreateDrawableContentLayer(&delegate); | 4465 scoped_refptr<FakePictureLayer> parent = |
4466 CreateDrawablePictureLayer(&delegate); | |
4421 SetLayerPropertiesForTesting(parent.get(), | 4467 SetLayerPropertiesForTesting(parent.get(), |
4422 parent_scale_matrix, | 4468 parent_scale_matrix, |
4423 gfx::Point3F(), | 4469 gfx::Point3F(), |
4424 gfx::PointF(), | 4470 gfx::PointF(), |
4425 gfx::Size(100, 100), | 4471 gfx::Size(100, 100), |
4426 false, | 4472 false, |
4427 true); | 4473 true); |
4428 | 4474 |
4429 scoped_refptr<ContentLayer> child_scale = | 4475 scoped_refptr<FakePictureLayer> child_scale = |
4430 CreateDrawableContentLayer(&delegate); | 4476 CreateDrawablePictureLayer(&delegate); |
4431 SetLayerPropertiesForTesting(child_scale.get(), | 4477 SetLayerPropertiesForTesting(child_scale.get(), |
4432 child_scale_matrix, | 4478 child_scale_matrix, |
4433 gfx::Point3F(), | 4479 gfx::Point3F(), |
4434 gfx::PointF(2.f, 2.f), | 4480 gfx::PointF(2.f, 2.f), |
4435 gfx::Size(10, 10), | 4481 gfx::Size(10, 10), |
4436 false, | 4482 false, |
4437 true); | 4483 true); |
4438 | 4484 |
4439 scoped_refptr<ContentLayer> child_empty = | 4485 scoped_refptr<FakePictureLayer> child_empty = |
4440 CreateDrawableContentLayer(&delegate); | 4486 CreateDrawablePictureLayer(&delegate); |
4441 SetLayerPropertiesForTesting(child_empty.get(), | 4487 SetLayerPropertiesForTesting(child_empty.get(), |
4442 child_scale_matrix, | 4488 child_scale_matrix, |
4443 gfx::Point3F(), | 4489 gfx::Point3F(), |
4444 gfx::PointF(2.f, 2.f), | 4490 gfx::PointF(2.f, 2.f), |
4445 gfx::Size(), | 4491 gfx::Size(), |
4446 false, | 4492 false, |
4447 true); | 4493 true); |
4448 | 4494 |
4449 scoped_refptr<NoScaleContentLayer> child_no_scale = | 4495 scoped_refptr<NoScalePictureLayer> child_no_scale = |
4450 CreateNoScaleDrawableContentLayer(&delegate); | 4496 CreateNoScaleDrawablePictureLayer(&delegate); |
4451 SetLayerPropertiesForTesting(child_no_scale.get(), | 4497 SetLayerPropertiesForTesting(child_no_scale.get(), |
4452 child_scale_matrix, | 4498 child_scale_matrix, |
4453 gfx::Point3F(), | 4499 gfx::Point3F(), |
4454 gfx::PointF(12.f, 12.f), | 4500 gfx::PointF(12.f, 12.f), |
4455 gfx::Size(10, 10), | 4501 gfx::Size(10, 10), |
4456 false, | 4502 false, |
4457 true); | 4503 true); |
4458 | 4504 |
4459 root->AddChild(parent); | 4505 root->AddChild(parent); |
4460 | 4506 |
(...skipping 10 matching lines...) Expand all Loading... | |
4471 { | 4517 { |
4472 RenderSurfaceLayerList render_surface_layer_list; | 4518 RenderSurfaceLayerList render_surface_layer_list; |
4473 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 4519 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
4474 root.get(), root->bounds(), &render_surface_layer_list); | 4520 root.get(), root->bounds(), &render_surface_layer_list); |
4475 inputs.device_scale_factor = device_scale_factor; | 4521 inputs.device_scale_factor = device_scale_factor; |
4476 inputs.page_scale_factor = page_scale_factor; | 4522 inputs.page_scale_factor = page_scale_factor; |
4477 inputs.page_scale_application_layer = root.get(); | 4523 inputs.page_scale_application_layer = root.get(); |
4478 inputs.can_adjust_raster_scales = true; | 4524 inputs.can_adjust_raster_scales = true; |
4479 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 4525 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
4480 | 4526 |
4481 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * | 4527 // Picturelayer's content scale is 1.f |
4482 initial_parent_scale, parent); | 4528 EXPECT_CONTENTS_SCALE_EQ(1, parent); |
4483 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * | 4529 EXPECT_CONTENTS_SCALE_EQ(1, child_scale); |
4484 initial_parent_scale * initial_child_scale, | 4530 EXPECT_CONTENTS_SCALE_EQ(1, child_empty); |
4485 child_scale); | |
4486 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * | |
4487 initial_parent_scale * initial_child_scale, | |
4488 child_empty); | |
4489 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); | 4531 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); |
4490 | 4532 |
4491 // The parent is scaled up and shouldn't need to scale during draw. The | 4533 // The parent is not scaled up and we would need to scale during draw. The |
4492 // child that can scale its contents should also not need to scale during | 4534 // child that can scale its contents should also need to scale during |
4493 // draw. This shouldn't change if the child has empty bounds. The other | 4535 // draw. This shouldn't change if the child has empty bounds. The other |
4494 // children should. | 4536 // children should. |
4495 EXPECT_FLOAT_EQ(1.0, parent->draw_transform().matrix().get(0, 0)); | 4537 EXPECT_FLOAT_EQ( |
4496 EXPECT_FLOAT_EQ(1.0, parent->draw_transform().matrix().get(1, 1)); | 4538 device_scale_factor * page_scale_factor * initial_parent_scale, |
4497 EXPECT_FLOAT_EQ(1.0, child_scale->draw_transform().matrix().get(0, 0)); | 4539 parent->draw_transform().matrix().get(0, 0)); |
4498 EXPECT_FLOAT_EQ(1.0, child_scale->draw_transform().matrix().get(1, 1)); | 4540 EXPECT_FLOAT_EQ( |
4499 EXPECT_FLOAT_EQ(1.0, child_empty->draw_transform().matrix().get(0, 0)); | 4541 device_scale_factor * page_scale_factor * initial_parent_scale, |
4500 EXPECT_FLOAT_EQ(1.0, child_empty->draw_transform().matrix().get(1, 1)); | 4542 parent->draw_transform().matrix().get(1, 1)); |
4543 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * | |
4544 initial_parent_scale * initial_child_scale, | |
4545 child_scale->draw_transform().matrix().get(0, 0)); | |
4546 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * | |
4547 initial_parent_scale * initial_child_scale, | |
4548 child_scale->draw_transform().matrix().get(1, 1)); | |
4549 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * | |
4550 initial_parent_scale * initial_child_scale, | |
4551 child_empty->draw_transform().matrix().get(0, 0)); | |
4552 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * | |
4553 initial_parent_scale * initial_child_scale, | |
4554 child_empty->draw_transform().matrix().get(1, 1)); | |
4501 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * | 4555 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * |
4502 initial_parent_scale * initial_child_scale, | 4556 initial_parent_scale * initial_child_scale, |
4503 child_no_scale->draw_transform().matrix().get(0, 0)); | 4557 child_no_scale->draw_transform().matrix().get(0, 0)); |
4504 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * | 4558 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * |
4505 initial_parent_scale * initial_child_scale, | 4559 initial_parent_scale * initial_child_scale, |
4506 child_no_scale->draw_transform().matrix().get(1, 1)); | 4560 child_no_scale->draw_transform().matrix().get(1, 1)); |
4507 } | 4561 } |
4508 | |
4509 // If the device_scale_factor or page_scale_factor changes, then it should be | |
4510 // updated using the initial transform as the raster scale. | |
4511 device_scale_factor = 2.25f; | |
4512 page_scale_factor = 1.25f; | |
4513 | |
4514 { | |
4515 RenderSurfaceLayerList render_surface_layer_list; | |
4516 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | |
4517 root.get(), root->bounds(), &render_surface_layer_list); | |
4518 inputs.device_scale_factor = device_scale_factor; | |
4519 inputs.page_scale_factor = page_scale_factor; | |
4520 inputs.page_scale_application_layer = root.get(); | |
4521 inputs.can_adjust_raster_scales = true; | |
4522 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | |
4523 | |
4524 EXPECT_CONTENTS_SCALE_EQ( | |
4525 device_scale_factor * page_scale_factor * initial_parent_scale, parent); | |
4526 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * | |
4527 initial_parent_scale * initial_child_scale, | |
4528 child_scale); | |
4529 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * | |
4530 initial_parent_scale * initial_child_scale, | |
4531 child_empty); | |
4532 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); | |
4533 } | |
4534 | |
4535 // If the transform changes, we expect the raster scale to be reset to 1.0. | |
4536 SkMScalar second_child_scale = 1.75; | |
4537 child_scale_matrix.Scale(second_child_scale / initial_child_scale, | |
4538 second_child_scale / initial_child_scale); | |
4539 child_scale->SetTransform(child_scale_matrix); | |
4540 child_empty->SetTransform(child_scale_matrix); | |
4541 | |
4542 { | |
4543 RenderSurfaceLayerList render_surface_layer_list; | |
4544 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | |
4545 root.get(), root->bounds(), &render_surface_layer_list); | |
4546 inputs.device_scale_factor = device_scale_factor; | |
4547 inputs.page_scale_factor = page_scale_factor; | |
4548 inputs.page_scale_application_layer = root.get(); | |
4549 inputs.can_adjust_raster_scales = true; | |
4550 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | |
4551 | |
4552 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * | |
4553 initial_parent_scale, | |
4554 parent); | |
4555 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | |
4556 child_scale); | |
4557 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | |
4558 child_empty); | |
4559 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); | |
4560 } | |
4561 | |
4562 // If the device_scale_factor or page_scale_factor changes, then it should be | |
4563 // updated, but still using 1.0 as the raster scale. | |
4564 device_scale_factor = 2.75f; | |
4565 page_scale_factor = 1.75f; | |
4566 | |
4567 { | |
4568 RenderSurfaceLayerList render_surface_layer_list; | |
4569 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | |
4570 root.get(), root->bounds(), &render_surface_layer_list); | |
4571 inputs.device_scale_factor = device_scale_factor; | |
4572 inputs.page_scale_factor = page_scale_factor; | |
4573 inputs.page_scale_application_layer = root.get(); | |
4574 inputs.can_adjust_raster_scales = true; | |
4575 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | |
4576 | |
4577 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * | |
4578 initial_parent_scale, | |
4579 parent); | |
4580 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | |
4581 child_scale); | |
4582 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | |
4583 child_empty); | |
4584 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); | |
4585 } | |
4586 } | 4562 } |
4587 | 4563 |
4588 TEST_F(LayerTreeHostCommonTest, | 4564 TEST_F(LayerTreeHostCommonTest, |
4589 ContentsScale_LayerTransformsDontAffectContentsScale) { | 4565 ContentsScale_LayerTransformsDontAffectContentsScale) { |
4590 MockContentLayerClient delegate; | 4566 MockContentLayerClient delegate; |
4591 gfx::Transform identity_matrix; | 4567 gfx::Transform identity_matrix; |
4592 | 4568 |
4593 gfx::Transform parent_scale_matrix; | 4569 gfx::Transform parent_scale_matrix; |
4594 SkMScalar initial_parent_scale = 1.75; | 4570 SkMScalar initial_parent_scale = 1.75; |
4595 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); | 4571 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); |
4596 | 4572 |
4597 gfx::Transform child_scale_matrix; | 4573 gfx::Transform child_scale_matrix; |
4598 SkMScalar initial_child_scale = 1.25; | 4574 SkMScalar initial_child_scale = 1.25; |
4599 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); | 4575 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); |
4600 | 4576 |
4601 scoped_refptr<Layer> root = Layer::Create(); | 4577 scoped_refptr<Layer> root = Layer::Create(); |
4602 root->SetBounds(gfx::Size(100, 100)); | 4578 root->SetBounds(gfx::Size(100, 100)); |
4603 | 4579 |
4604 scoped_refptr<ContentLayer> parent = CreateDrawableContentLayer(&delegate); | 4580 scoped_refptr<FakePictureLayer> parent = |
4581 CreateDrawablePictureLayer(&delegate); | |
4605 SetLayerPropertiesForTesting(parent.get(), | 4582 SetLayerPropertiesForTesting(parent.get(), |
4606 parent_scale_matrix, | 4583 parent_scale_matrix, |
4607 gfx::Point3F(), | 4584 gfx::Point3F(), |
4608 gfx::PointF(), | 4585 gfx::PointF(), |
4609 gfx::Size(100, 100), | 4586 gfx::Size(100, 100), |
4610 false, | 4587 false, |
4611 true); | 4588 true); |
4612 | 4589 |
4613 scoped_refptr<ContentLayer> child_scale = | 4590 scoped_refptr<FakePictureLayer> child_scale = |
4614 CreateDrawableContentLayer(&delegate); | 4591 CreateDrawablePictureLayer(&delegate); |
4615 SetLayerPropertiesForTesting(child_scale.get(), | 4592 SetLayerPropertiesForTesting(child_scale.get(), |
4616 child_scale_matrix, | 4593 child_scale_matrix, |
4617 gfx::Point3F(), | 4594 gfx::Point3F(), |
4618 gfx::PointF(2.f, 2.f), | 4595 gfx::PointF(2.f, 2.f), |
4619 gfx::Size(10, 10), | 4596 gfx::Size(10, 10), |
4620 false, | 4597 false, |
4621 true); | 4598 true); |
4622 | 4599 |
4623 scoped_refptr<ContentLayer> child_empty = | 4600 scoped_refptr<FakePictureLayer> child_empty = |
4624 CreateDrawableContentLayer(&delegate); | 4601 CreateDrawablePictureLayer(&delegate); |
4625 SetLayerPropertiesForTesting(child_empty.get(), | 4602 SetLayerPropertiesForTesting(child_empty.get(), |
4626 child_scale_matrix, | 4603 child_scale_matrix, |
4627 gfx::Point3F(), | 4604 gfx::Point3F(), |
4628 gfx::PointF(2.f, 2.f), | 4605 gfx::PointF(2.f, 2.f), |
4629 gfx::Size(), | 4606 gfx::Size(), |
4630 false, | 4607 false, |
4631 true); | 4608 true); |
4632 | 4609 |
4633 scoped_refptr<NoScaleContentLayer> child_no_scale = | 4610 scoped_refptr<NoScalePictureLayer> child_no_scale = |
4634 CreateNoScaleDrawableContentLayer(&delegate); | 4611 CreateNoScaleDrawablePictureLayer(&delegate); |
4635 SetLayerPropertiesForTesting(child_no_scale.get(), | 4612 SetLayerPropertiesForTesting(child_no_scale.get(), |
4636 child_scale_matrix, | 4613 child_scale_matrix, |
4637 gfx::Point3F(), | 4614 gfx::Point3F(), |
4638 gfx::PointF(12.f, 12.f), | 4615 gfx::PointF(12.f, 12.f), |
4639 gfx::Size(10, 10), | 4616 gfx::Size(10, 10), |
4640 false, | 4617 false, |
4641 true); | 4618 true); |
4642 | 4619 |
4643 root->AddChild(parent); | 4620 root->AddChild(parent); |
4644 | 4621 |
4645 parent->AddChild(child_scale); | 4622 parent->AddChild(child_scale); |
4646 parent->AddChild(child_empty); | 4623 parent->AddChild(child_empty); |
4647 parent->AddChild(child_no_scale); | 4624 parent->AddChild(child_no_scale); |
4648 | 4625 |
4649 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); | 4626 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); |
4650 host->SetRootLayer(root); | 4627 host->SetRootLayer(root); |
4651 | 4628 |
4652 RenderSurfaceLayerList render_surface_layer_list; | 4629 RenderSurfaceLayerList render_surface_layer_list; |
4653 | 4630 |
4654 float device_scale_factor = 2.5f; | 4631 float device_scale_factor = 2.5f; |
4655 float page_scale_factor = 1.f; | 4632 float page_scale_factor = 1.f; |
4656 | 4633 |
4657 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 4634 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
4658 root.get(), root->bounds(), &render_surface_layer_list); | 4635 root.get(), root->bounds(), &render_surface_layer_list); |
4659 inputs.device_scale_factor = device_scale_factor; | 4636 inputs.device_scale_factor = device_scale_factor; |
4660 inputs.page_scale_factor = page_scale_factor; | 4637 inputs.page_scale_factor = page_scale_factor; |
4661 inputs.page_scale_application_layer = root.get(), | 4638 inputs.page_scale_application_layer = root.get(), |
4662 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 4639 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
4663 | 4640 |
4664 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, parent); | 4641 EXPECT_CONTENTS_SCALE_EQ(1, parent); |
4665 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | 4642 EXPECT_CONTENTS_SCALE_EQ(1, child_scale); |
4666 child_scale); | 4643 EXPECT_CONTENTS_SCALE_EQ(1, child_empty); |
4667 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | |
4668 child_empty); | |
4669 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); | 4644 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); |
4670 | 4645 |
4671 // Since the transform scale does not affect contents scale, it should affect | 4646 // Since the transform scale affects contents scale, it should not affect |
4672 // the draw transform instead. | 4647 // the draw transform. |
4673 EXPECT_FLOAT_EQ(initial_parent_scale, | 4648 EXPECT_FLOAT_EQ( |
4674 parent->draw_transform().matrix().get(0, 0)); | 4649 initial_parent_scale * device_scale_factor * page_scale_factor, |
4675 EXPECT_FLOAT_EQ(initial_parent_scale, | 4650 parent->draw_transform().matrix().get(0, 0)); |
4676 parent->draw_transform().matrix().get(1, 1)); | 4651 EXPECT_FLOAT_EQ( |
4677 EXPECT_FLOAT_EQ(initial_parent_scale * initial_child_scale, | 4652 initial_parent_scale * device_scale_factor * page_scale_factor, |
4653 parent->draw_transform().matrix().get(1, 1)); | |
4654 EXPECT_FLOAT_EQ(initial_parent_scale * initial_child_scale * | |
4655 device_scale_factor * page_scale_factor, | |
4678 child_scale->draw_transform().matrix().get(0, 0)); | 4656 child_scale->draw_transform().matrix().get(0, 0)); |
4679 EXPECT_FLOAT_EQ(initial_parent_scale * initial_child_scale, | 4657 EXPECT_FLOAT_EQ(initial_parent_scale * initial_child_scale * |
4658 device_scale_factor * page_scale_factor, | |
4680 child_scale->draw_transform().matrix().get(1, 1)); | 4659 child_scale->draw_transform().matrix().get(1, 1)); |
4681 EXPECT_FLOAT_EQ(initial_parent_scale * initial_child_scale, | 4660 EXPECT_FLOAT_EQ(initial_parent_scale * initial_child_scale * |
4661 device_scale_factor * page_scale_factor, | |
4682 child_empty->draw_transform().matrix().get(0, 0)); | 4662 child_empty->draw_transform().matrix().get(0, 0)); |
4683 EXPECT_FLOAT_EQ(initial_parent_scale * initial_child_scale, | 4663 EXPECT_FLOAT_EQ(initial_parent_scale * initial_child_scale * |
4664 device_scale_factor * page_scale_factor, | |
4684 child_empty->draw_transform().matrix().get(1, 1)); | 4665 child_empty->draw_transform().matrix().get(1, 1)); |
4685 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * | 4666 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * |
4686 initial_parent_scale * initial_child_scale, | 4667 initial_parent_scale * initial_child_scale, |
4687 child_no_scale->draw_transform().matrix().get(0, 0)); | 4668 child_no_scale->draw_transform().matrix().get(0, 0)); |
4688 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * | 4669 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * |
4689 initial_parent_scale * initial_child_scale, | 4670 initial_parent_scale * initial_child_scale, |
4690 child_no_scale->draw_transform().matrix().get(1, 1)); | 4671 child_no_scale->draw_transform().matrix().get(1, 1)); |
4691 } | 4672 } |
4692 | 4673 |
4693 TEST_F(LayerTreeHostCommonTest, SmallContentsScale) { | 4674 TEST_F(LayerTreeHostCommonTest, SmallContentsScale) { |
4694 MockContentLayerClient delegate; | 4675 MockContentLayerClient delegate; |
4695 gfx::Transform identity_matrix; | 4676 gfx::Transform identity_matrix; |
4696 | 4677 |
4697 gfx::Transform parent_scale_matrix; | 4678 gfx::Transform parent_scale_matrix; |
4698 SkMScalar initial_parent_scale = 1.75; | 4679 SkMScalar initial_parent_scale = 1.75; |
4699 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); | 4680 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); |
4700 | 4681 |
4701 gfx::Transform child_scale_matrix; | 4682 gfx::Transform child_scale_matrix; |
4702 SkMScalar initial_child_scale = 0.25; | 4683 SkMScalar initial_child_scale = 0.25; |
4703 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); | 4684 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); |
4704 | 4685 |
4705 scoped_refptr<Layer> root = Layer::Create(); | 4686 scoped_refptr<Layer> root = Layer::Create(); |
4706 root->SetBounds(gfx::Size(100, 100)); | 4687 root->SetBounds(gfx::Size(100, 100)); |
4707 | 4688 |
4708 scoped_refptr<ContentLayer> parent = CreateDrawableContentLayer(&delegate); | 4689 scoped_refptr<FakePictureLayer> parent = |
4690 CreateDrawablePictureLayer(&delegate); | |
4709 SetLayerPropertiesForTesting(parent.get(), | 4691 SetLayerPropertiesForTesting(parent.get(), |
4710 parent_scale_matrix, | 4692 parent_scale_matrix, |
4711 gfx::Point3F(), | 4693 gfx::Point3F(), |
4712 gfx::PointF(), | 4694 gfx::PointF(), |
4713 gfx::Size(100, 100), | 4695 gfx::Size(100, 100), |
4714 false, | 4696 false, |
4715 true); | 4697 true); |
4716 | 4698 |
4717 scoped_refptr<ContentLayer> child_scale = | 4699 scoped_refptr<FakePictureLayer> child_scale = |
4718 CreateDrawableContentLayer(&delegate); | 4700 CreateDrawablePictureLayer(&delegate); |
4719 SetLayerPropertiesForTesting(child_scale.get(), | 4701 SetLayerPropertiesForTesting(child_scale.get(), |
4720 child_scale_matrix, | 4702 child_scale_matrix, |
4721 gfx::Point3F(), | 4703 gfx::Point3F(), |
4722 gfx::PointF(2.f, 2.f), | 4704 gfx::PointF(2.f, 2.f), |
4723 gfx::Size(10, 10), | 4705 gfx::Size(10, 10), |
4724 false, | 4706 false, |
4725 true); | 4707 true); |
4726 | 4708 |
4727 root->AddChild(parent); | 4709 root->AddChild(parent); |
4728 | 4710 |
4729 parent->AddChild(child_scale); | 4711 parent->AddChild(child_scale); |
4730 | 4712 |
4731 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); | 4713 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); |
4732 host->SetRootLayer(root); | 4714 host->SetRootLayer(root); |
4733 | 4715 |
4734 float device_scale_factor = 2.5f; | 4716 float device_scale_factor = 2.5f; |
4735 float page_scale_factor = 0.01f; | 4717 float page_scale_factor = 0.01f; |
4736 | 4718 |
4737 { | 4719 { |
4738 RenderSurfaceLayerList render_surface_layer_list; | 4720 RenderSurfaceLayerList render_surface_layer_list; |
4739 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 4721 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
4740 root.get(), root->bounds(), &render_surface_layer_list); | 4722 root.get(), root->bounds(), &render_surface_layer_list); |
4741 inputs.device_scale_factor = device_scale_factor; | 4723 inputs.device_scale_factor = device_scale_factor; |
4742 inputs.page_scale_factor = page_scale_factor; | 4724 inputs.page_scale_factor = page_scale_factor; |
4743 inputs.page_scale_application_layer = root.get(); | 4725 inputs.page_scale_application_layer = root.get(); |
4744 inputs.can_adjust_raster_scales = true; | 4726 inputs.can_adjust_raster_scales = true; |
4745 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 4727 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
4746 | 4728 |
4747 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * | 4729 EXPECT_CONTENTS_SCALE_EQ(1, parent); |
4748 initial_parent_scale, | 4730 EXPECT_CONTENTS_SCALE_EQ(1, child_scale); |
4749 parent); | |
4750 // The child's scale is < 1, so we should not save and use that scale | |
4751 // factor. | |
4752 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * 1, | |
4753 child_scale); | |
4754 } | 4731 } |
4755 | 4732 |
4756 // When chilld's total scale becomes >= 1, we should save and use that scale | 4733 // When chilld's total scale becomes >= 1, we should save and use that scale |
4757 // factor. | 4734 // factor. |
4758 child_scale_matrix.MakeIdentity(); | 4735 child_scale_matrix.MakeIdentity(); |
4759 SkMScalar final_child_scale = 0.75; | 4736 SkMScalar final_child_scale = 0.75; |
4760 child_scale_matrix.Scale(final_child_scale, final_child_scale); | 4737 child_scale_matrix.Scale(final_child_scale, final_child_scale); |
4761 child_scale->SetTransform(child_scale_matrix); | 4738 child_scale->SetTransform(child_scale_matrix); |
4762 | 4739 |
4763 { | 4740 { |
4764 RenderSurfaceLayerList render_surface_layer_list; | 4741 RenderSurfaceLayerList render_surface_layer_list; |
4765 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 4742 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
4766 root.get(), root->bounds(), &render_surface_layer_list); | 4743 root.get(), root->bounds(), &render_surface_layer_list); |
4767 inputs.device_scale_factor = device_scale_factor; | 4744 inputs.device_scale_factor = device_scale_factor; |
4768 inputs.page_scale_factor = page_scale_factor; | 4745 inputs.page_scale_factor = page_scale_factor; |
4769 inputs.page_scale_application_layer = root.get(); | 4746 inputs.page_scale_application_layer = root.get(); |
4770 inputs.can_adjust_raster_scales = true; | 4747 inputs.can_adjust_raster_scales = true; |
4771 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 4748 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
4772 | 4749 |
4773 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * | 4750 EXPECT_CONTENTS_SCALE_EQ(1, parent); |
4774 initial_parent_scale, | 4751 EXPECT_CONTENTS_SCALE_EQ(1, child_scale); |
4775 parent); | |
4776 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * | |
4777 initial_parent_scale * final_child_scale, | |
4778 child_scale); | |
4779 } | 4752 } |
4780 } | 4753 } |
4781 | 4754 |
4782 TEST_F(LayerTreeHostCommonTest, ContentsScaleForSurfaces) { | 4755 TEST_F(LayerTreeHostCommonTest, ContentsScaleForSurfaces) { |
4783 MockContentLayerClient delegate; | 4756 MockContentLayerClient delegate; |
4784 gfx::Transform identity_matrix; | 4757 gfx::Transform identity_matrix; |
4785 | 4758 |
4786 gfx::Transform parent_scale_matrix; | 4759 gfx::Transform parent_scale_matrix; |
4787 SkMScalar initial_parent_scale = 2.0; | 4760 SkMScalar initial_parent_scale = 2.0; |
4788 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); | 4761 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); |
4789 | 4762 |
4790 gfx::Transform child_scale_matrix; | 4763 gfx::Transform child_scale_matrix; |
4791 SkMScalar initial_child_scale = 3.0; | 4764 SkMScalar initial_child_scale = 3.0; |
4792 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); | 4765 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); |
4793 | 4766 |
4794 scoped_refptr<Layer> root = Layer::Create(); | 4767 scoped_refptr<Layer> root = Layer::Create(); |
4795 root->SetBounds(gfx::Size(100, 100)); | 4768 root->SetBounds(gfx::Size(100, 100)); |
4796 | 4769 |
4797 scoped_refptr<ContentLayer> parent = CreateDrawableContentLayer(&delegate); | 4770 scoped_refptr<FakePictureLayer> parent = |
4771 CreateDrawablePictureLayer(&delegate); | |
4798 SetLayerPropertiesForTesting(parent.get(), | 4772 SetLayerPropertiesForTesting(parent.get(), |
4799 parent_scale_matrix, | 4773 parent_scale_matrix, |
4800 gfx::Point3F(), | 4774 gfx::Point3F(), |
4801 gfx::PointF(), | 4775 gfx::PointF(), |
4802 gfx::Size(100, 100), | 4776 gfx::Size(100, 100), |
4803 false, | 4777 false, |
4804 true); | 4778 true); |
4805 | 4779 |
4806 scoped_refptr<ContentLayer> surface_scale = | 4780 scoped_refptr<FakePictureLayer> surface_scale = |
4807 CreateDrawableContentLayer(&delegate); | 4781 CreateDrawablePictureLayer(&delegate); |
4808 SetLayerPropertiesForTesting(surface_scale.get(), | 4782 SetLayerPropertiesForTesting(surface_scale.get(), |
4809 child_scale_matrix, | 4783 child_scale_matrix, |
4810 gfx::Point3F(), | 4784 gfx::Point3F(), |
4811 gfx::PointF(2.f, 2.f), | 4785 gfx::PointF(2.f, 2.f), |
4812 gfx::Size(10, 10), | 4786 gfx::Size(10, 10), |
4813 false, | 4787 false, |
4814 true); | 4788 true); |
4815 | 4789 |
4816 scoped_refptr<ContentLayer> surface_scale_child_scale = | 4790 scoped_refptr<FakePictureLayer> surface_scale_child_scale = |
4817 CreateDrawableContentLayer(&delegate); | 4791 CreateDrawablePictureLayer(&delegate); |
4818 SetLayerPropertiesForTesting(surface_scale_child_scale.get(), | 4792 SetLayerPropertiesForTesting(surface_scale_child_scale.get(), |
4819 child_scale_matrix, | 4793 child_scale_matrix, |
4820 gfx::Point3F(), | 4794 gfx::Point3F(), |
4821 gfx::PointF(), | 4795 gfx::PointF(), |
4822 gfx::Size(10, 10), | 4796 gfx::Size(10, 10), |
4823 false, | 4797 false, |
4824 true); | 4798 true); |
4825 | 4799 |
4826 scoped_refptr<NoScaleContentLayer> surface_scale_child_no_scale = | 4800 scoped_refptr<NoScalePictureLayer> surface_scale_child_no_scale = |
4827 CreateNoScaleDrawableContentLayer(&delegate); | 4801 CreateNoScaleDrawablePictureLayer(&delegate); |
4828 SetLayerPropertiesForTesting(surface_scale_child_no_scale.get(), | 4802 SetLayerPropertiesForTesting(surface_scale_child_no_scale.get(), |
4829 child_scale_matrix, | 4803 child_scale_matrix, |
4830 gfx::Point3F(), | 4804 gfx::Point3F(), |
4831 gfx::PointF(), | 4805 gfx::PointF(), |
4832 gfx::Size(10, 10), | 4806 gfx::Size(10, 10), |
4833 false, | 4807 false, |
4834 true); | 4808 true); |
4835 | 4809 |
4836 scoped_refptr<NoScaleContentLayer> surface_no_scale = | 4810 scoped_refptr<NoScaleContentLayer> surface_no_scale = |
4837 CreateNoScaleDrawableContentLayer(&delegate); | 4811 CreateNoScaleDrawableContentLayer(&delegate); |
4838 SetLayerPropertiesForTesting(surface_no_scale.get(), | 4812 SetLayerPropertiesForTesting(surface_no_scale.get(), |
4839 child_scale_matrix, | 4813 child_scale_matrix, |
4840 gfx::Point3F(), | 4814 gfx::Point3F(), |
4841 gfx::PointF(12.f, 12.f), | 4815 gfx::PointF(12.f, 12.f), |
4842 gfx::Size(10, 10), | 4816 gfx::Size(10, 10), |
4843 false, | 4817 false, |
4844 true); | 4818 true); |
4845 | 4819 |
4846 scoped_refptr<ContentLayer> surface_no_scale_child_scale = | 4820 scoped_refptr<FakePictureLayer> surface_no_scale_child_scale = |
4847 CreateDrawableContentLayer(&delegate); | 4821 CreateDrawablePictureLayer(&delegate); |
4848 SetLayerPropertiesForTesting(surface_no_scale_child_scale.get(), | 4822 SetLayerPropertiesForTesting(surface_no_scale_child_scale.get(), |
4849 child_scale_matrix, | 4823 child_scale_matrix, |
4850 gfx::Point3F(), | 4824 gfx::Point3F(), |
4851 gfx::PointF(), | 4825 gfx::PointF(), |
4852 gfx::Size(10, 10), | 4826 gfx::Size(10, 10), |
4853 false, | 4827 false, |
4854 true); | 4828 true); |
4855 | 4829 |
4856 scoped_refptr<NoScaleContentLayer> surface_no_scale_child_no_scale = | 4830 scoped_refptr<NoScaleContentLayer> surface_no_scale_child_no_scale = |
4857 CreateNoScaleDrawableContentLayer(&delegate); | 4831 CreateNoScaleDrawableContentLayer(&delegate); |
(...skipping 26 matching lines...) Expand all Loading... | |
4884 | 4858 |
4885 RenderSurfaceLayerList render_surface_layer_list; | 4859 RenderSurfaceLayerList render_surface_layer_list; |
4886 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 4860 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
4887 root.get(), root->bounds(), &render_surface_layer_list); | 4861 root.get(), root->bounds(), &render_surface_layer_list); |
4888 inputs.device_scale_factor = device_scale_factor; | 4862 inputs.device_scale_factor = device_scale_factor; |
4889 inputs.page_scale_factor = page_scale_factor; | 4863 inputs.page_scale_factor = page_scale_factor; |
4890 inputs.page_scale_application_layer = root.get(); | 4864 inputs.page_scale_application_layer = root.get(); |
4891 inputs.can_adjust_raster_scales = true; | 4865 inputs.can_adjust_raster_scales = true; |
4892 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 4866 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
4893 | 4867 |
4894 EXPECT_CONTENTS_SCALE_EQ( | 4868 EXPECT_CONTENTS_SCALE_EQ(1, parent); |
4895 device_scale_factor * page_scale_factor * initial_parent_scale, parent); | 4869 EXPECT_CONTENTS_SCALE_EQ(1, surface_scale); |
4896 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * | |
4897 initial_parent_scale * initial_child_scale, | |
4898 surface_scale); | |
4899 EXPECT_CONTENTS_SCALE_EQ(1, surface_no_scale); | 4870 EXPECT_CONTENTS_SCALE_EQ(1, surface_no_scale); |
4900 EXPECT_CONTENTS_SCALE_EQ( | 4871 EXPECT_CONTENTS_SCALE_EQ(1, surface_scale_child_scale); |
4901 device_scale_factor * page_scale_factor * initial_parent_scale * | |
4902 initial_child_scale * initial_child_scale, | |
4903 surface_scale_child_scale); | |
4904 EXPECT_CONTENTS_SCALE_EQ(1, surface_scale_child_no_scale); | 4872 EXPECT_CONTENTS_SCALE_EQ(1, surface_scale_child_no_scale); |
4905 EXPECT_CONTENTS_SCALE_EQ( | 4873 EXPECT_CONTENTS_SCALE_EQ(1, surface_no_scale_child_scale); |
4906 device_scale_factor * page_scale_factor * initial_parent_scale * | |
4907 initial_child_scale * initial_child_scale, | |
4908 surface_no_scale_child_scale); | |
4909 EXPECT_CONTENTS_SCALE_EQ(1, surface_no_scale_child_no_scale); | 4874 EXPECT_CONTENTS_SCALE_EQ(1, surface_no_scale_child_no_scale); |
4910 | 4875 |
4911 // The parent is scaled up and shouldn't need to scale during draw. | 4876 // The parent is not scaled up and should need to scale during draw. |
4912 EXPECT_FLOAT_EQ(1.0, parent->draw_transform().matrix().get(0, 0)); | 4877 EXPECT_FLOAT_EQ( |
4913 EXPECT_FLOAT_EQ(1.0, parent->draw_transform().matrix().get(1, 1)); | 4878 device_scale_factor * page_scale_factor * initial_parent_scale, |
4879 parent->draw_transform().matrix().get(0, 0)); | |
4880 EXPECT_FLOAT_EQ( | |
4881 device_scale_factor * page_scale_factor * initial_parent_scale, | |
4882 parent->draw_transform().matrix().get(1, 1)); | |
4914 | 4883 |
4915 // RenderSurfaces should always be 1:1 with their target. | 4884 // RenderSurfaces should always be 1:1 with their target. |
4916 EXPECT_FLOAT_EQ( | 4885 EXPECT_FLOAT_EQ( |
4917 1.0, | 4886 1, surface_scale->render_surface()->draw_transform().matrix().get(0, 0)); |
4918 surface_scale->render_surface()->draw_transform().matrix().get(0, 0)); | |
4919 EXPECT_FLOAT_EQ( | 4887 EXPECT_FLOAT_EQ( |
4920 1.0, | 4888 1, surface_scale->render_surface()->draw_transform().matrix().get(1, 1)); |
4921 surface_scale->render_surface()->draw_transform().matrix().get(1, 1)); | |
4922 | 4889 |
4923 // The surface_scale can apply contents scale so the layer shouldn't need to | 4890 // The surface_scale cannot apply contents scale so the layer would need to |
4924 // scale during draw. | 4891 // scale during draw. |
4925 EXPECT_FLOAT_EQ(1.0, surface_scale->draw_transform().matrix().get(0, 0)); | 4892 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * |
4926 EXPECT_FLOAT_EQ(1.0, surface_scale->draw_transform().matrix().get(1, 1)); | 4893 initial_parent_scale * initial_child_scale, |
4894 surface_scale->draw_transform().matrix().get(0, 0)); | |
4895 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * | |
4896 initial_parent_scale * initial_child_scale, | |
4897 surface_scale->draw_transform().matrix().get(1, 1)); | |
4927 | 4898 |
4928 // The surface_scale_child_scale can apply contents scale so it shouldn't need | 4899 // The surface_scale_child_scale cannot apply contents scale so it would need |
4929 // to scale during draw. | 4900 // to scale during draw. |
4930 EXPECT_FLOAT_EQ( | 4901 EXPECT_FLOAT_EQ( |
4931 1.0, surface_scale_child_scale->draw_transform().matrix().get(0, 0)); | 4902 device_scale_factor * page_scale_factor * initial_parent_scale * |
4903 initial_child_scale * initial_child_scale, | |
4904 surface_scale_child_scale->draw_transform().matrix().get(0, 0)); | |
4932 EXPECT_FLOAT_EQ( | 4905 EXPECT_FLOAT_EQ( |
4933 1.0, surface_scale_child_scale->draw_transform().matrix().get(1, 1)); | 4906 device_scale_factor * page_scale_factor * initial_parent_scale * |
4907 initial_child_scale * initial_child_scale, | |
4908 surface_scale_child_scale->draw_transform().matrix().get(1, 1)); | |
4934 | 4909 |
4935 // The surface_scale_child_no_scale can not apply contents scale, so it needs | 4910 // The surface_scale_child_no_scale can not apply contents scale, so it needs |
4936 // to be scaled during draw. | 4911 // to be scaled during draw. |
4937 EXPECT_FLOAT_EQ( | 4912 EXPECT_FLOAT_EQ( |
4938 device_scale_factor * page_scale_factor * initial_parent_scale * | 4913 device_scale_factor * page_scale_factor * initial_parent_scale * |
4939 initial_child_scale * initial_child_scale, | 4914 initial_child_scale * initial_child_scale, |
4940 surface_scale_child_no_scale->draw_transform().matrix().get(0, 0)); | 4915 surface_scale_child_no_scale->draw_transform().matrix().get(0, 0)); |
4941 EXPECT_FLOAT_EQ( | 4916 EXPECT_FLOAT_EQ( |
4942 device_scale_factor * page_scale_factor * initial_parent_scale * | 4917 device_scale_factor * page_scale_factor * initial_parent_scale * |
4943 initial_child_scale * initial_child_scale, | 4918 initial_child_scale * initial_child_scale, |
4944 surface_scale_child_no_scale->draw_transform().matrix().get(1, 1)); | 4919 surface_scale_child_no_scale->draw_transform().matrix().get(1, 1)); |
4945 | 4920 |
4946 // RenderSurfaces should always be 1:1 with their target. | 4921 // RenderSurfaces should always be 1:1 with their target. |
4947 EXPECT_FLOAT_EQ( | 4922 EXPECT_FLOAT_EQ( |
4948 1.0, | 4923 1, |
4949 surface_no_scale->render_surface()->draw_transform().matrix().get(0, 0)); | 4924 surface_no_scale->render_surface()->draw_transform().matrix().get(0, 0)); |
4950 EXPECT_FLOAT_EQ( | 4925 EXPECT_FLOAT_EQ( |
4951 1.0, | 4926 1, |
4952 surface_no_scale->render_surface()->draw_transform().matrix().get(1, 1)); | 4927 surface_no_scale->render_surface()->draw_transform().matrix().get(1, 1)); |
4953 | 4928 |
4954 // The surface_no_scale layer can not apply contents scale, so it needs to be | 4929 // The surface_no_scale layer can not apply contents scale, so it needs to be |
4955 // scaled during draw. | 4930 // scaled during draw. |
4956 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * | 4931 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * |
4957 initial_parent_scale * initial_child_scale, | 4932 initial_parent_scale * initial_child_scale, |
4958 surface_no_scale->draw_transform().matrix().get(0, 0)); | 4933 surface_no_scale->draw_transform().matrix().get(0, 0)); |
4959 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * | 4934 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor * |
4960 initial_parent_scale * initial_child_scale, | 4935 initial_parent_scale * initial_child_scale, |
4961 surface_no_scale->draw_transform().matrix().get(1, 1)); | 4936 surface_no_scale->draw_transform().matrix().get(1, 1)); |
4962 | 4937 |
4963 // The surface_scale_child_scale can apply contents scale so it shouldn't need | 4938 // The surface_scale_child_scale can not apply contents scale so it should |
4939 // need | |
4964 // to scale during draw. | 4940 // to scale during draw. |
4965 EXPECT_FLOAT_EQ( | 4941 EXPECT_FLOAT_EQ( |
4966 1.0, surface_no_scale_child_scale->draw_transform().matrix().get(0, 0)); | 4942 device_scale_factor * page_scale_factor * initial_parent_scale * |
4943 initial_child_scale * initial_child_scale, | |
4944 surface_no_scale_child_scale->draw_transform().matrix().get(0, 0)); | |
4967 EXPECT_FLOAT_EQ( | 4945 EXPECT_FLOAT_EQ( |
4968 1.0, surface_no_scale_child_scale->draw_transform().matrix().get(1, 1)); | 4946 device_scale_factor * page_scale_factor * initial_parent_scale * |
4947 initial_child_scale * initial_child_scale, | |
4948 surface_no_scale_child_scale->draw_transform().matrix().get(1, 1)); | |
4969 | 4949 |
4970 // The surface_scale_child_no_scale can not apply contents scale, so it needs | 4950 // The surface_scale_child_no_scale can not apply contents scale, so it needs |
4971 // to be scaled during draw. | 4951 // to be scaled during draw. |
4972 EXPECT_FLOAT_EQ( | 4952 EXPECT_FLOAT_EQ( |
4973 device_scale_factor * page_scale_factor * initial_parent_scale * | 4953 device_scale_factor * page_scale_factor * initial_parent_scale * |
4974 initial_child_scale * initial_child_scale, | 4954 initial_child_scale * initial_child_scale, |
4975 surface_no_scale_child_no_scale->draw_transform().matrix().get(0, 0)); | 4955 surface_no_scale_child_no_scale->draw_transform().matrix().get(0, 0)); |
4976 EXPECT_FLOAT_EQ( | 4956 EXPECT_FLOAT_EQ( |
4977 device_scale_factor * page_scale_factor * initial_parent_scale * | 4957 device_scale_factor * page_scale_factor * initial_parent_scale * |
4978 initial_child_scale * initial_child_scale, | 4958 initial_child_scale * initial_child_scale, |
4979 surface_no_scale_child_no_scale->draw_transform().matrix().get(1, 1)); | 4959 surface_no_scale_child_no_scale->draw_transform().matrix().get(1, 1)); |
4980 } | 4960 } |
4981 | 4961 |
4982 TEST_F(LayerTreeHostCommonTest, | 4962 TEST_F(LayerTreeHostCommonTest, |
4983 ContentsScaleForSurfaces_LayerTransformsDontAffectContentsScale) { | 4963 ContentsScaleForSurfaces_LayerTransformsDontAffectContentsScale) { |
4984 MockContentLayerClient delegate; | 4964 MockContentLayerClient delegate; |
4985 gfx::Transform identity_matrix; | 4965 gfx::Transform identity_matrix; |
4986 | 4966 |
4987 gfx::Transform parent_scale_matrix; | 4967 gfx::Transform parent_scale_matrix; |
4988 SkMScalar initial_parent_scale = 2.0; | 4968 SkMScalar initial_parent_scale = 2.0; |
4989 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); | 4969 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); |
4990 | 4970 |
4991 gfx::Transform child_scale_matrix; | 4971 gfx::Transform child_scale_matrix; |
4992 SkMScalar initial_child_scale = 3.0; | 4972 SkMScalar initial_child_scale = 3.0; |
4993 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); | 4973 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); |
4994 | 4974 |
4995 scoped_refptr<Layer> root = Layer::Create(); | 4975 scoped_refptr<Layer> root = Layer::Create(); |
4996 root->SetBounds(gfx::Size(100, 100)); | 4976 root->SetBounds(gfx::Size(100, 100)); |
4997 | 4977 |
4998 scoped_refptr<ContentLayer> parent = CreateDrawableContentLayer(&delegate); | 4978 scoped_refptr<FakePictureLayer> parent = |
4979 CreateDrawablePictureLayer(&delegate); | |
4999 SetLayerPropertiesForTesting(parent.get(), | 4980 SetLayerPropertiesForTesting(parent.get(), |
5000 parent_scale_matrix, | 4981 parent_scale_matrix, |
5001 gfx::Point3F(), | 4982 gfx::Point3F(), |
5002 gfx::PointF(), | 4983 gfx::PointF(), |
5003 gfx::Size(100, 100), | 4984 gfx::Size(100, 100), |
5004 false, | 4985 false, |
5005 true); | 4986 true); |
5006 | 4987 |
5007 scoped_refptr<ContentLayer> surface_scale = | 4988 scoped_refptr<FakePictureLayer> surface_scale = |
5008 CreateDrawableContentLayer(&delegate); | 4989 CreateDrawablePictureLayer(&delegate); |
5009 SetLayerPropertiesForTesting(surface_scale.get(), | 4990 SetLayerPropertiesForTesting(surface_scale.get(), |
5010 child_scale_matrix, | 4991 child_scale_matrix, |
5011 gfx::Point3F(), | 4992 gfx::Point3F(), |
5012 gfx::PointF(2.f, 2.f), | 4993 gfx::PointF(2.f, 2.f), |
5013 gfx::Size(10, 10), | 4994 gfx::Size(10, 10), |
5014 false, | 4995 false, |
5015 true); | 4996 true); |
5016 | 4997 |
5017 scoped_refptr<ContentLayer> surface_scale_child_scale = | 4998 scoped_refptr<FakePictureLayer> surface_scale_child_scale = |
5018 CreateDrawableContentLayer(&delegate); | 4999 CreateDrawablePictureLayer(&delegate); |
5019 SetLayerPropertiesForTesting(surface_scale_child_scale.get(), | 5000 SetLayerPropertiesForTesting(surface_scale_child_scale.get(), |
5020 child_scale_matrix, | 5001 child_scale_matrix, |
5021 gfx::Point3F(), | 5002 gfx::Point3F(), |
5022 gfx::PointF(), | 5003 gfx::PointF(), |
5023 gfx::Size(10, 10), | 5004 gfx::Size(10, 10), |
5024 false, | 5005 false, |
5025 true); | 5006 true); |
5026 | 5007 |
5027 scoped_refptr<NoScaleContentLayer> surface_scale_child_no_scale = | 5008 scoped_refptr<NoScalePictureLayer> surface_scale_child_no_scale = |
5028 CreateNoScaleDrawableContentLayer(&delegate); | 5009 CreateNoScaleDrawablePictureLayer(&delegate); |
5029 SetLayerPropertiesForTesting(surface_scale_child_no_scale.get(), | 5010 SetLayerPropertiesForTesting(surface_scale_child_no_scale.get(), |
5030 child_scale_matrix, | 5011 child_scale_matrix, |
5031 gfx::Point3F(), | 5012 gfx::Point3F(), |
5032 gfx::PointF(), | 5013 gfx::PointF(), |
5033 gfx::Size(10, 10), | 5014 gfx::Size(10, 10), |
5034 false, | 5015 false, |
5035 true); | 5016 true); |
5036 | 5017 |
5037 scoped_refptr<NoScaleContentLayer> surface_no_scale = | 5018 scoped_refptr<NoScalePictureLayer> surface_no_scale = |
5038 CreateNoScaleDrawableContentLayer(&delegate); | 5019 CreateNoScaleDrawablePictureLayer(&delegate); |
5039 SetLayerPropertiesForTesting(surface_no_scale.get(), | 5020 SetLayerPropertiesForTesting(surface_no_scale.get(), |
5040 child_scale_matrix, | 5021 child_scale_matrix, |
5041 gfx::Point3F(), | 5022 gfx::Point3F(), |
5042 gfx::PointF(12.f, 12.f), | 5023 gfx::PointF(12.f, 12.f), |
5043 gfx::Size(10, 10), | 5024 gfx::Size(10, 10), |
5044 false, | 5025 false, |
5045 true); | 5026 true); |
5046 | 5027 |
5047 scoped_refptr<ContentLayer> surface_no_scale_child_scale = | 5028 scoped_refptr<FakePictureLayer> surface_no_scale_child_scale = |
5048 CreateDrawableContentLayer(&delegate); | 5029 CreateDrawablePictureLayer(&delegate); |
5049 SetLayerPropertiesForTesting(surface_no_scale_child_scale.get(), | 5030 SetLayerPropertiesForTesting(surface_no_scale_child_scale.get(), |
5050 child_scale_matrix, | 5031 child_scale_matrix, |
5051 gfx::Point3F(), | 5032 gfx::Point3F(), |
5052 gfx::PointF(), | 5033 gfx::PointF(), |
5053 gfx::Size(10, 10), | 5034 gfx::Size(10, 10), |
5054 false, | 5035 false, |
5055 true); | 5036 true); |
5056 | 5037 |
5057 scoped_refptr<NoScaleContentLayer> surface_no_scale_child_no_scale = | 5038 scoped_refptr<NoScaleContentLayer> surface_no_scale_child_no_scale = |
5058 CreateNoScaleDrawableContentLayer(&delegate); | 5039 CreateNoScaleDrawableContentLayer(&delegate); |
(...skipping 25 matching lines...) Expand all Loading... | |
5084 | 5065 |
5085 SkMScalar device_scale_factor = 5.0; | 5066 SkMScalar device_scale_factor = 5.0; |
5086 SkMScalar page_scale_factor = 7.0; | 5067 SkMScalar page_scale_factor = 7.0; |
5087 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 5068 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
5088 root.get(), root->bounds(), &render_surface_layer_list); | 5069 root.get(), root->bounds(), &render_surface_layer_list); |
5089 inputs.device_scale_factor = device_scale_factor; | 5070 inputs.device_scale_factor = device_scale_factor; |
5090 inputs.page_scale_factor = page_scale_factor; | 5071 inputs.page_scale_factor = page_scale_factor; |
5091 inputs.page_scale_application_layer = root.get(); | 5072 inputs.page_scale_application_layer = root.get(); |
5092 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 5073 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
5093 | 5074 |
5094 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | 5075 EXPECT_CONTENTS_SCALE_EQ(1, parent); |
5095 parent); | 5076 EXPECT_CONTENTS_SCALE_EQ(1, surface_scale); |
5096 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | |
5097 surface_scale); | |
5098 EXPECT_CONTENTS_SCALE_EQ(1.f, surface_no_scale); | 5077 EXPECT_CONTENTS_SCALE_EQ(1.f, surface_no_scale); |
5099 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | 5078 EXPECT_CONTENTS_SCALE_EQ(1, surface_scale_child_scale); |
5100 surface_scale_child_scale); | |
5101 EXPECT_CONTENTS_SCALE_EQ(1.f, surface_scale_child_no_scale); | 5079 EXPECT_CONTENTS_SCALE_EQ(1.f, surface_scale_child_no_scale); |
5102 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, | 5080 EXPECT_CONTENTS_SCALE_EQ(1, surface_no_scale_child_scale); |
5103 surface_no_scale_child_scale); | |
5104 EXPECT_CONTENTS_SCALE_EQ(1.f, surface_no_scale_child_no_scale); | 5081 EXPECT_CONTENTS_SCALE_EQ(1.f, surface_no_scale_child_no_scale); |
5105 | 5082 |
5106 // The parent is scaled up during draw, since its contents are not scaled by | 5083 // The parent is not scaled up during draw, since its contents are scaled by |
5107 // the transform hierarchy. | 5084 // the transform hierarchy. |
5108 EXPECT_FLOAT_EQ(initial_parent_scale, | 5085 EXPECT_FLOAT_EQ( |
5109 parent->draw_transform().matrix().get(0, 0)); | 5086 device_scale_factor * page_scale_factor * initial_parent_scale, |
5110 EXPECT_FLOAT_EQ(initial_parent_scale, | 5087 parent->draw_transform().matrix().get(0, 0)); |
5111 parent->draw_transform().matrix().get(1, 1)); | 5088 EXPECT_FLOAT_EQ( |
5089 device_scale_factor * page_scale_factor * initial_parent_scale, | |
5090 parent->draw_transform().matrix().get(1, 1)); | |
5112 | 5091 |
5113 // The child surface is scaled up during draw since its subtree is not scaled | 5092 // The child surface is scaled up during draw since its subtree is not scaled |
5114 // by the transform hierarchy. | 5093 // by the transform hierarchy. |
5115 EXPECT_FLOAT_EQ( | 5094 EXPECT_FLOAT_EQ( |
5116 initial_parent_scale * initial_child_scale, | 5095 initial_parent_scale * initial_child_scale, |
5117 surface_scale->render_surface()->draw_transform().matrix().get(0, 0)); | 5096 surface_scale->render_surface()->draw_transform().matrix().get(0, 0)); |
5118 EXPECT_FLOAT_EQ( | 5097 EXPECT_FLOAT_EQ( |
5119 initial_parent_scale * initial_child_scale, | 5098 initial_parent_scale * initial_child_scale, |
5120 surface_scale->render_surface()->draw_transform().matrix().get(1, 1)); | 5099 surface_scale->render_surface()->draw_transform().matrix().get(1, 1)); |
5121 | 5100 |
5122 // The surface_scale's RenderSurface is scaled during draw, so the layer does | 5101 // The surface_scale's RenderSurface is not scaled during draw, so the layer |
5123 // not need to be scaled when drawing into its surface. | 5102 // need to be scaled when drawing into its surface. |
5124 EXPECT_FLOAT_EQ(1.0, surface_scale->draw_transform().matrix().get(0, 0)); | 5103 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor, |
5125 EXPECT_FLOAT_EQ(1.0, surface_scale->draw_transform().matrix().get(1, 1)); | 5104 surface_scale->draw_transform().matrix().get(0, 0)); |
5105 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor, | |
5106 surface_scale->draw_transform().matrix().get(1, 1)); | |
5126 | 5107 |
5127 // The surface_scale_child_scale is scaled when drawing into its surface, | 5108 // The surface_scale_child_scale is not scaled when drawing into its surface, |
5128 // since its content bounds are not scaled by the transform hierarchy. | 5109 // since its content bounds are scaled by the transform hierarchy. |
5129 EXPECT_FLOAT_EQ( | 5110 EXPECT_FLOAT_EQ( |
5130 initial_child_scale, | 5111 initial_child_scale * device_scale_factor * page_scale_factor, |
5131 surface_scale_child_scale->draw_transform().matrix().get(0, 0)); | 5112 surface_scale_child_scale->draw_transform().matrix().get(0, 0)); |
5132 EXPECT_FLOAT_EQ( | 5113 EXPECT_FLOAT_EQ( |
5133 initial_child_scale, | 5114 initial_child_scale * device_scale_factor * page_scale_factor, |
5134 surface_scale_child_scale->draw_transform().matrix().get(1, 1)); | 5115 surface_scale_child_scale->draw_transform().matrix().get(1, 1)); |
5135 | 5116 |
5136 // The surface_scale_child_no_scale has a fixed contents scale of 1, so it | 5117 // The surface_scale_child_no_scale has a fixed contents scale of 1, so it |
5137 // needs to be scaled by the device and page scale factors, along with the | 5118 // needs to be scaled by the device and page scale factors, along with the |
5138 // transform hierarchy. | 5119 // transform hierarchy. |
5139 EXPECT_FLOAT_EQ( | 5120 EXPECT_FLOAT_EQ( |
5140 device_scale_factor * page_scale_factor * initial_child_scale, | 5121 device_scale_factor * page_scale_factor * initial_child_scale, |
5141 surface_scale_child_no_scale->draw_transform().matrix().get(0, 0)); | 5122 surface_scale_child_no_scale->draw_transform().matrix().get(0, 0)); |
5142 EXPECT_FLOAT_EQ( | 5123 EXPECT_FLOAT_EQ( |
5143 device_scale_factor * page_scale_factor * initial_child_scale, | 5124 device_scale_factor * page_scale_factor * initial_child_scale, |
(...skipping 10 matching lines...) Expand all Loading... | |
5154 | 5135 |
5155 // The surface_no_scale layer has a fixed contents scale of 1, so it needs to | 5136 // The surface_no_scale layer has a fixed contents scale of 1, so it needs to |
5156 // be scaled by the device and page scale factors. Its surface is already | 5137 // be scaled by the device and page scale factors. Its surface is already |
5157 // scaled by the transform hierarchy so those don't need to scale the layer's | 5138 // scaled by the transform hierarchy so those don't need to scale the layer's |
5158 // drawing. | 5139 // drawing. |
5159 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor, | 5140 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor, |
5160 surface_no_scale->draw_transform().matrix().get(0, 0)); | 5141 surface_no_scale->draw_transform().matrix().get(0, 0)); |
5161 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor, | 5142 EXPECT_FLOAT_EQ(device_scale_factor * page_scale_factor, |
5162 surface_no_scale->draw_transform().matrix().get(1, 1)); | 5143 surface_no_scale->draw_transform().matrix().get(1, 1)); |
5163 | 5144 |
5164 // The surface_no_scale_child_scale has its contents scaled by the page and | 5145 // The surface_no_scale_child_scale doesnt have its contents scaled |
5165 // device scale factors, but needs to be scaled by the transform hierarchy | 5146 // by the page and device scale factors. |
5166 // when drawing. | |
5167 EXPECT_FLOAT_EQ( | 5147 EXPECT_FLOAT_EQ( |
5168 initial_child_scale, | 5148 initial_child_scale * device_scale_factor * page_scale_factor, |
5169 surface_no_scale_child_scale->draw_transform().matrix().get(0, 0)); | 5149 surface_no_scale_child_scale->draw_transform().matrix().get(0, 0)); |
5170 EXPECT_FLOAT_EQ( | 5150 EXPECT_FLOAT_EQ( |
5171 initial_child_scale, | 5151 initial_child_scale * device_scale_factor * page_scale_factor, |
5172 surface_no_scale_child_scale->draw_transform().matrix().get(1, 1)); | 5152 surface_no_scale_child_scale->draw_transform().matrix().get(1, 1)); |
5173 | 5153 |
5174 // The surface_no_scale_child_no_scale has a fixed contents scale of 1, so it | 5154 // The surface_no_scale_child_no_scale has a fixed contents scale of 1, so it |
5175 // needs to be scaled by the device and page scale factors. It also needs to | 5155 // needs to be scaled by the device and page scale factors. It also needs to |
5176 // be scaled by any transform heirarchy below its target surface. | 5156 // be scaled by any transform heirarchy below its target surface. |
5177 EXPECT_FLOAT_EQ( | 5157 EXPECT_FLOAT_EQ( |
5178 device_scale_factor * page_scale_factor * initial_child_scale, | 5158 device_scale_factor * page_scale_factor * initial_child_scale, |
5179 surface_no_scale_child_no_scale->draw_transform().matrix().get(0, 0)); | 5159 surface_no_scale_child_no_scale->draw_transform().matrix().get(0, 0)); |
5180 EXPECT_FLOAT_EQ( | 5160 EXPECT_FLOAT_EQ( |
5181 device_scale_factor * page_scale_factor * initial_child_scale, | 5161 device_scale_factor * page_scale_factor * initial_child_scale, |
5182 surface_no_scale_child_no_scale->draw_transform().matrix().get(1, 1)); | 5162 surface_no_scale_child_no_scale->draw_transform().matrix().get(1, 1)); |
5183 } | 5163 } |
5184 | 5164 |
5185 TEST_F(LayerTreeHostCommonTest, ContentsScaleForAnimatingLayer) { | 5165 TEST_F(LayerTreeHostCommonTest, ContentsScaleForAnimatingLayer) { |
5186 MockContentLayerClient delegate; | 5166 MockContentLayerClient delegate; |
5187 gfx::Transform identity_matrix; | 5167 gfx::Transform identity_matrix; |
5188 | 5168 |
5189 gfx::Transform parent_scale_matrix; | 5169 gfx::Transform parent_scale_matrix; |
5190 SkMScalar initial_parent_scale = 1.75; | 5170 SkMScalar initial_parent_scale = 1.75; |
5191 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); | 5171 parent_scale_matrix.Scale(initial_parent_scale, initial_parent_scale); |
5192 | 5172 |
5193 gfx::Transform child_scale_matrix; | 5173 gfx::Transform child_scale_matrix; |
5194 SkMScalar initial_child_scale = 1.25; | 5174 SkMScalar initial_child_scale = 1.25; |
5195 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); | 5175 child_scale_matrix.Scale(initial_child_scale, initial_child_scale); |
5196 | 5176 |
5197 scoped_refptr<Layer> root = Layer::Create(); | 5177 scoped_refptr<Layer> root = Layer::Create(); |
5198 root->SetBounds(gfx::Size(100, 100)); | 5178 root->SetBounds(gfx::Size(100, 100)); |
5199 | 5179 |
5200 scoped_refptr<ContentLayer> parent = CreateDrawableContentLayer(&delegate); | 5180 scoped_refptr<FakePictureLayer> parent = |
5181 CreateDrawablePictureLayer(&delegate); | |
5201 SetLayerPropertiesForTesting(parent.get(), | 5182 SetLayerPropertiesForTesting(parent.get(), |
5202 parent_scale_matrix, | 5183 parent_scale_matrix, |
5203 gfx::Point3F(), | 5184 gfx::Point3F(), |
5204 gfx::PointF(), | 5185 gfx::PointF(), |
5205 gfx::Size(100, 100), | 5186 gfx::Size(100, 100), |
5206 false, | 5187 false, |
5207 true); | 5188 true); |
5208 | 5189 |
5209 scoped_refptr<ContentLayer> child_scale = | 5190 scoped_refptr<FakePictureLayer> child_scale = |
5210 CreateDrawableContentLayer(&delegate); | 5191 CreateDrawablePictureLayer(&delegate); |
5211 SetLayerPropertiesForTesting(child_scale.get(), | 5192 SetLayerPropertiesForTesting(child_scale.get(), |
5212 child_scale_matrix, | 5193 child_scale_matrix, |
5213 gfx::Point3F(), | 5194 gfx::Point3F(), |
5214 gfx::PointF(2.f, 2.f), | 5195 gfx::PointF(2.f, 2.f), |
5215 gfx::Size(10, 10), | 5196 gfx::Size(10, 10), |
5216 false, | 5197 false, |
5217 true); | 5198 true); |
5218 | 5199 |
5219 root->AddChild(parent); | 5200 root->AddChild(parent); |
5220 | 5201 |
5221 parent->AddChild(child_scale); | 5202 parent->AddChild(child_scale); |
5222 | 5203 |
5223 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); | 5204 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); |
5224 host->SetRootLayer(root); | 5205 host->SetRootLayer(root); |
5225 | 5206 |
5226 // Now put an animating transform on child. | 5207 // Now put an animating transform on child. |
5227 int animation_id = AddAnimatedTransformToController( | 5208 int animation_id = AddAnimatedTransformToController( |
5228 child_scale->layer_animation_controller(), 10.0, 30, 0); | 5209 child_scale->layer_animation_controller(), 10.0, 30, 0); |
5229 | 5210 |
5230 { | 5211 { |
5231 RenderSurfaceLayerList render_surface_layer_list; | 5212 RenderSurfaceLayerList render_surface_layer_list; |
5232 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 5213 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
5233 root.get(), root->bounds(), &render_surface_layer_list); | 5214 root.get(), root->bounds(), &render_surface_layer_list); |
5234 inputs.can_adjust_raster_scales = true; | 5215 inputs.can_adjust_raster_scales = true; |
5235 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 5216 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
5236 | 5217 |
5237 EXPECT_CONTENTS_SCALE_EQ(initial_parent_scale, parent); | 5218 // Picturelayer's content scale is 1.f |
5219 EXPECT_CONTENTS_SCALE_EQ(1, parent); | |
5238 // The layers with animating transforms should not compute a contents scale | 5220 // The layers with animating transforms should not compute a contents scale |
5239 // other than 1 until they finish animating. | 5221 // other than 1 until they finish animating. |
5240 EXPECT_CONTENTS_SCALE_EQ(1, child_scale); | 5222 EXPECT_CONTENTS_SCALE_EQ(1, child_scale); |
5241 } | 5223 } |
5242 | 5224 |
5243 // Remove the animation, now it can save a raster scale. | 5225 // Remove the animation, now it can save a raster scale. |
5244 child_scale->layer_animation_controller()->RemoveAnimation(animation_id); | 5226 child_scale->layer_animation_controller()->RemoveAnimation(animation_id); |
5245 | 5227 |
5246 { | 5228 { |
5247 RenderSurfaceLayerList render_surface_layer_list; | 5229 RenderSurfaceLayerList render_surface_layer_list; |
5248 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 5230 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
5249 root.get(), root->bounds(), &render_surface_layer_list); | 5231 root.get(), root->bounds(), &render_surface_layer_list); |
5250 inputs.can_adjust_raster_scales = true; | 5232 inputs.can_adjust_raster_scales = true; |
5251 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 5233 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
5252 | 5234 |
5253 EXPECT_CONTENTS_SCALE_EQ(initial_parent_scale, parent); | 5235 EXPECT_CONTENTS_SCALE_EQ(1, parent); |
5254 // The layers with animating transforms should not compute a contents scale | 5236 // The layers with animating transforms should not compute a contents scale |
5255 // other than 1 until they finish animating. | 5237 // other than 1 until they finish animating. |
5256 EXPECT_CONTENTS_SCALE_EQ(initial_parent_scale * initial_child_scale, | 5238 EXPECT_CONTENTS_SCALE_EQ(1, child_scale); |
5257 child_scale); | |
5258 } | 5239 } |
5259 } | 5240 } |
5260 | 5241 |
5261 TEST_F(LayerTreeHostCommonTest, | 5242 TEST_F(LayerTreeHostCommonTest, |
5262 ChangeInContentBoundsOrScaleTriggersPushProperties) { | 5243 ChangeInContentBoundsOrScaleTriggersPushProperties) { |
5263 MockContentLayerClient delegate; | 5244 MockContentLayerClient delegate; |
5264 scoped_refptr<Layer> root = Layer::Create(); | 5245 scoped_refptr<Layer> root = Layer::Create(); |
5265 scoped_refptr<Layer> child = CreateDrawableContentLayer(&delegate); | 5246 scoped_refptr<FakePictureLayer> child = CreateDrawablePictureLayer(&delegate); |
5266 root->AddChild(child); | 5247 root->AddChild(child); |
5267 | 5248 |
5268 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); | 5249 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); |
5269 host->SetRootLayer(root); | 5250 host->SetRootLayer(root); |
5270 | 5251 |
5271 gfx::Transform identity_matrix; | 5252 gfx::Transform identity_matrix; |
5272 SetLayerPropertiesForTesting(root.get(), | 5253 SetLayerPropertiesForTesting(root.get(), |
5273 identity_matrix, | 5254 identity_matrix, |
5274 gfx::Point3F(), | 5255 gfx::Point3F(), |
5275 gfx::PointF(), | 5256 gfx::PointF(), |
(...skipping 12 matching lines...) Expand all Loading... | |
5288 child->reset_needs_push_properties_for_testing(); | 5269 child->reset_needs_push_properties_for_testing(); |
5289 | 5270 |
5290 // This will change both layers' content bounds. | 5271 // This will change both layers' content bounds. |
5291 ExecuteCalculateDrawProperties(root.get()); | 5272 ExecuteCalculateDrawProperties(root.get()); |
5292 EXPECT_TRUE(root->needs_push_properties()); | 5273 EXPECT_TRUE(root->needs_push_properties()); |
5293 EXPECT_TRUE(child->needs_push_properties()); | 5274 EXPECT_TRUE(child->needs_push_properties()); |
5294 | 5275 |
5295 root->reset_needs_push_properties_for_testing(); | 5276 root->reset_needs_push_properties_for_testing(); |
5296 child->reset_needs_push_properties_for_testing(); | 5277 child->reset_needs_push_properties_for_testing(); |
5297 | 5278 |
5298 // This will change only the child layer's contents scale and content bounds, | |
5299 // since the root layer is not a ContentsScalingLayer. | |
5300 ExecuteCalculateDrawProperties(root.get(), 2.f); | |
5301 EXPECT_FALSE(root->needs_push_properties()); | |
5302 EXPECT_TRUE(child->needs_push_properties()); | |
5303 | |
5304 root->reset_needs_push_properties_for_testing(); | |
5305 child->reset_needs_push_properties_for_testing(); | |
5306 | |
5307 // This will not change either layer's contents scale or content bounds. | 5279 // This will not change either layer's contents scale or content bounds. |
5308 ExecuteCalculateDrawProperties(root.get(), 2.f); | 5280 ExecuteCalculateDrawProperties(root.get(), 2.f); |
5309 EXPECT_FALSE(root->needs_push_properties()); | 5281 EXPECT_FALSE(root->needs_push_properties()); |
5310 EXPECT_FALSE(child->needs_push_properties()); | 5282 EXPECT_FALSE(child->needs_push_properties()); |
5311 } | 5283 } |
5312 | 5284 |
5313 TEST_F(LayerTreeHostCommonTest, RenderSurfaceTransformsInHighDPI) { | 5285 TEST_F(LayerTreeHostCommonTest, RenderSurfaceTransformsInHighDPI) { |
5314 MockContentLayerClient delegate; | 5286 MockContentLayerClient delegate; |
5315 gfx::Transform identity_matrix; | 5287 gfx::Transform identity_matrix; |
5316 | 5288 |
5317 scoped_refptr<ContentLayer> parent = CreateDrawableContentLayer(&delegate); | 5289 scoped_refptr<FakePictureLayer> parent = |
5290 CreateDrawablePictureLayer(&delegate); | |
5318 SetLayerPropertiesForTesting(parent.get(), | 5291 SetLayerPropertiesForTesting(parent.get(), |
5319 identity_matrix, | 5292 identity_matrix, |
5320 gfx::Point3F(), | 5293 gfx::Point3F(), |
5321 gfx::PointF(), | 5294 gfx::PointF(), |
5322 gfx::Size(30, 30), | 5295 gfx::Size(30, 30), |
5323 false, | 5296 false, |
5324 true); | 5297 true); |
5325 | 5298 |
5326 scoped_refptr<ContentLayer> child = CreateDrawableContentLayer(&delegate); | 5299 scoped_refptr<FakePictureLayer> child = CreateDrawablePictureLayer(&delegate); |
5327 SetLayerPropertiesForTesting(child.get(), | 5300 SetLayerPropertiesForTesting(child.get(), |
5328 identity_matrix, | 5301 identity_matrix, |
5329 gfx::Point3F(), | 5302 gfx::Point3F(), |
5330 gfx::PointF(2.f, 2.f), | 5303 gfx::PointF(2.f, 2.f), |
5331 gfx::Size(10, 10), | 5304 gfx::Size(10, 10), |
5332 false, | 5305 false, |
5333 true); | 5306 true); |
5334 | 5307 |
5335 gfx::Transform replica_transform; | 5308 gfx::Transform replica_transform; |
5336 replica_transform.Scale(1.0, -1.0); | 5309 replica_transform.Scale(1.0, -1.0); |
5337 scoped_refptr<ContentLayer> replica = CreateDrawableContentLayer(&delegate); | 5310 scoped_refptr<FakePictureLayer> replica = |
5311 CreateDrawablePictureLayer(&delegate); | |
5338 SetLayerPropertiesForTesting(replica.get(), | 5312 SetLayerPropertiesForTesting(replica.get(), |
5339 replica_transform, | 5313 replica_transform, |
5340 gfx::Point3F(), | 5314 gfx::Point3F(), |
5341 gfx::PointF(2.f, 2.f), | 5315 gfx::PointF(2.f, 2.f), |
5342 gfx::Size(10, 10), | 5316 gfx::Size(10, 10), |
5343 false, | 5317 false, |
5344 true); | 5318 true); |
5345 | 5319 |
5346 // This layer should end up in the same surface as child, with the same draw | 5320 // This layer should end up in the same surface as child, with the same draw |
5347 // and screen space transforms. | 5321 // and screen space transforms. |
5348 scoped_refptr<ContentLayer> duplicate_child_non_owner = | 5322 scoped_refptr<FakePictureLayer> duplicate_child_non_owner = |
5349 CreateDrawableContentLayer(&delegate); | 5323 CreateDrawablePictureLayer(&delegate); |
5350 SetLayerPropertiesForTesting(duplicate_child_non_owner.get(), | 5324 SetLayerPropertiesForTesting(duplicate_child_non_owner.get(), |
5351 identity_matrix, | 5325 identity_matrix, |
5352 gfx::Point3F(), | 5326 gfx::Point3F(), |
5353 gfx::PointF(), | 5327 gfx::PointF(), |
5354 gfx::Size(10, 10), | 5328 gfx::Size(10, 10), |
5355 false, | 5329 false, |
5356 true); | 5330 true); |
5357 | 5331 |
5358 parent->AddChild(child); | 5332 parent->AddChild(child); |
5359 child->AddChild(duplicate_child_non_owner); | 5333 child->AddChild(duplicate_child_non_owner); |
5360 child->SetReplicaLayer(replica.get()); | 5334 child->SetReplicaLayer(replica.get()); |
5361 | 5335 |
5362 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); | 5336 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); |
5363 host->SetRootLayer(parent); | 5337 host->SetRootLayer(parent); |
5364 | 5338 |
5365 RenderSurfaceLayerList render_surface_layer_list; | 5339 RenderSurfaceLayerList render_surface_layer_list; |
5366 | 5340 |
5367 float device_scale_factor = 1.5f; | 5341 float device_scale_factor = 1.5f; |
5368 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 5342 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
5369 parent.get(), parent->bounds(), &render_surface_layer_list); | 5343 parent.get(), parent->bounds(), &render_surface_layer_list); |
5370 inputs.device_scale_factor = device_scale_factor; | 5344 inputs.device_scale_factor = device_scale_factor; |
5371 inputs.can_adjust_raster_scales = true; | 5345 inputs.can_adjust_raster_scales = true; |
5372 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 5346 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
5373 | 5347 |
5374 // We should have two render surfaces. The root's render surface and child's | 5348 // We should have two render surfaces. The root's render surface and child's |
5375 // render surface (it needs one because it has a replica layer). | 5349 // render surface (it needs one because it has a replica layer). |
5376 EXPECT_EQ(2u, render_surface_layer_list.size()); | 5350 EXPECT_EQ(2u, render_surface_layer_list.size()); |
5377 | 5351 |
5378 gfx::Transform expected_parent_transform; | 5352 gfx::Transform expected_parent_transform; |
5353 expected_parent_transform.Scale(device_scale_factor, device_scale_factor); | |
5379 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, | 5354 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, |
5380 parent->screen_space_transform()); | 5355 parent->screen_space_transform()); |
5381 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, | 5356 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, |
5382 parent->draw_transform()); | 5357 parent->draw_transform()); |
5383 | 5358 |
5384 gfx::Transform expected_draw_transform; | 5359 gfx::Transform expected_draw_transform; |
5360 expected_draw_transform.Scale(device_scale_factor, device_scale_factor); | |
5385 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_draw_transform, | 5361 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_draw_transform, |
5386 child->draw_transform()); | 5362 child->draw_transform()); |
5387 | 5363 |
5388 gfx::Transform expected_screen_space_transform; | 5364 gfx::Transform expected_screen_space_transform; |
5389 expected_screen_space_transform.Translate( | 5365 expected_screen_space_transform.Translate( |
5390 device_scale_factor * child->position().x(), | 5366 device_scale_factor * child->position().x(), |
5391 device_scale_factor * child->position().y()); | 5367 device_scale_factor * child->position().y()); |
5368 expected_screen_space_transform.Scale(device_scale_factor, | |
5369 device_scale_factor); | |
5392 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_screen_space_transform, | 5370 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_screen_space_transform, |
5393 child->screen_space_transform()); | 5371 child->screen_space_transform()); |
5394 | 5372 |
5395 gfx::Transform expected_duplicate_child_draw_transform = | 5373 gfx::Transform expected_duplicate_child_draw_transform = |
5396 child->draw_transform(); | 5374 child->draw_transform(); |
5397 EXPECT_TRANSFORMATION_MATRIX_EQ(child->draw_transform(), | 5375 EXPECT_TRANSFORMATION_MATRIX_EQ(child->draw_transform(), |
5398 duplicate_child_non_owner->draw_transform()); | 5376 duplicate_child_non_owner->draw_transform()); |
5399 EXPECT_TRANSFORMATION_MATRIX_EQ( | 5377 EXPECT_TRANSFORMATION_MATRIX_EQ( |
5400 child->screen_space_transform(), | 5378 child->screen_space_transform(), |
5401 duplicate_child_non_owner->screen_space_transform()); | 5379 duplicate_child_non_owner->screen_space_transform()); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5442 EXPECT_TRANSFORMATION_MATRIX_EQ( | 5420 EXPECT_TRANSFORMATION_MATRIX_EQ( |
5443 expected_replica_screen_space_transform, | 5421 expected_replica_screen_space_transform, |
5444 child->render_surface()->replica_screen_space_transform()); | 5422 child->render_surface()->replica_screen_space_transform()); |
5445 } | 5423 } |
5446 | 5424 |
5447 TEST_F(LayerTreeHostCommonTest, | 5425 TEST_F(LayerTreeHostCommonTest, |
5448 RenderSurfaceTransformsInHighDPIAccurateScaleZeroPosition) { | 5426 RenderSurfaceTransformsInHighDPIAccurateScaleZeroPosition) { |
5449 MockContentLayerClient delegate; | 5427 MockContentLayerClient delegate; |
5450 gfx::Transform identity_matrix; | 5428 gfx::Transform identity_matrix; |
5451 | 5429 |
5452 scoped_refptr<ContentLayer> parent = CreateDrawableContentLayer(&delegate); | 5430 scoped_refptr<FakePictureLayer> parent = |
5431 CreateDrawablePictureLayer(&delegate); | |
5453 SetLayerPropertiesForTesting(parent.get(), | 5432 SetLayerPropertiesForTesting(parent.get(), |
5454 identity_matrix, | 5433 identity_matrix, |
5455 gfx::Point3F(), | 5434 gfx::Point3F(), |
5456 gfx::PointF(), | 5435 gfx::PointF(), |
5457 gfx::Size(33, 31), | 5436 gfx::Size(33, 31), |
5458 false, | 5437 false, |
5459 true); | 5438 true); |
5460 | 5439 |
5461 scoped_refptr<ContentLayer> child = CreateDrawableContentLayer(&delegate); | 5440 scoped_refptr<FakePictureLayer> child = CreateDrawablePictureLayer(&delegate); |
5462 SetLayerPropertiesForTesting(child.get(), | 5441 SetLayerPropertiesForTesting(child.get(), |
5463 identity_matrix, | 5442 identity_matrix, |
5464 gfx::Point3F(), | 5443 gfx::Point3F(), |
5465 gfx::PointF(), | 5444 gfx::PointF(), |
5466 gfx::Size(13, 11), | 5445 gfx::Size(13, 11), |
5467 false, | 5446 false, |
5468 true); | 5447 true); |
5469 | 5448 |
5470 gfx::Transform replica_transform; | 5449 gfx::Transform replica_transform; |
5471 replica_transform.Scale(1.0, -1.0); | 5450 replica_transform.Scale(1.0, -1.0); |
5472 scoped_refptr<ContentLayer> replica = CreateDrawableContentLayer(&delegate); | 5451 scoped_refptr<FakePictureLayer> replica = |
5452 CreateDrawablePictureLayer(&delegate); | |
5473 SetLayerPropertiesForTesting(replica.get(), | 5453 SetLayerPropertiesForTesting(replica.get(), |
5474 replica_transform, | 5454 replica_transform, |
5475 gfx::Point3F(), | 5455 gfx::Point3F(), |
5476 gfx::PointF(), | 5456 gfx::PointF(), |
5477 gfx::Size(13, 11), | 5457 gfx::Size(13, 11), |
5478 false, | 5458 false, |
5479 true); | 5459 true); |
5480 | 5460 |
5481 // This layer should end up in the same surface as child, with the same draw | 5461 // This layer should end up in the same surface as child, with the same draw |
5482 // and screen space transforms. | 5462 // and screen space transforms. |
5483 scoped_refptr<ContentLayer> duplicate_child_non_owner = | 5463 scoped_refptr<FakePictureLayer> duplicate_child_non_owner = |
5484 CreateDrawableContentLayer(&delegate); | 5464 CreateDrawablePictureLayer(&delegate); |
5485 SetLayerPropertiesForTesting(duplicate_child_non_owner.get(), | 5465 SetLayerPropertiesForTesting(duplicate_child_non_owner.get(), |
5486 identity_matrix, | 5466 identity_matrix, |
5487 gfx::Point3F(), | 5467 gfx::Point3F(), |
5488 gfx::PointF(), | 5468 gfx::PointF(), |
5489 gfx::Size(13, 11), | 5469 gfx::Size(13, 11), |
5490 false, | 5470 false, |
5491 true); | 5471 true); |
5492 | 5472 |
5493 parent->AddChild(child); | 5473 parent->AddChild(child); |
5494 child->AddChild(duplicate_child_non_owner); | 5474 child->AddChild(duplicate_child_non_owner); |
5495 child->SetReplicaLayer(replica.get()); | 5475 child->SetReplicaLayer(replica.get()); |
5496 | 5476 |
5497 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); | 5477 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(); |
5498 host->SetRootLayer(parent); | 5478 host->SetRootLayer(parent); |
5499 | 5479 |
5500 float device_scale_factor = 1.7f; | 5480 float device_scale_factor = 1.7f; |
5501 | 5481 |
5502 RenderSurfaceLayerList render_surface_layer_list; | 5482 RenderSurfaceLayerList render_surface_layer_list; |
5503 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 5483 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
5504 parent.get(), parent->bounds(), &render_surface_layer_list); | 5484 parent.get(), parent->bounds(), &render_surface_layer_list); |
5505 inputs.device_scale_factor = device_scale_factor; | 5485 inputs.device_scale_factor = device_scale_factor; |
5506 inputs.can_adjust_raster_scales = true; | 5486 inputs.can_adjust_raster_scales = true; |
5507 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 5487 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
5508 | 5488 |
5509 // We should have two render surfaces. The root's render surface and child's | 5489 // We should have two render surfaces. The root's render surface and child's |
5510 // render surface (it needs one because it has a replica layer). | 5490 // render surface (it needs one because it has a replica layer). |
5511 EXPECT_EQ(2u, render_surface_layer_list.size()); | 5491 EXPECT_EQ(2u, render_surface_layer_list.size()); |
5512 | 5492 |
5513 gfx::Transform identity_transform; | 5493 gfx::Transform transform; |
5514 | 5494 transform.Scale(device_scale_factor, device_scale_factor); |
5515 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_transform, | 5495 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, parent->screen_space_transform()); |
5516 parent->screen_space_transform()); | 5496 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, parent->draw_transform()); |
5517 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_transform, parent->draw_transform()); | 5497 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, child->draw_transform()); |
5518 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_transform, child->draw_transform()); | 5498 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, child->screen_space_transform()); |
5519 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_transform, | 5499 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, |
5520 child->screen_space_transform()); | |
5521 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_transform, | |
5522 duplicate_child_non_owner->draw_transform()); | 5500 duplicate_child_non_owner->draw_transform()); |
5523 EXPECT_TRANSFORMATION_MATRIX_EQ( | 5501 EXPECT_TRANSFORMATION_MATRIX_EQ( |
5524 identity_transform, duplicate_child_non_owner->screen_space_transform()); | 5502 transform, duplicate_child_non_owner->screen_space_transform()); |
5525 EXPECT_RECT_EQ(child->drawable_content_rect(), | 5503 EXPECT_RECT_EQ(child->drawable_content_rect(), |
5526 duplicate_child_non_owner->drawable_content_rect()); | 5504 duplicate_child_non_owner->drawable_content_rect()); |
5527 EXPECT_EQ(child->content_bounds(), | 5505 EXPECT_EQ(child->content_bounds(), |
5528 duplicate_child_non_owner->content_bounds()); | 5506 duplicate_child_non_owner->content_bounds()); |
5529 | 5507 |
5508 gfx::Transform identity_transform; | |
5530 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_transform, | 5509 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_transform, |
5531 child->render_surface()->draw_transform()); | 5510 child->render_surface()->draw_transform()); |
5532 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_transform, | 5511 EXPECT_TRANSFORMATION_MATRIX_EQ(identity_transform, |
5533 child->render_surface()->draw_transform()); | 5512 child->render_surface()->draw_transform()); |
5534 EXPECT_TRANSFORMATION_MATRIX_EQ( | 5513 EXPECT_TRANSFORMATION_MATRIX_EQ( |
5535 identity_transform, child->render_surface()->screen_space_transform()); | 5514 identity_transform, child->render_surface()->screen_space_transform()); |
5536 | 5515 |
5537 gfx::Transform expected_replica_draw_transform; | 5516 gfx::Transform expected_replica_draw_transform; |
5538 expected_replica_draw_transform.matrix().set(1, 1, -1.0); | 5517 expected_replica_draw_transform.matrix().set(1, 1, -1.0); |
5539 EXPECT_TRANSFORMATION_MATRIX_EQ( | 5518 EXPECT_TRANSFORMATION_MATRIX_EQ( |
(...skipping 3069 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
8609 // by the viewport. | 8588 // by the viewport. |
8610 EXPECT_EQ(gfx::Rect(768 / 2, 582 / 2), root->visible_content_rect()); | 8589 EXPECT_EQ(gfx::Rect(768 / 2, 582 / 2), root->visible_content_rect()); |
8611 | 8590 |
8612 // Layers drawing to a child render surface should still have their visible | 8591 // Layers drawing to a child render surface should still have their visible |
8613 // content rect clipped by the viewport. | 8592 // content rect clipped by the viewport. |
8614 EXPECT_EQ(gfx::Rect(768 / 2, 582 / 2), content->visible_content_rect()); | 8593 EXPECT_EQ(gfx::Rect(768 / 2, 582 / 2), content->visible_content_rect()); |
8615 } | 8594 } |
8616 | 8595 |
8617 } // namespace | 8596 } // namespace |
8618 } // namespace cc | 8597 } // namespace cc |
OLD | NEW |