| Index: third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
|
| diff --git a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp b/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
|
| index ef9edb44bdf3f28918831cea691c72f01de0effb..457411c1749dff58aee7c3132538a900ec05b1a6 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
|
| +++ b/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
|
| @@ -40,6 +40,7 @@ protected:
|
|
|
| // Delay constructing the compositor until after the feature is set.
|
| m_paintArtifactCompositor = wrapUnique(new PaintArtifactCompositor);
|
| + m_paintArtifactCompositor->enableExtraDataForTesting();
|
| }
|
|
|
| void TearDown() override
|
| @@ -51,6 +52,16 @@ protected:
|
| cc::Layer* rootLayer() { return m_paintArtifactCompositor->rootLayer(); }
|
| void update(const PaintArtifact& artifact) { m_paintArtifactCompositor->update(artifact); }
|
|
|
| + size_t contentLayerCount()
|
| + {
|
| + return m_paintArtifactCompositor->getExtraDataForTesting()->contentLayers.size();
|
| + }
|
| +
|
| + cc::Layer* contentLayerAt(unsigned index)
|
| + {
|
| + return m_paintArtifactCompositor->getExtraDataForTesting()->contentLayers[index].get();
|
| + }
|
| +
|
| private:
|
| RuntimeEnabledFeatures::Backup m_featuresBackup;
|
| std::unique_ptr<PaintArtifactCompositor> m_paintArtifactCompositor;
|
| @@ -422,13 +433,91 @@ TEST_F(PaintArtifactCompositorTestWithPropertyTrees, OneChunkWithAnOffset)
|
| .rectDrawing(FloatRect(50, -50, 100, 100), Color::white);
|
| update(artifact.build());
|
|
|
| - ASSERT_EQ(1u, rootLayer()->children().size());
|
| - const cc::Layer* child = rootLayer()->child_at(0);
|
| + ASSERT_EQ(1u, contentLayerCount());
|
| + const cc::Layer* child = contentLayerAt(0);
|
| EXPECT_THAT(child->GetPicture(),
|
| Pointee(drawsRectangle(FloatRect(0, 0, 100, 100), Color::white)));
|
| EXPECT_EQ(translation(50, -50), child->screen_space_transform());
|
| EXPECT_EQ(gfx::Size(100, 100), child->bounds());
|
| }
|
|
|
| +TEST_F(PaintArtifactCompositorTestWithPropertyTrees, OneTransform)
|
| +{
|
| + // A 90 degree clockwise rotation about (100, 100).
|
| + RefPtr<TransformPaintPropertyNode> transform = TransformPaintPropertyNode::create(
|
| + TransformationMatrix().rotate(90), FloatPoint3D(100, 100, 0));
|
| +
|
| + TestPaintArtifact artifact;
|
| + artifact.chunk(transform, nullptr, nullptr)
|
| + .rectDrawing(FloatRect(0, 0, 100, 100), Color::white);
|
| + artifact.chunk(nullptr, nullptr, nullptr)
|
| + .rectDrawing(FloatRect(0, 0, 100, 100), Color::gray);
|
| + artifact.chunk(transform, nullptr, nullptr)
|
| + .rectDrawing(FloatRect(100, 100, 200, 100), Color::black);
|
| + update(artifact.build());
|
| +
|
| + ASSERT_EQ(3u, contentLayerCount());
|
| + {
|
| + const cc::Layer* layer = contentLayerAt(0);
|
| + EXPECT_THAT(layer->GetPicture(),
|
| + Pointee(drawsRectangle(FloatRect(0, 0, 100, 100), Color::white)));
|
| + gfx::RectF mappedRect(0, 0, 100, 100);
|
| + layer->screen_space_transform().TransformRect(&mappedRect);
|
| + EXPECT_EQ(gfx::RectF(100, 0, 100, 100), mappedRect);
|
| + }
|
| + {
|
| + const cc::Layer* layer = contentLayerAt(1);
|
| + EXPECT_THAT(layer->GetPicture(),
|
| + Pointee(drawsRectangle(FloatRect(0, 0, 100, 100), Color::gray)));
|
| + EXPECT_EQ(gfx::Transform(), layer->screen_space_transform());
|
| + }
|
| + {
|
| + const cc::Layer* layer = contentLayerAt(2);
|
| + EXPECT_THAT(layer->GetPicture(),
|
| + Pointee(drawsRectangle(FloatRect(0, 0, 200, 100), Color::black)));
|
| + gfx::RectF mappedRect(0, 0, 200, 100);
|
| + layer->screen_space_transform().TransformRect(&mappedRect);
|
| + EXPECT_EQ(gfx::RectF(0, 100, 100, 200), mappedRect);
|
| + }
|
| +}
|
| +
|
| +TEST_F(PaintArtifactCompositorTestWithPropertyTrees, TransformCombining)
|
| +{
|
| + // A translation by (5, 5) within a 2x scale about (10, 10).
|
| + RefPtr<TransformPaintPropertyNode> transform1 = TransformPaintPropertyNode::create(
|
| + TransformationMatrix().scale(2), FloatPoint3D(10, 10, 0));
|
| + RefPtr<TransformPaintPropertyNode> transform2 = TransformPaintPropertyNode::create(
|
| + TransformationMatrix().translate(5, 5), FloatPoint3D(), transform1);
|
| +
|
| + TestPaintArtifact artifact;
|
| + artifact.chunk(transform1, nullptr, nullptr)
|
| + .rectDrawing(FloatRect(0, 0, 300, 200), Color::white);
|
| + artifact.chunk(transform2, nullptr, nullptr)
|
| + .rectDrawing(FloatRect(0, 0, 300, 200), Color::black);
|
| + update(artifact.build());
|
| +
|
| + ASSERT_EQ(2u, contentLayerCount());
|
| + {
|
| + const cc::Layer* layer = contentLayerAt(0);
|
| + EXPECT_THAT(layer->GetPicture(),
|
| + Pointee(drawsRectangle(FloatRect(0, 0, 300, 200), Color::white)));
|
| + gfx::RectF mappedRect(0, 0, 300, 200);
|
| + layer->screen_space_transform().TransformRect(&mappedRect);
|
| + EXPECT_EQ(gfx::RectF(-10, -10, 600, 400), mappedRect);
|
| + }
|
| + {
|
| + const cc::Layer* layer = contentLayerAt(1);
|
| + EXPECT_THAT(layer->GetPicture(),
|
| + Pointee(drawsRectangle(FloatRect(0, 0, 300, 200), Color::black)));
|
| + gfx::RectF mappedRect(0, 0, 300, 200);
|
| + layer->screen_space_transform().TransformRect(&mappedRect);
|
| + EXPECT_EQ(gfx::RectF(0, 0, 600, 400), mappedRect);
|
| + }
|
| + EXPECT_NE(
|
| + contentLayerAt(0)->transform_tree_index(),
|
| + contentLayerAt(1)->transform_tree_index());
|
| +}
|
| +
|
| +
|
| } // namespace
|
| } // namespace blink
|
|
|