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

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

Issue 1088773003: Reuse property trees (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove unrelated change Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/layer_tree_host_common.h" 5 #include "cc/trees/layer_tree_host_common.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 9
10 #include "cc/animation/layer_animation_controller.h" 10 #include "cc/animation/layer_animation_controller.h"
(...skipping 1165 matching lines...) Expand 10 before | Expand all | Expand 10 after
1176 true, 1176 true,
1177 false); 1177 false);
1178 1178
1179 gfx::Transform translate; 1179 gfx::Transform translate;
1180 translate.Translate(50, 50); 1180 translate.Translate(50, 50);
1181 { 1181 {
1182 RenderSurfaceLayerList render_surface_layer_list; 1182 RenderSurfaceLayerList render_surface_layer_list;
1183 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( 1183 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs(
1184 root.get(), root->bounds(), translate, &render_surface_layer_list); 1184 root.get(), root->bounds(), translate, &render_surface_layer_list);
1185 inputs.can_adjust_raster_scales = true; 1185 inputs.can_adjust_raster_scales = true;
1186 inputs.property_trees->needs_rebuild = true;
1186 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1187 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1187 EXPECT_EQ(translate, root->draw_properties().target_space_transform); 1188 EXPECT_EQ(translate, root->draw_properties().target_space_transform);
1188 EXPECT_EQ(translate, child->draw_properties().target_space_transform); 1189 EXPECT_EQ(translate, child->draw_properties().target_space_transform);
1189 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1190 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1190 EXPECT_EQ(1.f, root->draw_properties().device_scale_factor); 1191 EXPECT_EQ(1.f, root->draw_properties().device_scale_factor);
1191 EXPECT_EQ(1.f, child->draw_properties().device_scale_factor); 1192 EXPECT_EQ(1.f, child->draw_properties().device_scale_factor);
1192 } 1193 }
1193 1194
1194 gfx::Transform scale; 1195 gfx::Transform scale;
1195 scale.Scale(2, 2); 1196 scale.Scale(2, 2);
1196 { 1197 {
1197 RenderSurfaceLayerList render_surface_layer_list; 1198 RenderSurfaceLayerList render_surface_layer_list;
1198 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( 1199 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs(
1199 root.get(), root->bounds(), scale, &render_surface_layer_list); 1200 root.get(), root->bounds(), scale, &render_surface_layer_list);
1200 inputs.can_adjust_raster_scales = true; 1201 inputs.can_adjust_raster_scales = true;
1202 inputs.property_trees->needs_rebuild = true;
1201 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1203 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1202 EXPECT_EQ(scale, root->draw_properties().target_space_transform); 1204 EXPECT_EQ(scale, root->draw_properties().target_space_transform);
1203 EXPECT_EQ(scale, child->draw_properties().target_space_transform); 1205 EXPECT_EQ(scale, child->draw_properties().target_space_transform);
1204 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1206 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1205 EXPECT_EQ(2.f, root->draw_properties().device_scale_factor); 1207 EXPECT_EQ(2.f, root->draw_properties().device_scale_factor);
1206 EXPECT_EQ(2.f, child->draw_properties().device_scale_factor); 1208 EXPECT_EQ(2.f, child->draw_properties().device_scale_factor);
1207 } 1209 }
1208 1210
1209 gfx::Transform rotate; 1211 gfx::Transform rotate;
1210 rotate.Rotate(2); 1212 rotate.Rotate(2);
1211 { 1213 {
1212 RenderSurfaceLayerList render_surface_layer_list; 1214 RenderSurfaceLayerList render_surface_layer_list;
1213 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( 1215 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs(
1214 root.get(), root->bounds(), rotate, &render_surface_layer_list); 1216 root.get(), root->bounds(), rotate, &render_surface_layer_list);
1215 inputs.can_adjust_raster_scales = true; 1217 inputs.can_adjust_raster_scales = true;
1218 inputs.property_trees->needs_rebuild = true;
1216 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1219 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1217 EXPECT_EQ(rotate, root->draw_properties().target_space_transform); 1220 EXPECT_EQ(rotate, root->draw_properties().target_space_transform);
1218 EXPECT_EQ(rotate, child->draw_properties().target_space_transform); 1221 EXPECT_EQ(rotate, child->draw_properties().target_space_transform);
1219 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1222 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1220 EXPECT_EQ(1.f, root->draw_properties().device_scale_factor); 1223 EXPECT_EQ(1.f, root->draw_properties().device_scale_factor);
1221 EXPECT_EQ(1.f, child->draw_properties().device_scale_factor); 1224 EXPECT_EQ(1.f, child->draw_properties().device_scale_factor);
1222 } 1225 }
1223 1226
1224 gfx::Transform composite; 1227 gfx::Transform composite;
1225 composite.ConcatTransform(translate); 1228 composite.ConcatTransform(translate);
1226 composite.ConcatTransform(scale); 1229 composite.ConcatTransform(scale);
1227 composite.ConcatTransform(rotate); 1230 composite.ConcatTransform(rotate);
1228 { 1231 {
1229 RenderSurfaceLayerList render_surface_layer_list; 1232 RenderSurfaceLayerList render_surface_layer_list;
1230 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( 1233 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs(
1231 root.get(), root->bounds(), composite, &render_surface_layer_list); 1234 root.get(), root->bounds(), composite, &render_surface_layer_list);
1232 inputs.can_adjust_raster_scales = true; 1235 inputs.can_adjust_raster_scales = true;
1236 inputs.property_trees->needs_rebuild = true;
1233 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1237 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1234 EXPECT_EQ(composite, root->draw_properties().target_space_transform); 1238 EXPECT_EQ(composite, root->draw_properties().target_space_transform);
1235 EXPECT_EQ(composite, child->draw_properties().target_space_transform); 1239 EXPECT_EQ(composite, child->draw_properties().target_space_transform);
1236 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1240 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1237 } 1241 }
1238 1242
1239 // Verify it composes correctly with device scale. 1243 // Verify it composes correctly with device scale.
1240 float device_scale_factor = 1.5f; 1244 float device_scale_factor = 1.5f;
1241 1245
1242 { 1246 {
1243 RenderSurfaceLayerList render_surface_layer_list; 1247 RenderSurfaceLayerList render_surface_layer_list;
1244 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( 1248 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs(
1245 root.get(), root->bounds(), translate, &render_surface_layer_list); 1249 root.get(), root->bounds(), translate, &render_surface_layer_list);
1246 inputs.device_scale_factor = device_scale_factor; 1250 inputs.device_scale_factor = device_scale_factor;
1247 inputs.can_adjust_raster_scales = true; 1251 inputs.can_adjust_raster_scales = true;
1252 inputs.property_trees->needs_rebuild = true;
1248 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1253 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1249 gfx::Transform device_scaled_translate = translate; 1254 gfx::Transform device_scaled_translate = translate;
1250 device_scaled_translate.Scale(device_scale_factor, device_scale_factor); 1255 device_scaled_translate.Scale(device_scale_factor, device_scale_factor);
1251 EXPECT_EQ(device_scaled_translate, 1256 EXPECT_EQ(device_scaled_translate,
1252 root->draw_properties().target_space_transform); 1257 root->draw_properties().target_space_transform);
1253 EXPECT_EQ(device_scaled_translate, 1258 EXPECT_EQ(device_scaled_translate,
1254 child->draw_properties().target_space_transform); 1259 child->draw_properties().target_space_transform);
1255 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1260 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1256 EXPECT_EQ(device_scale_factor, root->draw_properties().device_scale_factor); 1261 EXPECT_EQ(device_scale_factor, root->draw_properties().device_scale_factor);
1257 EXPECT_EQ(device_scale_factor, 1262 EXPECT_EQ(device_scale_factor,
1258 child->draw_properties().device_scale_factor); 1263 child->draw_properties().device_scale_factor);
1259 } 1264 }
1260 1265
1261 // Verify it composes correctly with page scale. 1266 // Verify it composes correctly with page scale.
1262 float page_scale_factor = 2.f; 1267 float page_scale_factor = 2.f;
1263 1268
1264 { 1269 {
1265 RenderSurfaceLayerList render_surface_layer_list; 1270 RenderSurfaceLayerList render_surface_layer_list;
1266 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( 1271 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs(
1267 root.get(), root->bounds(), translate, &render_surface_layer_list); 1272 root.get(), root->bounds(), translate, &render_surface_layer_list);
1268 inputs.page_scale_factor = page_scale_factor; 1273 inputs.page_scale_factor = page_scale_factor;
1269 inputs.page_scale_application_layer = root.get(); 1274 inputs.page_scale_application_layer = root.get();
1270 inputs.can_adjust_raster_scales = true; 1275 inputs.can_adjust_raster_scales = true;
1276 inputs.property_trees->needs_rebuild = true;
1271 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 1277 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
1272 gfx::Transform page_scaled_translate = translate; 1278 gfx::Transform page_scaled_translate = translate;
1273 page_scaled_translate.Scale(page_scale_factor, page_scale_factor); 1279 page_scaled_translate.Scale(page_scale_factor, page_scale_factor);
1274 EXPECT_EQ(translate, root->draw_properties().target_space_transform); 1280 EXPECT_EQ(translate, root->draw_properties().target_space_transform);
1275 EXPECT_EQ(page_scaled_translate, 1281 EXPECT_EQ(page_scaled_translate,
1276 child->draw_properties().target_space_transform); 1282 child->draw_properties().target_space_transform);
1277 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); 1283 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform());
1278 EXPECT_EQ(1.f, root->draw_properties().device_scale_factor); 1284 EXPECT_EQ(1.f, root->draw_properties().device_scale_factor);
1279 EXPECT_EQ(1.f, child->draw_properties().device_scale_factor); 1285 EXPECT_EQ(1.f, child->draw_properties().device_scale_factor);
1280 } 1286 }
(...skipping 3415 matching lines...) Expand 10 before | Expand all | Expand 10 after
4696 page_scale_factor = 1.25f; 4702 page_scale_factor = 1.25f;
4697 4703
4698 { 4704 {
4699 RenderSurfaceLayerList render_surface_layer_list; 4705 RenderSurfaceLayerList render_surface_layer_list;
4700 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( 4706 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs(
4701 root.get(), root->bounds(), &render_surface_layer_list); 4707 root.get(), root->bounds(), &render_surface_layer_list);
4702 inputs.device_scale_factor = device_scale_factor; 4708 inputs.device_scale_factor = device_scale_factor;
4703 inputs.page_scale_factor = page_scale_factor; 4709 inputs.page_scale_factor = page_scale_factor;
4704 inputs.page_scale_application_layer = root.get(); 4710 inputs.page_scale_application_layer = root.get();
4705 inputs.can_adjust_raster_scales = true; 4711 inputs.can_adjust_raster_scales = true;
4712 inputs.property_trees->needs_rebuild = true;
4706 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 4713 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
4707 4714
4708 EXPECT_CONTENTS_SCALE_EQ( 4715 EXPECT_CONTENTS_SCALE_EQ(
4709 device_scale_factor * page_scale_factor * initial_parent_scale, parent); 4716 device_scale_factor * page_scale_factor * initial_parent_scale, parent);
4710 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * 4717 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor *
4711 initial_parent_scale * initial_child_scale, 4718 initial_parent_scale * initial_child_scale,
4712 child_scale); 4719 child_scale);
4713 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * 4720 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor *
4714 initial_parent_scale * initial_child_scale, 4721 initial_parent_scale * initial_child_scale,
4715 child_empty); 4722 child_empty);
4716 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); 4723 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale);
4717 } 4724 }
4718 4725
4719 // If the transform changes, we expect the raster scale to be reset to 1.0. 4726 // If the transform changes, we expect the raster scale to be reset to 1.0.
4720 SkMScalar second_child_scale = 1.75; 4727 SkMScalar second_child_scale = 1.75;
4721 child_scale_matrix.Scale(second_child_scale / initial_child_scale, 4728 child_scale_matrix.Scale(second_child_scale / initial_child_scale,
4722 second_child_scale / initial_child_scale); 4729 second_child_scale / initial_child_scale);
4723 child_scale->SetTransform(child_scale_matrix); 4730 child_scale->SetTransform(child_scale_matrix);
4724 child_empty->SetTransform(child_scale_matrix); 4731 child_empty->SetTransform(child_scale_matrix);
4725 4732
4726 { 4733 {
4727 RenderSurfaceLayerList render_surface_layer_list; 4734 RenderSurfaceLayerList render_surface_layer_list;
4728 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( 4735 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs(
4729 root.get(), root->bounds(), &render_surface_layer_list); 4736 root.get(), root->bounds(), &render_surface_layer_list);
4730 inputs.device_scale_factor = device_scale_factor; 4737 inputs.device_scale_factor = device_scale_factor;
4731 inputs.page_scale_factor = page_scale_factor; 4738 inputs.page_scale_factor = page_scale_factor;
4732 inputs.page_scale_application_layer = root.get(); 4739 inputs.page_scale_application_layer = root.get();
4733 inputs.can_adjust_raster_scales = true; 4740 inputs.can_adjust_raster_scales = true;
4741 inputs.property_trees->needs_rebuild = true;
4734 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 4742 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
4735 4743
4736 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * 4744 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor *
4737 initial_parent_scale, 4745 initial_parent_scale,
4738 parent); 4746 parent);
4739 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, 4747 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor,
4740 child_scale); 4748 child_scale);
4741 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, 4749 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor,
4742 child_empty); 4750 child_empty);
4743 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); 4751 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale);
4744 } 4752 }
4745 4753
4746 // If the device_scale_factor or page_scale_factor changes, then it should be 4754 // If the device_scale_factor or page_scale_factor changes, then it should be
4747 // updated, but still using 1.0 as the raster scale. 4755 // updated, but still using 1.0 as the raster scale.
4748 device_scale_factor = 2.75f; 4756 device_scale_factor = 2.75f;
4749 page_scale_factor = 1.75f; 4757 page_scale_factor = 1.75f;
4750 4758
4751 { 4759 {
4752 RenderSurfaceLayerList render_surface_layer_list; 4760 RenderSurfaceLayerList render_surface_layer_list;
4753 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( 4761 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs(
4754 root.get(), root->bounds(), &render_surface_layer_list); 4762 root.get(), root->bounds(), &render_surface_layer_list);
4755 inputs.device_scale_factor = device_scale_factor; 4763 inputs.device_scale_factor = device_scale_factor;
4756 inputs.page_scale_factor = page_scale_factor; 4764 inputs.page_scale_factor = page_scale_factor;
4757 inputs.page_scale_application_layer = root.get(); 4765 inputs.page_scale_application_layer = root.get();
4758 inputs.can_adjust_raster_scales = true; 4766 inputs.can_adjust_raster_scales = true;
4767 inputs.property_trees->needs_rebuild = true;
4759 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 4768 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
4760 4769
4761 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor * 4770 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor *
4762 initial_parent_scale, 4771 initial_parent_scale,
4763 parent); 4772 parent);
4764 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, 4773 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor,
4765 child_scale); 4774 child_scale);
4766 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor, 4775 EXPECT_CONTENTS_SCALE_EQ(device_scale_factor * page_scale_factor,
4767 child_empty); 4776 child_empty);
4768 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale); 4777 EXPECT_CONTENTS_SCALE_EQ(1, child_no_scale);
(...skipping 4385 matching lines...) Expand 10 before | Expand all | Expand 10 after
9154 9163
9155 scoped_ptr<FakeLayerTreeHost> host(CreateFakeLayerTreeHost()); 9164 scoped_ptr<FakeLayerTreeHost> host(CreateFakeLayerTreeHost());
9156 host->SetRootLayer(root); 9165 host->SetRootLayer(root);
9157 9166
9158 ExecuteCalculateDrawProperties(root.get()); 9167 ExecuteCalculateDrawProperties(root.get());
9159 9168
9160 gfx::Rect expected(0, 0, 50, 50); 9169 gfx::Rect expected(0, 0, 50, 50);
9161 EXPECT_EQ(expected, fixed->visible_rect_from_property_trees()); 9170 EXPECT_EQ(expected, fixed->visible_rect_from_property_trees());
9162 } 9171 }
9163 9172
9173 TEST_F(LayerTreeHostCommonTest, ChangingAxisAlignmentTriggersRebuild) {
9174 gfx::Transform identity;
9175 gfx::Transform translate;
9176 gfx::Transform rotate;
9177
9178 translate.Translate(10, 10);
9179 rotate.Rotate(45);
9180
9181 scoped_refptr<Layer> root = Layer::Create();
9182 SetLayerPropertiesForTesting(root.get(), identity, gfx::Point3F(),
9183 gfx::PointF(), gfx::Size(800, 800), true, false);
9184 root->SetIsContainerForFixedPositionLayers(true);
9185
9186 scoped_ptr<FakeLayerTreeHost> host(CreateFakeLayerTreeHost());
9187 host->SetRootLayer(root);
9188
9189 ExecuteCalculateDrawProperties(root.get());
9190
9191 root->SetTransform(translate);
9192 EXPECT_FALSE(host->property_trees()->needs_rebuild);
9193
9194 root->SetTransform(rotate);
9195 EXPECT_TRUE(host->property_trees()->needs_rebuild);
9196 }
9197
9164 } // namespace 9198 } // namespace
9165 } // namespace cc 9199 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698