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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; | 132 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; |
133 | 133 |
134 root_layer->layer_tree_impl()->SetDeviceScaleFactor(device_scale_factor); | 134 root_layer->layer_tree_impl()->SetDeviceScaleFactor(device_scale_factor); |
135 | 135 |
136 EXPECT_TRUE(page_scale_layer || (page_scale_factor == 1.f)); | 136 EXPECT_TRUE(page_scale_layer || (page_scale_factor == 1.f)); |
137 | 137 |
138 gfx::Size device_viewport_size = | 138 gfx::Size device_viewport_size = |
139 gfx::Size(root_layer->bounds().width() * device_scale_factor, | 139 gfx::Size(root_layer->bounds().width() * device_scale_factor, |
140 root_layer->bounds().height() * device_scale_factor); | 140 root_layer->bounds().height() * device_scale_factor); |
141 | 141 |
142 render_surface_layer_list_impl_.reset(new LayerImplList); | 142 render_surface_list_impl_.reset(new RenderSurfaceList); |
143 | 143 |
144 // We are probably not testing what is intended if the root_layer bounds are | 144 // We are probably not testing what is intended if the root_layer bounds are |
145 // empty. | 145 // empty. |
146 DCHECK(!root_layer->bounds().IsEmpty()); | 146 DCHECK(!root_layer->bounds().IsEmpty()); |
147 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 147 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
148 root_layer, device_viewport_size, | 148 root_layer, device_viewport_size, render_surface_list_impl_.get()); |
149 render_surface_layer_list_impl_.get()); | |
150 inputs.device_scale_factor = device_scale_factor; | 149 inputs.device_scale_factor = device_scale_factor; |
151 inputs.page_scale_factor = page_scale_factor; | 150 inputs.page_scale_factor = page_scale_factor; |
152 inputs.page_scale_layer = page_scale_layer; | 151 inputs.page_scale_layer = page_scale_layer; |
153 inputs.inner_viewport_scroll_layer = inner_viewport_scroll_layer; | 152 inputs.inner_viewport_scroll_layer = inner_viewport_scroll_layer; |
154 inputs.outer_viewport_scroll_layer = outer_viewport_scroll_layer; | 153 inputs.outer_viewport_scroll_layer = outer_viewport_scroll_layer; |
155 inputs.can_adjust_raster_scales = true; | 154 inputs.can_adjust_raster_scales = true; |
156 | 155 |
157 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 156 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
158 } | 157 } |
159 | 158 |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 root_layer->layer_tree_impl(), property_trees, | 250 root_layer->layer_tree_impl(), property_trees, |
252 update_layer_list_impl_.get()); | 251 update_layer_list_impl_.get()); |
253 draw_property_utils::ComputeDrawPropertiesOfVisibleLayers( | 252 draw_property_utils::ComputeDrawPropertiesOfVisibleLayers( |
254 update_layer_list_impl(), property_trees); | 253 update_layer_list_impl(), property_trees); |
255 } | 254 } |
256 | 255 |
257 void ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces( | 256 void ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces( |
258 LayerImpl* root_layer) { | 257 LayerImpl* root_layer) { |
259 gfx::Size device_viewport_size = | 258 gfx::Size device_viewport_size = |
260 gfx::Size(root_layer->bounds().width(), root_layer->bounds().height()); | 259 gfx::Size(root_layer->bounds().width(), root_layer->bounds().height()); |
261 render_surface_layer_list_impl_.reset(new LayerImplList); | 260 render_surface_list_impl_.reset(new RenderSurfaceList); |
262 | 261 |
263 DCHECK(!root_layer->bounds().IsEmpty()); | 262 DCHECK(!root_layer->bounds().IsEmpty()); |
264 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 263 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
265 root_layer, device_viewport_size, | 264 root_layer, device_viewport_size, render_surface_list_impl_.get()); |
266 render_surface_layer_list_impl_.get()); | |
267 inputs.can_adjust_raster_scales = true; | 265 inputs.can_adjust_raster_scales = true; |
268 inputs.can_render_to_separate_surface = false; | 266 inputs.can_render_to_separate_surface = false; |
269 | 267 |
270 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 268 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
271 } | 269 } |
272 | 270 |
273 void ExecuteCalculateDrawPropertiesWithoutAdjustingRasterScales( | 271 void ExecuteCalculateDrawPropertiesWithoutAdjustingRasterScales( |
274 LayerImpl* root_layer) { | 272 LayerImpl* root_layer) { |
275 gfx::Size device_viewport_size = | 273 gfx::Size device_viewport_size = |
276 gfx::Size(root_layer->bounds().width(), root_layer->bounds().height()); | 274 gfx::Size(root_layer->bounds().width(), root_layer->bounds().height()); |
277 render_surface_layer_list_impl_.reset(new LayerImplList); | 275 render_surface_list_impl_.reset(new RenderSurfaceList); |
278 | 276 |
279 DCHECK(!root_layer->bounds().IsEmpty()); | 277 DCHECK(!root_layer->bounds().IsEmpty()); |
280 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 278 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
281 root_layer, device_viewport_size, | 279 root_layer, device_viewport_size, render_surface_list_impl_.get()); |
282 render_surface_layer_list_impl_.get()); | |
283 inputs.can_render_to_separate_surface = true; | 280 inputs.can_render_to_separate_surface = true; |
284 inputs.can_adjust_raster_scales = false; | 281 inputs.can_adjust_raster_scales = false; |
285 | 282 |
286 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 283 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
287 } | 284 } |
288 | 285 |
289 bool UpdateLayerListImplContains(int id) const { | 286 bool UpdateLayerListImplContains(int id) const { |
290 for (auto* layer : *update_layer_list_impl_) { | 287 for (auto* layer : *update_layer_list_impl_) { |
291 if (layer->id() == id) | 288 if (layer->id() == id) |
292 return true; | 289 return true; |
293 } | 290 } |
294 return false; | 291 return false; |
295 } | 292 } |
296 | 293 |
297 bool UpdateLayerListContains(int id) const { | 294 bool UpdateLayerListContains(int id) const { |
298 for (const auto& layer : update_layer_list_) { | 295 for (const auto& layer : update_layer_list_) { |
299 if (layer->id() == id) | 296 if (layer->id() == id) |
300 return true; | 297 return true; |
301 } | 298 } |
302 return false; | 299 return false; |
303 } | 300 } |
304 | 301 |
305 const LayerImplList* render_surface_layer_list_impl() const { | 302 const RenderSurfaceList* render_surface_list_impl() const { |
306 return render_surface_layer_list_impl_.get(); | 303 return render_surface_list_impl_.get(); |
307 } | 304 } |
308 const LayerImplList* update_layer_list_impl() const { | 305 const LayerImplList* update_layer_list_impl() const { |
309 return update_layer_list_impl_.get(); | 306 return update_layer_list_impl_.get(); |
310 } | 307 } |
311 const LayerList& update_layer_list() const { return update_layer_list_; } | 308 const LayerList& update_layer_list() const { return update_layer_list_; } |
312 | 309 |
313 bool VerifyLayerInList(scoped_refptr<Layer> layer, | 310 bool VerifyLayerInList(scoped_refptr<Layer> layer, |
314 const LayerList* layer_list) { | 311 const LayerList* layer_list) { |
315 return std::find(layer_list->begin(), layer_list->end(), layer) != | 312 return std::find(layer_list->begin(), layer_list->end(), layer) != |
316 layer_list->end(); | 313 layer_list->end(); |
317 } | 314 } |
318 | 315 |
319 private: | 316 private: |
320 std::unique_ptr<std::vector<LayerImpl*>> render_surface_layer_list_impl_; | 317 std::unique_ptr<RenderSurfaceList> render_surface_list_impl_; |
321 LayerList update_layer_list_; | 318 LayerList update_layer_list_; |
322 std::unique_ptr<LayerImplList> update_layer_list_impl_; | 319 std::unique_ptr<LayerImplList> update_layer_list_impl_; |
323 }; | 320 }; |
324 | 321 |
325 class LayerTreeHostCommonTest : public LayerTreeHostCommonTestBase, | 322 class LayerTreeHostCommonTest : public LayerTreeHostCommonTestBase, |
326 public testing::Test {}; | 323 public testing::Test {}; |
327 | 324 |
328 class LayerWithForcedDrawsContent : public Layer { | 325 class LayerWithForcedDrawsContent : public Layer { |
329 public: | 326 public: |
330 LayerWithForcedDrawsContent() {} | 327 LayerWithForcedDrawsContent() {} |
(...skipping 861 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1192 render_surface->SetBounds(gfx::Size(100, 100)); | 1189 render_surface->SetBounds(gfx::Size(100, 100)); |
1193 render_surface->test_properties()->force_render_surface = true; | 1190 render_surface->test_properties()->force_render_surface = true; |
1194 child->test_properties()->transform = translate; | 1191 child->test_properties()->transform = translate; |
1195 child->SetBounds(gfx::Size(100, 100)); | 1192 child->SetBounds(gfx::Size(100, 100)); |
1196 grand_child->test_properties()->transform = translate; | 1193 grand_child->test_properties()->transform = translate; |
1197 grand_child->SetBounds(gfx::Size(100, 100)); | 1194 grand_child->SetBounds(gfx::Size(100, 100)); |
1198 grand_child->SetDrawsContent(true); | 1195 grand_child->SetDrawsContent(true); |
1199 | 1196 |
1200 // render_surface will have a sublayer scale because of device scale factor. | 1197 // render_surface will have a sublayer scale because of device scale factor. |
1201 float device_scale_factor = 2.0f; | 1198 float device_scale_factor = 2.0f; |
1202 LayerImplList render_surface_layer_list_impl; | 1199 RenderSurfaceList render_surface_list_impl; |
1203 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 1200 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
1204 root, root->bounds(), translate, &render_surface_layer_list_impl); | 1201 root, root->bounds(), translate, &render_surface_list_impl); |
1205 inputs.device_scale_factor = device_scale_factor; | 1202 inputs.device_scale_factor = device_scale_factor; |
1206 inputs.property_trees->needs_rebuild = true; | 1203 inputs.property_trees->needs_rebuild = true; |
1207 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 1204 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
1208 | 1205 |
1209 // Between grand_child and render_surface, we translate by (10, 10) and scale | 1206 // Between grand_child and render_surface, we translate by (10, 10) and scale |
1210 // by a factor of 2. | 1207 // by a factor of 2. |
1211 gfx::Vector2dF expected_translation(20.0f, 20.0f); | 1208 gfx::Vector2dF expected_translation(20.0f, 20.0f); |
1212 EXPECT_EQ(grand_child->DrawTransform().To2dTranslation(), | 1209 EXPECT_EQ(grand_child->DrawTransform().To2dTranslation(), |
1213 expected_translation); | 1210 expected_translation); |
1214 } | 1211 } |
1215 | 1212 |
1216 TEST_F(LayerTreeHostCommonTest, TransformAboveRootLayer) { | 1213 TEST_F(LayerTreeHostCommonTest, TransformAboveRootLayer) { |
1217 // Transformations applied at the root of the tree should be forwarded | 1214 // Transformations applied at the root of the tree should be forwarded |
1218 // to child layers instead of applied to the root RenderSurface. | 1215 // to child layers instead of applied to the root RenderSurface. |
1219 LayerImpl* root = root_layer_for_testing(); | 1216 LayerImpl* root = root_layer_for_testing(); |
1220 LayerImpl* child = AddChild<LayerImpl>(root); | 1217 LayerImpl* child = AddChild<LayerImpl>(root); |
1221 | 1218 |
1222 root->SetDrawsContent(true); | 1219 root->SetDrawsContent(true); |
1223 root->SetBounds(gfx::Size(100, 100)); | 1220 root->SetBounds(gfx::Size(100, 100)); |
1224 child->SetDrawsContent(true); | 1221 child->SetDrawsContent(true); |
1225 child->SetScrollClipLayer(root->id()); | 1222 child->SetScrollClipLayer(root->id()); |
1226 child->SetBounds(gfx::Size(100, 100)); | 1223 child->SetBounds(gfx::Size(100, 100)); |
1227 child->SetMasksToBounds(true); | 1224 child->SetMasksToBounds(true); |
1228 | 1225 |
1229 gfx::Transform translate; | 1226 gfx::Transform translate; |
1230 translate.Translate(50, 50); | 1227 translate.Translate(50, 50); |
1231 { | 1228 { |
1232 LayerImplList render_surface_layer_list_impl; | 1229 RenderSurfaceList render_surface_list_impl; |
1233 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 1230 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
1234 root, root->bounds(), translate, &render_surface_layer_list_impl); | 1231 root, root->bounds(), translate, &render_surface_list_impl); |
1235 inputs.property_trees->needs_rebuild = true; | 1232 inputs.property_trees->needs_rebuild = true; |
1236 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 1233 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
1237 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1234 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1238 translate, root->draw_properties().target_space_transform); | 1235 translate, root->draw_properties().target_space_transform); |
1239 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1236 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1240 translate, child->draw_properties().target_space_transform); | 1237 translate, child->draw_properties().target_space_transform); |
1241 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), | 1238 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), |
1242 root->GetRenderSurface()->draw_transform()); | 1239 root->GetRenderSurface()->draw_transform()); |
1243 EXPECT_TRANSFORMATION_MATRIX_EQ(translate, child->ScreenSpaceTransform()); | 1240 EXPECT_TRANSFORMATION_MATRIX_EQ(translate, child->ScreenSpaceTransform()); |
1244 EXPECT_EQ(gfx::Rect(50, 50, 100, 100), child->clip_rect()); | 1241 EXPECT_EQ(gfx::Rect(50, 50, 100, 100), child->clip_rect()); |
1245 } | 1242 } |
1246 | 1243 |
1247 gfx::Transform scale; | 1244 gfx::Transform scale; |
1248 scale.Scale(2, 2); | 1245 scale.Scale(2, 2); |
1249 { | 1246 { |
1250 LayerImplList render_surface_layer_list_impl; | 1247 RenderSurfaceList render_surface_list_impl; |
1251 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 1248 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
1252 root, root->bounds(), scale, &render_surface_layer_list_impl); | 1249 root, root->bounds(), scale, &render_surface_list_impl); |
1253 inputs.property_trees->needs_rebuild = true; | 1250 inputs.property_trees->needs_rebuild = true; |
1254 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 1251 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
1255 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1252 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1256 scale, root->draw_properties().target_space_transform); | 1253 scale, root->draw_properties().target_space_transform); |
1257 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1254 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1258 scale, child->draw_properties().target_space_transform); | 1255 scale, child->draw_properties().target_space_transform); |
1259 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), | 1256 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), |
1260 root->GetRenderSurface()->draw_transform()); | 1257 root->GetRenderSurface()->draw_transform()); |
1261 EXPECT_TRANSFORMATION_MATRIX_EQ(scale, child->ScreenSpaceTransform()); | 1258 EXPECT_TRANSFORMATION_MATRIX_EQ(scale, child->ScreenSpaceTransform()); |
1262 EXPECT_EQ(gfx::Rect(0, 0, 200, 200), child->clip_rect()); | 1259 EXPECT_EQ(gfx::Rect(0, 0, 200, 200), child->clip_rect()); |
1263 } | 1260 } |
1264 | 1261 |
1265 gfx::Transform rotate; | 1262 gfx::Transform rotate; |
1266 rotate.Rotate(2); | 1263 rotate.Rotate(2); |
1267 { | 1264 { |
1268 LayerImplList render_surface_layer_list_impl; | 1265 RenderSurfaceList render_surface_list_impl; |
1269 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 1266 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
1270 root, root->bounds(), rotate, &render_surface_layer_list_impl); | 1267 root, root->bounds(), rotate, &render_surface_list_impl); |
1271 inputs.property_trees->needs_rebuild = true; | 1268 inputs.property_trees->needs_rebuild = true; |
1272 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 1269 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
1273 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1270 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1274 rotate, root->draw_properties().target_space_transform); | 1271 rotate, root->draw_properties().target_space_transform); |
1275 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1272 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1276 rotate, child->draw_properties().target_space_transform); | 1273 rotate, child->draw_properties().target_space_transform); |
1277 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), | 1274 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), |
1278 root->GetRenderSurface()->draw_transform()); | 1275 root->GetRenderSurface()->draw_transform()); |
1279 EXPECT_TRANSFORMATION_MATRIX_EQ(rotate, child->ScreenSpaceTransform()); | 1276 EXPECT_TRANSFORMATION_MATRIX_EQ(rotate, child->ScreenSpaceTransform()); |
1280 EXPECT_EQ(gfx::Rect(-4, 0, 104, 104), child->clip_rect()); | 1277 EXPECT_EQ(gfx::Rect(-4, 0, 104, 104), child->clip_rect()); |
1281 } | 1278 } |
1282 | 1279 |
1283 gfx::Transform composite; | 1280 gfx::Transform composite; |
1284 composite.ConcatTransform(translate); | 1281 composite.ConcatTransform(translate); |
1285 composite.ConcatTransform(scale); | 1282 composite.ConcatTransform(scale); |
1286 composite.ConcatTransform(rotate); | 1283 composite.ConcatTransform(rotate); |
1287 { | 1284 { |
1288 LayerImplList render_surface_layer_list_impl; | 1285 RenderSurfaceList render_surface_list_impl; |
1289 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 1286 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
1290 root, root->bounds(), composite, &render_surface_layer_list_impl); | 1287 root, root->bounds(), composite, &render_surface_list_impl); |
1291 inputs.property_trees->needs_rebuild = true; | 1288 inputs.property_trees->needs_rebuild = true; |
1292 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 1289 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
1293 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1290 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1294 composite, root->draw_properties().target_space_transform); | 1291 composite, root->draw_properties().target_space_transform); |
1295 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1292 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1296 composite, child->draw_properties().target_space_transform); | 1293 composite, child->draw_properties().target_space_transform); |
1297 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), | 1294 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), |
1298 root->GetRenderSurface()->draw_transform()); | 1295 root->GetRenderSurface()->draw_transform()); |
1299 EXPECT_TRANSFORMATION_MATRIX_EQ(composite, child->ScreenSpaceTransform()); | 1296 EXPECT_TRANSFORMATION_MATRIX_EQ(composite, child->ScreenSpaceTransform()); |
1300 EXPECT_EQ(gfx::Rect(89, 103, 208, 208), child->clip_rect()); | 1297 EXPECT_EQ(gfx::Rect(89, 103, 208, 208), child->clip_rect()); |
1301 } | 1298 } |
1302 | 1299 |
1303 // Verify it composes correctly with device scale. | 1300 // Verify it composes correctly with device scale. |
1304 float device_scale_factor = 1.5f; | 1301 float device_scale_factor = 1.5f; |
1305 | 1302 |
1306 { | 1303 { |
1307 LayerImplList render_surface_layer_list_impl; | 1304 RenderSurfaceList render_surface_list_impl; |
1308 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 1305 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
1309 root, root->bounds(), translate, &render_surface_layer_list_impl); | 1306 root, root->bounds(), translate, &render_surface_list_impl); |
1310 inputs.device_scale_factor = device_scale_factor; | 1307 inputs.device_scale_factor = device_scale_factor; |
1311 inputs.property_trees->needs_rebuild = true; | 1308 inputs.property_trees->needs_rebuild = true; |
1312 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 1309 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
1313 gfx::Transform device_scaled_translate = translate; | 1310 gfx::Transform device_scaled_translate = translate; |
1314 device_scaled_translate.Scale(device_scale_factor, device_scale_factor); | 1311 device_scaled_translate.Scale(device_scale_factor, device_scale_factor); |
1315 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1312 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1316 device_scaled_translate, | 1313 device_scaled_translate, |
1317 root->draw_properties().target_space_transform); | 1314 root->draw_properties().target_space_transform); |
1318 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1315 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1319 device_scaled_translate, | 1316 device_scaled_translate, |
1320 child->draw_properties().target_space_transform); | 1317 child->draw_properties().target_space_transform); |
1321 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), | 1318 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), |
1322 root->GetRenderSurface()->draw_transform()); | 1319 root->GetRenderSurface()->draw_transform()); |
1323 EXPECT_TRANSFORMATION_MATRIX_EQ(device_scaled_translate, | 1320 EXPECT_TRANSFORMATION_MATRIX_EQ(device_scaled_translate, |
1324 child->ScreenSpaceTransform()); | 1321 child->ScreenSpaceTransform()); |
1325 EXPECT_EQ(gfx::Rect(50, 50, 150, 150), child->clip_rect()); | 1322 EXPECT_EQ(gfx::Rect(50, 50, 150, 150), child->clip_rect()); |
1326 } | 1323 } |
1327 | 1324 |
1328 // Verify it composes correctly with page scale. | 1325 // Verify it composes correctly with page scale. |
1329 float page_scale_factor = 2.f; | 1326 float page_scale_factor = 2.f; |
1330 | 1327 |
1331 { | 1328 { |
1332 LayerImplList render_surface_layer_list_impl; | 1329 RenderSurfaceList render_surface_list_impl; |
1333 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 1330 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
1334 root, root->bounds(), translate, &render_surface_layer_list_impl); | 1331 root, root->bounds(), translate, &render_surface_list_impl); |
1335 inputs.page_scale_factor = page_scale_factor; | 1332 inputs.page_scale_factor = page_scale_factor; |
1336 inputs.page_scale_layer = root; | 1333 inputs.page_scale_layer = root; |
1337 inputs.property_trees->needs_rebuild = true; | 1334 inputs.property_trees->needs_rebuild = true; |
1338 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 1335 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
1339 gfx::Transform page_scaled_translate = translate; | 1336 gfx::Transform page_scaled_translate = translate; |
1340 page_scaled_translate.Scale(page_scale_factor, page_scale_factor); | 1337 page_scaled_translate.Scale(page_scale_factor, page_scale_factor); |
1341 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1338 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1342 page_scaled_translate, root->draw_properties().target_space_transform); | 1339 page_scaled_translate, root->draw_properties().target_space_transform); |
1343 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1340 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1344 page_scaled_translate, child->draw_properties().target_space_transform); | 1341 page_scaled_translate, child->draw_properties().target_space_transform); |
1345 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), | 1342 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), |
1346 root->GetRenderSurface()->draw_transform()); | 1343 root->GetRenderSurface()->draw_transform()); |
1347 EXPECT_TRANSFORMATION_MATRIX_EQ(page_scaled_translate, | 1344 EXPECT_TRANSFORMATION_MATRIX_EQ(page_scaled_translate, |
1348 child->ScreenSpaceTransform()); | 1345 child->ScreenSpaceTransform()); |
1349 EXPECT_EQ(gfx::Rect(50, 50, 200, 200), child->clip_rect()); | 1346 EXPECT_EQ(gfx::Rect(50, 50, 200, 200), child->clip_rect()); |
1350 } | 1347 } |
1351 | 1348 |
1352 // Verify that it composes correctly with transforms directly on root layer. | 1349 // Verify that it composes correctly with transforms directly on root layer. |
1353 root->test_properties()->transform = composite; | 1350 root->test_properties()->transform = composite; |
1354 | 1351 |
1355 { | 1352 { |
1356 LayerImplList render_surface_layer_list_impl; | 1353 RenderSurfaceList render_surface_list_impl; |
1357 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 1354 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
1358 root, root->bounds(), composite, &render_surface_layer_list_impl); | 1355 root, root->bounds(), composite, &render_surface_list_impl); |
1359 inputs.property_trees->needs_rebuild = true; | 1356 inputs.property_trees->needs_rebuild = true; |
1360 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 1357 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
1361 gfx::Transform compositeSquared = composite; | 1358 gfx::Transform compositeSquared = composite; |
1362 compositeSquared.ConcatTransform(composite); | 1359 compositeSquared.ConcatTransform(composite); |
1363 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1360 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1364 compositeSquared, root->draw_properties().target_space_transform); | 1361 compositeSquared, root->draw_properties().target_space_transform); |
1365 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1362 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1366 compositeSquared, child->draw_properties().target_space_transform); | 1363 compositeSquared, child->draw_properties().target_space_transform); |
1367 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), | 1364 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), |
1368 root->GetRenderSurface()->draw_transform()); | 1365 root->GetRenderSurface()->draw_transform()); |
(...skipping 17 matching lines...) Expand all Loading... |
1386 child->SetPosition(gfx::PointF(30.f, 30.f)); | 1383 child->SetPosition(gfx::PointF(30.f, 30.f)); |
1387 child->SetBounds(gfx::Size(10, 10)); | 1384 child->SetBounds(gfx::Size(10, 10)); |
1388 ExecuteCalculateDrawProperties(root); | 1385 ExecuteCalculateDrawProperties(root); |
1389 | 1386 |
1390 // The child layer's content is entirely outside the root's clip rect, so | 1387 // The child layer's content is entirely outside the root's clip rect, so |
1391 // the intermediate render surface should not be listed here, even if it was | 1388 // the intermediate render surface should not be listed here, even if it was |
1392 // forced to be created. Render surfaces without children or visible content | 1389 // forced to be created. Render surfaces without children or visible content |
1393 // are unexpected at draw time (e.g. we might try to create a content texture | 1390 // are unexpected at draw time (e.g. we might try to create a content texture |
1394 // of size 0). | 1391 // of size 0). |
1395 ASSERT_TRUE(root->GetRenderSurface()); | 1392 ASSERT_TRUE(root->GetRenderSurface()); |
1396 EXPECT_EQ(1U, render_surface_layer_list_impl()->size()); | 1393 EXPECT_EQ(1U, render_surface_list_impl()->size()); |
1397 } | 1394 } |
1398 | 1395 |
1399 TEST_F(LayerTreeHostCommonTest, RenderSurfaceListForTransparentChild) { | 1396 TEST_F(LayerTreeHostCommonTest, RenderSurfaceListForTransparentChild) { |
1400 LayerImpl* root = root_layer_for_testing(); | 1397 LayerImpl* root = root_layer_for_testing(); |
1401 LayerImpl* render_surface1 = AddChild<LayerImpl>(root); | 1398 LayerImpl* render_surface1 = AddChild<LayerImpl>(root); |
1402 LayerImpl* child = AddChild<LayerImpl>(render_surface1); | 1399 LayerImpl* child = AddChild<LayerImpl>(render_surface1); |
1403 | 1400 |
1404 render_surface1->SetBounds(gfx::Size(10, 10)); | 1401 render_surface1->SetBounds(gfx::Size(10, 10)); |
1405 render_surface1->test_properties()->force_render_surface = true; | 1402 render_surface1->test_properties()->force_render_surface = true; |
1406 render_surface1->test_properties()->opacity = 0.f; | 1403 render_surface1->test_properties()->opacity = 0.f; |
1407 child->SetBounds(gfx::Size(10, 10)); | 1404 child->SetBounds(gfx::Size(10, 10)); |
1408 child->SetDrawsContent(true); | 1405 child->SetDrawsContent(true); |
1409 | 1406 |
1410 LayerImplList render_surface_layer_list; | 1407 RenderSurfaceList render_surface_list; |
1411 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 1408 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
1412 root, root->bounds(), &render_surface_layer_list); | 1409 root, root->bounds(), &render_surface_list); |
1413 inputs.can_adjust_raster_scales = true; | 1410 inputs.can_adjust_raster_scales = true; |
1414 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 1411 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
1415 | 1412 |
1416 // Since the layer is transparent, render_surface1->GetRenderSurface() should | 1413 // Since the layer is transparent, render_surface1->GetRenderSurface() should |
1417 // not have gotten added anywhere. Also, the drawable content rect should not | 1414 // not have gotten added anywhere. Also, the drawable content rect should not |
1418 // have been extended by the children. | 1415 // have been extended by the children. |
1419 ASSERT_TRUE(root->GetRenderSurface()); | 1416 ASSERT_TRUE(root->GetRenderSurface()); |
1420 EXPECT_EQ(0U, root->GetRenderSurface()->layer_list().size()); | 1417 EXPECT_EQ(0, root->GetRenderSurface()->num_contributors()); |
1421 EXPECT_EQ(1U, render_surface_layer_list.size()); | 1418 EXPECT_EQ(1U, render_surface_list.size()); |
1422 EXPECT_EQ(root->id(), render_surface_layer_list.at(0)->id()); | 1419 EXPECT_EQ(root->id(), render_surface_list.at(0)->id()); |
1423 EXPECT_EQ(gfx::Rect(), root->drawable_content_rect()); | 1420 EXPECT_EQ(gfx::Rect(), root->drawable_content_rect()); |
1424 } | 1421 } |
1425 | 1422 |
1426 TEST_F(LayerTreeHostCommonTest, | 1423 TEST_F(LayerTreeHostCommonTest, |
1427 RenderSurfaceListForTransparentChildWithBackgroundFilter) { | 1424 RenderSurfaceListForTransparentChildWithBackgroundFilter) { |
1428 LayerImpl* root = root_layer_for_testing(); | 1425 LayerImpl* root = root_layer_for_testing(); |
1429 LayerImpl* render_surface1 = AddChild<LayerImpl>(root); | 1426 LayerImpl* render_surface1 = AddChild<LayerImpl>(root); |
1430 LayerImpl* child = AddChild<LayerImpl>(render_surface1); | 1427 LayerImpl* child = AddChild<LayerImpl>(render_surface1); |
1431 | 1428 |
1432 root->SetBounds(gfx::Size(10, 10)); | 1429 root->SetBounds(gfx::Size(10, 10)); |
1433 render_surface1->SetBounds(gfx::Size(10, 10)); | 1430 render_surface1->SetBounds(gfx::Size(10, 10)); |
1434 render_surface1->test_properties()->force_render_surface = true; | 1431 render_surface1->test_properties()->force_render_surface = true; |
1435 render_surface1->test_properties()->opacity = 0.f; | 1432 render_surface1->test_properties()->opacity = 0.f; |
1436 render_surface1->SetDrawsContent(true); | 1433 render_surface1->SetDrawsContent(true); |
1437 FilterOperations filters; | 1434 FilterOperations filters; |
1438 filters.Append(FilterOperation::CreateBlurFilter(1.5f)); | 1435 filters.Append(FilterOperation::CreateBlurFilter(1.5f)); |
1439 render_surface1->test_properties()->background_filters = filters; | 1436 render_surface1->test_properties()->background_filters = filters; |
1440 child->SetBounds(gfx::Size(10, 10)); | 1437 child->SetBounds(gfx::Size(10, 10)); |
1441 child->SetDrawsContent(true); | 1438 child->SetDrawsContent(true); |
1442 root->layer_tree_impl()->SetElementIdsForTesting(); | 1439 root->layer_tree_impl()->SetElementIdsForTesting(); |
1443 | 1440 |
1444 { | 1441 { |
1445 LayerImplList render_surface_layer_list; | 1442 RenderSurfaceList render_surface_list; |
1446 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 1443 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
1447 root, root->bounds(), &render_surface_layer_list); | 1444 root, root->bounds(), &render_surface_list); |
1448 inputs.can_adjust_raster_scales = true; | 1445 inputs.can_adjust_raster_scales = true; |
1449 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 1446 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
1450 EXPECT_EQ(2U, render_surface_layer_list.size()); | 1447 EXPECT_EQ(2U, render_surface_list.size()); |
1451 } | 1448 } |
1452 // The layer is fully transparent, but has a background filter, so it | 1449 // The layer is fully transparent, but has a background filter, so it |
1453 // shouldn't be skipped and should be drawn. | 1450 // shouldn't be skipped and should be drawn. |
1454 ASSERT_TRUE(root->GetRenderSurface()); | 1451 ASSERT_TRUE(root->GetRenderSurface()); |
1455 EXPECT_EQ(1U, root->GetRenderSurface()->layer_list().size()); | 1452 EXPECT_EQ(1, root->GetRenderSurface()->num_contributors()); |
1456 EXPECT_EQ(gfx::RectF(0, 0, 10, 10), | 1453 EXPECT_EQ(gfx::RectF(0, 0, 10, 10), |
1457 root->GetRenderSurface()->DrawableContentRect()); | 1454 root->GetRenderSurface()->DrawableContentRect()); |
1458 EffectTree& effect_tree = | 1455 EffectTree& effect_tree = |
1459 root->layer_tree_impl()->property_trees()->effect_tree; | 1456 root->layer_tree_impl()->property_trees()->effect_tree; |
1460 EffectNode* node = effect_tree.Node(render_surface1->effect_tree_index()); | 1457 EffectNode* node = effect_tree.Node(render_surface1->effect_tree_index()); |
1461 EXPECT_TRUE(node->is_drawn); | 1458 EXPECT_TRUE(node->is_drawn); |
1462 | 1459 |
1463 // When root is transparent, the layer should not be drawn. | 1460 // When root is transparent, the layer should not be drawn. |
1464 root->layer_tree_impl()->SetOpacityMutated(root->element_id(), 0.f); | 1461 root->layer_tree_impl()->SetOpacityMutated(root->element_id(), 0.f); |
1465 root->layer_tree_impl()->SetOpacityMutated(render_surface1->element_id(), | 1462 root->layer_tree_impl()->SetOpacityMutated(render_surface1->element_id(), |
1466 1.f); | 1463 1.f); |
1467 render_surface1->set_visible_layer_rect(gfx::Rect()); | 1464 render_surface1->set_visible_layer_rect(gfx::Rect()); |
1468 { | 1465 { |
1469 LayerImplList render_surface_layer_list; | 1466 RenderSurfaceList render_surface_list; |
1470 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 1467 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
1471 root, root->bounds(), &render_surface_layer_list); | 1468 root, root->bounds(), &render_surface_list); |
1472 inputs.can_adjust_raster_scales = true; | 1469 inputs.can_adjust_raster_scales = true; |
1473 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 1470 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
1474 } | 1471 } |
1475 | 1472 |
1476 node = effect_tree.Node(render_surface1->effect_tree_index()); | 1473 node = effect_tree.Node(render_surface1->effect_tree_index()); |
1477 EXPECT_FALSE(node->is_drawn); | 1474 EXPECT_FALSE(node->is_drawn); |
1478 EXPECT_EQ(gfx::Rect(), render_surface1->visible_layer_rect()); | 1475 EXPECT_EQ(gfx::Rect(), render_surface1->visible_layer_rect()); |
1479 } | 1476 } |
1480 | 1477 |
1481 TEST_F(LayerTreeHostCommonTest, RenderSurfaceListForFilter) { | 1478 TEST_F(LayerTreeHostCommonTest, RenderSurfaceListForFilter) { |
(...skipping 12 matching lines...) Expand all Loading... |
1494 parent->test_properties()->filters = filters; | 1491 parent->test_properties()->filters = filters; |
1495 parent->test_properties()->force_render_surface = true; | 1492 parent->test_properties()->force_render_surface = true; |
1496 child1->SetBounds(gfx::Size(25, 25)); | 1493 child1->SetBounds(gfx::Size(25, 25)); |
1497 child1->SetDrawsContent(true); | 1494 child1->SetDrawsContent(true); |
1498 child1->test_properties()->force_render_surface = true; | 1495 child1->test_properties()->force_render_surface = true; |
1499 child2->SetPosition(gfx::PointF(25, 25)); | 1496 child2->SetPosition(gfx::PointF(25, 25)); |
1500 child2->SetBounds(gfx::Size(25, 25)); | 1497 child2->SetBounds(gfx::Size(25, 25)); |
1501 child2->SetDrawsContent(true); | 1498 child2->SetDrawsContent(true); |
1502 child2->test_properties()->force_render_surface = true; | 1499 child2->test_properties()->force_render_surface = true; |
1503 | 1500 |
1504 LayerImplList render_surface_layer_list; | 1501 RenderSurfaceList render_surface_list; |
1505 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 1502 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
1506 root, root->bounds(), &render_surface_layer_list); | 1503 root, root->bounds(), &render_surface_list); |
1507 inputs.can_adjust_raster_scales = true; | 1504 inputs.can_adjust_raster_scales = true; |
1508 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 1505 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
1509 | 1506 |
1510 ASSERT_TRUE(parent->GetRenderSurface()); | 1507 ASSERT_TRUE(parent->GetRenderSurface()); |
1511 EXPECT_EQ(2U, parent->GetRenderSurface()->layer_list().size()); | 1508 EXPECT_EQ(2, parent->GetRenderSurface()->num_contributors()); |
1512 EXPECT_EQ(4U, render_surface_layer_list.size()); | 1509 EXPECT_EQ(4U, render_surface_list.size()); |
1513 | 1510 |
1514 // The rectangle enclosing child1 and child2 (0,0 50x50), expanded for the | 1511 // The rectangle enclosing child1 and child2 (0,0 50x50), expanded for the |
1515 // blur (-30,-30 110x110), and then scaled by the scale matrix | 1512 // blur (-30,-30 110x110), and then scaled by the scale matrix |
1516 // (-60,-60 220x220). | 1513 // (-60,-60 220x220). |
1517 EXPECT_EQ(gfx::RectF(-60, -60, 220, 220), | 1514 EXPECT_EQ(gfx::RectF(-60, -60, 220, 220), |
1518 parent->GetRenderSurface()->DrawableContentRect()); | 1515 parent->GetRenderSurface()->DrawableContentRect()); |
1519 } | 1516 } |
1520 | 1517 |
1521 TEST_F(LayerTreeHostCommonTest, DrawableContentRectForReferenceFilter) { | 1518 TEST_F(LayerTreeHostCommonTest, DrawableContentRectForReferenceFilter) { |
1522 LayerImpl* root = root_layer_for_testing(); | 1519 LayerImpl* root = root_layer_for_testing(); |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1739 gfx::Transform flattened_rotation_about_y = rotation_about_y_axis; | 1736 gfx::Transform flattened_rotation_about_y = rotation_about_y_axis; |
1740 flattened_rotation_about_y.FlattenTo2d(); | 1737 flattened_rotation_about_y.FlattenTo2d(); |
1741 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_y, | 1738 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_y, |
1742 child->ScreenSpaceTransform()); | 1739 child->ScreenSpaceTransform()); |
1743 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_y, | 1740 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_y, |
1744 grand_child->ScreenSpaceTransform()); | 1741 grand_child->ScreenSpaceTransform()); |
1745 } | 1742 } |
1746 | 1743 |
1747 TEST_F(LayerTreeHostCommonTest, ClipRectCullsRenderSurfaces) { | 1744 TEST_F(LayerTreeHostCommonTest, ClipRectCullsRenderSurfaces) { |
1748 // The entire subtree of layers that are outside the clip rect should be | 1745 // The entire subtree of layers that are outside the clip rect should be |
1749 // culled away, and should not affect the render_surface_layer_list. | 1746 // culled away, and should not affect the render_surface_list. |
1750 // | 1747 // |
1751 // The test tree is set up as follows: | 1748 // The test tree is set up as follows: |
1752 // - all layers except the leaf_nodes are forced to be a new render surface | 1749 // - all layers except the leaf_nodes are forced to be a new render surface |
1753 // that have something to draw. | 1750 // that have something to draw. |
1754 // - parent is a large container layer. | 1751 // - parent is a large container layer. |
1755 // - child has MasksToBounds=true to cause clipping. | 1752 // - child has MasksToBounds=true to cause clipping. |
1756 // - grand_child is positioned outside of the child's bounds | 1753 // - grand_child is positioned outside of the child's bounds |
1757 // - great_grand_child is also kept outside child's bounds. | 1754 // - great_grand_child is also kept outside child's bounds. |
1758 // | 1755 // |
1759 // In this configuration, grand_child and great_grand_child are completely | 1756 // In this configuration, grand_child and great_grand_child are completely |
1760 // outside the clip rect, and they should never get scheduled on the list of | 1757 // outside the clip rect, and they should never get scheduled on the list of |
1761 // render surfaces. | 1758 // render surfaces. |
1762 | 1759 |
1763 LayerImpl* root = root_layer_for_testing(); | 1760 LayerImpl* root = root_layer_for_testing(); |
1764 LayerImpl* child = AddChildToRoot<LayerImpl>(); | 1761 LayerImpl* child = AddChildToRoot<LayerImpl>(); |
1765 LayerImpl* grand_child = AddChild<LayerImpl>(child); | 1762 LayerImpl* grand_child = AddChild<LayerImpl>(child); |
1766 LayerImpl* great_grand_child = AddChild<LayerImpl>(grand_child); | 1763 LayerImpl* great_grand_child = AddChild<LayerImpl>(grand_child); |
1767 | 1764 |
1768 // leaf_node1 ensures that root and child are kept on the | 1765 // leaf_node1 ensures that root and child are kept on the render_surface_list, |
1769 // render_surface_layer_list, even though grand_child and great_grand_child | 1766 // even though grand_child and great_grand_child should be clipped. |
1770 // should be clipped. | |
1771 LayerImpl* leaf_node1 = AddChild<LayerImpl>(child); | 1767 LayerImpl* leaf_node1 = AddChild<LayerImpl>(child); |
1772 LayerImpl* leaf_node2 = AddChild<LayerImpl>(great_grand_child); | 1768 LayerImpl* leaf_node2 = AddChild<LayerImpl>(great_grand_child); |
1773 | 1769 |
1774 root->SetBounds(gfx::Size(500, 500)); | 1770 root->SetBounds(gfx::Size(500, 500)); |
1775 child->SetBounds(gfx::Size(20, 20)); | 1771 child->SetBounds(gfx::Size(20, 20)); |
1776 child->SetMasksToBounds(true); | 1772 child->SetMasksToBounds(true); |
1777 child->test_properties()->force_render_surface = true; | 1773 child->test_properties()->force_render_surface = true; |
1778 grand_child->SetPosition(gfx::PointF(45.f, 45.f)); | 1774 grand_child->SetPosition(gfx::PointF(45.f, 45.f)); |
1779 grand_child->SetBounds(gfx::Size(10, 10)); | 1775 grand_child->SetBounds(gfx::Size(10, 10)); |
1780 great_grand_child->SetBounds(gfx::Size(10, 10)); | 1776 great_grand_child->SetBounds(gfx::Size(10, 10)); |
1781 leaf_node1->SetBounds(gfx::Size(500, 500)); | 1777 leaf_node1->SetBounds(gfx::Size(500, 500)); |
1782 leaf_node1->SetDrawsContent(true); | 1778 leaf_node1->SetDrawsContent(true); |
1783 leaf_node1->SetBounds(gfx::Size(20, 20)); | 1779 leaf_node1->SetBounds(gfx::Size(20, 20)); |
1784 leaf_node2->SetDrawsContent(true); | 1780 leaf_node2->SetDrawsContent(true); |
1785 ExecuteCalculateDrawProperties(root); | 1781 ExecuteCalculateDrawProperties(root); |
1786 | 1782 |
1787 ASSERT_EQ(2U, render_surface_layer_list_impl()->size()); | 1783 ASSERT_EQ(2U, render_surface_list_impl()->size()); |
1788 EXPECT_EQ(root->id(), render_surface_layer_list_impl()->at(0)->id()); | 1784 EXPECT_EQ(root->id(), render_surface_list_impl()->at(0)->id()); |
1789 EXPECT_EQ(child->id(), render_surface_layer_list_impl()->at(1)->id()); | 1785 EXPECT_EQ(child->id(), render_surface_list_impl()->at(1)->id()); |
1790 } | 1786 } |
1791 | 1787 |
1792 TEST_F(LayerTreeHostCommonTest, ClipRectCullsSurfaceWithoutVisibleContent) { | 1788 TEST_F(LayerTreeHostCommonTest, ClipRectCullsSurfaceWithoutVisibleContent) { |
1793 // When a render surface has a clip rect, it is used to clip the content rect | 1789 // When a render surface has a clip rect, it is used to clip the content rect |
1794 // of the surface. | 1790 // of the surface. |
1795 | 1791 |
1796 // The test tree is set up as follows: | 1792 // The test tree is set up as follows: |
1797 // - root is a container layer that masksToBounds=true to cause clipping. | 1793 // - root is a container layer that masksToBounds=true to cause clipping. |
1798 // - child is a render surface, which has a clip rect set to the bounds of | 1794 // - child is a render surface, which has a clip rect set to the bounds of |
1799 // the root. | 1795 // the root. |
1800 // - grand_child is a render surface, and the only visible content in child. | 1796 // - grand_child is a render surface, and the only visible content in child. |
1801 // It is positioned outside of the clip rect from root. | 1797 // It is positioned outside of the clip rect from root. |
1802 | 1798 |
1803 // In this configuration, grand_child should be outside the clipped | 1799 // In this configuration, grand_child should be outside the clipped |
1804 // content rect of the child, making grand_child not appear in the | 1800 // content rect of the child, making grand_child not appear in the |
1805 // render_surface_layer_list. | 1801 // render_surface_list. |
1806 | 1802 |
1807 LayerImpl* root = root_layer_for_testing(); | 1803 LayerImpl* root = root_layer_for_testing(); |
1808 LayerImpl* child = AddChildToRoot<LayerImpl>(); | 1804 LayerImpl* child = AddChildToRoot<LayerImpl>(); |
1809 LayerImpl* grand_child = AddChild<LayerImpl>(child); | 1805 LayerImpl* grand_child = AddChild<LayerImpl>(child); |
1810 LayerImpl* leaf_node = AddChild<LayerImpl>(grand_child); | 1806 LayerImpl* leaf_node = AddChild<LayerImpl>(grand_child); |
1811 | 1807 |
1812 root->SetMasksToBounds(true); | 1808 root->SetMasksToBounds(true); |
1813 root->SetBounds(gfx::Size(100, 100)); | 1809 root->SetBounds(gfx::Size(100, 100)); |
1814 child->SetBounds(gfx::Size(20, 20)); | 1810 child->SetBounds(gfx::Size(20, 20)); |
1815 child->test_properties()->force_render_surface = true; | 1811 child->test_properties()->force_render_surface = true; |
1816 grand_child->SetPosition(gfx::PointF(200.f, 200.f)); | 1812 grand_child->SetPosition(gfx::PointF(200.f, 200.f)); |
1817 grand_child->SetBounds(gfx::Size(10, 10)); | 1813 grand_child->SetBounds(gfx::Size(10, 10)); |
1818 grand_child->test_properties()->force_render_surface = true; | 1814 grand_child->test_properties()->force_render_surface = true; |
1819 leaf_node->SetBounds(gfx::Size(10, 10)); | 1815 leaf_node->SetBounds(gfx::Size(10, 10)); |
1820 leaf_node->SetDrawsContent(true); | 1816 leaf_node->SetDrawsContent(true); |
1821 ExecuteCalculateDrawProperties(root); | 1817 ExecuteCalculateDrawProperties(root); |
1822 | 1818 |
1823 // We should cull child and grand_child from the | 1819 // We should cull child and grand_child from the |
1824 // render_surface_layer_list. | 1820 // render_surface_list. |
1825 ASSERT_EQ(1U, render_surface_layer_list_impl()->size()); | 1821 ASSERT_EQ(1U, render_surface_list_impl()->size()); |
1826 EXPECT_EQ(root->id(), render_surface_layer_list_impl()->at(0)->id()); | 1822 EXPECT_EQ(root->id(), render_surface_list_impl()->at(0)->id()); |
1827 } | 1823 } |
1828 | 1824 |
1829 TEST_F(LayerTreeHostCommonTest, IsClippedIsSetCorrectlyLayerImpl) { | 1825 TEST_F(LayerTreeHostCommonTest, IsClippedIsSetCorrectlyLayerImpl) { |
1830 // Tests that LayerImpl's IsClipped() property is set to true when: | 1826 // Tests that LayerImpl's IsClipped() property is set to true when: |
1831 // - the layer clips its subtree, e.g. masks to bounds, | 1827 // - the layer clips its subtree, e.g. masks to bounds, |
1832 // - the layer is clipped by an ancestor that contributes to the same | 1828 // - the layer is clipped by an ancestor that contributes to the same |
1833 // render target, | 1829 // render target, |
1834 // - a surface is clipped by an ancestor that contributes to the same | 1830 // - a surface is clipped by an ancestor that contributes to the same |
1835 // render target. | 1831 // render target. |
1836 // | 1832 // |
(...skipping 1708 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3545 child1->SetPosition(gfx::PointF(5.f, 5.f)); | 3541 child1->SetPosition(gfx::PointF(5.f, 5.f)); |
3546 child1->SetBounds(gfx::Size(50, 50)); | 3542 child1->SetBounds(gfx::Size(50, 50)); |
3547 child1->SetDrawsContent(true); | 3543 child1->SetDrawsContent(true); |
3548 child2->SetPosition(gfx::PointF(75.f, 75.f)); | 3544 child2->SetPosition(gfx::PointF(75.f, 75.f)); |
3549 child2->SetBounds(gfx::Size(50, 50)); | 3545 child2->SetBounds(gfx::Size(50, 50)); |
3550 child2->SetDrawsContent(true); | 3546 child2->SetDrawsContent(true); |
3551 child3->SetPosition(gfx::PointF(125.f, 125.f)); | 3547 child3->SetPosition(gfx::PointF(125.f, 125.f)); |
3552 child3->SetBounds(gfx::Size(50, 50)); | 3548 child3->SetBounds(gfx::Size(50, 50)); |
3553 child3->SetDrawsContent(true); | 3549 child3->SetDrawsContent(true); |
3554 | 3550 |
3555 LayerImplList render_surface_layer_list_impl; | 3551 RenderSurfaceList render_surface_list_impl; |
3556 // Now set the root render surface an empty clip. | 3552 // Now set the root render surface an empty clip. |
3557 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 3553 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
3558 root, gfx::Size(), &render_surface_layer_list_impl); | 3554 root, gfx::Size(), &render_surface_list_impl); |
3559 | 3555 |
3560 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 3556 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
3561 ASSERT_TRUE(root->GetRenderSurface()); | 3557 ASSERT_TRUE(root->GetRenderSurface()); |
3562 EXPECT_FALSE(root->is_clipped()); | 3558 EXPECT_FALSE(root->is_clipped()); |
3563 | 3559 |
3564 gfx::Rect empty; | 3560 gfx::Rect empty; |
3565 EXPECT_EQ(empty, root->GetRenderSurface()->clip_rect()); | 3561 EXPECT_EQ(empty, root->GetRenderSurface()->clip_rect()); |
3566 EXPECT_TRUE(root->GetRenderSurface()->is_clipped()); | 3562 EXPECT_TRUE(root->GetRenderSurface()->is_clipped()); |
3567 | 3563 |
3568 // Visible content rect calculation will check if the target surface is | 3564 // Visible content rect calculation will check if the target surface is |
(...skipping 1103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4672 child2->SetDrawsContent(true); | 4668 child2->SetDrawsContent(true); |
4673 | 4669 |
4674 float device_scale_factor = 2.5f; | 4670 float device_scale_factor = 2.5f; |
4675 gfx::Size viewport_size(100, 100); | 4671 gfx::Size viewport_size(100, 100); |
4676 ExecuteCalculateDrawProperties(root, device_scale_factor); | 4672 ExecuteCalculateDrawProperties(root, device_scale_factor); |
4677 | 4673 |
4678 EXPECT_FLOAT_EQ(device_scale_factor, root->GetIdealContentsScale()); | 4674 EXPECT_FLOAT_EQ(device_scale_factor, root->GetIdealContentsScale()); |
4679 EXPECT_FLOAT_EQ(device_scale_factor, child->GetIdealContentsScale()); | 4675 EXPECT_FLOAT_EQ(device_scale_factor, child->GetIdealContentsScale()); |
4680 EXPECT_FLOAT_EQ(device_scale_factor, child2->GetIdealContentsScale()); | 4676 EXPECT_FLOAT_EQ(device_scale_factor, child2->GetIdealContentsScale()); |
4681 | 4677 |
4682 EXPECT_EQ(1u, render_surface_layer_list_impl()->size()); | 4678 EXPECT_EQ(1u, render_surface_list_impl()->size()); |
4683 | 4679 |
4684 // Verify root transforms | 4680 // Verify root transforms |
4685 gfx::Transform expected_root_transform; | 4681 gfx::Transform expected_root_transform; |
4686 expected_root_transform.Scale(device_scale_factor, device_scale_factor); | 4682 expected_root_transform.Scale(device_scale_factor, device_scale_factor); |
4687 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_root_transform, | 4683 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_root_transform, |
4688 root->ScreenSpaceTransform()); | 4684 root->ScreenSpaceTransform()); |
4689 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_root_transform, | 4685 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_root_transform, |
4690 root->DrawTransform()); | 4686 root->DrawTransform()); |
4691 | 4687 |
4692 // Verify results of transformed root rects | 4688 // Verify results of transformed root rects |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4799 | 4795 |
4800 // The ideal scale will draw 1:1 with its render target space along | 4796 // The ideal scale will draw 1:1 with its render target space along |
4801 // the larger-scale axis. | 4797 // the larger-scale axis. |
4802 gfx::Vector2dF target_space_transform_scales = | 4798 gfx::Vector2dF target_space_transform_scales = |
4803 MathUtil::ComputeTransform2dScaleComponents( | 4799 MathUtil::ComputeTransform2dScaleComponents( |
4804 scale_surface->draw_properties().target_space_transform, 0.f); | 4800 scale_surface->draw_properties().target_space_transform, 0.f); |
4805 EXPECT_FLOAT_EQ(max_2d_scale, | 4801 EXPECT_FLOAT_EQ(max_2d_scale, |
4806 std::max(target_space_transform_scales.x(), | 4802 std::max(target_space_transform_scales.x(), |
4807 target_space_transform_scales.y())); | 4803 target_space_transform_scales.y())); |
4808 | 4804 |
4809 EXPECT_EQ(3u, render_surface_layer_list_impl()->size()); | 4805 EXPECT_EQ(3u, render_surface_list_impl()->size()); |
4810 | 4806 |
4811 gfx::Transform expected_parent_draw_transform; | 4807 gfx::Transform expected_parent_draw_transform; |
4812 expected_parent_draw_transform.Scale(device_scale_factor * page_scale_factor, | 4808 expected_parent_draw_transform.Scale(device_scale_factor * page_scale_factor, |
4813 device_scale_factor * page_scale_factor); | 4809 device_scale_factor * page_scale_factor); |
4814 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_draw_transform, | 4810 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_draw_transform, |
4815 parent->DrawTransform()); | 4811 parent->DrawTransform()); |
4816 | 4812 |
4817 // The scale for the perspective surface is not known, so it is rendered 1:1 | 4813 // The scale for the perspective surface is not known, so it is rendered 1:1 |
4818 // with the screen, and then scaled during drawing. | 4814 // with the screen, and then scaled during drawing. |
4819 gfx::Transform expected_perspective_surface_draw_transform; | 4815 gfx::Transform expected_perspective_surface_draw_transform; |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4930 // and screen space transforms. | 4926 // and screen space transforms. |
4931 LayerImpl* duplicate_child_non_owner = AddChild<LayerImpl>(child); | 4927 LayerImpl* duplicate_child_non_owner = AddChild<LayerImpl>(child); |
4932 duplicate_child_non_owner->SetBounds(gfx::Size(10, 10)); | 4928 duplicate_child_non_owner->SetBounds(gfx::Size(10, 10)); |
4933 duplicate_child_non_owner->SetDrawsContent(true); | 4929 duplicate_child_non_owner->SetDrawsContent(true); |
4934 | 4930 |
4935 float device_scale_factor = 1.5f; | 4931 float device_scale_factor = 1.5f; |
4936 ExecuteCalculateDrawProperties(parent, device_scale_factor); | 4932 ExecuteCalculateDrawProperties(parent, device_scale_factor); |
4937 | 4933 |
4938 // We should have two render surfaces. The root's render surface and child's | 4934 // We should have two render surfaces. The root's render surface and child's |
4939 // render surface (it needs one because of force_render_surface). | 4935 // render surface (it needs one because of force_render_surface). |
4940 EXPECT_EQ(2u, render_surface_layer_list_impl()->size()); | 4936 EXPECT_EQ(2u, render_surface_list_impl()->size()); |
4941 | 4937 |
4942 gfx::Transform expected_parent_transform; | 4938 gfx::Transform expected_parent_transform; |
4943 expected_parent_transform.Scale(device_scale_factor, device_scale_factor); | 4939 expected_parent_transform.Scale(device_scale_factor, device_scale_factor); |
4944 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, | 4940 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, |
4945 parent->ScreenSpaceTransform()); | 4941 parent->ScreenSpaceTransform()); |
4946 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, | 4942 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_parent_transform, |
4947 parent->DrawTransform()); | 4943 parent->DrawTransform()); |
4948 | 4944 |
4949 gfx::Transform expected_draw_transform; | 4945 gfx::Transform expected_draw_transform; |
4950 expected_draw_transform.Scale(device_scale_factor, device_scale_factor); | 4946 expected_draw_transform.Scale(device_scale_factor, device_scale_factor); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5000 LayerImpl* child = AddChildToRoot<LayerImpl>(); | 4996 LayerImpl* child = AddChildToRoot<LayerImpl>(); |
5001 child->SetBounds(gfx::Size(13, 11)); | 4997 child->SetBounds(gfx::Size(13, 11)); |
5002 child->SetDrawsContent(true); | 4998 child->SetDrawsContent(true); |
5003 child->test_properties()->force_render_surface = true; | 4999 child->test_properties()->force_render_surface = true; |
5004 | 5000 |
5005 float device_scale_factor = 1.7f; | 5001 float device_scale_factor = 1.7f; |
5006 ExecuteCalculateDrawProperties(parent, device_scale_factor); | 5002 ExecuteCalculateDrawProperties(parent, device_scale_factor); |
5007 | 5003 |
5008 // We should have two render surfaces. The root's render surface and child's | 5004 // We should have two render surfaces. The root's render surface and child's |
5009 // render surface (it needs one because of force_render_surface). | 5005 // render surface (it needs one because of force_render_surface). |
5010 EXPECT_EQ(2u, render_surface_layer_list_impl()->size()); | 5006 EXPECT_EQ(2u, render_surface_list_impl()->size()); |
5011 | 5007 |
5012 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), | 5008 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), |
5013 child->GetRenderSurface()->draw_transform()); | 5009 child->GetRenderSurface()->draw_transform()); |
5014 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), | 5010 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), |
5015 child->GetRenderSurface()->draw_transform()); | 5011 child->GetRenderSurface()->draw_transform()); |
5016 EXPECT_TRANSFORMATION_MATRIX_EQ( | 5012 EXPECT_TRANSFORMATION_MATRIX_EQ( |
5017 gfx::Transform(), child->GetRenderSurface()->screen_space_transform()); | 5013 gfx::Transform(), child->GetRenderSurface()->screen_space_transform()); |
5018 } | 5014 } |
5019 | 5015 |
5020 TEST_F(LayerTreeHostCommonTest, LayerSearch) { | 5016 TEST_F(LayerTreeHostCommonTest, LayerSearch) { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5078 scoped_refptr<AnimationTimeline> timeline = | 5074 scoped_refptr<AnimationTimeline> timeline = |
5079 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); | 5075 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); |
5080 host_impl.animation_host()->AddAnimationTimeline(timeline); | 5076 host_impl.animation_host()->AddAnimationTimeline(timeline); |
5081 | 5077 |
5082 ElementId child_element_id = | 5078 ElementId child_element_id = |
5083 host_impl.pending_tree()->LayerById(child_id)->element_id(); | 5079 host_impl.pending_tree()->LayerById(child_id)->element_id(); |
5084 | 5080 |
5085 AddOpacityTransitionToElementWithPlayer(child_element_id, timeline, 10.0, | 5081 AddOpacityTransitionToElementWithPlayer(child_element_id, timeline, 10.0, |
5086 0.0f, 1.0f, false); | 5082 0.0f, 1.0f, false); |
5087 | 5083 |
5088 LayerImplList render_surface_layer_list; | 5084 RenderSurfaceList render_surface_list; |
5089 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 5085 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
5090 root_layer, root_layer->bounds(), &render_surface_layer_list); | 5086 root_layer, root_layer->bounds(), &render_surface_list); |
5091 inputs.can_adjust_raster_scales = true; | 5087 inputs.can_adjust_raster_scales = true; |
5092 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 5088 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
5093 | 5089 |
5094 // We should have one render surface and two layers. The child | 5090 // We should have one render surface and two layers. The child |
5095 // layer should be included even though it is transparent. | 5091 // layer should be included even though it is transparent. |
5096 ASSERT_EQ(1u, render_surface_layer_list.size()); | 5092 ASSERT_EQ(1u, render_surface_list.size()); |
5097 ASSERT_EQ(2u, root_layer->GetRenderSurface()->layer_list().size()); | 5093 ASSERT_EQ(2, root_layer->GetRenderSurface()->num_contributors()); |
5098 | 5094 |
5099 // If the root itself is hidden, the child should not be drawn even if it has | 5095 // If the root itself is hidden, the child should not be drawn even if it has |
5100 // an animating opacity. | 5096 // an animating opacity. |
5101 root_layer->test_properties()->opacity = 0.0f; | 5097 root_layer->test_properties()->opacity = 0.0f; |
5102 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; | 5098 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; |
5103 LayerImplList render_surface_layer_list2; | 5099 RenderSurfaceList render_surface_list2; |
5104 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs2( | 5100 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs2( |
5105 root_layer, root_layer->bounds(), &render_surface_layer_list2); | 5101 root_layer, root_layer->bounds(), &render_surface_list2); |
5106 inputs2.can_adjust_raster_scales = true; | 5102 inputs2.can_adjust_raster_scales = true; |
5107 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs2); | 5103 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs2); |
5108 | 5104 |
5109 LayerImpl* child_ptr = root_layer->layer_tree_impl()->LayerById(2); | 5105 LayerImpl* child_ptr = root_layer->layer_tree_impl()->LayerById(2); |
5110 EffectTree& tree = | 5106 EffectTree& tree = |
5111 root_layer->layer_tree_impl()->property_trees()->effect_tree; | 5107 root_layer->layer_tree_impl()->property_trees()->effect_tree; |
5112 EffectNode* node = tree.Node(child_ptr->effect_tree_index()); | 5108 EffectNode* node = tree.Node(child_ptr->effect_tree_index()); |
5113 EXPECT_FALSE(node->is_drawn); | 5109 EXPECT_FALSE(node->is_drawn); |
5114 | 5110 |
5115 // A layer should be drawn and it should contribute to drawn surface when | 5111 // A layer should be drawn and it should contribute to drawn surface when |
5116 // it has animating opacity even if it has opacity 0. | 5112 // it has animating opacity even if it has opacity 0. |
5117 root_layer->test_properties()->opacity = 1.0f; | 5113 root_layer->test_properties()->opacity = 1.0f; |
5118 child_ptr->test_properties()->opacity = 0.0f; | 5114 child_ptr->test_properties()->opacity = 0.0f; |
5119 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; | 5115 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; |
5120 LayerImplList render_surface_layer_list3; | 5116 RenderSurfaceList render_surface_list3; |
5121 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs3( | 5117 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs3( |
5122 root_layer, root_layer->bounds(), &render_surface_layer_list3); | 5118 root_layer, root_layer->bounds(), &render_surface_list3); |
5123 inputs3.can_adjust_raster_scales = true; | 5119 inputs3.can_adjust_raster_scales = true; |
5124 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs3); | 5120 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs3); |
5125 | 5121 |
5126 child_ptr = root_layer->layer_tree_impl()->LayerById(2); | 5122 child_ptr = root_layer->layer_tree_impl()->LayerById(2); |
5127 tree = root_layer->layer_tree_impl()->property_trees()->effect_tree; | 5123 tree = root_layer->layer_tree_impl()->property_trees()->effect_tree; |
5128 node = tree.Node(child_ptr->effect_tree_index()); | 5124 node = tree.Node(child_ptr->effect_tree_index()); |
5129 EXPECT_TRUE(node->is_drawn); | 5125 EXPECT_TRUE(node->is_drawn); |
5130 EXPECT_TRUE(tree.ContributesToDrawnSurface(child_ptr->effect_tree_index())); | 5126 EXPECT_TRUE(tree.ContributesToDrawnSurface(child_ptr->effect_tree_index())); |
5131 | 5127 |
5132 // But if the opacity of the layer remains 0 after activation, it should not | 5128 // But if the opacity of the layer remains 0 after activation, it should not |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5377 std::unique_ptr<LayerImpl> root = | 5373 std::unique_ptr<LayerImpl> root = |
5378 LayerImpl::Create(host_impl.pending_tree(), 1); | 5374 LayerImpl::Create(host_impl.pending_tree(), 1); |
5379 root->SetBounds(gfx::Size(50, 50)); | 5375 root->SetBounds(gfx::Size(50, 50)); |
5380 root->SetDrawsContent(true); | 5376 root->SetDrawsContent(true); |
5381 LayerImpl* root_layer = root.get(); | 5377 LayerImpl* root_layer = root.get(); |
5382 | 5378 |
5383 std::unique_ptr<LayerImpl> child = | 5379 std::unique_ptr<LayerImpl> child = |
5384 LayerImpl::Create(host_impl.pending_tree(), 2); | 5380 LayerImpl::Create(host_impl.pending_tree(), 2); |
5385 child->SetBounds(gfx::Size(40, 40)); | 5381 child->SetBounds(gfx::Size(40, 40)); |
5386 child->SetDrawsContent(true); | 5382 child->SetDrawsContent(true); |
| 5383 LayerImpl* child_layer = child.get(); |
5387 | 5384 |
5388 std::unique_ptr<LayerImpl> grand_child = | 5385 std::unique_ptr<LayerImpl> grand_child = |
5389 LayerImpl::Create(host_impl.pending_tree(), 3); | 5386 LayerImpl::Create(host_impl.pending_tree(), 3); |
5390 grand_child->SetBounds(gfx::Size(30, 30)); | 5387 grand_child->SetBounds(gfx::Size(30, 30)); |
5391 grand_child->SetDrawsContent(true); | 5388 grand_child->SetDrawsContent(true); |
5392 grand_child->test_properties()->hide_layer_and_subtree = true; | 5389 grand_child->test_properties()->hide_layer_and_subtree = true; |
| 5390 LayerImpl* grand_child_layer = grand_child.get(); |
5393 | 5391 |
5394 child->test_properties()->AddChild(std::move(grand_child)); | 5392 child->test_properties()->AddChild(std::move(grand_child)); |
5395 root->test_properties()->AddChild(std::move(child)); | 5393 root->test_properties()->AddChild(std::move(child)); |
5396 host_impl.pending_tree()->SetRootLayerForTesting(std::move(root)); | 5394 host_impl.pending_tree()->SetRootLayerForTesting(std::move(root)); |
5397 | 5395 |
5398 LayerImplList render_surface_layer_list; | 5396 RenderSurfaceList render_surface_list; |
5399 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 5397 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
5400 root_layer, root_layer->bounds(), &render_surface_layer_list); | 5398 root_layer, root_layer->bounds(), &render_surface_list); |
5401 inputs.can_adjust_raster_scales = true; | 5399 inputs.can_adjust_raster_scales = true; |
5402 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 5400 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
5403 | 5401 |
5404 // We should have one render surface and two layers. The grand child has | 5402 // We should have one render surface and two layers. The grand child has |
5405 // hidden itself. | 5403 // hidden itself. |
5406 ASSERT_EQ(1u, render_surface_layer_list.size()); | 5404 ASSERT_EQ(1u, render_surface_list.size()); |
5407 ASSERT_EQ(2u, root_layer->GetRenderSurface()->layer_list().size()); | 5405 ASSERT_EQ(2, root_layer->GetRenderSurface()->num_contributors()); |
5408 EXPECT_EQ(1, root_layer->GetRenderSurface()->layer_list().at(0)->id()); | 5406 EXPECT_TRUE(root_layer->is_drawn_render_surface_layer_list_member()); |
5409 EXPECT_EQ(2, root_layer->GetRenderSurface()->layer_list().at(1)->id()); | 5407 EXPECT_TRUE(child_layer->is_drawn_render_surface_layer_list_member()); |
| 5408 EXPECT_FALSE(grand_child_layer->is_drawn_render_surface_layer_list_member()); |
5410 } | 5409 } |
5411 | 5410 |
5412 TEST_F(LayerTreeHostCommonTest, SubtreeHidden_TwoLayersImpl) { | 5411 TEST_F(LayerTreeHostCommonTest, SubtreeHidden_TwoLayersImpl) { |
5413 FakeImplTaskRunnerProvider task_runner_provider; | 5412 FakeImplTaskRunnerProvider task_runner_provider; |
5414 TestTaskGraphRunner task_graph_runner; | 5413 TestTaskGraphRunner task_graph_runner; |
5415 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &task_graph_runner); | 5414 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &task_graph_runner); |
5416 host_impl.CreatePendingTree(); | 5415 host_impl.CreatePendingTree(); |
5417 | 5416 |
5418 std::unique_ptr<LayerImpl> root = | 5417 std::unique_ptr<LayerImpl> root = |
5419 LayerImpl::Create(host_impl.pending_tree(), 1); | 5418 LayerImpl::Create(host_impl.pending_tree(), 1); |
5420 root->SetBounds(gfx::Size(50, 50)); | 5419 root->SetBounds(gfx::Size(50, 50)); |
5421 root->SetDrawsContent(true); | 5420 root->SetDrawsContent(true); |
5422 LayerImpl* root_layer = root.get(); | 5421 LayerImpl* root_layer = root.get(); |
5423 | 5422 |
5424 std::unique_ptr<LayerImpl> child = | 5423 std::unique_ptr<LayerImpl> child = |
5425 LayerImpl::Create(host_impl.pending_tree(), 2); | 5424 LayerImpl::Create(host_impl.pending_tree(), 2); |
5426 child->SetBounds(gfx::Size(40, 40)); | 5425 child->SetBounds(gfx::Size(40, 40)); |
5427 child->SetDrawsContent(true); | 5426 child->SetDrawsContent(true); |
5428 child->test_properties()->hide_layer_and_subtree = true; | 5427 child->test_properties()->hide_layer_and_subtree = true; |
| 5428 LayerImpl* child_layer = child.get(); |
5429 | 5429 |
5430 std::unique_ptr<LayerImpl> grand_child = | 5430 std::unique_ptr<LayerImpl> grand_child = |
5431 LayerImpl::Create(host_impl.pending_tree(), 3); | 5431 LayerImpl::Create(host_impl.pending_tree(), 3); |
5432 grand_child->SetBounds(gfx::Size(30, 30)); | 5432 grand_child->SetBounds(gfx::Size(30, 30)); |
5433 grand_child->SetDrawsContent(true); | 5433 grand_child->SetDrawsContent(true); |
| 5434 LayerImpl* grand_child_layer = grand_child.get(); |
5434 | 5435 |
5435 child->test_properties()->AddChild(std::move(grand_child)); | 5436 child->test_properties()->AddChild(std::move(grand_child)); |
5436 root->test_properties()->AddChild(std::move(child)); | 5437 root->test_properties()->AddChild(std::move(child)); |
5437 host_impl.pending_tree()->SetRootLayerForTesting(std::move(root)); | 5438 host_impl.pending_tree()->SetRootLayerForTesting(std::move(root)); |
5438 | 5439 |
5439 LayerImplList render_surface_layer_list; | 5440 RenderSurfaceList render_surface_list; |
5440 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 5441 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
5441 root_layer, root_layer->bounds(), &render_surface_layer_list); | 5442 root_layer, root_layer->bounds(), &render_surface_list); |
5442 inputs.can_adjust_raster_scales = true; | 5443 inputs.can_adjust_raster_scales = true; |
5443 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 5444 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
5444 | 5445 |
5445 // We should have one render surface and one layers. The child has | 5446 // We should have one render surface and one layer. The child has |
5446 // hidden itself and the grand child. | 5447 // hidden itself and the grand child. |
5447 ASSERT_EQ(1u, render_surface_layer_list.size()); | 5448 ASSERT_EQ(1u, render_surface_list.size()); |
5448 ASSERT_EQ(1u, root_layer->GetRenderSurface()->layer_list().size()); | 5449 ASSERT_EQ(1, root_layer->GetRenderSurface()->num_contributors()); |
5449 EXPECT_EQ(1, root_layer->GetRenderSurface()->layer_list().at(0)->id()); | 5450 EXPECT_TRUE(root_layer->is_drawn_render_surface_layer_list_member()); |
| 5451 EXPECT_FALSE(child_layer->is_drawn_render_surface_layer_list_member()); |
| 5452 EXPECT_FALSE(grand_child_layer->is_drawn_render_surface_layer_list_member()); |
5450 } | 5453 } |
5451 | 5454 |
5452 void EmptyCopyOutputCallback(std::unique_ptr<CopyOutputResult> result) {} | 5455 void EmptyCopyOutputCallback(std::unique_ptr<CopyOutputResult> result) {} |
5453 | 5456 |
5454 TEST_F(LayerTreeHostCommonTest, SubtreeHiddenWithCopyRequest) { | 5457 TEST_F(LayerTreeHostCommonTest, SubtreeHiddenWithCopyRequest) { |
5455 FakeImplTaskRunnerProvider task_runner_provider; | 5458 FakeImplTaskRunnerProvider task_runner_provider; |
5456 TestTaskGraphRunner task_graph_runner; | 5459 TestTaskGraphRunner task_graph_runner; |
5457 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &task_graph_runner); | 5460 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &task_graph_runner); |
5458 host_impl.CreatePendingTree(); | 5461 host_impl.CreatePendingTree(); |
5459 | 5462 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5525 copy_grand_parent_layer->test_properties()->hide_layer_and_subtree = true; | 5528 copy_grand_parent_layer->test_properties()->hide_layer_and_subtree = true; |
5526 copy_grand_parent_sibling_before_layer->test_properties() | 5529 copy_grand_parent_sibling_before_layer->test_properties() |
5527 ->hide_layer_and_subtree = true; | 5530 ->hide_layer_and_subtree = true; |
5528 copy_grand_parent_sibling_after_layer->test_properties() | 5531 copy_grand_parent_sibling_after_layer->test_properties() |
5529 ->hide_layer_and_subtree = true; | 5532 ->hide_layer_and_subtree = true; |
5530 copy_grand_child_layer->test_properties()->hide_layer_and_subtree = true; | 5533 copy_grand_child_layer->test_properties()->hide_layer_and_subtree = true; |
5531 | 5534 |
5532 copy_layer->test_properties()->copy_requests.push_back( | 5535 copy_layer->test_properties()->copy_requests.push_back( |
5533 CopyOutputRequest::CreateRequest(base::Bind(&EmptyCopyOutputCallback))); | 5536 CopyOutputRequest::CreateRequest(base::Bind(&EmptyCopyOutputCallback))); |
5534 | 5537 |
5535 LayerImplList render_surface_layer_list; | 5538 RenderSurfaceList render_surface_list; |
5536 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 5539 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
5537 root_layer, root_layer->bounds(), &render_surface_layer_list); | 5540 root_layer, root_layer->bounds(), &render_surface_list); |
5538 inputs.can_adjust_raster_scales = true; | 5541 inputs.can_adjust_raster_scales = true; |
5539 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 5542 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
5540 | 5543 |
5541 EXPECT_TRUE(root_layer->has_copy_requests_in_target_subtree()); | 5544 EXPECT_TRUE(root_layer->has_copy_requests_in_target_subtree()); |
5542 EXPECT_TRUE(copy_grand_parent_layer->has_copy_requests_in_target_subtree()); | 5545 EXPECT_TRUE(copy_grand_parent_layer->has_copy_requests_in_target_subtree()); |
5543 EXPECT_TRUE(copy_parent_layer->has_copy_requests_in_target_subtree()); | 5546 EXPECT_TRUE(copy_parent_layer->has_copy_requests_in_target_subtree()); |
5544 EXPECT_TRUE(copy_layer->has_copy_requests_in_target_subtree()); | 5547 EXPECT_TRUE(copy_layer->has_copy_requests_in_target_subtree()); |
5545 | 5548 |
5546 // We should have four render surfaces, one for the root, one for the grand | 5549 // We should have four render surfaces, one for the root, one for the grand |
5547 // parent since it has opacity and two drawing descendants, one for the parent | 5550 // parent since it has opacity and two drawing descendants, one for the parent |
5548 // since it owns a surface, and one for the copy_layer. | 5551 // since it owns a surface, and one for the copy_layer. |
5549 ASSERT_EQ(4u, render_surface_layer_list.size()); | 5552 ASSERT_EQ(4u, render_surface_list.size()); |
5550 EXPECT_EQ(root_layer->id(), render_surface_layer_list.at(0)->id()); | 5553 EXPECT_EQ(root_layer->id(), render_surface_list.at(0)->id()); |
5551 EXPECT_EQ(copy_grand_parent_layer->id(), | 5554 EXPECT_EQ(copy_grand_parent_layer->id(), render_surface_list.at(1)->id()); |
5552 render_surface_layer_list.at(1)->id()); | 5555 EXPECT_EQ(copy_parent_layer->id(), render_surface_list.at(2)->id()); |
5553 EXPECT_EQ(copy_parent_layer->id(), render_surface_layer_list.at(2)->id()); | 5556 EXPECT_EQ(copy_layer->id(), render_surface_list.at(3)->id()); |
5554 EXPECT_EQ(copy_layer->id(), render_surface_layer_list.at(3)->id()); | |
5555 | 5557 |
5556 // The root render surface should have 2 contributing layers. | 5558 // The root render surface should have 2 contributing layers. |
5557 ASSERT_EQ(2u, root_layer->GetRenderSurface()->layer_list().size()); | 5559 EXPECT_EQ(2, root_layer->GetRenderSurface()->num_contributors()); |
5558 EXPECT_EQ(root_layer->id(), | 5560 EXPECT_TRUE(root_layer->is_drawn_render_surface_layer_list_member()); |
5559 root_layer->GetRenderSurface()->layer_list().at(0)->id()); | 5561 EXPECT_FALSE( |
5560 EXPECT_EQ(copy_grand_parent_layer->id(), | 5562 copy_grand_parent_layer->is_drawn_render_surface_layer_list_member()); |
5561 root_layer->GetRenderSurface()->layer_list().at(1)->id()); | 5563 EXPECT_FALSE(copy_grand_parent_sibling_before_layer |
| 5564 ->is_drawn_render_surface_layer_list_member()); |
| 5565 EXPECT_FALSE(copy_grand_parent_sibling_after_layer |
| 5566 ->is_drawn_render_surface_layer_list_member()); |
5562 | 5567 |
5563 // Nothing actually draws into the copy parent, so only the copy_layer will | 5568 // Nothing actually draws into the copy parent, so only the copy_layer will |
5564 // appear in its list, since it needs to be drawn for the copy request. | 5569 // appear in its list, since it needs to be drawn for the copy request. |
5565 ASSERT_EQ(1u, copy_parent_layer->GetRenderSurface()->layer_list().size()); | 5570 ASSERT_EQ(1, copy_parent_layer->GetRenderSurface()->num_contributors()); |
5566 EXPECT_EQ(copy_layer->id(), | 5571 EXPECT_FALSE(copy_parent_layer->is_drawn_render_surface_layer_list_member()); |
5567 copy_parent_layer->GetRenderSurface()->layer_list().at(0)->id()); | |
5568 | 5572 |
5569 // The copy_layer's render surface should have two contributing layers. | 5573 // The copy layer's render surface should have 2 contributing layers. |
5570 ASSERT_EQ(2u, copy_layer->GetRenderSurface()->layer_list().size()); | 5574 ASSERT_EQ(2, copy_layer->GetRenderSurface()->num_contributors()); |
5571 EXPECT_EQ(copy_layer->id(), | 5575 EXPECT_TRUE(copy_layer->is_drawn_render_surface_layer_list_member()); |
5572 copy_layer->GetRenderSurface()->layer_list().at(0)->id()); | 5576 EXPECT_TRUE(copy_child_layer->is_drawn_render_surface_layer_list_member()); |
5573 EXPECT_EQ(copy_child_layer->id(), | 5577 EXPECT_FALSE( |
5574 copy_layer->GetRenderSurface()->layer_list().at(1)->id()); | 5578 copy_grand_child_layer->is_drawn_render_surface_layer_list_member()); |
5575 | 5579 |
5576 // copy_grand_parent, copy_parent shouldn't be drawn because they are hidden, | 5580 // copy_grand_parent, copy_parent shouldn't be drawn because they are hidden, |
5577 // but the copy_layer and copy_child should be drawn for the copy request. | 5581 // but the copy_layer and copy_child should be drawn for the copy request. |
5578 // copy grand child should not be drawn as its hidden even in the copy | 5582 // copy grand child should not be drawn as its hidden even in the copy |
5579 // request. | 5583 // request. |
5580 EffectTree& tree = | 5584 EffectTree& tree = |
5581 root_layer->layer_tree_impl()->property_trees()->effect_tree; | 5585 root_layer->layer_tree_impl()->property_trees()->effect_tree; |
5582 EffectNode* node = tree.Node(copy_grand_parent_layer->effect_tree_index()); | 5586 EffectNode* node = tree.Node(copy_grand_parent_layer->effect_tree_index()); |
5583 EXPECT_FALSE(node->is_drawn); | 5587 EXPECT_FALSE(node->is_drawn); |
5584 node = tree.Node(copy_parent_layer->effect_tree_index()); | 5588 node = tree.Node(copy_parent_layer->effect_tree_index()); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5622 copy_child->SetBounds(gfx::Size(20, 20)); | 5626 copy_child->SetBounds(gfx::Size(20, 20)); |
5623 copy_child->SetDrawsContent(true); | 5627 copy_child->SetDrawsContent(true); |
5624 | 5628 |
5625 copy_layer->test_properties()->copy_requests.push_back( | 5629 copy_layer->test_properties()->copy_requests.push_back( |
5626 CopyOutputRequest::CreateRequest(base::Bind(&EmptyCopyOutputCallback))); | 5630 CopyOutputRequest::CreateRequest(base::Bind(&EmptyCopyOutputCallback))); |
5627 | 5631 |
5628 copy_layer->test_properties()->AddChild(std::move(copy_child)); | 5632 copy_layer->test_properties()->AddChild(std::move(copy_child)); |
5629 copy_parent->test_properties()->AddChild(std::move(copy_layer)); | 5633 copy_parent->test_properties()->AddChild(std::move(copy_layer)); |
5630 root->test_properties()->AddChild(std::move(copy_parent)); | 5634 root->test_properties()->AddChild(std::move(copy_parent)); |
5631 | 5635 |
5632 LayerImplList render_surface_layer_list; | 5636 RenderSurfaceList render_surface_list; |
5633 LayerImpl* root_layer = root.get(); | 5637 LayerImpl* root_layer = root.get(); |
5634 root_layer->layer_tree_impl()->SetRootLayerForTesting(std::move(root)); | 5638 root_layer->layer_tree_impl()->SetRootLayerForTesting(std::move(root)); |
5635 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 5639 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
5636 root_layer, root_layer->bounds(), &render_surface_layer_list); | 5640 root_layer, root_layer->bounds(), &render_surface_list); |
5637 inputs.can_adjust_raster_scales = true; | 5641 inputs.can_adjust_raster_scales = true; |
5638 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 5642 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
5639 | 5643 |
5640 // We should have two render surface, as the others are clipped out. | 5644 // We should have two render surface, as the others are clipped out. |
5641 ASSERT_EQ(2u, render_surface_layer_list.size()); | 5645 ASSERT_EQ(2u, render_surface_list.size()); |
5642 EXPECT_EQ(root_layer->id(), render_surface_layer_list.at(0)->id()); | 5646 EXPECT_EQ(root_layer->id(), render_surface_list.at(0)->id()); |
5643 | 5647 |
5644 // The root render surface should only have 2 contributing layer, since the | 5648 // The root render surface should have only 2 contributing layer, since the |
5645 // other layers are empty/clipped away. | 5649 // other layers are clipped away. |
5646 ASSERT_EQ(2u, root_layer->GetRenderSurface()->layer_list().size()); | 5650 ASSERT_EQ(2, root_layer->GetRenderSurface()->num_contributors()); |
5647 EXPECT_EQ(root_layer->id(), | 5651 EXPECT_TRUE(root_layer->is_drawn_render_surface_layer_list_member()); |
5648 root_layer->GetRenderSurface()->layer_list().at(0)->id()); | |
5649 } | 5652 } |
5650 | 5653 |
5651 TEST_F(LayerTreeHostCommonTest, VisibleRectInNonRootCopyRequest) { | 5654 TEST_F(LayerTreeHostCommonTest, VisibleRectInNonRootCopyRequest) { |
5652 LayerImpl* root = root_layer_for_testing(); | 5655 LayerImpl* root = root_layer_for_testing(); |
5653 root->SetBounds(gfx::Size(50, 50)); | 5656 root->SetBounds(gfx::Size(50, 50)); |
5654 root->SetDrawsContent(true); | 5657 root->SetDrawsContent(true); |
5655 root->SetMasksToBounds(true); | 5658 root->SetMasksToBounds(true); |
5656 | 5659 |
5657 LayerImpl* copy_layer = AddChild<LayerImpl>(root); | 5660 LayerImpl* copy_layer = AddChild<LayerImpl>(root); |
5658 copy_layer->SetBounds(gfx::Size(100, 100)); | 5661 copy_layer->SetBounds(gfx::Size(100, 100)); |
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6139 child3->SetDrawsContent(true); | 6142 child3->SetDrawsContent(true); |
6140 child3->test_properties()->sorting_context_id = 1; | 6143 child3->test_properties()->sorting_context_id = 1; |
6141 | 6144 |
6142 child2->test_properties()->AddChild(std::move(child3)); | 6145 child2->test_properties()->AddChild(std::move(child3)); |
6143 child1->test_properties()->AddChild(std::move(child2)); | 6146 child1->test_properties()->AddChild(std::move(child2)); |
6144 root->test_properties()->AddChild(std::move(child1)); | 6147 root->test_properties()->AddChild(std::move(child1)); |
6145 LayerImpl* root_layer = root.get(); | 6148 LayerImpl* root_layer = root.get(); |
6146 root_layer->layer_tree_impl()->SetRootLayerForTesting(std::move(root)); | 6149 root_layer->layer_tree_impl()->SetRootLayerForTesting(std::move(root)); |
6147 | 6150 |
6148 { | 6151 { |
6149 LayerImplList render_surface_layer_list; | 6152 RenderSurfaceList render_surface_list; |
6150 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 6153 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
6151 root_layer, root_layer->bounds(), &render_surface_layer_list); | 6154 root_layer, root_layer->bounds(), &render_surface_list); |
6152 inputs.can_render_to_separate_surface = true; | 6155 inputs.can_render_to_separate_surface = true; |
6153 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 6156 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
6154 | 6157 |
6155 EXPECT_EQ(2u, render_surface_layer_list.size()); | 6158 EXPECT_EQ(2u, render_surface_list.size()); |
6156 | 6159 |
6157 int count_represents_target_render_surface = 0; | 6160 int count_represents_target_render_surface = 0; |
6158 int count_represents_contributing_render_surface = 0; | 6161 int count_represents_contributing_render_surface = 0; |
6159 int count_represents_itself = 0; | 6162 int count_represents_itself = 0; |
6160 for (EffectTreeLayerListIterator it(host_impl.active_tree()); | 6163 for (EffectTreeLayerListIterator it(host_impl.active_tree()); |
6161 it.state() != EffectTreeLayerListIterator::State::END; ++it) { | 6164 it.state() != EffectTreeLayerListIterator::State::END; ++it) { |
6162 if (it.state() == EffectTreeLayerListIterator::State::TARGET_SURFACE) { | 6165 if (it.state() == EffectTreeLayerListIterator::State::TARGET_SURFACE) { |
6163 count_represents_target_render_surface++; | 6166 count_represents_target_render_surface++; |
6164 } else if (it.state() == | 6167 } else if (it.state() == |
6165 EffectTreeLayerListIterator::State::CONTRIBUTING_SURFACE) { | 6168 EffectTreeLayerListIterator::State::CONTRIBUTING_SURFACE) { |
6166 count_represents_contributing_render_surface++; | 6169 count_represents_contributing_render_surface++; |
6167 } else { | 6170 } else { |
6168 count_represents_itself++; | 6171 count_represents_itself++; |
6169 } | 6172 } |
6170 } | 6173 } |
6171 | 6174 |
6172 // Two render surfaces. | 6175 // Two render surfaces. |
6173 EXPECT_EQ(2, count_represents_target_render_surface); | 6176 EXPECT_EQ(2, count_represents_target_render_surface); |
6174 // Second render surface contributes to root render surface. | 6177 // Second render surface contributes to root render surface. |
6175 EXPECT_EQ(1, count_represents_contributing_render_surface); | 6178 EXPECT_EQ(1, count_represents_contributing_render_surface); |
6176 // All 4 layers represent itself. | 6179 // All 4 layers represent itself. |
6177 EXPECT_EQ(4, count_represents_itself); | 6180 EXPECT_EQ(4, count_represents_itself); |
6178 } | 6181 } |
6179 | 6182 |
6180 { | 6183 { |
6181 LayerImplList render_surface_layer_list; | 6184 RenderSurfaceList render_surface_list; |
6182 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 6185 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
6183 root_layer, root_layer->bounds(), &render_surface_layer_list); | 6186 root_layer, root_layer->bounds(), &render_surface_list); |
6184 inputs.can_render_to_separate_surface = false; | 6187 inputs.can_render_to_separate_surface = false; |
6185 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 6188 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
6186 | 6189 |
6187 EXPECT_EQ(1u, render_surface_layer_list.size()); | 6190 EXPECT_EQ(1u, render_surface_list.size()); |
6188 | 6191 |
6189 int count_represents_target_render_surface = 0; | 6192 int count_represents_target_render_surface = 0; |
6190 int count_represents_contributing_render_surface = 0; | 6193 int count_represents_contributing_render_surface = 0; |
6191 int count_represents_itself = 0; | 6194 int count_represents_itself = 0; |
6192 for (EffectTreeLayerListIterator it(host_impl.active_tree()); | 6195 for (EffectTreeLayerListIterator it(host_impl.active_tree()); |
6193 it.state() != EffectTreeLayerListIterator::State::END; ++it) { | 6196 it.state() != EffectTreeLayerListIterator::State::END; ++it) { |
6194 if (it.state() == EffectTreeLayerListIterator::State::TARGET_SURFACE) { | 6197 if (it.state() == EffectTreeLayerListIterator::State::TARGET_SURFACE) { |
6195 count_represents_target_render_surface++; | 6198 count_represents_target_render_surface++; |
6196 } else if (it.state() == | 6199 } else if (it.state() == |
6197 EffectTreeLayerListIterator::State::CONTRIBUTING_SURFACE) { | 6200 EffectTreeLayerListIterator::State::CONTRIBUTING_SURFACE) { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6236 | 6239 |
6237 flattener->SetBounds(gfx::Size(30, 30)); | 6240 flattener->SetBounds(gfx::Size(30, 30)); |
6238 render_surface2->SetBounds(gfx::Size(30, 30)); | 6241 render_surface2->SetBounds(gfx::Size(30, 30)); |
6239 render_surface2->test_properties()->should_flatten_transform = false; | 6242 render_surface2->test_properties()->should_flatten_transform = false; |
6240 render_surface2->test_properties()->force_render_surface = true; | 6243 render_surface2->test_properties()->force_render_surface = true; |
6241 render_surface2->test_properties()->double_sided = false; | 6244 render_surface2->test_properties()->double_sided = false; |
6242 child2->SetBounds(gfx::Size(20, 20)); | 6245 child2->SetBounds(gfx::Size(20, 20)); |
6243 | 6246 |
6244 ExecuteCalculateDrawProperties(root); | 6247 ExecuteCalculateDrawProperties(root); |
6245 | 6248 |
6246 EXPECT_EQ(3u, render_surface_layer_list_impl()->size()); | 6249 EXPECT_EQ(3u, render_surface_list_impl()->size()); |
6247 EXPECT_EQ(2u, | 6250 EXPECT_EQ(2, render_surface_list_impl()->at(0)->num_contributors()); |
6248 render_surface_layer_list_impl() | 6251 EXPECT_EQ(1, render_surface_list_impl()->at(1)->num_contributors()); |
6249 ->at(0) | |
6250 ->GetRenderSurface() | |
6251 ->layer_list() | |
6252 .size()); | |
6253 EXPECT_EQ(1u, | |
6254 render_surface_layer_list_impl() | |
6255 ->at(1) | |
6256 ->GetRenderSurface() | |
6257 ->layer_list() | |
6258 .size()); | |
6259 | 6252 |
6260 gfx::Transform rotation_transform; | 6253 gfx::Transform rotation_transform; |
6261 rotation_transform.RotateAboutXAxis(180.0); | 6254 rotation_transform.RotateAboutXAxis(180.0); |
6262 | 6255 |
6263 back_facing->test_properties()->transform = rotation_transform; | 6256 back_facing->test_properties()->transform = rotation_transform; |
6264 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 6257 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
6265 | 6258 |
6266 ExecuteCalculateDrawProperties(root); | 6259 ExecuteCalculateDrawProperties(root); |
6267 | 6260 |
6268 // render_surface1 is in the same 3d rendering context as back_facing and is | 6261 // render_surface1 is in the same 3d rendering context as back_facing and is |
6269 // not double sided, so it should not be in RSLL. render_surface2 is also not | 6262 // not double sided, so it should not be in RSLL. render_surface2 is also not |
6270 // double-sided, but will still be in RSLL as it's in a different 3d rendering | 6263 // double-sided, but will still be in RSLL as it's in a different 3d rendering |
6271 // context. | 6264 // context. |
6272 EXPECT_EQ(2u, render_surface_layer_list_impl()->size()); | 6265 EXPECT_EQ(2u, render_surface_list_impl()->size()); |
6273 EXPECT_EQ(1u, | 6266 EXPECT_EQ(1, render_surface_list_impl()->at(0)->num_contributors()); |
6274 render_surface_layer_list_impl() | |
6275 ->at(0) | |
6276 ->GetRenderSurface() | |
6277 ->layer_list() | |
6278 .size()); | |
6279 } | 6267 } |
6280 | 6268 |
6281 TEST_F(LayerTreeHostCommonTest, DoNotIncludeBackfaceInvisibleLayers) { | 6269 TEST_F(LayerTreeHostCommonTest, DoNotIncludeBackfaceInvisibleLayers) { |
6282 LayerImpl* root = root_layer_for_testing(); | 6270 LayerImpl* root = root_layer_for_testing(); |
6283 LayerImpl* child = AddChild<LayerImpl>(root); | 6271 LayerImpl* child = AddChild<LayerImpl>(root); |
6284 LayerImpl* grand_child = AddChild<LayerImpl>(child); | 6272 LayerImpl* grand_child = AddChild<LayerImpl>(child); |
6285 | 6273 |
6286 root->SetBounds(gfx::Size(50, 50)); | 6274 root->SetBounds(gfx::Size(50, 50)); |
6287 root->test_properties()->should_flatten_transform = false; | 6275 root->test_properties()->should_flatten_transform = false; |
6288 child->SetBounds(gfx::Size(30, 30)); | 6276 child->SetBounds(gfx::Size(30, 30)); |
6289 child->test_properties()->double_sided = false; | 6277 child->test_properties()->double_sided = false; |
6290 child->test_properties()->should_flatten_transform = false; | 6278 child->test_properties()->should_flatten_transform = false; |
6291 grand_child->SetBounds(gfx::Size(20, 20)); | 6279 grand_child->SetBounds(gfx::Size(20, 20)); |
6292 grand_child->SetDrawsContent(true); | 6280 grand_child->SetDrawsContent(true); |
6293 grand_child->SetUseParentBackfaceVisibility(true); | 6281 grand_child->SetUseParentBackfaceVisibility(true); |
6294 grand_child->test_properties()->should_flatten_transform = false; | 6282 grand_child->test_properties()->should_flatten_transform = false; |
6295 ExecuteCalculateDrawProperties(root); | 6283 ExecuteCalculateDrawProperties(root); |
6296 | 6284 |
6297 EXPECT_EQ(1u, render_surface_layer_list_impl()->size()); | 6285 EXPECT_EQ(1u, render_surface_list_impl()->size()); |
6298 EXPECT_EQ(grand_child, | 6286 EXPECT_TRUE(grand_child->is_drawn_render_surface_layer_list_member()); |
6299 render_surface_layer_list_impl() | |
6300 ->at(0) | |
6301 ->GetRenderSurface() | |
6302 ->layer_list()[0]); | |
6303 | 6287 |
6304 // As all layers have identity transform, we shouldn't check for backface | 6288 // As all layers have identity transform, we shouldn't check for backface |
6305 // visibility. | 6289 // visibility. |
6306 EXPECT_FALSE(root->should_check_backface_visibility()); | 6290 EXPECT_FALSE(root->should_check_backface_visibility()); |
6307 EXPECT_FALSE(child->should_check_backface_visibility()); | 6291 EXPECT_FALSE(child->should_check_backface_visibility()); |
6308 EXPECT_FALSE(grand_child->should_check_backface_visibility()); | 6292 EXPECT_FALSE(grand_child->should_check_backface_visibility()); |
6309 // As there are no 3d rendering contexts, all layers should use their local | 6293 // As there are no 3d rendering contexts, all layers should use their local |
6310 // transform for backface visibility. | 6294 // transform for backface visibility. |
6311 EXPECT_TRUE(root->use_local_transform_for_backface_visibility()); | 6295 EXPECT_TRUE(root->use_local_transform_for_backface_visibility()); |
6312 EXPECT_TRUE(child->use_local_transform_for_backface_visibility()); | 6296 EXPECT_TRUE(child->use_local_transform_for_backface_visibility()); |
6313 EXPECT_TRUE(grand_child->use_local_transform_for_backface_visibility()); | 6297 EXPECT_TRUE(grand_child->use_local_transform_for_backface_visibility()); |
6314 | 6298 |
6315 gfx::Transform rotation_transform; | 6299 gfx::Transform rotation_transform; |
6316 rotation_transform.RotateAboutXAxis(180.0); | 6300 rotation_transform.RotateAboutXAxis(180.0); |
6317 | 6301 |
6318 child->test_properties()->transform = rotation_transform; | 6302 child->test_properties()->transform = rotation_transform; |
6319 child->test_properties()->sorting_context_id = 1; | 6303 child->test_properties()->sorting_context_id = 1; |
6320 grand_child->test_properties()->sorting_context_id = 1; | 6304 grand_child->test_properties()->sorting_context_id = 1; |
6321 child->layer_tree_impl()->property_trees()->needs_rebuild = true; | 6305 child->layer_tree_impl()->property_trees()->needs_rebuild = true; |
6322 | 6306 |
6323 ExecuteCalculateDrawProperties(root); | 6307 ExecuteCalculateDrawProperties(root); |
6324 EXPECT_EQ(1u, render_surface_layer_list_impl()->size()); | 6308 EXPECT_EQ(1u, render_surface_list_impl()->size()); |
6325 EXPECT_EQ(0u, | 6309 EXPECT_EQ(0, render_surface_list_impl()->at(0)->num_contributors()); |
6326 render_surface_layer_list_impl() | |
6327 ->at(0) | |
6328 ->GetRenderSurface() | |
6329 ->layer_list() | |
6330 .size()); | |
6331 | 6310 |
6332 // We should check for backface visibilty of child as it has a rotation | 6311 // We should check for backface visibilty of child as it has a rotation |
6333 // transform. We should also check for grand_child as it uses the backface | 6312 // transform. We should also check for grand_child as it uses the backface |
6334 // visibility of its parent. | 6313 // visibility of its parent. |
6335 EXPECT_FALSE(root->should_check_backface_visibility()); | 6314 EXPECT_FALSE(root->should_check_backface_visibility()); |
6336 EXPECT_TRUE(child->should_check_backface_visibility()); | 6315 EXPECT_TRUE(child->should_check_backface_visibility()); |
6337 EXPECT_TRUE(grand_child->should_check_backface_visibility()); | 6316 EXPECT_TRUE(grand_child->should_check_backface_visibility()); |
6338 // child uses its local transform for backface visibility as it is the root of | 6317 // child uses its local transform for backface visibility as it is the root of |
6339 // a 3d rendering context. grand_child is in a 3d rendering context and is not | 6318 // a 3d rendering context. grand_child is in a 3d rendering context and is not |
6340 // the root, but it derives its backface visibility from its parent which uses | 6319 // the root, but it derives its backface visibility from its parent which uses |
6341 // its local transform. | 6320 // its local transform. |
6342 EXPECT_TRUE(root->use_local_transform_for_backface_visibility()); | 6321 EXPECT_TRUE(root->use_local_transform_for_backface_visibility()); |
6343 EXPECT_TRUE(child->use_local_transform_for_backface_visibility()); | 6322 EXPECT_TRUE(child->use_local_transform_for_backface_visibility()); |
6344 EXPECT_TRUE(grand_child->use_local_transform_for_backface_visibility()); | 6323 EXPECT_TRUE(grand_child->use_local_transform_for_backface_visibility()); |
6345 | 6324 |
6346 grand_child->SetUseParentBackfaceVisibility(false); | 6325 grand_child->SetUseParentBackfaceVisibility(false); |
6347 grand_child->test_properties()->double_sided = false; | 6326 grand_child->test_properties()->double_sided = false; |
6348 grand_child->layer_tree_impl()->property_trees()->needs_rebuild = true; | 6327 grand_child->layer_tree_impl()->property_trees()->needs_rebuild = true; |
6349 | 6328 |
6350 ExecuteCalculateDrawProperties(root); | 6329 ExecuteCalculateDrawProperties(root); |
6351 EXPECT_EQ(1u, render_surface_layer_list_impl()->size()); | 6330 EXPECT_EQ(1u, render_surface_list_impl()->size()); |
6352 EXPECT_EQ(0u, | 6331 EXPECT_EQ(0, render_surface_list_impl()->at(0)->num_contributors()); |
6353 render_surface_layer_list_impl() | |
6354 ->at(0) | |
6355 ->GetRenderSurface() | |
6356 ->layer_list() | |
6357 .size()); | |
6358 | 6332 |
6359 // We should check the backface visibility of child as it has a rotation | 6333 // We should check the backface visibility of child as it has a rotation |
6360 // transform and for grand_child as it is in a 3d rendering context and not | 6334 // transform and for grand_child as it is in a 3d rendering context and not |
6361 // the root of it. | 6335 // the root of it. |
6362 EXPECT_FALSE(root->should_check_backface_visibility()); | 6336 EXPECT_FALSE(root->should_check_backface_visibility()); |
6363 EXPECT_TRUE(child->should_check_backface_visibility()); | 6337 EXPECT_TRUE(child->should_check_backface_visibility()); |
6364 EXPECT_TRUE(grand_child->should_check_backface_visibility()); | 6338 EXPECT_TRUE(grand_child->should_check_backface_visibility()); |
6365 // grand_child is in an existing 3d rendering context, so it should not use | 6339 // grand_child is in an existing 3d rendering context, so it should not use |
6366 // local transform for backface visibility. | 6340 // local transform for backface visibility. |
6367 EXPECT_TRUE(root->use_local_transform_for_backface_visibility()); | 6341 EXPECT_TRUE(root->use_local_transform_for_backface_visibility()); |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6483 scroll_child_target->SetBounds(gfx::Size(50, 50)); | 6457 scroll_child_target->SetBounds(gfx::Size(50, 50)); |
6484 scroll_child_target->test_properties()->force_render_surface = true; | 6458 scroll_child_target->test_properties()->force_render_surface = true; |
6485 scroll_child->SetBounds(gfx::Size(50, 50)); | 6459 scroll_child->SetBounds(gfx::Size(50, 50)); |
6486 scroll_parent_target->SetPosition(gfx::PointF(10, 10)); | 6460 scroll_parent_target->SetPosition(gfx::PointF(10, 10)); |
6487 scroll_parent_target->SetBounds(gfx::Size(50, 50)); | 6461 scroll_parent_target->SetBounds(gfx::Size(50, 50)); |
6488 scroll_parent_target->SetMasksToBounds(true); | 6462 scroll_parent_target->SetMasksToBounds(true); |
6489 scroll_parent_target->test_properties()->force_render_surface = true; | 6463 scroll_parent_target->test_properties()->force_render_surface = true; |
6490 scroll_parent->SetBounds(gfx::Size(50, 50)); | 6464 scroll_parent->SetBounds(gfx::Size(50, 50)); |
6491 | 6465 |
6492 float device_scale_factor = 1.5f; | 6466 float device_scale_factor = 1.5f; |
6493 LayerImplList render_surface_layer_list_impl; | 6467 RenderSurfaceList render_surface_list_impl; |
6494 gfx::Size device_viewport_size = | 6468 gfx::Size device_viewport_size = |
6495 gfx::Size(root->bounds().width() * device_scale_factor, | 6469 gfx::Size(root->bounds().width() * device_scale_factor, |
6496 root->bounds().height() * device_scale_factor); | 6470 root->bounds().height() * device_scale_factor); |
6497 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 6471 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
6498 root, device_viewport_size, gfx::Transform(), | 6472 root, device_viewport_size, gfx::Transform(), &render_surface_list_impl); |
6499 &render_surface_layer_list_impl); | |
6500 inputs.device_scale_factor = device_scale_factor; | 6473 inputs.device_scale_factor = device_scale_factor; |
6501 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 6474 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
6502 | 6475 |
6503 EXPECT_EQ(scroll_child->effect_tree_index(), | 6476 EXPECT_EQ(scroll_child->effect_tree_index(), |
6504 scroll_child_target->effect_tree_index()); | 6477 scroll_child_target->effect_tree_index()); |
6505 EXPECT_EQ(scroll_child->visible_layer_rect(), gfx::Rect(10, 10, 40, 40)); | 6478 EXPECT_EQ(scroll_child->visible_layer_rect(), gfx::Rect(10, 10, 40, 40)); |
6506 EXPECT_EQ(scroll_child->clip_rect(), gfx::Rect(15, 15, 75, 75)); | 6479 EXPECT_EQ(scroll_child->clip_rect(), gfx::Rect(15, 15, 75, 75)); |
6507 gfx::Transform scale; | 6480 gfx::Transform scale; |
6508 scale.Scale(1.5f, 1.5f); | 6481 scale.Scale(1.5f, 1.5f); |
6509 EXPECT_TRANSFORMATION_MATRIX_EQ(scroll_child->DrawTransform(), scale); | 6482 EXPECT_TRANSFORMATION_MATRIX_EQ(scroll_child->DrawTransform(), scale); |
(...skipping 10 matching lines...) Expand all Loading... |
6520 parent->SetBounds(gfx::Size(30, 30)); | 6493 parent->SetBounds(gfx::Size(30, 30)); |
6521 parent->SetDrawsContent(true); | 6494 parent->SetDrawsContent(true); |
6522 parent->test_properties()->force_render_surface = true; | 6495 parent->test_properties()->force_render_surface = true; |
6523 parent->test_properties()->sorting_context_id = 1; | 6496 parent->test_properties()->sorting_context_id = 1; |
6524 child->SetBounds(gfx::Size(20, 20)); | 6497 child->SetBounds(gfx::Size(20, 20)); |
6525 child->SetDrawsContent(true); | 6498 child->SetDrawsContent(true); |
6526 child->test_properties()->force_render_surface = true; | 6499 child->test_properties()->force_render_surface = true; |
6527 child->test_properties()->sorting_context_id = 1; | 6500 child->test_properties()->sorting_context_id = 1; |
6528 ExecuteCalculateDrawProperties(root); | 6501 ExecuteCalculateDrawProperties(root); |
6529 | 6502 |
6530 EXPECT_EQ(3u, render_surface_layer_list_impl()->size()); | 6503 EXPECT_EQ(3u, render_surface_list_impl()->size()); |
6531 | 6504 |
6532 gfx::Transform singular_transform; | 6505 gfx::Transform singular_transform; |
6533 singular_transform.Scale3d( | 6506 singular_transform.Scale3d( |
6534 SkDoubleToMScalar(1.0), SkDoubleToMScalar(1.0), SkDoubleToMScalar(0.0)); | 6507 SkDoubleToMScalar(1.0), SkDoubleToMScalar(1.0), SkDoubleToMScalar(0.0)); |
6535 | 6508 |
6536 child->test_properties()->transform = singular_transform; | 6509 child->test_properties()->transform = singular_transform; |
6537 | 6510 |
6538 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 6511 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
6539 ExecuteCalculateDrawProperties(root); | 6512 ExecuteCalculateDrawProperties(root); |
6540 | 6513 |
6541 EXPECT_EQ(2u, render_surface_layer_list_impl()->size()); | 6514 EXPECT_EQ(2u, render_surface_list_impl()->size()); |
6542 | 6515 |
6543 // Ensure that the entire subtree under a layer with singular transform does | 6516 // Ensure that the entire subtree under a layer with singular transform does |
6544 // not get rendered. | 6517 // not get rendered. |
6545 parent->test_properties()->transform = singular_transform; | 6518 parent->test_properties()->transform = singular_transform; |
6546 child->test_properties()->transform = gfx::Transform(); | 6519 child->test_properties()->transform = gfx::Transform(); |
6547 | 6520 |
6548 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 6521 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
6549 ExecuteCalculateDrawProperties(root); | 6522 ExecuteCalculateDrawProperties(root); |
6550 | 6523 |
6551 EXPECT_EQ(1u, render_surface_layer_list_impl()->size()); | 6524 EXPECT_EQ(1u, render_surface_list_impl()->size()); |
6552 } | 6525 } |
6553 | 6526 |
6554 TEST_F(LayerTreeHostCommonTest, ClippedByOutOfOrderScrollParent) { | 6527 TEST_F(LayerTreeHostCommonTest, ClippedByOutOfOrderScrollParent) { |
6555 // Checks that clipping by a scroll parent that follows you in paint order | 6528 // Checks that clipping by a scroll parent that follows you in paint order |
6556 // still results in correct clipping. | 6529 // still results in correct clipping. |
6557 // | 6530 // |
6558 // + root | 6531 // + root |
6559 // + scroll_parent_border | 6532 // + scroll_parent_border |
6560 // + scroll_parent_clip | 6533 // + scroll_parent_clip |
6561 // + scroll_parent | 6534 // + scroll_parent |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6642 | 6615 |
6643 ExecuteCalculateDrawProperties(root); | 6616 ExecuteCalculateDrawProperties(root); |
6644 | 6617 |
6645 EXPECT_TRUE(root->GetRenderSurface()); | 6618 EXPECT_TRUE(root->GetRenderSurface()); |
6646 | 6619 |
6647 EXPECT_EQ(gfx::Rect(0, 0, 20, 20), scroll_child->clip_rect()); | 6620 EXPECT_EQ(gfx::Rect(0, 0, 20, 20), scroll_child->clip_rect()); |
6648 EXPECT_TRUE(scroll_child->is_clipped()); | 6621 EXPECT_TRUE(scroll_child->is_clipped()); |
6649 | 6622 |
6650 // Despite the fact that we visited the above layers out of order to get the | 6623 // Despite the fact that we visited the above layers out of order to get the |
6651 // correct clip, the layer lists should be unaffected. | 6624 // correct clip, the layer lists should be unaffected. |
6652 EXPECT_EQ(3u, root->GetRenderSurface()->layer_list().size()); | 6625 EXPECT_EQ(3, root->GetRenderSurface()->num_contributors()); |
6653 EXPECT_EQ(scroll_child, root->GetRenderSurface()->layer_list().at(0)); | 6626 EXPECT_TRUE(scroll_child->is_drawn_render_surface_layer_list_member()); |
6654 EXPECT_EQ(scroll_parent, root->GetRenderSurface()->layer_list().at(1)); | 6627 EXPECT_TRUE(scroll_parent->is_drawn_render_surface_layer_list_member()); |
6655 EXPECT_EQ(scroll_grandparent, root->GetRenderSurface()->layer_list().at(2)); | 6628 EXPECT_TRUE(scroll_grandparent->is_drawn_render_surface_layer_list_member()); |
6656 } | 6629 } |
6657 | 6630 |
6658 TEST_F(LayerTreeHostCommonTest, OutOfOrderClippingRequiresRSLLSorting) { | 6631 TEST_F(LayerTreeHostCommonTest, OutOfOrderClippingRequiresRSLLSorting) { |
6659 // Ensures that even if we visit layers out of order, we still produce a | 6632 // Ensures that even if we visit layers out of order, we still produce a |
6660 // correctly ordered render surface layer list. | 6633 // correctly ordered render surface layer list. |
6661 // + root | 6634 // + root |
6662 // + scroll_child | 6635 // + scroll_child |
6663 // + scroll_parent_border | 6636 // + scroll_parent_border |
6664 // + scroll_parent_clip | 6637 // + scroll_parent_clip |
6665 // + scroll_parent | 6638 // + scroll_parent |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6718 scroll_child->SetBounds(gfx::Size(50, 50)); | 6691 scroll_child->SetBounds(gfx::Size(50, 50)); |
6719 | 6692 |
6720 ExecuteCalculateDrawProperties(root); | 6693 ExecuteCalculateDrawProperties(root); |
6721 | 6694 |
6722 EXPECT_TRUE(root->GetRenderSurface()); | 6695 EXPECT_TRUE(root->GetRenderSurface()); |
6723 | 6696 |
6724 EXPECT_EQ(gfx::Rect(0, 0, 20, 20), scroll_child->clip_rect()); | 6697 EXPECT_EQ(gfx::Rect(0, 0, 20, 20), scroll_child->clip_rect()); |
6725 EXPECT_TRUE(scroll_child->is_clipped()); | 6698 EXPECT_TRUE(scroll_child->is_clipped()); |
6726 | 6699 |
6727 // Despite the fact that we had to process the layers out of order to get the | 6700 // Despite the fact that we had to process the layers out of order to get the |
6728 // right clip, our render_surface_layer_list's order should be unaffected. | 6701 // right clip, our render_surface_list's order should be unaffected. |
6729 EXPECT_EQ(3u, render_surface_layer_list_impl()->size()); | 6702 EXPECT_EQ(3u, render_surface_list_impl()->size()); |
6730 EXPECT_EQ(root, render_surface_layer_list_impl()->at(0)); | 6703 EXPECT_EQ(root->GetRenderSurface(), render_surface_list_impl()->at(0)); |
6731 EXPECT_EQ(render_surface2, render_surface_layer_list_impl()->at(1)); | 6704 EXPECT_EQ(render_surface2->GetRenderSurface(), |
6732 EXPECT_EQ(render_surface1, render_surface_layer_list_impl()->at(2)); | 6705 render_surface_list_impl()->at(1)); |
6733 EXPECT_TRUE(render_surface_layer_list_impl()->at(0)->GetRenderSurface()); | 6706 EXPECT_EQ(render_surface1->GetRenderSurface(), |
6734 EXPECT_TRUE(render_surface_layer_list_impl()->at(1)->GetRenderSurface()); | 6707 render_surface_list_impl()->at(2)); |
6735 EXPECT_TRUE(render_surface_layer_list_impl()->at(2)->GetRenderSurface()); | |
6736 } | 6708 } |
6737 | 6709 |
6738 TEST_F(LayerTreeHostCommonTest, FixedPositionWithInterveningRenderSurface) { | 6710 TEST_F(LayerTreeHostCommonTest, FixedPositionWithInterveningRenderSurface) { |
6739 // Ensures that when we have a render surface between a fixed position layer | 6711 // Ensures that when we have a render surface between a fixed position layer |
6740 // and its container, we compute the fixed position layer's draw transform | 6712 // and its container, we compute the fixed position layer's draw transform |
6741 // with respect to that intervening render surface, not with respect to its | 6713 // with respect to that intervening render surface, not with respect to its |
6742 // container's render target. | 6714 // container's render target. |
6743 // | 6715 // |
6744 // + root | 6716 // + root |
6745 // + render_surface | 6717 // + render_surface |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6851 container->test_properties()->AddChild(std::move(scroller)); | 6823 container->test_properties()->AddChild(std::move(scroller)); |
6852 root->test_properties()->AddChild(std::move(container)); | 6824 root->test_properties()->AddChild(std::move(container)); |
6853 root->layer_tree_impl()->SetRootLayerForTesting(std::move(root_ptr)); | 6825 root->layer_tree_impl()->SetRootLayerForTesting(std::move(root_ptr)); |
6854 root->layer_tree_impl()->BuildPropertyTreesForTesting(); | 6826 root->layer_tree_impl()->BuildPropertyTreesForTesting(); |
6855 | 6827 |
6856 // Rounded to integers already. | 6828 // Rounded to integers already. |
6857 { | 6829 { |
6858 gfx::Vector2dF scroll_delta(3.0, 5.0); | 6830 gfx::Vector2dF scroll_delta(3.0, 5.0); |
6859 SetScrollOffsetDelta(scroll_layer, scroll_delta); | 6831 SetScrollOffsetDelta(scroll_layer, scroll_delta); |
6860 | 6832 |
6861 LayerImplList render_surface_layer_list; | 6833 RenderSurfaceList render_surface_list; |
6862 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 6834 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
6863 root, root->bounds(), &render_surface_layer_list); | 6835 root, root->bounds(), &render_surface_list); |
6864 root->layer_tree_impl() | 6836 root->layer_tree_impl() |
6865 ->property_trees() | 6837 ->property_trees() |
6866 ->transform_tree.set_source_to_parent_updates_allowed(false); | 6838 ->transform_tree.set_source_to_parent_updates_allowed(false); |
6867 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 6839 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
6868 | 6840 |
6869 EXPECT_TRANSFORMATION_MATRIX_EQ( | 6841 EXPECT_TRANSFORMATION_MATRIX_EQ( |
6870 container_layer->draw_properties().screen_space_transform, | 6842 container_layer->draw_properties().screen_space_transform, |
6871 fixed_layer->draw_properties().screen_space_transform); | 6843 fixed_layer->draw_properties().screen_space_transform); |
6872 EXPECT_VECTOR_EQ( | 6844 EXPECT_VECTOR_EQ( |
6873 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(), | 6845 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(), |
6874 container_offset); | 6846 container_offset); |
6875 EXPECT_VECTOR_EQ(scroll_layer->draw_properties() | 6847 EXPECT_VECTOR_EQ(scroll_layer->draw_properties() |
6876 .screen_space_transform.To2dTranslation(), | 6848 .screen_space_transform.To2dTranslation(), |
6877 container_offset - scroll_delta); | 6849 container_offset - scroll_delta); |
6878 } | 6850 } |
6879 | 6851 |
6880 // Scroll delta requiring rounding. | 6852 // Scroll delta requiring rounding. |
6881 { | 6853 { |
6882 gfx::Vector2dF scroll_delta(4.1f, 8.1f); | 6854 gfx::Vector2dF scroll_delta(4.1f, 8.1f); |
6883 SetScrollOffsetDelta(scroll_layer, scroll_delta); | 6855 SetScrollOffsetDelta(scroll_layer, scroll_delta); |
6884 | 6856 |
6885 gfx::Vector2dF rounded_scroll_delta(4.f, 8.f); | 6857 gfx::Vector2dF rounded_scroll_delta(4.f, 8.f); |
6886 | 6858 |
6887 LayerImplList render_surface_layer_list; | 6859 RenderSurfaceList render_surface_list; |
6888 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 6860 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
6889 root, root->bounds(), &render_surface_layer_list); | 6861 root, root->bounds(), &render_surface_list); |
6890 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 6862 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
6891 | 6863 |
6892 EXPECT_TRANSFORMATION_MATRIX_EQ( | 6864 EXPECT_TRANSFORMATION_MATRIX_EQ( |
6893 container_layer->draw_properties().screen_space_transform, | 6865 container_layer->draw_properties().screen_space_transform, |
6894 fixed_layer->draw_properties().screen_space_transform); | 6866 fixed_layer->draw_properties().screen_space_transform); |
6895 EXPECT_VECTOR_EQ( | 6867 EXPECT_VECTOR_EQ( |
6896 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(), | 6868 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(), |
6897 container_offset); | 6869 container_offset); |
6898 EXPECT_VECTOR_EQ(scroll_layer->draw_properties() | 6870 EXPECT_VECTOR_EQ(scroll_layer->draw_properties() |
6899 .screen_space_transform.To2dTranslation(), | 6871 .screen_space_transform.To2dTranslation(), |
6900 container_offset - rounded_scroll_delta); | 6872 container_offset - rounded_scroll_delta); |
6901 } | 6873 } |
6902 | 6874 |
6903 // Scale is applied earlier in the tree. | 6875 // Scale is applied earlier in the tree. |
6904 { | 6876 { |
6905 SetScrollOffsetDelta(scroll_layer, gfx::Vector2dF()); | 6877 SetScrollOffsetDelta(scroll_layer, gfx::Vector2dF()); |
6906 gfx::Transform scaled_container_transform = container_transform; | 6878 gfx::Transform scaled_container_transform = container_transform; |
6907 scaled_container_transform.Scale3d(2.0, 2.0, 1.0); | 6879 scaled_container_transform.Scale3d(2.0, 2.0, 1.0); |
6908 container_layer->test_properties()->transform = scaled_container_transform; | 6880 container_layer->test_properties()->transform = scaled_container_transform; |
6909 | 6881 |
6910 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 6882 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
6911 | 6883 |
6912 gfx::Vector2dF scroll_delta(4.5f, 8.5f); | 6884 gfx::Vector2dF scroll_delta(4.5f, 8.5f); |
6913 SetScrollOffsetDelta(scroll_layer, scroll_delta); | 6885 SetScrollOffsetDelta(scroll_layer, scroll_delta); |
6914 | 6886 |
6915 LayerImplList render_surface_layer_list; | 6887 RenderSurfaceList render_surface_list; |
6916 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 6888 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
6917 root, root->bounds(), &render_surface_layer_list); | 6889 root, root->bounds(), &render_surface_list); |
6918 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 6890 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
6919 | 6891 |
6920 EXPECT_TRANSFORMATION_MATRIX_EQ( | 6892 EXPECT_TRANSFORMATION_MATRIX_EQ( |
6921 container_layer->draw_properties().screen_space_transform, | 6893 container_layer->draw_properties().screen_space_transform, |
6922 fixed_layer->draw_properties().screen_space_transform); | 6894 fixed_layer->draw_properties().screen_space_transform); |
6923 EXPECT_VECTOR_EQ( | 6895 EXPECT_VECTOR_EQ( |
6924 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(), | 6896 fixed_layer->draw_properties().screen_space_transform.To2dTranslation(), |
6925 container_offset); | 6897 container_offset); |
6926 | 6898 |
6927 container_layer->test_properties()->transform = container_transform; | 6899 container_layer->test_properties()->transform = container_transform; |
(...skipping 1724 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8652 | 8624 |
8653 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(root_layer)); | 8625 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(root_layer)); |
8654 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(child1_layer)); | 8626 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(child1_layer)); |
8655 EXPECT_FLOAT_EQ(8.f, GetMaximumAnimationScale(child2_layer)); | 8627 EXPECT_FLOAT_EQ(8.f, GetMaximumAnimationScale(child2_layer)); |
8656 | 8628 |
8657 // Changing page-scale would affect ideal_contents_scale and | 8629 // Changing page-scale would affect ideal_contents_scale and |
8658 // maximum_animation_contents_scale. | 8630 // maximum_animation_contents_scale. |
8659 | 8631 |
8660 float page_scale_factor = 3.f; | 8632 float page_scale_factor = 3.f; |
8661 float device_scale_factor = 1.0f; | 8633 float device_scale_factor = 1.0f; |
8662 std::vector<LayerImpl*> render_surface_layer_list; | 8634 RenderSurfaceList render_surface_list; |
8663 gfx::Size device_viewport_size = | 8635 gfx::Size device_viewport_size = |
8664 gfx::Size(root_layer->bounds().width() * device_scale_factor, | 8636 gfx::Size(root_layer->bounds().width() * device_scale_factor, |
8665 root_layer->bounds().height() * device_scale_factor); | 8637 root_layer->bounds().height() * device_scale_factor); |
8666 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 8638 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
8667 root_layer, device_viewport_size, &render_surface_layer_list); | 8639 root_layer, device_viewport_size, &render_surface_list); |
8668 | 8640 |
8669 inputs.page_scale_factor = page_scale_factor; | 8641 inputs.page_scale_factor = page_scale_factor; |
8670 inputs.can_adjust_raster_scales = true; | 8642 inputs.can_adjust_raster_scales = true; |
8671 inputs.page_scale_layer = root_layer; | 8643 inputs.page_scale_layer = root_layer; |
8672 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 8644 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
8673 | 8645 |
8674 EXPECT_FLOAT_EQ(3.f, root_layer->GetIdealContentsScale()); | 8646 EXPECT_FLOAT_EQ(3.f, root_layer->GetIdealContentsScale()); |
8675 EXPECT_FLOAT_EQ(9.f, child1_layer->GetIdealContentsScale()); | 8647 EXPECT_FLOAT_EQ(9.f, child1_layer->GetIdealContentsScale()); |
8676 EXPECT_FLOAT_EQ( | 8648 EXPECT_FLOAT_EQ( |
8677 9.f, | 8649 9.f, |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8832 | 8804 |
8833 root->SetBounds(gfx::Size(768 / 2, 3000)); | 8805 root->SetBounds(gfx::Size(768 / 2, 3000)); |
8834 root->SetDrawsContent(true); | 8806 root->SetDrawsContent(true); |
8835 clip->SetBounds(gfx::Size(768 / 2, 10000)); | 8807 clip->SetBounds(gfx::Size(768 / 2, 10000)); |
8836 clip->SetMasksToBounds(true); | 8808 clip->SetMasksToBounds(true); |
8837 content->SetBounds(gfx::Size(768 / 2, 10000)); | 8809 content->SetBounds(gfx::Size(768 / 2, 10000)); |
8838 content->SetDrawsContent(true); | 8810 content->SetDrawsContent(true); |
8839 content->test_properties()->force_render_surface = true; | 8811 content->test_properties()->force_render_surface = true; |
8840 | 8812 |
8841 gfx::Size device_viewport_size(768, 582); | 8813 gfx::Size device_viewport_size(768, 582); |
8842 LayerImplList render_surface_layer_list_impl; | 8814 RenderSurfaceList render_surface_list_impl; |
8843 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 8815 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
8844 root, device_viewport_size, gfx::Transform(), | 8816 root, device_viewport_size, gfx::Transform(), &render_surface_list_impl); |
8845 &render_surface_layer_list_impl); | |
8846 inputs.device_scale_factor = 2.f; | 8817 inputs.device_scale_factor = 2.f; |
8847 inputs.page_scale_factor = 1.f; | 8818 inputs.page_scale_factor = 1.f; |
8848 inputs.page_scale_layer = nullptr; | 8819 inputs.page_scale_layer = nullptr; |
8849 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 8820 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
8850 | 8821 |
8851 // Layers in the root render surface have their visible content rect clipped | 8822 // Layers in the root render surface have their visible content rect clipped |
8852 // by the viewport. | 8823 // by the viewport. |
8853 EXPECT_EQ(gfx::Rect(768 / 2, 582 / 2), root->visible_layer_rect()); | 8824 EXPECT_EQ(gfx::Rect(768 / 2, 582 / 2), root->visible_layer_rect()); |
8854 | 8825 |
8855 // Layers drawing to a child render surface should still have their visible | 8826 // Layers drawing to a child render surface should still have their visible |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8888 | 8859 |
8889 root->test_properties()->AddChild( | 8860 root->test_properties()->AddChild( |
8890 LayerImpl::Create(host_impl.active_tree(), 2)); | 8861 LayerImpl::Create(host_impl.active_tree(), 2)); |
8891 | 8862 |
8892 LayerImpl* sublayer = root->test_properties()->children[0]; | 8863 LayerImpl* sublayer = root->test_properties()->children[0]; |
8893 sublayer->SetBounds(sublayer_size); | 8864 sublayer->SetBounds(sublayer_size); |
8894 sublayer->SetDrawsContent(true); | 8865 sublayer->SetDrawsContent(true); |
8895 | 8866 |
8896 host_impl.active_tree()->BuildPropertyTreesForTesting(); | 8867 host_impl.active_tree()->BuildPropertyTreesForTesting(); |
8897 | 8868 |
8898 LayerImplList layer_impl_list; | 8869 RenderSurfaceList render_surface_list; |
8899 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 8870 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
8900 root, device_viewport_size, &layer_impl_list); | 8871 root, device_viewport_size, &render_surface_list); |
8901 | 8872 |
8902 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 8873 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
8903 EXPECT_EQ(gfx::Rect(root_size), sublayer->visible_layer_rect()); | 8874 EXPECT_EQ(gfx::Rect(root_size), sublayer->visible_layer_rect()); |
8904 | 8875 |
8905 root->SetViewportBoundsDelta(gfx::Vector2dF(0.0, 50.0)); | 8876 root->SetViewportBoundsDelta(gfx::Vector2dF(0.0, 50.0)); |
8906 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 8877 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
8907 | 8878 |
8908 gfx::Rect affected_by_delta(0, 0, root_size.width(), | 8879 gfx::Rect affected_by_delta(0, 0, root_size.width(), |
8909 root_size.height() + 50); | 8880 root_size.height() + 50); |
8910 EXPECT_EQ(affected_by_delta, sublayer->visible_layer_rect()); | 8881 EXPECT_EQ(affected_by_delta, sublayer->visible_layer_rect()); |
(...skipping 1561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10472 render_surface1->GetRenderSurface()->DrawableContentRect()); | 10443 render_surface1->GetRenderSurface()->DrawableContentRect()); |
10473 | 10444 |
10474 bool is_inf_or_nan = std::isinf(child->DrawTransform().matrix().get(0, 0)) || | 10445 bool is_inf_or_nan = std::isinf(child->DrawTransform().matrix().get(0, 0)) || |
10475 std::isnan(child->DrawTransform().matrix().get(0, 0)); | 10446 std::isnan(child->DrawTransform().matrix().get(0, 0)); |
10476 EXPECT_TRUE(is_inf_or_nan); | 10447 EXPECT_TRUE(is_inf_or_nan); |
10477 | 10448 |
10478 is_inf_or_nan = std::isinf(child->DrawTransform().matrix().get(1, 1)) || | 10449 is_inf_or_nan = std::isinf(child->DrawTransform().matrix().get(1, 1)) || |
10479 std::isnan(child->DrawTransform().matrix().get(1, 1)); | 10450 std::isnan(child->DrawTransform().matrix().get(1, 1)); |
10480 EXPECT_TRUE(is_inf_or_nan); | 10451 EXPECT_TRUE(is_inf_or_nan); |
10481 | 10452 |
10482 // The root layer should be in the RenderSurfaceLayerListImpl. | 10453 // The root layer should be in the RenderSurfaceList. |
10483 const auto* rsll = render_surface_layer_list_impl(); | 10454 const auto* rsl = render_surface_list_impl(); |
10484 EXPECT_NE(std::find(rsll->begin(), rsll->end(), root), rsll->end()); | 10455 EXPECT_NE(std::find(rsl->begin(), rsl->end(), root->GetRenderSurface()), |
| 10456 rsl->end()); |
10485 } | 10457 } |
10486 | 10458 |
10487 TEST_F(LayerTreeHostCommonTest, PropertyTreesRebuildWithOpacityChanges) { | 10459 TEST_F(LayerTreeHostCommonTest, PropertyTreesRebuildWithOpacityChanges) { |
10488 scoped_refptr<Layer> root = Layer::Create(); | 10460 scoped_refptr<Layer> root = Layer::Create(); |
10489 scoped_refptr<LayerWithForcedDrawsContent> child = | 10461 scoped_refptr<LayerWithForcedDrawsContent> child = |
10490 make_scoped_refptr(new LayerWithForcedDrawsContent()); | 10462 make_scoped_refptr(new LayerWithForcedDrawsContent()); |
10491 root->AddChild(child); | 10463 root->AddChild(child); |
10492 host()->SetRootLayer(root); | 10464 host()->SetRootLayer(root); |
10493 | 10465 |
10494 root->SetBounds(gfx::Size(100, 100)); | 10466 root->SetBounds(gfx::Size(100, 100)); |
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10865 | 10837 |
10866 // Check child layer draw properties. | 10838 // Check child layer draw properties. |
10867 EXPECT_EQ(gfx::Rect(10, 10), child->visible_layer_rect()); | 10839 EXPECT_EQ(gfx::Rect(10, 10), child->visible_layer_rect()); |
10868 EXPECT_EQ(gfx::Transform(), child->DrawTransform()); | 10840 EXPECT_EQ(gfx::Transform(), child->DrawTransform()); |
10869 EXPECT_EQ(gfx::Rect(10, 10), child->clip_rect()); | 10841 EXPECT_EQ(gfx::Rect(10, 10), child->clip_rect()); |
10870 EXPECT_EQ(gfx::Rect(10, 10), child->drawable_content_rect()); | 10842 EXPECT_EQ(gfx::Rect(10, 10), child->drawable_content_rect()); |
10871 } | 10843 } |
10872 | 10844 |
10873 } // namespace | 10845 } // namespace |
10874 } // namespace cc | 10846 } // namespace cc |
OLD | NEW |