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

Unified Diff: Source/core/paint/DisplayItemListPaintTest.h

Issue 1312493007: Fix table cell background caching issue about interest rect (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 3 months 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
« no previous file with comments | « Source/core/paint/BlockPainter.cpp ('k') | Source/core/paint/DisplayItemListPaintTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/paint/DisplayItemListPaintTest.h
diff --git a/Source/core/paint/DisplayItemListPaintTest.h b/Source/core/paint/DisplayItemListPaintTest.h
new file mode 100644
index 0000000000000000000000000000000000000000..fe86e90a1774d07848089f1465443bdd55b9003f
--- /dev/null
+++ b/Source/core/paint/DisplayItemListPaintTest.h
@@ -0,0 +1,140 @@
+// 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.
+
+#ifndef DisplayItemListPaintTest_h
+#define DisplayItemListPaintTest_h
+
+#include "core/frame/FrameView.h"
+#include "core/layout/LayoutTestHelper.h"
+#include "core/layout/LayoutView.h"
+#include "core/paint/DeprecatedPaintLayer.h"
+#include "platform/graphics/GraphicsLayer.h"
+#include <gtest/gtest.h>
+
+namespace blink {
+
+class DisplayItemListPaintTest : public RenderingTest {
+public:
+ DisplayItemListPaintTest()
+ : m_layoutView(nullptr)
+ , m_originalSlimmingPaintEnabled(RuntimeEnabledFeatures::slimmingPaintEnabled()) { }
+
+protected:
+ LayoutView& layoutView() { return *m_layoutView; }
+ DisplayItemList& rootDisplayItemList() { return *layoutView().layer()->graphicsLayerBacking()->displayItemList(); }
+ const DisplayItems& newDisplayItemsBeforeUpdate() { return rootDisplayItemList().m_newDisplayItems; }
+
+private:
+ void SetUp() override
+ {
+ RuntimeEnabledFeatures::setSlimmingPaintEnabled(true);
+
+ RenderingTest::SetUp();
+ enableCompositing();
+
+ m_layoutView = document().view()->layoutView();
+ ASSERT_TRUE(m_layoutView);
+ }
+
+ void TearDown() override
+ {
+ RuntimeEnabledFeatures::setSlimmingPaintEnabled(m_originalSlimmingPaintEnabled);
+ }
+
+ LayoutView* m_layoutView;
+ bool m_originalSlimmingPaintEnabled;
+};
+
+// Slimming paint v2 has subtly different behavior on some paint tests. This
+// class is used to test only v2 behavior while maintaining v1 test coverage.
+class DisplayItemListPaintTestForSlimmingPaintV2 : public RenderingTest {
+public:
+ DisplayItemListPaintTestForSlimmingPaintV2()
+ : m_layoutView(nullptr)
+ , m_originalSlimmingPaintV2Enabled(RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { }
+
+protected:
+ LayoutView& layoutView() { return *m_layoutView; }
+ DisplayItemList& rootDisplayItemList() { return *layoutView().layer()->graphicsLayerBacking()->displayItemList(); }
+ const DisplayItems& newDisplayItemsBeforeUpdate() { return rootDisplayItemList().m_newDisplayItems; }
+
+ // Expose some document lifecycle steps for checking new display items before commiting.
+ void updateLifecyclePhasesToPaintForSlimmingPaintV2Clean()
+ {
+ document().view()->updateLifecyclePhasesInternal(FrameView::OnlyUpToCompositingCleanPlusScrolling);
+ document().view()->invalidateTreeIfNeededRecursive();
+ document().view()->paintForSlimmingPaintV2();
+ }
+ void compositeForSlimmingPaintV2() { document().view()->compositeForSlimmingPaintV2(); }
+
+private:
+ void SetUp() override
+ {
+ ASSERT_TRUE(RuntimeEnabledFeatures::slimmingPaintEnabled());
+ RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(true);
+
+ RenderingTest::SetUp();
+ enableCompositing();
+
+ m_layoutView = document().view()->layoutView();
+ ASSERT_TRUE(m_layoutView);
+ }
+
+ void TearDown() override
+ {
+ RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(m_originalSlimmingPaintV2Enabled);
+ }
+
+ LayoutView* m_layoutView;
+ bool m_originalSlimmingPaintV2Enabled;
+};
+
+class TestDisplayItem final : public DisplayItem {
+public:
+ TestDisplayItem(const DisplayItemClientWrapper& client, Type type) : DisplayItem(client, type, sizeof(*this)) { }
+
+ void replay(GraphicsContext&) final { ASSERT_NOT_REACHED(); }
+ void appendToWebDisplayItemList(WebDisplayItemList*) const final { ASSERT_NOT_REACHED(); }
+};
+
+#ifndef NDEBUG
+#define TRACE_DISPLAY_ITEMS(i, expected, actual) \
+ String trace = String::format("%d: ", (int)i) + "Expected: " + (expected).asDebugString() + " Actual: " + (actual).asDebugString(); \
+ SCOPED_TRACE(trace.utf8().data());
+#else
+#define TRACE_DISPLAY_ITEMS(i, expected, actual)
+#endif
+
+#define EXPECT_DISPLAY_LIST_BASE(actual, expectedSize, ...) \
+ do { \
+ EXPECT_EQ((size_t)expectedSize, actual.size()); \
+ if (expectedSize != actual.size()) \
+ break; \
+ const TestDisplayItem expected[] = { __VA_ARGS__ }; \
+ for (size_t index = 0; index < std::min<size_t>(actual.size(), expectedSize); index++) { \
+ TRACE_DISPLAY_ITEMS(index, expected[index], actual[index]); \
+ EXPECT_EQ(expected[index].client(), actual[index].client()); \
+ EXPECT_EQ(expected[index].type(), actual[index].type()); \
+ } \
+ } while (false);
+
+#ifndef NDEBUG
+#define EXPECT_DISPLAY_LIST_WITH_RED_FILL_IN_DEBUG(actual, expectedSizeWithoutFill, ...) \
+ EXPECT_DISPLAY_LIST_BASE( \
+ actual, expectedSizeWithoutFill + 1, \
+ TestDisplayItem(*document().layoutView()->layer()->graphicsLayerBacking(), DisplayItem::DebugRedFill), \
+ __VA_ARGS__)
+#define EXPECT_DISPLAY_LIST_WITH_CACHED_RED_FILL_IN_DEBUG(actual, expectedSizeWithoutFill, ...) \
+ EXPECT_DISPLAY_LIST_BASE( \
+ actual, expectedSizeWithoutFill + 1, \
+ TestDisplayItem(*document().layoutView()->layer()->graphicsLayerBacking(), DisplayItem::drawingTypeToCachedDrawingType(DisplayItem::DebugRedFill)), \
+ __VA_ARGS__)
+#else
+#define EXPECT_DISPLAY_LIST_WITH_RED_FILL_IN_DEBUG EXPECT_DISPLAY_LIST_BASE
+#define EXPECT_DISPLAY_LIST_WITH_CACHED_RED_FILL_IN_DEBUG EXPECT_DISPLAY_LIST_BASE
+#endif
+
+} // namespace blink
+
+#endif // DisplayItemListPaintTest_h
« no previous file with comments | « Source/core/paint/BlockPainter.cpp ('k') | Source/core/paint/DisplayItemListPaintTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698