| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/HTMLNames.h" | 5 #include "core/HTMLNames.h" |
| 6 #include "core/frame/FrameView.h" | 6 #include "core/frame/FrameView.h" |
| 7 #include "core/layout/LayoutTestHelper.h" | 7 #include "core/layout/LayoutTestHelper.h" |
| 8 #include "core/layout/LayoutView.h" | 8 #include "core/layout/LayoutView.h" |
| 9 #include "core/paint/PaintLayer.h" | 9 #include "core/paint/PaintLayer.h" |
| 10 #include "platform/graphics/GraphicsLayer.h" | 10 #include "platform/graphics/GraphicsLayer.h" |
| (...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 document().view()->setTracksPaintInvalidations(false); | 309 document().view()->setTracksPaintInvalidations(false); |
| 310 } | 310 } |
| 311 | 311 |
| 312 TEST_P(BoxPaintInvalidatorTest, NonCompositedLayoutViewResize) { | 312 TEST_P(BoxPaintInvalidatorTest, NonCompositedLayoutViewResize) { |
| 313 setBodyInnerHTML( | 313 setBodyInnerHTML( |
| 314 "<style>" | 314 "<style>" |
| 315 " body { margin: 0 }" | 315 " body { margin: 0 }" |
| 316 " iframe { display: block; width: 100px; height: 100px; border: none; }" | 316 " iframe { display: block; width: 100px; height: 100px; border: none; }" |
| 317 "</style>" | 317 "</style>" |
| 318 "<iframe id='iframe'></iframe>"); | 318 "<iframe id='iframe'></iframe>"); |
| 319 Document& frameDocument = setupChildIframe( | 319 setChildFrameHTML( |
| 320 "iframe", | |
| 321 "<style>" | 320 "<style>" |
| 322 " ::-webkit-scrollbar { display: none }" | 321 " ::-webkit-scrollbar { display: none }" |
| 323 " body { margin: 0; background: green; height: 0 }" | 322 " body { margin: 0; background: green; height: 0 }" |
| 324 "</style>" | 323 "</style>" |
| 325 "<div id='content' style='width: 200px; height: 200px'></div>"); | 324 "<div id='content' style='width: 200px; height: 200px'></div>"); |
| 326 document().view()->updateAllLifecyclePhases(); | 325 document().view()->updateAllLifecyclePhases(); |
| 327 Element* iframe = document().getElementById("iframe"); | 326 Element* iframe = document().getElementById("iframe"); |
| 328 Element* content = frameDocument.getElementById("content"); | 327 Element* content = childDocument().getElementById("content"); |
| 329 EXPECT_EQ(layoutView(), | 328 EXPECT_EQ(layoutView(), |
| 330 content->layoutObject()->containerForPaintInvalidation()); | 329 content->layoutObject()->containerForPaintInvalidation()); |
| 331 | 330 |
| 332 // Resize the content. | 331 // Resize the content. |
| 333 document().view()->setTracksPaintInvalidations(true); | 332 document().view()->setTracksPaintInvalidations(true); |
| 334 content->setAttribute(HTMLNames::styleAttr, "height: 500px"); | 333 content->setAttribute(HTMLNames::styleAttr, "height: 500px"); |
| 335 document().view()->updateAllLifecyclePhases(); | 334 document().view()->updateAllLifecyclePhases(); |
| 336 // No invalidation because the changed part of layout overflow is clipped. | 335 // No invalidation because the changed part of layout overflow is clipped. |
| 337 EXPECT_FALSE(getRasterInvalidationTracking()); | 336 EXPECT_FALSE(getRasterInvalidationTracking()); |
| 338 document().view()->setTracksPaintInvalidations(false); | 337 document().view()->setTracksPaintInvalidations(false); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 363 document().view()->setTracksPaintInvalidations(false); | 362 document().view()->setTracksPaintInvalidations(false); |
| 364 } | 363 } |
| 365 | 364 |
| 366 TEST_P(BoxPaintInvalidatorTest, NonCompositedLayoutViewGradientResize) { | 365 TEST_P(BoxPaintInvalidatorTest, NonCompositedLayoutViewGradientResize) { |
| 367 setBodyInnerHTML( | 366 setBodyInnerHTML( |
| 368 "<style>" | 367 "<style>" |
| 369 " body { margin: 0 }" | 368 " body { margin: 0 }" |
| 370 " iframe { display: block; width: 100px; height: 100px; border: none; }" | 369 " iframe { display: block; width: 100px; height: 100px; border: none; }" |
| 371 "</style>" | 370 "</style>" |
| 372 "<iframe id='iframe'></iframe>"); | 371 "<iframe id='iframe'></iframe>"); |
| 373 Document& frameDocument = setupChildIframe( | 372 setChildFrameHTML( |
| 374 "iframe", | |
| 375 "<style>" | 373 "<style>" |
| 376 " ::-webkit-scrollbar { display: none }" | 374 " ::-webkit-scrollbar { display: none }" |
| 377 " body {" | 375 " body {" |
| 378 " margin: 0;" | 376 " margin: 0;" |
| 379 " height: 0;" | 377 " height: 0;" |
| 380 " background-image: linear-gradient(blue, yellow);" | 378 " background-image: linear-gradient(blue, yellow);" |
| 381 " }" | 379 " }" |
| 382 "</style>" | 380 "</style>" |
| 383 "<div id='content' style='width: 200px; height: 200px'></div>"); | 381 "<div id='content' style='width: 200px; height: 200px'></div>"); |
| 384 document().view()->updateAllLifecyclePhases(); | 382 document().view()->updateAllLifecyclePhases(); |
| 385 Element* iframe = document().getElementById("iframe"); | 383 Element* iframe = document().getElementById("iframe"); |
| 386 Element* content = frameDocument.getElementById("content"); | 384 Element* content = childDocument().getElementById("content"); |
| 387 LayoutView* frameLayoutView = content->layoutObject()->view(); | 385 LayoutView* frameLayoutView = content->layoutObject()->view(); |
| 388 EXPECT_EQ(layoutView(), | 386 EXPECT_EQ(layoutView(), |
| 389 content->layoutObject()->containerForPaintInvalidation()); | 387 content->layoutObject()->containerForPaintInvalidation()); |
| 390 | 388 |
| 391 // Resize the content. | 389 // Resize the content. |
| 392 document().view()->setTracksPaintInvalidations(true); | 390 document().view()->setTracksPaintInvalidations(true); |
| 393 content->setAttribute(HTMLNames::styleAttr, "height: 500px"); | 391 content->setAttribute(HTMLNames::styleAttr, "height: 500px"); |
| 394 document().view()->updateAllLifecyclePhases(); | 392 document().view()->updateAllLifecyclePhases(); |
| 395 const auto* rasterInvalidations = | 393 const auto* rasterInvalidations = |
| 396 &getRasterInvalidationTracking()->trackedRasterInvalidations; | 394 &getRasterInvalidationTracking()->trackedRasterInvalidations; |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 getRasterInvalidationTracking()->trackedRasterInvalidations; | 565 getRasterInvalidationTracking()->trackedRasterInvalidations; |
| 568 ASSERT_EQ(1u, rasterInvalidations.size()); | 566 ASSERT_EQ(1u, rasterInvalidations.size()); |
| 569 EXPECT_EQ(IntRect(0, 120, 70, 120), rasterInvalidations[0].rect); | 567 EXPECT_EQ(IntRect(0, 120, 70, 120), rasterInvalidations[0].rect); |
| 570 EXPECT_EQ(static_cast<const DisplayItemClient*>(target->layoutObject()), | 568 EXPECT_EQ(static_cast<const DisplayItemClient*>(target->layoutObject()), |
| 571 rasterInvalidations[0].client); | 569 rasterInvalidations[0].client); |
| 572 EXPECT_EQ(PaintInvalidationIncremental, rasterInvalidations[0].reason); | 570 EXPECT_EQ(PaintInvalidationIncremental, rasterInvalidations[0].reason); |
| 573 document().view()->setTracksPaintInvalidations(false); | 571 document().view()->setTracksPaintInvalidations(false); |
| 574 } | 572 } |
| 575 | 573 |
| 576 } // namespace blink | 574 } // namespace blink |
| OLD | NEW |