summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor_test.cc')
-rw-r--r--chromium/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor_test.cc75
1 files changed, 56 insertions, 19 deletions
diff --git a/chromium/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor_test.cc b/chromium/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor_test.cc
index c89bf816d8f..1855e61bdf5 100644
--- a/chromium/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor_test.cc
+++ b/chromium/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor_test.cc
@@ -167,13 +167,13 @@ class PaintArtifactCompositorTest : public testing::Test,
const auto* scroll_node = scroll_offset.ScrollNode();
scoped_refptr<cc::Layer> layer = cc::Layer::Create();
auto rect = scroll_node->ContainerRect();
- layer->SetScrollable(gfx::Size(rect.Width(), rect.Height()));
- layer->SetBounds(gfx::Size(rect.Width(), rect.Height()));
+ layer->SetOffsetToTransformParent(gfx::Vector2dF(rect.X(), rect.Y()));
+ layer->SetScrollable(gfx::Size(rect.Size()));
+ layer->SetBounds(gfx::Size(rect.Size()));
layer->SetElementId(scroll_node->GetCompositorElementId());
layer->set_did_scroll_callback(
paint_artifact_compositor_->scroll_callback_);
- artifact.Chunk(scroll_offset, clip, effect)
- .ForeignLayer(FloatPoint(rect.Location()), rect.Size(), layer);
+ artifact.Chunk(scroll_offset, clip, effect).ForeignLayer(layer);
return;
}
// Scroll hit test layers are marked as scrollable for hit testing but are
@@ -904,12 +904,12 @@ TEST_P(PaintArtifactCompositorTest, SiblingClipsWithAlias) {
TEST_P(PaintArtifactCompositorTest, ForeignLayerPassesThrough) {
scoped_refptr<cc::Layer> layer = cc::Layer::Create();
layer->SetIsDrawable(true);
+ layer->SetOffsetToTransformParent(gfx::Vector2dF(50, 60));
layer->SetBounds(gfx::Size(400, 300));
TestPaintArtifact test_artifact;
test_artifact.Chunk().RectDrawing(FloatRect(0, 0, 100, 100), Color::kWhite);
- test_artifact.Chunk().ForeignLayer(FloatPoint(50, 60), IntSize(400, 300),
- layer);
+ test_artifact.Chunk().ForeignLayer(layer);
test_artifact.Chunk().RectDrawing(FloatRect(0, 0, 100, 100), Color::kGray);
auto artifact = test_artifact.Build();
@@ -1059,9 +1059,9 @@ TEST_P(PaintArtifactCompositorTest, OneScrollNode) {
// The scrolling contents layer is clipped to the scrolling range.
EXPECT_EQ(gfx::Size(27, 19), layer->bounds());
- EXPECT_EQ(gfx::Vector2dF(0, 12), layer->offset_to_transform_parent());
+ EXPECT_EQ(gfx::Vector2dF(3, 12), layer->offset_to_transform_parent());
EXPECT_THAT(layer->GetPicture(),
- Pointee(DrawsRectangle(FloatRect(0, 0, 60, 19), Color::kWhite)));
+ Pointee(DrawsRectangle(FloatRect(0, 0, 57, 19), Color::kWhite)));
auto* scroll_layer = ScrollableLayerAt(0);
EXPECT_TRUE(scroll_layer->scrollable());
@@ -1105,10 +1105,10 @@ TEST_P(PaintArtifactCompositorTest, TransformUnderScrollNode) {
EXPECT_EQ(scroll_node.id, layer1->scroll_tree_index());
// The scrolling layer is clipped to the scrollable range.
- EXPECT_EQ(gfx::Vector2dF(0, 4), layer0->offset_to_transform_parent());
- EXPECT_EQ(gfx::Size(27, 8), layer0->bounds());
+ EXPECT_EQ(gfx::Vector2dF(3, 5), layer0->offset_to_transform_parent());
+ EXPECT_EQ(gfx::Size(27, 7), layer0->bounds());
EXPECT_THAT(layer0->GetPicture(),
- Pointee(DrawsRectangle(FloatRect(0, 0, 40, 8), Color::kBlack)));
+ Pointee(DrawsRectangle(FloatRect(0, 0, 37, 7), Color::kBlack)));
// The layer under the transform without a scroll node is not clipped.
EXPECT_EQ(gfx::Vector2dF(1, -30), layer1->offset_to_transform_parent());
@@ -1863,7 +1863,7 @@ TEST_P(PaintArtifactCompositorTest, PendingLayer) {
PendingLayer pending_layer(chunk1, 0, false);
EXPECT_EQ(FloatRect(0, 0, 30, 40), pending_layer.bounds);
- EXPECT_EQ((Vector<size_t>{0}), pending_layer.paint_chunk_indices);
+ EXPECT_EQ((Vector<wtf_size_t>{0}), pending_layer.paint_chunk_indices);
EXPECT_EQ(pending_layer.bounds, pending_layer.rect_known_to_be_opaque);
PaintChunk chunk2 = DefaultChunk();
@@ -1874,7 +1874,7 @@ TEST_P(PaintArtifactCompositorTest, PendingLayer) {
// Bounds not equal to one PaintChunk.
EXPECT_EQ(FloatRect(0, 0, 40, 60), pending_layer.bounds);
- EXPECT_EQ((Vector<size_t>{0, 1}), pending_layer.paint_chunk_indices);
+ EXPECT_EQ((Vector<wtf_size_t>{0, 1}), pending_layer.paint_chunk_indices);
EXPECT_NE(pending_layer.bounds, pending_layer.rect_known_to_be_opaque);
PaintChunk chunk3 = DefaultChunk();
@@ -1884,7 +1884,7 @@ TEST_P(PaintArtifactCompositorTest, PendingLayer) {
pending_layer.Merge(PendingLayer(chunk3, 2, false));
EXPECT_EQ(FloatRect(-5, -25, 45, 85), pending_layer.bounds);
- EXPECT_EQ((Vector<size_t>{0, 1, 2}), pending_layer.paint_chunk_indices);
+ EXPECT_EQ((Vector<wtf_size_t>{0, 1, 2}), pending_layer.paint_chunk_indices);
EXPECT_NE(pending_layer.bounds, pending_layer.rect_known_to_be_opaque);
}
@@ -2290,9 +2290,43 @@ TEST_P(PaintArtifactCompositorTest, UpdatePopulatesCompositedElementIds) {
EXPECT_EQ(2u, composited_element_ids.size());
EXPECT_TRUE(
- composited_element_ids.Contains(transform->GetCompositorElementId()));
+ composited_element_ids.count(transform->GetCompositorElementId()));
+ EXPECT_TRUE(composited_element_ids.count(effect->GetCompositorElementId()));
+}
+
+// If we have both a transform and an opacity animation, they should both be
+// included in the composited element id set returned from
+// |PaintArtifactCompositor::Update(...)|.
+TEST_P(PaintArtifactCompositorTest, UniqueAnimationCompositedElementIds) {
+ TransformPaintPropertyNode::State transform_state;
+ transform_state.direct_compositing_reasons =
+ CompositingReason::kActiveTransformAnimation;
+ transform_state.compositor_element_id = CompositorElementIdFromUniqueObjectId(
+ 31, CompositorElementIdNamespace::kPrimaryTransform);
+ auto transform =
+ TransformPaintPropertyNode::Create(t0(), std::move(transform_state));
+
+ EffectPaintPropertyNode::State effect_state;
+ effect_state.local_transform_space = transform;
+ effect_state.output_clip = &c0();
+ effect_state.opacity = 2.0 / 255.0;
+ effect_state.direct_compositing_reasons =
+ CompositingReason::kActiveOpacityAnimation;
+ effect_state.compositor_element_id = CompositorElementIdFromUniqueObjectId(
+ 41, CompositorElementIdNamespace::kPrimaryEffect);
+ auto effect = EffectPaintPropertyNode::Create(e0(), std::move(effect_state));
+
+ TestPaintArtifact artifact;
+ artifact.Chunk(*transform, c0(), *effect)
+ .RectDrawing(FloatRect(0, 0, 100, 100), Color::kBlack);
+
+ CompositorElementIdSet composited_element_ids;
+ Update(artifact.Build(), composited_element_ids);
+
+ EXPECT_EQ(2u, composited_element_ids.size());
EXPECT_TRUE(
- composited_element_ids.Contains(effect->GetCompositorElementId()));
+ composited_element_ids.count(transform->GetCompositorElementId()));
+ EXPECT_TRUE(composited_element_ids.count(effect->GetCompositorElementId()));
}
TEST_P(PaintArtifactCompositorTest, SkipChunkWithOpacityZero) {
@@ -2444,15 +2478,18 @@ TEST_P(PaintArtifactCompositorTest, UpdateManagesLayerElementIds) {
Update(artifact.Build());
ASSERT_EQ(1u, ContentLayerCount());
- ASSERT_TRUE(GetLayerTreeHost().LayerByElementId(element_id));
+ ASSERT_TRUE(GetLayerTreeHost().IsElementInList(
+ element_id, cc::ElementListType::ACTIVE));
}
{
TestPaintArtifact artifact;
- ASSERT_TRUE(GetLayerTreeHost().LayerByElementId(element_id));
+ ASSERT_TRUE(GetLayerTreeHost().IsElementInList(
+ element_id, cc::ElementListType::ACTIVE));
Update(artifact.Build());
ASSERT_EQ(0u, ContentLayerCount());
- ASSERT_FALSE(GetLayerTreeHost().LayerByElementId(element_id));
+ ASSERT_FALSE(GetLayerTreeHost().IsElementInList(
+ element_id, cc::ElementListType::ACTIVE));
}
}