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

Unified Diff: third_party/WebKit/Source/core/paint/TablePainterTest.cpp

Issue 2430313004: Paint collapsed borders of a table as one display item (Closed)
Patch Set: Rebaseline on mac and win Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/paint/TablePainterTest.cpp
diff --git a/third_party/WebKit/Source/core/paint/TablePainterTest.cpp b/third_party/WebKit/Source/core/paint/TablePainterTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7ebcdff1ff26eb9cd8c3ca8a032056f5395f74a0
--- /dev/null
+++ b/third_party/WebKit/Source/core/paint/TablePainterTest.cpp
@@ -0,0 +1,75 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/paint/PaintControllerPaintTest.h"
+#include "platform/graphics/paint/DrawingDisplayItem.h"
+
+namespace blink {
+
+using TablePainterTest = PaintControllerPaintTest;
+
+TEST_F(TablePainterTest, CollapsedBorderInterestRectChange) {
+ setBodyInnerHTML(
+ "<style>"
+ " table { border-collapse: collapse; position: absolute; }"
+ " td { width: 100px; height: 100px; border: 2px solid blue; }"
+ "</style>"
+ "<table id='table'>"
+ " <tr><td></td><td></td><td></td><td></td></tr>"
+ " <tr><td></td><td></td><td></td><td></td></tr>"
+ " <tr><td></td><td></td><td></td><td></td></tr>"
+ " <tr><td></td><td></td><td></td><td></td></tr>"
+ "</table>");
+
+ PaintLayer& htmlLayer =
+ *toLayoutBoxModelObject(document().documentElement()->layoutObject())
+ ->layer();
+ LayoutObject& table = *getLayoutObjectByElementId("table");
+
+ rootPaintController().invalidateAll();
+ document().view()->updateAllLifecyclePhasesExceptPaint();
+ IntRect interestRect(300, 300, 300, 300);
+ paint(&interestRect);
+
+ EXPECT_DISPLAY_LIST(
+ rootPaintController().getDisplayItemList(), 4,
+ TestDisplayItem(layoutView(), documentBackgroundType),
+ TestDisplayItem(htmlLayer, DisplayItem::kSubsequence),
+ TestDisplayItem(table, DisplayItem::kTableCollapsedBorders),
+ TestDisplayItem(htmlLayer, DisplayItem::kEndSubsequence));
+ // Painted collapsed borders of the central 4 cells, each 4 operations.
+ EXPECT_EQ(16, static_cast<const DrawingDisplayItem&>(
+ rootPaintController().getDisplayItemList()[2])
+ .picture()
+ ->approximateOpCount());
+
+ // Should repaint collapsed borders if the previous paint didn't fully paint
+ // and interest rect changes.
+ document().view()->updateAllLifecyclePhasesExceptPaint();
+ interestRect = IntRect(0, 0, 1000, 1000);
+ EXPECT_TRUE(paintWithoutCommit(&interestRect));
+ EXPECT_EQ(1, numCachedNewItems());
+ commit();
+ EXPECT_DISPLAY_LIST(
+ rootPaintController().getDisplayItemList(), 4,
+ TestDisplayItem(layoutView(), documentBackgroundType),
+ TestDisplayItem(htmlLayer, DisplayItem::kSubsequence),
+ TestDisplayItem(table, DisplayItem::kTableCollapsedBorders),
+ TestDisplayItem(htmlLayer, DisplayItem::kEndSubsequence));
+ // Painted collapsed borders of all 16 cells, each 4 operations.
+ EXPECT_EQ(64, static_cast<const DrawingDisplayItem&>(
+ rootPaintController().getDisplayItemList()[2])
+ .picture()
+ ->approximateOpCount());
+
+ // Should not repaint collapsed borders if the previous paint fully painted
+ // and interest rect changes.
+ document().view()->updateAllLifecyclePhasesExceptPaint();
+ interestRect = IntRect(0, 0, 400, 400);
+ EXPECT_TRUE(paintWithoutCommit(&interestRect));
+ EXPECT_EQ(4, numCachedNewItems());
+ commit();
+}
+
+} // namespace blink
« 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