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

Side by Side Diff: third_party/WebKit/Source/core/paint/TablePainterTest.cpp

Issue 2551963003: Reland of Paint collapsed borders of a table as one display item (Closed)
Patch Set: Created 4 years 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
(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
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/paint/TablePainter.cpp ('k') | third_party/WebKit/Source/core/paint/TableSectionPainter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698