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

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

Issue 1314943008: cc: Remove implicit conversions from Rect to RectF in src/cc/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //// Copyright 2011 The Chromium Authors. All rights reserved. 1 //// Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/layer_tree_host_common.h" 5 #include "cc/trees/layer_tree_host_common.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 9
10 #include "cc/animation/keyframed_animation_curve.h" 10 #include "cc/animation/keyframed_animation_curve.h"
(...skipping 2289 matching lines...) Expand 10 before | Expand all | Expand 10 after
2300 gfx::Transform layer_to_surface_transform; 2300 gfx::Transform layer_to_surface_transform;
2301 layer_to_surface_transform.MakeIdentity(); 2301 layer_to_surface_transform.MakeIdentity();
2302 layer_to_surface_transform.ApplyPerspectiveDepth(1.0); 2302 layer_to_surface_transform.ApplyPerspectiveDepth(1.0);
2303 layer_to_surface_transform.Translate3d(0.0, 0.0, -5.0); 2303 layer_to_surface_transform.Translate3d(0.0, 0.0, -5.0);
2304 layer_to_surface_transform.RotateAboutYAxis(45.0); 2304 layer_to_surface_transform.RotateAboutYAxis(45.0);
2305 layer_to_surface_transform.RotateAboutXAxis(80.0); 2305 layer_to_surface_transform.RotateAboutXAxis(80.0);
2306 2306
2307 // Sanity check that un-projection does indeed cause w < 0, otherwise this 2307 // Sanity check that un-projection does indeed cause w < 0, otherwise this
2308 // code is not testing the intended scenario. 2308 // code is not testing the intended scenario.
2309 bool clipped; 2309 bool clipped;
2310 gfx::RectF clipped_rect = 2310 gfx::RectF clipped_rect = MathUtil::MapClippedRect(
2311 MathUtil::MapClippedRect(layer_to_surface_transform, layer_content_rect); 2311 layer_to_surface_transform, gfx::RectF(layer_content_rect));
2312 MathUtil::ProjectQuad( 2312 MathUtil::ProjectQuad(
2313 Inverse(layer_to_surface_transform), gfx::QuadF(clipped_rect), &clipped); 2313 Inverse(layer_to_surface_transform), gfx::QuadF(clipped_rect), &clipped);
2314 ASSERT_TRUE(clipped); 2314 ASSERT_TRUE(clipped);
2315 2315
2316 // Only the corner of the layer is not visible on the surface because of being 2316 // Only the corner of the layer is not visible on the surface because of being
2317 // clipped. But, the net result of rounding visible region to an axis-aligned 2317 // clipped. But, the net result of rounding visible region to an axis-aligned
2318 // rect is that the entire layer should still be considered visible. 2318 // rect is that the entire layer should still be considered visible.
2319 gfx::Rect expected = gfx::Rect(-10, -10, 20, 20); 2319 gfx::Rect expected = gfx::Rect(-10, -10, 20, 20);
2320 gfx::Rect actual = LayerTreeHostCommon::CalculateVisibleRect( 2320 gfx::Rect actual = LayerTreeHostCommon::CalculateVisibleRect(
2321 target_surface_rect, layer_content_rect, layer_to_surface_transform); 2321 target_surface_rect, layer_content_rect, layer_to_surface_transform);
2322 EXPECT_EQ(expected, actual); 2322 EXPECT_EQ(expected, actual);
2323 } 2323 }
2324 2324
2325 TEST_F(LayerTreeHostCommonTest, 2325 TEST_F(LayerTreeHostCommonTest,
2326 VisibleRectsForPositionedRootLayerClippedByViewport) { 2326 VisibleRectsForPositionedRootLayerClippedByViewport) {
2327 LayerImpl* root = root_layer(); 2327 LayerImpl* root = root_layer();
2328 root->SetDrawsContent(true); 2328 root->SetDrawsContent(true);
2329 2329
2330 gfx::Transform identity_matrix; 2330 gfx::Transform identity_matrix;
2331 // Root layer is positioned at (60, 70). The default device viewport size 2331 // Root layer is positioned at (60, 70). The default device viewport size
2332 // is (0, 0, 100x100) in target space. So the root layer's visible rect 2332 // is (0, 0, 100x100) in target space. So the root layer's visible rect
2333 // will be clipped by the viewport to be (0, 0, 40x30) in layer's space. 2333 // will be clipped by the viewport to be (0, 0, 40x30) in layer's space.
2334 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), 2334 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(),
2335 gfx::PointF(60, 70), gfx::Size(100, 100), true, 2335 gfx::PointF(60, 70), gfx::Size(100, 100), true,
2336 false, true); 2336 false, true);
2337 ExecuteCalculateDrawProperties(root); 2337 ExecuteCalculateDrawProperties(root);
2338 2338
2339 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), 2339 EXPECT_EQ(gfx::RectF(100.f, 100.f),
2340 root->render_surface()->DrawableContentRect()); 2340 root->render_surface()->DrawableContentRect());
2341 // In target space, not clipped. 2341 // In target space, not clipped.
2342 EXPECT_EQ(gfx::Rect(60, 70, 100, 100), root->drawable_content_rect()); 2342 EXPECT_EQ(gfx::Rect(60, 70, 100, 100), root->drawable_content_rect());
2343 // In layer space, clipped. 2343 // In layer space, clipped.
2344 EXPECT_EQ(gfx::Rect(0, 0, 40, 30), root->visible_layer_rect()); 2344 EXPECT_EQ(gfx::Rect(40, 30), root->visible_layer_rect());
2345 } 2345 }
2346 2346
2347 TEST_F(LayerTreeHostCommonTest, DrawableAndVisibleContentRectsForSimpleLayers) { 2347 TEST_F(LayerTreeHostCommonTest, DrawableAndVisibleContentRectsForSimpleLayers) {
2348 LayerImpl* root = root_layer(); 2348 LayerImpl* root = root_layer();
2349 LayerImpl* child1_layer = AddChildToRoot<LayerImpl>(); 2349 LayerImpl* child1_layer = AddChildToRoot<LayerImpl>();
2350 child1_layer->SetDrawsContent(true); 2350 child1_layer->SetDrawsContent(true);
2351 LayerImpl* child2_layer = AddChildToRoot<LayerImpl>(); 2351 LayerImpl* child2_layer = AddChildToRoot<LayerImpl>();
2352 child2_layer->SetDrawsContent(true); 2352 child2_layer->SetDrawsContent(true);
2353 LayerImpl* child3_layer = AddChildToRoot<LayerImpl>(); 2353 LayerImpl* child3_layer = AddChildToRoot<LayerImpl>();
2354 child3_layer->SetDrawsContent(true); 2354 child3_layer->SetDrawsContent(true);
2355 2355
2356 gfx::Transform identity_matrix; 2356 gfx::Transform identity_matrix;
2357 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), 2357 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(),
2358 gfx::PointF(), gfx::Size(100, 100), true, false, 2358 gfx::PointF(), gfx::Size(100, 100), true, false,
2359 true); 2359 true);
2360 SetLayerPropertiesForTesting(child1_layer, identity_matrix, gfx::Point3F(), 2360 SetLayerPropertiesForTesting(child1_layer, identity_matrix, gfx::Point3F(),
2361 gfx::PointF(), gfx::Size(50, 50), true, false, 2361 gfx::PointF(), gfx::Size(50, 50), true, false,
2362 false); 2362 false);
2363 SetLayerPropertiesForTesting(child2_layer, identity_matrix, gfx::Point3F(), 2363 SetLayerPropertiesForTesting(child2_layer, identity_matrix, gfx::Point3F(),
2364 gfx::PointF(75.f, 75.f), gfx::Size(50, 50), true, 2364 gfx::PointF(75.f, 75.f), gfx::Size(50, 50), true,
2365 false, false); 2365 false, false);
2366 SetLayerPropertiesForTesting(child3_layer, identity_matrix, gfx::Point3F(), 2366 SetLayerPropertiesForTesting(child3_layer, identity_matrix, gfx::Point3F(),
2367 gfx::PointF(125.f, 125.f), gfx::Size(50, 50), 2367 gfx::PointF(125.f, 125.f), gfx::Size(50, 50),
2368 true, false, false); 2368 true, false, false);
2369 2369
2370 ExecuteCalculateDrawProperties(root); 2370 ExecuteCalculateDrawProperties(root);
2371 2371
2372 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), 2372 EXPECT_EQ(gfx::RectF(100.f, 100.f),
2373 root->render_surface()->DrawableContentRect()); 2373 root->render_surface()->DrawableContentRect());
2374 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); 2374 EXPECT_EQ(gfx::Rect(100, 100), root->drawable_content_rect());
2375 2375
2376 // Layers that do not draw content should have empty visible_layer_rects. 2376 // Layers that do not draw content should have empty visible_layer_rects.
2377 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); 2377 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect());
2378 2378
2379 // layer visible_layer_rects are clipped by their target surface. 2379 // layer visible_layer_rects are clipped by their target surface.
2380 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1_layer->visible_layer_rect()); 2380 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1_layer->visible_layer_rect());
2381 EXPECT_EQ(gfx::Rect(0, 0, 25, 25), child2_layer->visible_layer_rect()); 2381 EXPECT_EQ(gfx::Rect(0, 0, 25, 25), child2_layer->visible_layer_rect());
2382 EXPECT_TRUE(child3_layer->visible_layer_rect().IsEmpty()); 2382 EXPECT_TRUE(child3_layer->visible_layer_rect().IsEmpty());
2383 2383
2384 // layer drawable_content_rects are not clipped. 2384 // layer drawable_content_rects are not clipped.
(...skipping 26 matching lines...) Expand all
2411 SetLayerPropertiesForTesting(grand_child2, identity_matrix, gfx::Point3F(), 2411 SetLayerPropertiesForTesting(grand_child2, identity_matrix, gfx::Point3F(),
2412 gfx::PointF(75.f, 75.f), gfx::Size(50, 50), true, 2412 gfx::PointF(75.f, 75.f), gfx::Size(50, 50), true,
2413 false, false); 2413 false, false);
2414 SetLayerPropertiesForTesting(grand_child3, identity_matrix, gfx::Point3F(), 2414 SetLayerPropertiesForTesting(grand_child3, identity_matrix, gfx::Point3F(),
2415 gfx::PointF(125.f, 125.f), gfx::Size(50, 50), 2415 gfx::PointF(125.f, 125.f), gfx::Size(50, 50),
2416 true, false, false); 2416 true, false, false);
2417 2417
2418 child->SetMasksToBounds(true); 2418 child->SetMasksToBounds(true);
2419 ExecuteCalculateDrawProperties(root); 2419 ExecuteCalculateDrawProperties(root);
2420 2420
2421 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), 2421 EXPECT_EQ(gfx::RectF(100.f, 100.f),
2422 root->render_surface()->DrawableContentRect()); 2422 root->render_surface()->DrawableContentRect());
2423 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); 2423 EXPECT_EQ(gfx::Rect(100, 100), root->drawable_content_rect());
2424 2424
2425 // Layers that do not draw content should have empty visible content rects. 2425 // Layers that do not draw content should have empty visible content rects.
2426 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); 2426 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect());
2427 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), child->visible_layer_rect()); 2427 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), child->visible_layer_rect());
2428 2428
2429 // All grandchild visible content rects should be clipped by child. 2429 // All grandchild visible content rects should be clipped by child.
2430 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), grand_child1->visible_layer_rect()); 2430 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), grand_child1->visible_layer_rect());
2431 EXPECT_EQ(gfx::Rect(0, 0, 25, 25), grand_child2->visible_layer_rect()); 2431 EXPECT_EQ(gfx::Rect(0, 0, 25, 25), grand_child2->visible_layer_rect());
2432 EXPECT_TRUE(grand_child3->visible_layer_rect().IsEmpty()); 2432 EXPECT_TRUE(grand_child3->visible_layer_rect().IsEmpty());
2433 2433
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2494 gfx::PointF(75.f, 75.f), gfx::Size(50, 50), true, 2494 gfx::PointF(75.f, 75.f), gfx::Size(50, 50), true,
2495 false, false); 2495 false, false);
2496 SetLayerPropertiesForTesting(child3, identity_matrix, gfx::Point3F(), 2496 SetLayerPropertiesForTesting(child3, identity_matrix, gfx::Point3F(),
2497 gfx::PointF(125.f, 125.f), gfx::Size(50, 50), 2497 gfx::PointF(125.f, 125.f), gfx::Size(50, 50),
2498 true, false, false); 2498 true, false, false);
2499 2499
2500 ExecuteCalculateDrawProperties(root); 2500 ExecuteCalculateDrawProperties(root);
2501 2501
2502 ASSERT_TRUE(render_surface->render_surface()); 2502 ASSERT_TRUE(render_surface->render_surface());
2503 2503
2504 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), 2504 EXPECT_EQ(gfx::RectF(100.f, 100.f),
2505 root->render_surface()->DrawableContentRect()); 2505 root->render_surface()->DrawableContentRect());
2506 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); 2506 EXPECT_EQ(gfx::Rect(100, 100), root->drawable_content_rect());
2507 2507
2508 // Layers that do not draw content should have empty visible content rects. 2508 // Layers that do not draw content should have empty visible content rects.
2509 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); 2509 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect());
2510 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface->visible_layer_rect()); 2510 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface->visible_layer_rect());
2511 2511
2512 // An unclipped surface grows its DrawableContentRect to include all drawable 2512 // An unclipped surface grows its DrawableContentRect to include all drawable
2513 // regions of the subtree. 2513 // regions of the subtree.
2514 EXPECT_EQ(gfx::Rect(5, 5, 170, 170), 2514 EXPECT_EQ(gfx::RectF(5.f, 5.f, 170.f, 170.f),
2515 render_surface->render_surface()->DrawableContentRect()); 2515 render_surface->render_surface()->DrawableContentRect());
2516 2516
2517 // All layers that draw content into the unclipped surface are also unclipped. 2517 // All layers that draw content into the unclipped surface are also unclipped.
2518 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect()); 2518 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect());
2519 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_layer_rect()); 2519 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_layer_rect());
2520 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_layer_rect()); 2520 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_layer_rect());
2521 2521
2522 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), child1->drawable_content_rect()); 2522 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), child1->drawable_content_rect());
2523 EXPECT_EQ(gfx::Rect(75, 75, 50, 50), child2->drawable_content_rect()); 2523 EXPECT_EQ(gfx::Rect(75, 75, 50, 50), child2->drawable_content_rect());
2524 EXPECT_EQ(gfx::Rect(125, 125, 50, 50), child3->drawable_content_rect()); 2524 EXPECT_EQ(gfx::Rect(125, 125, 50, 50), child3->drawable_content_rect());
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
2830 SetLayerPropertiesForTesting(child3, identity_matrix, gfx::Point3F(), 2830 SetLayerPropertiesForTesting(child3, identity_matrix, gfx::Point3F(),
2831 gfx::PointF(125.f, 125.f), gfx::Size(50, 50), 2831 gfx::PointF(125.f, 125.f), gfx::Size(50, 50),
2832 true, false, false); 2832 true, false, false);
2833 2833
2834 root->SetMasksToBounds(true); 2834 root->SetMasksToBounds(true);
2835 2835
2836 ExecuteCalculateDrawProperties(root); 2836 ExecuteCalculateDrawProperties(root);
2837 2837
2838 ASSERT_TRUE(render_surface->render_surface()); 2838 ASSERT_TRUE(render_surface->render_surface());
2839 2839
2840 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), 2840 EXPECT_EQ(gfx::RectF(100.f, 100.f),
2841 root->render_surface()->DrawableContentRect()); 2841 root->render_surface()->DrawableContentRect());
2842 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); 2842 EXPECT_EQ(gfx::Rect(100, 100), root->drawable_content_rect());
2843 2843
2844 // Layers that do not draw content should have empty visible content rects. 2844 // Layers that do not draw content should have empty visible content rects.
2845 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); 2845 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect());
2846 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface->visible_layer_rect()); 2846 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface->visible_layer_rect());
2847 2847
2848 // A clipped surface grows its DrawableContentRect to include all drawable 2848 // A clipped surface grows its DrawableContentRect to include all drawable
2849 // regions of the subtree, but also gets clamped by the ancestor's clip. 2849 // regions of the subtree, but also gets clamped by the ancestor's clip.
2850 EXPECT_EQ(gfx::Rect(5, 5, 95, 95), 2850 EXPECT_EQ(gfx::RectF(5.f, 5.f, 95.f, 95.f),
2851 render_surface->render_surface()->DrawableContentRect()); 2851 render_surface->render_surface()->DrawableContentRect());
2852 2852
2853 // All layers that draw content into the surface have their visible content 2853 // All layers that draw content into the surface have their visible content
2854 // rect clipped by the surface clip rect. 2854 // rect clipped by the surface clip rect.
2855 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect()); 2855 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect());
2856 EXPECT_EQ(gfx::Rect(0, 0, 25, 25), child2->visible_layer_rect()); 2856 EXPECT_EQ(gfx::Rect(0, 0, 25, 25), child2->visible_layer_rect());
2857 EXPECT_TRUE(child3->visible_layer_rect().IsEmpty()); 2857 EXPECT_TRUE(child3->visible_layer_rect().IsEmpty());
2858 2858
2859 // But the DrawableContentRects are unclipped. 2859 // But the DrawableContentRects are unclipped.
2860 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), child1->drawable_content_rect()); 2860 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), child1->drawable_content_rect());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2895 gfx::PointF(125.f, 125.f), gfx::Size(50, 50), 2895 gfx::PointF(125.f, 125.f), gfx::Size(50, 50),
2896 true, false, false); 2896 true, false, false);
2897 2897
2898 root->SetMasksToBounds(true); 2898 root->SetMasksToBounds(true);
2899 2899
2900 ExecuteCalculateDrawProperties(root); 2900 ExecuteCalculateDrawProperties(root);
2901 2901
2902 ASSERT_TRUE(render_surface1->render_surface()); 2902 ASSERT_TRUE(render_surface1->render_surface());
2903 ASSERT_TRUE(render_surface2->render_surface()); 2903 ASSERT_TRUE(render_surface2->render_surface());
2904 2904
2905 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), 2905 EXPECT_EQ(gfx::RectF(100.f, 100.f),
2906 root->render_surface()->DrawableContentRect()); 2906 root->render_surface()->DrawableContentRect());
2907 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); 2907 EXPECT_EQ(gfx::Rect(100, 100), root->drawable_content_rect());
2908 2908
2909 // Layers that do not draw content should have empty visible content rects. 2909 // Layers that do not draw content should have empty visible content rects.
2910 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); 2910 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect());
2911 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface1->visible_layer_rect()); 2911 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface1->visible_layer_rect());
2912 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface2->visible_layer_rect()); 2912 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface2->visible_layer_rect());
2913 2913
2914 // A clipped surface grows its DrawableContentRect to include all drawable 2914 // A clipped surface grows its DrawableContentRect to include all drawable
2915 // regions of the subtree, but also gets clamped by the ancestor's clip. 2915 // regions of the subtree, but also gets clamped by the ancestor's clip.
2916 EXPECT_EQ(gfx::Rect(5, 5, 95, 95), 2916 EXPECT_EQ(gfx::RectF(5.f, 5.f, 95.f, 95.f),
2917 render_surface1->render_surface()->DrawableContentRect()); 2917 render_surface1->render_surface()->DrawableContentRect());
2918 2918
2919 // render_surface1 lives in the "unclipped universe" of render_surface1, and 2919 // render_surface1 lives in the "unclipped universe" of render_surface1, and
2920 // is only implicitly clipped by render_surface1's content rect. So, 2920 // is only implicitly clipped by render_surface1's content rect. So,
2921 // render_surface2 grows to enclose all drawable content of its subtree. 2921 // render_surface2 grows to enclose all drawable content of its subtree.
2922 EXPECT_EQ(gfx::Rect(5, 5, 170, 170), 2922 EXPECT_EQ(gfx::RectF(5.f, 5.f, 170.f, 170.f),
2923 render_surface2->render_surface()->DrawableContentRect()); 2923 render_surface2->render_surface()->DrawableContentRect());
2924 2924
2925 // All layers that draw content into render_surface2 think they are unclipped. 2925 // All layers that draw content into render_surface2 think they are unclipped.
2926 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect()); 2926 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect());
2927 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_layer_rect()); 2927 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_layer_rect());
2928 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_layer_rect()); 2928 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_layer_rect());
2929 2929
2930 // DrawableContentRects are also unclipped. 2930 // DrawableContentRects are also unclipped.
2931 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), child1->drawable_content_rect()); 2931 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), child1->drawable_content_rect());
2932 EXPECT_EQ(gfx::Rect(75, 75, 50, 50), child2->drawable_content_rect()); 2932 EXPECT_EQ(gfx::Rect(75, 75, 50, 50), child2->drawable_content_rect());
(...skipping 19 matching lines...) Expand all
2952 gfx::PointF(), gfx::Size(3, 4), true, false, 2952 gfx::PointF(), gfx::Size(3, 4), true, false,
2953 true); 2953 true);
2954 SetLayerPropertiesForTesting( 2954 SetLayerPropertiesForTesting(
2955 child1, child_rotation, gfx::Point3F(25, 25, 0.f), 2955 child1, child_rotation, gfx::Point3F(25, 25, 0.f),
2956 gfx::PointF(25.f, 25.f), gfx::Size(50, 50), true, false, false); 2956 gfx::PointF(25.f, 25.f), gfx::Size(50, 50), true, false, false);
2957 2957
2958 ExecuteCalculateDrawProperties(root); 2958 ExecuteCalculateDrawProperties(root);
2959 2959
2960 ASSERT_TRUE(render_surface->render_surface()); 2960 ASSERT_TRUE(render_surface->render_surface());
2961 2961
2962 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), 2962 EXPECT_EQ(gfx::RectF(100.f, 100.f),
2963 root->render_surface()->DrawableContentRect()); 2963 root->render_surface()->DrawableContentRect());
2964 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); 2964 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect());
2965 2965
2966 // Layers that do not draw content should have empty visible content rects. 2966 // Layers that do not draw content should have empty visible content rects.
2967 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); 2967 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect());
2968 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface->visible_layer_rect()); 2968 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface->visible_layer_rect());
2969 2969
2970 // The unclipped surface grows its DrawableContentRect to include all drawable 2970 // The unclipped surface grows its DrawableContentRect to include all drawable
2971 // regions of the subtree. 2971 // regions of the subtree.
2972 int diagonal_radius = ceil(sqrt(2.0) * 25.0); 2972 int diagonal_radius = ceil(sqrt(2.0) * 25.0);
2973 gfx::Rect expected_surface_drawable_content = 2973 gfx::Rect expected_surface_drawable_content =
2974 gfx::Rect(50 - diagonal_radius, 2974 gfx::Rect(50 - diagonal_radius,
2975 50 - diagonal_radius, 2975 50 - diagonal_radius,
2976 diagonal_radius * 2, 2976 diagonal_radius * 2,
2977 diagonal_radius * 2); 2977 diagonal_radius * 2);
2978 EXPECT_EQ(expected_surface_drawable_content, 2978 EXPECT_EQ(gfx::RectF(expected_surface_drawable_content),
2979 render_surface->render_surface()->DrawableContentRect()); 2979 render_surface->render_surface()->DrawableContentRect());
2980 2980
2981 // All layers that draw content into the unclipped surface are also unclipped. 2981 // All layers that draw content into the unclipped surface are also unclipped.
2982 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect()); 2982 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect());
2983 EXPECT_EQ(expected_surface_drawable_content, child1->drawable_content_rect()); 2983 EXPECT_EQ(expected_surface_drawable_content, child1->drawable_content_rect());
2984 } 2984 }
2985 2985
2986 TEST_F(LayerTreeHostCommonTest, 2986 TEST_F(LayerTreeHostCommonTest,
2987 DrawableAndVisibleContentRectsWithTransformOnClippedSurface) { 2987 DrawableAndVisibleContentRectsWithTransformOnClippedSurface) {
2988 // Layers that have non-axis aligned bounds (due to transforms) have an 2988 // Layers that have non-axis aligned bounds (due to transforms) have an
(...skipping 23 matching lines...) Expand all
3012 3012
3013 ASSERT_TRUE(render_surface->render_surface()); 3013 ASSERT_TRUE(render_surface->render_surface());
3014 3014
3015 // The clipped surface clamps the DrawableContentRect that encloses the 3015 // The clipped surface clamps the DrawableContentRect that encloses the
3016 // rotated layer. 3016 // rotated layer.
3017 int diagonal_radius = ceil(sqrt(2.0) * 25.0); 3017 int diagonal_radius = ceil(sqrt(2.0) * 25.0);
3018 gfx::Rect unclipped_surface_content = gfx::Rect(50 - diagonal_radius, 3018 gfx::Rect unclipped_surface_content = gfx::Rect(50 - diagonal_radius,
3019 50 - diagonal_radius, 3019 50 - diagonal_radius,
3020 diagonal_radius * 2, 3020 diagonal_radius * 2,
3021 diagonal_radius * 2); 3021 diagonal_radius * 2);
3022 gfx::Rect expected_surface_drawable_content = 3022 gfx::RectF expected_surface_drawable_content(
3023 gfx::IntersectRects(unclipped_surface_content, gfx::Rect(0, 0, 50, 50)); 3023 gfx::IntersectRects(unclipped_surface_content, gfx::Rect(50, 50)));
3024 EXPECT_EQ(expected_surface_drawable_content, 3024 EXPECT_EQ(expected_surface_drawable_content,
3025 render_surface->render_surface()->DrawableContentRect()); 3025 render_surface->render_surface()->DrawableContentRect());
3026 3026
3027 // On the clipped surface, only a quarter of the child1 is visible, but when 3027 // On the clipped surface, only a quarter of the child1 is visible, but when
3028 // rotating it back to child1's content space, the actual enclosing rect ends 3028 // rotating it back to child1's content space, the actual enclosing rect ends
3029 // up covering the full left half of child1. 3029 // up covering the full left half of child1.
3030 // 3030 //
3031 // Given the floating point math, this number is a little bit fuzzy. 3031 // Given the floating point math, this number is a little bit fuzzy.
3032 EXPECT_EQ(gfx::Rect(0, 0, 26, 50), child1->visible_layer_rect()); 3032 EXPECT_EQ(gfx::Rect(0, 0, 26, 50), child1->visible_layer_rect());
3033 3033
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
3077 3077
3078 root->SetMasksToBounds(true); 3078 root->SetMasksToBounds(true);
3079 3079
3080 ExecuteCalculateDrawProperties(root, device_scale_factor); 3080 ExecuteCalculateDrawProperties(root, device_scale_factor);
3081 3081
3082 ASSERT_TRUE(render_surface1->render_surface()); 3082 ASSERT_TRUE(render_surface1->render_surface());
3083 ASSERT_TRUE(render_surface2->render_surface()); 3083 ASSERT_TRUE(render_surface2->render_surface());
3084 3084
3085 // drawable_content_rects for all layers and surfaces are scaled by 3085 // drawable_content_rects for all layers and surfaces are scaled by
3086 // device_scale_factor. 3086 // device_scale_factor.
3087 EXPECT_EQ(gfx::Rect(0, 0, 200, 200), 3087 EXPECT_EQ(gfx::RectF(200.f, 200.f),
3088 root->render_surface()->DrawableContentRect()); 3088 root->render_surface()->DrawableContentRect());
3089 EXPECT_EQ(gfx::Rect(0, 0, 200, 200), root->drawable_content_rect()); 3089 EXPECT_EQ(gfx::Rect(0, 0, 200, 200), root->drawable_content_rect());
3090 EXPECT_EQ(gfx::Rect(10, 10, 190, 190), 3090 EXPECT_EQ(gfx::RectF(10.f, 10.f, 190.f, 190.f),
3091 render_surface1->render_surface()->DrawableContentRect()); 3091 render_surface1->render_surface()->DrawableContentRect());
3092 3092
3093 // render_surface2 lives in the "unclipped universe" of render_surface1, and 3093 // render_surface2 lives in the "unclipped universe" of render_surface1, and
3094 // is only implicitly clipped by render_surface1. 3094 // is only implicitly clipped by render_surface1.
3095 EXPECT_EQ(gfx::Rect(10, 10, 350, 350), 3095 EXPECT_EQ(gfx::RectF(10.f, 10.f, 350.f, 350.f),
3096 render_surface2->render_surface()->DrawableContentRect()); 3096 render_surface2->render_surface()->DrawableContentRect());
3097 3097
3098 EXPECT_EQ(gfx::Rect(10, 10, 100, 100), child1->drawable_content_rect()); 3098 EXPECT_EQ(gfx::Rect(10, 10, 100, 100), child1->drawable_content_rect());
3099 EXPECT_EQ(gfx::Rect(150, 150, 100, 100), child2->drawable_content_rect()); 3099 EXPECT_EQ(gfx::Rect(150, 150, 100, 100), child2->drawable_content_rect());
3100 EXPECT_EQ(gfx::Rect(250, 250, 100, 100), child3->drawable_content_rect()); 3100 EXPECT_EQ(gfx::Rect(250, 250, 100, 100), child3->drawable_content_rect());
3101 3101
3102 // The root layer does not actually draw content of its own. 3102 // The root layer does not actually draw content of its own.
3103 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); 3103 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect());
3104 3104
3105 // All layer visible content rects are not expressed in content space of each 3105 // All layer visible content rects are not expressed in content space of each
(...skipping 4723 matching lines...) Expand 10 before | Expand all | Expand 10 after
7829 7829
7830 TransformTree transform_tree = 7830 TransformTree transform_tree =
7831 root->layer_tree_impl()->property_trees()->transform_tree; 7831 root->layer_tree_impl()->property_trees()->transform_tree;
7832 TransformNode* transform_node = 7832 TransformNode* transform_node =
7833 transform_tree.Node(significant_transform->transform_tree_index()); 7833 transform_tree.Node(significant_transform->transform_tree_index());
7834 EXPECT_EQ(transform_node->owner_id, significant_transform->id()); 7834 EXPECT_EQ(transform_node->owner_id, significant_transform->id());
7835 7835
7836 ClipTree clip_tree = root->layer_tree_impl()->property_trees()->clip_tree; 7836 ClipTree clip_tree = root->layer_tree_impl()->property_trees()->clip_tree;
7837 ClipNode* clip_node = clip_tree.Node(render_surface->clip_tree_index()); 7837 ClipNode* clip_node = clip_tree.Node(render_surface->clip_tree_index());
7838 EXPECT_TRUE(clip_node->data.inherit_parent_target_space_clip); 7838 EXPECT_TRUE(clip_node->data.inherit_parent_target_space_clip);
7839 EXPECT_EQ(test_layer->visible_rect_from_property_trees(), gfx::RectF(30, 21)); 7839 EXPECT_EQ(gfx::Rect(30, 21), test_layer->visible_rect_from_property_trees());
7840 } 7840 }
7841 7841
7842 TEST_F(LayerTreeHostCommonTest, TransformOfParentClipNodeAncestorOfTarget) { 7842 TEST_F(LayerTreeHostCommonTest, TransformOfParentClipNodeAncestorOfTarget) {
7843 // Ensure that when parent clip node's transform is an ancestor of current 7843 // Ensure that when parent clip node's transform is an ancestor of current
7844 // clip node's target, clip is 'projected' from parent space to current 7844 // clip node's target, clip is 'projected' from parent space to current
7845 // target space and visible rects are calculated correctly. 7845 // target space and visible rects are calculated correctly.
7846 LayerImpl* root = root_layer(); 7846 LayerImpl* root = root_layer();
7847 LayerImpl* clip_layer = AddChild<LayerImpl>(root); 7847 LayerImpl* clip_layer = AddChild<LayerImpl>(root);
7848 LayerImpl* target_layer = AddChild<LayerImpl>(clip_layer); 7848 LayerImpl* target_layer = AddChild<LayerImpl>(clip_layer);
7849 LayerImpl* test_layer = AddChild<LayerImpl>(target_layer); 7849 LayerImpl* test_layer = AddChild<LayerImpl>(target_layer);
(...skipping 14 matching lines...) Expand all
7864 SetLayerPropertiesForTesting(target_layer, transform, gfx::Point3F(), 7864 SetLayerPropertiesForTesting(target_layer, transform, gfx::Point3F(),
7865 gfx::PointF(), gfx::Size(30, 30), true, false, 7865 gfx::PointF(), gfx::Size(30, 30), true, false,
7866 true); 7866 true);
7867 SetLayerPropertiesForTesting(test_layer, identity_matrix, gfx::Point3F(), 7867 SetLayerPropertiesForTesting(test_layer, identity_matrix, gfx::Point3F(),
7868 gfx::PointF(), gfx::Size(30, 30), true, false, 7868 gfx::PointF(), gfx::Size(30, 30), true, false,
7869 false); 7869 false);
7870 ExecuteCalculateDrawProperties(root); 7870 ExecuteCalculateDrawProperties(root);
7871 7871
7872 ClipTree clip_tree = root->layer_tree_impl()->property_trees()->clip_tree; 7872 ClipTree clip_tree = root->layer_tree_impl()->property_trees()->clip_tree;
7873 ClipNode* clip_node = clip_tree.Node(target_layer->clip_tree_index()); 7873 ClipNode* clip_node = clip_tree.Node(target_layer->clip_tree_index());
7874 EXPECT_EQ(clip_node->data.combined_clip, gfx::RectF(30, 30)); 7874 EXPECT_EQ(gfx::RectF(30, 30), clip_node->data.combined_clip);
7875 EXPECT_EQ(test_layer->visible_rect_from_property_trees(), gfx::RectF(30, 30)); 7875 EXPECT_EQ(gfx::Rect(30, 30), test_layer->visible_rect_from_property_trees());
7876 } 7876 }
7877 7877
7878 TEST_F(LayerTreeHostCommonTest, 7878 TEST_F(LayerTreeHostCommonTest,
7879 RenderSurfaceWithUnclippedDescendantsClipsSubtree) { 7879 RenderSurfaceWithUnclippedDescendantsClipsSubtree) {
7880 // Ensure clip rect is calculated correctly when render surface has unclipped 7880 // Ensure clip rect is calculated correctly when render surface has unclipped
7881 // descendants. 7881 // descendants.
7882 LayerImpl* root = root_layer(); 7882 LayerImpl* root = root_layer();
7883 LayerImpl* clip_parent = AddChildToRoot<LayerImpl>(); 7883 LayerImpl* clip_parent = AddChildToRoot<LayerImpl>();
7884 LayerImpl* between_clip_parent_and_child = AddChild<LayerImpl>(clip_parent); 7884 LayerImpl* between_clip_parent_and_child = AddChild<LayerImpl>(clip_parent);
7885 LayerImpl* render_surface = 7885 LayerImpl* render_surface =
(...skipping 17 matching lines...) Expand all
7903 true, false, false); 7903 true, false, false);
7904 SetLayerPropertiesForTesting(render_surface, identity_matrix, gfx::Point3F(), 7904 SetLayerPropertiesForTesting(render_surface, identity_matrix, gfx::Point3F(),
7905 gfx::PointF(), gfx::Size(30, 30), true, false, 7905 gfx::PointF(), gfx::Size(30, 30), true, false,
7906 true); 7906 true);
7907 SetLayerPropertiesForTesting(test_layer, identity_matrix, gfx::Point3F(), 7907 SetLayerPropertiesForTesting(test_layer, identity_matrix, gfx::Point3F(),
7908 gfx::PointF(), gfx::Size(30, 30), true, false, 7908 gfx::PointF(), gfx::Size(30, 30), true, false,
7909 false); 7909 false);
7910 7910
7911 ExecuteCalculateDrawProperties(root); 7911 ExecuteCalculateDrawProperties(root);
7912 7912
7913 EXPECT_EQ(test_layer->clip_rect(), gfx::RectF(-4, -4, 30, 30)); 7913 EXPECT_EQ(gfx::Rect(-4, -4, 30, 30), test_layer->clip_rect());
7914 } 7914 }
7915 7915
7916 } // namespace 7916 } // namespace
7917 } // namespace cc 7917 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698