| Index: third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h
|
| diff --git a/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h b/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h
|
| index 43952c11c50d41f15e3b24237f58e062421407cd..fe1b5ea0f338ff4337a3816f8755a0ccceb08d2d 100644
|
| --- a/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h
|
| +++ b/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h
|
| @@ -9,78 +9,107 @@
|
| #include "core/layout/LayoutTestHelper.h"
|
| #include "core/layout/LayoutView.h"
|
| #include "core/paint/PaintLayer.h"
|
| +#include "platform/graphics/GraphicsContext.h"
|
| #include "platform/graphics/GraphicsLayer.h"
|
| #include <gtest/gtest.h>
|
|
|
| namespace blink {
|
|
|
| -class PaintControllerPaintTest : public RenderingTest {
|
| +class PaintControllerPaintTestBase : public RenderingTest {
|
| public:
|
| - PaintControllerPaintTest()
|
| + PaintControllerPaintTestBase(bool enableSlimmingPaintV2)
|
| : m_originalSlimmingPaintSynchronizedPaintingEnabled(RuntimeEnabledFeatures::slimmingPaintSynchronizedPaintingEnabled())
|
| , m_originalSlimmingPaintOffsetCachingEnabled(RuntimeEnabledFeatures::slimmingPaintOffsetCachingEnabled())
|
| - { }
|
| + , m_originalSlimmingPaintV2Enabled(RuntimeEnabledFeatures::slimmingPaintV2Enabled())
|
| + , m_enableSlimmingPaintV2(enableSlimmingPaintV2)
|
| + { }
|
|
|
| protected:
|
| LayoutView& layoutView() { return *document().layoutView(); }
|
| PaintController& rootPaintController() { return *layoutView().layer()->graphicsLayerBacking()->paintController(); }
|
|
|
| -private:
|
| void SetUp() override
|
| {
|
| RenderingTest::SetUp();
|
| enableCompositing();
|
| GraphicsLayer::setDrawDebugRedFillForTesting(false);
|
| + RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(m_enableSlimmingPaintV2);
|
| }
|
| void TearDown() override
|
| {
|
| RuntimeEnabledFeatures::setSlimmingPaintSynchronizedPaintingEnabled(m_originalSlimmingPaintSynchronizedPaintingEnabled);
|
| RuntimeEnabledFeatures::setSlimmingPaintOffsetCachingEnabled(m_originalSlimmingPaintOffsetCachingEnabled);
|
| + RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(m_originalSlimmingPaintV2Enabled);
|
| GraphicsLayer::setDrawDebugRedFillForTesting(true);
|
| }
|
|
|
| - bool m_originalSlimmingPaintSynchronizedPaintingEnabled;
|
| - bool m_originalSlimmingPaintOffsetCachingEnabled;
|
| -};
|
| -
|
| -// 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 PaintControllerPaintTestForSlimmingPaintV2 : public RenderingTest {
|
| -public:
|
| - PaintControllerPaintTestForSlimmingPaintV2()
|
| - : m_originalSlimmingPaintV2Enabled(RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { }
|
| -
|
| -protected:
|
| - LayoutView& layoutView() { return *document().layoutView(); }
|
| - PaintController& rootPaintController() { return *layoutView().layer()->graphicsLayerBacking()->paintController(); }
|
| -
|
| // Expose some document lifecycle steps for checking new display items before commiting.
|
| - void updateLifecyclePhasesToPaintClean(const LayoutRect* interestRect = nullptr)
|
| + void updateLifecyclePhasesBeforePaint()
|
| {
|
| - document().view()->updateLifecyclePhasesInternal(FrameView::OnlyUpToCompositingCleanPlusScrolling, nullptr);
|
| - document().view()->invalidateTreeIfNeededRecursive();
|
| - document().view()->updatePaintProperties();
|
| - document().view()->synchronizedPaint(interestRect);
|
| + // This doesn't do all steps that FrameView does, but is enough for current tests.
|
| + FrameView* frameView = document().view();
|
| + frameView->updateLifecyclePhasesInternal(FrameView::OnlyUpToCompositingCleanPlusScrolling);
|
| + frameView->invalidateTreeIfNeededRecursive();
|
| + if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
|
| + document().view()->updatePaintProperties();
|
| }
|
| - void compositeForSlimmingPaintV2() { document().view()->compositeForSlimmingPaintV2(); }
|
|
|
| -private:
|
| - void SetUp() override
|
| + void updateLifecyclePhasesToPaintClean()
|
| {
|
| - RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(true);
|
| + ASSERT(RuntimeEnabledFeatures::slimmingPaintSynchronizedPaintingEnabled());
|
| + updateLifecyclePhasesBeforePaint();
|
| + document().view()->synchronizedPaint();
|
| + }
|
|
|
| - RenderingTest::SetUp();
|
| - enableCompositing();
|
| - GraphicsLayer::setDrawDebugRedFillForTesting(false);
|
| + void paint(const IntRect* interestRect = nullptr)
|
| + {
|
| + ASSERT(RuntimeEnabledFeatures::slimmingPaintSynchronizedPaintingEnabled());
|
| + // For v1, only root graphics layer is supported.
|
| + if (RuntimeEnabledFeatures::slimmingPaintV2Enabled() && !interestRect) {
|
| + document().view()->synchronizedPaint();
|
| + } else {
|
| + document().view()->lifecycle().advanceTo(DocumentLifecycle::InPaint);
|
| + GraphicsContext context(rootPaintController());
|
| + layoutView().layer()->graphicsLayerBacking()->paint(context, interestRect);
|
| + if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
|
| + document().view()->lifecycle().advanceTo(DocumentLifecycle::PaintClean);
|
| + }
|
| }
|
|
|
| - void TearDown() override
|
| + // TODO(who removes pre-v2 code): rename to composite().
|
| + void commit()
|
| {
|
| - GraphicsLayer::setDrawDebugRedFillForTesting(true);
|
| - RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(m_originalSlimmingPaintV2Enabled);
|
| + // For v1, only root graphics layer is supported.
|
| + if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
|
| + document().view()->compositeForSlimmingPaintV2();
|
| + } else {
|
| + rootPaintController().commitNewDisplayItems();
|
| + document().view()->lifecycle().advanceTo(DocumentLifecycle::PaintClean);
|
| + }
|
| }
|
|
|
| +private:
|
| + bool m_originalSlimmingPaintSynchronizedPaintingEnabled;
|
| + bool m_originalSlimmingPaintOffsetCachingEnabled;
|
| bool m_originalSlimmingPaintV2Enabled;
|
| + bool m_enableSlimmingPaintV2;
|
| +};
|
| +
|
| +class PaintControllerPaintTest : public PaintControllerPaintTestBase {
|
| +public:
|
| + PaintControllerPaintTest() : PaintControllerPaintTestBase(false) { }
|
| +};
|
| +
|
| +class PaintControllerPaintTestForSlimmingPaintV2 : public PaintControllerPaintTestBase {
|
| +public:
|
| + PaintControllerPaintTestForSlimmingPaintV2() : PaintControllerPaintTestBase(true) { }
|
| +};
|
| +
|
| +class PaintControllerPaintTestForSlimmingPaintV1AndV2
|
| + : public PaintControllerPaintTestBase
|
| + , public testing::WithParamInterface<bool> {
|
| +public:
|
| + PaintControllerPaintTestForSlimmingPaintV1AndV2() : PaintControllerPaintTestBase(GetParam()) { }
|
| };
|
|
|
| class TestDisplayItem final : public DisplayItem {
|
|
|