| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "core/paint/PaintPropertyTreeBuilderTest.h" | 5 #include "core/paint/PaintPropertyTreeBuilderTest.h" |
| 6 | 6 |
| 7 #include "core/html/HTMLIFrameElement.h" | 7 #include "core/html/HTMLIFrameElement.h" |
| 8 #include "core/layout/LayoutTreeAsText.h" | 8 #include "core/layout/LayoutTreeAsText.h" |
| 9 #include "core/paint/ObjectPaintProperties.h" | 9 #include "core/paint/ObjectPaintProperties.h" |
| 10 #include "core/paint/PaintPropertyTreePrinter.h" | 10 #include "core/paint/PaintPropertyTreePrinter.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 Settings::setMockScrollbarsEnabled(false); | 70 Settings::setMockScrollbarsEnabled(false); |
| 71 } | 71 } |
| 72 | 72 |
| 73 #define CHECK_VISUAL_RECT(expected, sourceLayoutObject, ancestorLayoutObject, \ | 73 #define CHECK_VISUAL_RECT(expected, sourceLayoutObject, ancestorLayoutObject, \ |
| 74 slopFactor) \ | 74 slopFactor) \ |
| 75 do { \ | 75 do { \ |
| 76 GeometryMapper geometryMapper; \ | 76 GeometryMapper geometryMapper; \ |
| 77 LayoutRect source((sourceLayoutObject)->localVisualRect()); \ | 77 LayoutRect source((sourceLayoutObject)->localVisualRect()); \ |
| 78 source.moveBy((sourceLayoutObject)->paintOffset()); \ | 78 source.moveBy((sourceLayoutObject)->paintOffset()); \ |
| 79 bool success = false; \ | 79 bool success = false; \ |
| 80 auto contentsProperties = \ | 80 const auto& contentsProperties = \ |
| 81 (ancestorLayoutObject)->paintProperties()->contentsProperties(); \ | 81 *(ancestorLayoutObject)->paintProperties()->contentsProperties(); \ |
| 82 LayoutRect actual = \ | 82 LayoutRect actual = \ |
| 83 LayoutRect(geometryMapper.sourceToDestinationVisualRect( \ | 83 LayoutRect(geometryMapper.sourceToDestinationVisualRect( \ |
| 84 FloatRect(source), *(sourceLayoutObject) \ | 84 FloatRect(source), *(sourceLayoutObject) \ |
| 85 ->paintProperties() \ | 85 ->paintProperties() \ |
| 86 ->localBorderBoxProperties(), \ | 86 ->localBorderBoxProperties(), \ |
| 87 contentsProperties, success)); \ | 87 contentsProperties, success)); \ |
| 88 ASSERT_TRUE(success); \ | 88 ASSERT_TRUE(success); \ |
| 89 actual.moveBy(-(ancestorLayoutObject)->paintOffset()); \ | 89 actual.moveBy(-(ancestorLayoutObject)->paintOffset()); \ |
| 90 EXPECT_EQ(expected, actual) \ | 90 EXPECT_EQ(expected, actual) \ |
| 91 << "GeometryMapper: expected: " << expected.toString() \ | 91 << "GeometryMapper: expected: " << expected.toString() \ |
| (...skipping 2251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2343 const ObjectPaintProperties* childProperties = child->paintProperties(); | 2343 const ObjectPaintProperties* childProperties = child->paintProperties(); |
| 2344 | 2344 |
| 2345 // No scroll translation because the document does not scroll (not enough | 2345 // No scroll translation because the document does not scroll (not enough |
| 2346 // content). | 2346 // content). |
| 2347 EXPECT_TRUE(!frameScrollTranslation()); | 2347 EXPECT_TRUE(!frameScrollTranslation()); |
| 2348 EXPECT_EQ(framePreTranslation(), | 2348 EXPECT_EQ(framePreTranslation(), |
| 2349 clipProperties->localBorderBoxProperties()->transform()); | 2349 clipProperties->localBorderBoxProperties()->transform()); |
| 2350 EXPECT_EQ(frameContentClip(), | 2350 EXPECT_EQ(frameContentClip(), |
| 2351 clipProperties->localBorderBoxProperties()->clip()); | 2351 clipProperties->localBorderBoxProperties()->clip()); |
| 2352 | 2352 |
| 2353 auto contentsProperties = clipProperties->contentsProperties(); | 2353 const auto& contentsProperties = *clipProperties->contentsProperties(); |
| 2354 EXPECT_EQ(LayoutPoint(30, 20), clipper->paintOffset()); | 2354 EXPECT_EQ(LayoutPoint(30, 20), clipper->paintOffset()); |
| 2355 EXPECT_EQ(framePreTranslation(), contentsProperties.transform()); | 2355 EXPECT_EQ(framePreTranslation(), contentsProperties.transform()); |
| 2356 EXPECT_EQ(clipProperties->overflowClip(), contentsProperties.clip()); | 2356 EXPECT_EQ(clipProperties->overflowClip(), contentsProperties.clip()); |
| 2357 | 2357 |
| 2358 EXPECT_EQ(framePreTranslation(), | 2358 EXPECT_EQ(framePreTranslation(), |
| 2359 childProperties->localBorderBoxProperties()->transform()); | 2359 childProperties->localBorderBoxProperties()->transform()); |
| 2360 EXPECT_EQ(clipProperties->overflowClip(), | 2360 EXPECT_EQ(clipProperties->overflowClip(), |
| 2361 childProperties->localBorderBoxProperties()->clip()); | 2361 childProperties->localBorderBoxProperties()->clip()); |
| 2362 | 2362 |
| 2363 EXPECT_NE(nullptr, childProperties->localBorderBoxProperties()->effect()); | 2363 EXPECT_NE(nullptr, childProperties->localBorderBoxProperties()->effect()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2380 const ObjectPaintProperties* childProperties = child->paintProperties(); | 2380 const ObjectPaintProperties* childProperties = child->paintProperties(); |
| 2381 | 2381 |
| 2382 // No scroll translation because the document does not scroll (not enough | 2382 // No scroll translation because the document does not scroll (not enough |
| 2383 // content). | 2383 // content). |
| 2384 EXPECT_TRUE(!frameScrollTranslation()); | 2384 EXPECT_TRUE(!frameScrollTranslation()); |
| 2385 EXPECT_EQ(framePreTranslation(), | 2385 EXPECT_EQ(framePreTranslation(), |
| 2386 clipProperties->localBorderBoxProperties()->transform()); | 2386 clipProperties->localBorderBoxProperties()->transform()); |
| 2387 EXPECT_EQ(frameContentClip(), | 2387 EXPECT_EQ(frameContentClip(), |
| 2388 clipProperties->localBorderBoxProperties()->clip()); | 2388 clipProperties->localBorderBoxProperties()->clip()); |
| 2389 | 2389 |
| 2390 auto contentsProperties = clipProperties->contentsProperties(); | 2390 const auto& contentsProperties = *clipProperties->contentsProperties(); |
| 2391 EXPECT_EQ(LayoutPoint(30, 20), clipper->paintOffset()); | 2391 EXPECT_EQ(LayoutPoint(30, 20), clipper->paintOffset()); |
| 2392 EXPECT_EQ(framePreTranslation(), contentsProperties.transform()); | 2392 EXPECT_EQ(framePreTranslation(), contentsProperties.transform()); |
| 2393 EXPECT_EQ(clipProperties->overflowClip(), contentsProperties.clip()); | 2393 EXPECT_EQ(clipProperties->overflowClip(), contentsProperties.clip()); |
| 2394 | 2394 |
| 2395 EXPECT_EQ(framePreTranslation(), | 2395 EXPECT_EQ(framePreTranslation(), |
| 2396 childProperties->localBorderBoxProperties()->transform()); | 2396 childProperties->localBorderBoxProperties()->transform()); |
| 2397 EXPECT_EQ(clipProperties->overflowClip(), | 2397 EXPECT_EQ(clipProperties->overflowClip(), |
| 2398 childProperties->localBorderBoxProperties()->clip()); | 2398 childProperties->localBorderBoxProperties()->clip()); |
| 2399 | 2399 |
| 2400 EXPECT_NE(nullptr, childProperties->localBorderBoxProperties()->effect()); | 2400 EXPECT_NE(nullptr, childProperties->localBorderBoxProperties()->effect()); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 2421 toLayoutBoxModelObject(clipperElement->layoutObject()); | 2421 toLayoutBoxModelObject(clipperElement->layoutObject()); |
| 2422 const ObjectPaintProperties* clipProperties = clipper->paintProperties(); | 2422 const ObjectPaintProperties* clipProperties = clipper->paintProperties(); |
| 2423 LayoutObject* child = document().getElementById("child")->layoutObject(); | 2423 LayoutObject* child = document().getElementById("child")->layoutObject(); |
| 2424 const ObjectPaintProperties* childProperties = child->paintProperties(); | 2424 const ObjectPaintProperties* childProperties = child->paintProperties(); |
| 2425 | 2425 |
| 2426 EXPECT_EQ(frameScrollTranslation(), | 2426 EXPECT_EQ(frameScrollTranslation(), |
| 2427 clipProperties->localBorderBoxProperties()->transform()); | 2427 clipProperties->localBorderBoxProperties()->transform()); |
| 2428 EXPECT_EQ(frameContentClip(), | 2428 EXPECT_EQ(frameContentClip(), |
| 2429 clipProperties->localBorderBoxProperties()->clip()); | 2429 clipProperties->localBorderBoxProperties()->clip()); |
| 2430 | 2430 |
| 2431 auto contentsProperties = clipProperties->contentsProperties(); | 2431 const auto& contentsProperties = *clipProperties->contentsProperties(); |
| 2432 EXPECT_EQ(LayoutPoint(30, 20), clipper->paintOffset()); | 2432 EXPECT_EQ(LayoutPoint(30, 20), clipper->paintOffset()); |
| 2433 EXPECT_EQ(clipProperties->scrollTranslation(), | 2433 EXPECT_EQ(clipProperties->scrollTranslation(), |
| 2434 contentsProperties.transform()); | 2434 contentsProperties.transform()); |
| 2435 EXPECT_EQ(clipProperties->overflowClip(), contentsProperties.clip()); | 2435 EXPECT_EQ(clipProperties->overflowClip(), contentsProperties.clip()); |
| 2436 | 2436 |
| 2437 EXPECT_EQ(clipProperties->scrollTranslation(), | 2437 EXPECT_EQ(clipProperties->scrollTranslation(), |
| 2438 childProperties->localBorderBoxProperties()->transform()); | 2438 childProperties->localBorderBoxProperties()->transform()); |
| 2439 EXPECT_EQ(clipProperties->overflowClip(), | 2439 EXPECT_EQ(clipProperties->overflowClip(), |
| 2440 childProperties->localBorderBoxProperties()->clip()); | 2440 childProperties->localBorderBoxProperties()->clip()); |
| 2441 | 2441 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2506 | 2506 |
| 2507 // No scroll translation because the document does not scroll (not enough | 2507 // No scroll translation because the document does not scroll (not enough |
| 2508 // content). | 2508 // content). |
| 2509 EXPECT_TRUE(!frameScrollTranslation()); | 2509 EXPECT_TRUE(!frameScrollTranslation()); |
| 2510 EXPECT_EQ(framePreTranslation(), | 2510 EXPECT_EQ(framePreTranslation(), |
| 2511 clipProperties->localBorderBoxProperties()->transform()); | 2511 clipProperties->localBorderBoxProperties()->transform()); |
| 2512 // CSS clip on an element causes it to clip itself, not just descendants. | 2512 // CSS clip on an element causes it to clip itself, not just descendants. |
| 2513 EXPECT_EQ(clipProperties->cssClip(), | 2513 EXPECT_EQ(clipProperties->cssClip(), |
| 2514 clipProperties->localBorderBoxProperties()->clip()); | 2514 clipProperties->localBorderBoxProperties()->clip()); |
| 2515 | 2515 |
| 2516 auto contentsProperties = clipProperties->contentsProperties(); | 2516 const auto& contentsProperties = *clipProperties->contentsProperties(); |
| 2517 EXPECT_EQ(LayoutPoint(30, 20), clipper->paintOffset()); | 2517 EXPECT_EQ(LayoutPoint(30, 20), clipper->paintOffset()); |
| 2518 EXPECT_EQ(framePreTranslation(), contentsProperties.transform()); | 2518 EXPECT_EQ(framePreTranslation(), contentsProperties.transform()); |
| 2519 EXPECT_EQ(clipProperties->cssClip(), contentsProperties.clip()); | 2519 EXPECT_EQ(clipProperties->cssClip(), contentsProperties.clip()); |
| 2520 | 2520 |
| 2521 CHECK_EXACT_VISUAL_RECT(LayoutRect(0, 0, 400, 500), child, clipper); | 2521 CHECK_EXACT_VISUAL_RECT(LayoutRect(0, 0, 400, 500), child, clipper); |
| 2522 } | 2522 } |
| 2523 | 2523 |
| 2524 TEST_P(PaintPropertyTreeBuilderTest, | 2524 TEST_P(PaintPropertyTreeBuilderTest, |
| 2525 SvgLocalToBorderBoxTransformContentsTreeState) { | 2525 SvgLocalToBorderBoxTransformContentsTreeState) { |
| 2526 setBodyInnerHTML( | 2526 setBodyInnerHTML( |
| (...skipping 14 matching lines...) Expand all Loading... |
| 2541 "</svg>"); | 2541 "</svg>"); |
| 2542 | 2542 |
| 2543 LayoutObject& svgWithViewBox = | 2543 LayoutObject& svgWithViewBox = |
| 2544 *document().getElementById("svgWithViewBox")->layoutObject(); | 2544 *document().getElementById("svgWithViewBox")->layoutObject(); |
| 2545 const ObjectPaintProperties* svgWithViewBoxProperties = | 2545 const ObjectPaintProperties* svgWithViewBoxProperties = |
| 2546 svgWithViewBox.paintProperties(); | 2546 svgWithViewBox.paintProperties(); |
| 2547 | 2547 |
| 2548 EXPECT_EQ(framePreTranslation(), | 2548 EXPECT_EQ(framePreTranslation(), |
| 2549 svgWithViewBoxProperties->localBorderBoxProperties()->transform()); | 2549 svgWithViewBoxProperties->localBorderBoxProperties()->transform()); |
| 2550 | 2550 |
| 2551 auto contentsProperties = svgWithViewBoxProperties->contentsProperties(); | 2551 const auto& contentsProperties = |
| 2552 *svgWithViewBoxProperties->contentsProperties(); |
| 2552 EXPECT_EQ(LayoutPoint(30, 20), svgWithViewBox.paintOffset()); | 2553 EXPECT_EQ(LayoutPoint(30, 20), svgWithViewBox.paintOffset()); |
| 2553 EXPECT_EQ(framePreTranslation(), contentsProperties.transform()); | 2554 EXPECT_EQ(framePreTranslation(), contentsProperties.transform()); |
| 2554 } | 2555 } |
| 2555 | 2556 |
| 2556 TEST_P(PaintPropertyTreeBuilderTest, OverflowHiddenScrollProperties) { | 2557 TEST_P(PaintPropertyTreeBuilderTest, OverflowHiddenScrollProperties) { |
| 2557 setBodyInnerHTML( | 2558 setBodyInnerHTML( |
| 2558 "<style>" | 2559 "<style>" |
| 2559 " body {" | 2560 " body {" |
| 2560 " margin: 0px;" | 2561 " margin: 0px;" |
| 2561 " }" | 2562 " }" |
| (...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3142 | 3143 |
| 3143 LayoutObject* target = getLayoutObjectByElementId("target"); | 3144 LayoutObject* target = getLayoutObjectByElementId("target"); |
| 3144 const auto* localBorderBoxProperties = | 3145 const auto* localBorderBoxProperties = |
| 3145 target->paintProperties()->localBorderBoxProperties(); | 3146 target->paintProperties()->localBorderBoxProperties(); |
| 3146 ASSERT_TRUE(localBorderBoxProperties); | 3147 ASSERT_TRUE(localBorderBoxProperties); |
| 3147 EXPECT_EQ(LayoutPoint(66, 55), target->paintOffset()); | 3148 EXPECT_EQ(LayoutPoint(66, 55), target->paintOffset()); |
| 3148 EXPECT_EQ(effect, localBorderBoxProperties->effect()); | 3149 EXPECT_EQ(effect, localBorderBoxProperties->effect()); |
| 3149 } | 3150 } |
| 3150 | 3151 |
| 3151 } // namespace blink | 3152 } // namespace blink |
| OLD | NEW |