| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "core/paint/PaintControllerPaintTest.h" | |
| 6 #include "platform/graphics/paint/DrawingDisplayItem.h" | |
| 7 | |
| 8 namespace blink { | |
| 9 | |
| 10 using TablePainterTest = PaintControllerPaintTest; | |
| 11 | |
| 12 TEST_F(TablePainterTest, CollapsedBorderInterestRectChange) { | |
| 13 setBodyInnerHTML( | |
| 14 "<style>" | |
| 15 " table { border-collapse: collapse; position: absolute; }" | |
| 16 " td { width: 100px; height: 100px; border: 2px solid blue; }" | |
| 17 "</style>" | |
| 18 "<table id='table'>" | |
| 19 " <tr><td></td><td></td><td></td><td></td></tr>" | |
| 20 " <tr><td></td><td></td><td></td><td></td></tr>" | |
| 21 " <tr><td></td><td></td><td></td><td></td></tr>" | |
| 22 " <tr><td></td><td></td><td></td><td></td></tr>" | |
| 23 "</table>"); | |
| 24 | |
| 25 PaintLayer& htmlLayer = | |
| 26 *toLayoutBoxModelObject(document().documentElement()->layoutObject()) | |
| 27 ->layer(); | |
| 28 LayoutObject& table = *getLayoutObjectByElementId("table"); | |
| 29 | |
| 30 rootPaintController().invalidateAll(); | |
| 31 document().view()->updateAllLifecyclePhasesExceptPaint(); | |
| 32 IntRect interestRect(300, 300, 300, 300); | |
| 33 paint(&interestRect); | |
| 34 | |
| 35 EXPECT_DISPLAY_LIST( | |
| 36 rootPaintController().getDisplayItemList(), 4, | |
| 37 TestDisplayItem(layoutView(), documentBackgroundType), | |
| 38 TestDisplayItem(htmlLayer, DisplayItem::kSubsequence), | |
| 39 TestDisplayItem(table, DisplayItem::kTableCollapsedBorders), | |
| 40 TestDisplayItem(htmlLayer, DisplayItem::kEndSubsequence)); | |
| 41 // Painted collapsed borders of the central 4 cells, each 4 operations. | |
| 42 EXPECT_EQ(16, static_cast<const DrawingDisplayItem&>( | |
| 43 rootPaintController().getDisplayItemList()[2]) | |
| 44 .picture() | |
| 45 ->approximateOpCount()); | |
| 46 | |
| 47 // Should repaint collapsed borders if the previous paint didn't fully paint | |
| 48 // and interest rect changes. | |
| 49 document().view()->updateAllLifecyclePhasesExceptPaint(); | |
| 50 interestRect = IntRect(0, 0, 1000, 1000); | |
| 51 EXPECT_TRUE(paintWithoutCommit(&interestRect)); | |
| 52 EXPECT_EQ(1, numCachedNewItems()); | |
| 53 commit(); | |
| 54 EXPECT_DISPLAY_LIST( | |
| 55 rootPaintController().getDisplayItemList(), 4, | |
| 56 TestDisplayItem(layoutView(), documentBackgroundType), | |
| 57 TestDisplayItem(htmlLayer, DisplayItem::kSubsequence), | |
| 58 TestDisplayItem(table, DisplayItem::kTableCollapsedBorders), | |
| 59 TestDisplayItem(htmlLayer, DisplayItem::kEndSubsequence)); | |
| 60 // Painted collapsed borders of all 16 cells, each 4 operations. | |
| 61 EXPECT_EQ(64, static_cast<const DrawingDisplayItem&>( | |
| 62 rootPaintController().getDisplayItemList()[2]) | |
| 63 .picture() | |
| 64 ->approximateOpCount()); | |
| 65 | |
| 66 // Should not repaint collapsed borders if the previous paint fully painted | |
| 67 // and interest rect changes. | |
| 68 document().view()->updateAllLifecyclePhasesExceptPaint(); | |
| 69 interestRect = IntRect(0, 0, 400, 400); | |
| 70 EXPECT_TRUE(paintWithoutCommit(&interestRect)); | |
| 71 EXPECT_EQ(4, numCachedNewItems()); | |
| 72 commit(); | |
| 73 } | |
| 74 | |
| 75 } // namespace blink | |
| OLD | NEW |