blob: a128883bf6b66ba15dd17b1b408bc4c77ce727e3 [file] [log] [blame]
// Copyright 2016 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 "platform/graphics/paint/PropertyTreeState.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blink {
class PropertyTreeStateTest : public ::testing::Test {};
TEST_F(PropertyTreeStateTest, CompositorElementIdNoElementIdOnAnyNode) {
PropertyTreeState state(TransformPaintPropertyNode::Root(),
ClipPaintPropertyNode::Root(),
EffectPaintPropertyNode::Root());
EXPECT_EQ(CompositorElementId(),
state.GetCompositorElementId(CompositorElementIdSet()));
}
TEST_F(PropertyTreeStateTest, CompositorElementIdWithElementIdOnTransformNode) {
CompositorElementId expected_compositor_element_id = CompositorElementId(2);
scoped_refptr<TransformPaintPropertyNode> transform =
TransformPaintPropertyNode::Create(TransformPaintPropertyNode::Root(),
TransformationMatrix(), FloatPoint3D(),
false, 0, CompositingReason::kNone,
expected_compositor_element_id);
PropertyTreeState state(transform.get(), ClipPaintPropertyNode::Root(),
EffectPaintPropertyNode::Root());
EXPECT_EQ(expected_compositor_element_id,
state.GetCompositorElementId(CompositorElementIdSet()));
}
TEST_F(PropertyTreeStateTest, CompositorElementIdWithElementIdOnEffectNode) {
CompositorElementId expected_compositor_element_id = CompositorElementId(2);
scoped_refptr<EffectPaintPropertyNode> effect =
EffectPaintPropertyNode::Create(
EffectPaintPropertyNode::Root(), TransformPaintPropertyNode::Root(),
ClipPaintPropertyNode::Root(), kColorFilterNone,
CompositorFilterOperations(), 1.0, SkBlendMode::kSrcOver,
CompositingReason::kNone, expected_compositor_element_id);
PropertyTreeState state(TransformPaintPropertyNode::Root(),
ClipPaintPropertyNode::Root(), effect.get());
EXPECT_EQ(expected_compositor_element_id,
state.GetCompositorElementId(CompositorElementIdSet()));
}
TEST_F(PropertyTreeStateTest, CompositorElementIdWithElementIdOnMultipleNodes) {
CompositorElementId expected_compositor_element_id = CompositorElementId(2);
scoped_refptr<TransformPaintPropertyNode> transform =
TransformPaintPropertyNode::Create(TransformPaintPropertyNode::Root(),
TransformationMatrix(), FloatPoint3D(),
false, 0, CompositingReason::kNone,
expected_compositor_element_id);
scoped_refptr<EffectPaintPropertyNode> effect =
EffectPaintPropertyNode::Create(
EffectPaintPropertyNode::Root(), TransformPaintPropertyNode::Root(),
ClipPaintPropertyNode::Root(), kColorFilterNone,
CompositorFilterOperations(), 1.0, SkBlendMode::kSrcOver,
CompositingReason::kNone, expected_compositor_element_id);
PropertyTreeState state(transform.get(), ClipPaintPropertyNode::Root(),
effect.get());
EXPECT_EQ(expected_compositor_element_id,
state.GetCompositorElementId(CompositorElementIdSet()));
}
TEST_F(PropertyTreeStateTest, CompositorElementIdWithDifferingElementIds) {
CompositorElementId first_compositor_element_id = CompositorElementId(2);
CompositorElementId second_compositor_element_id = CompositorElementId(3);
scoped_refptr<TransformPaintPropertyNode> transform =
TransformPaintPropertyNode::Create(TransformPaintPropertyNode::Root(),
TransformationMatrix(), FloatPoint3D(),
false, 0, CompositingReason::kNone,
first_compositor_element_id);
scoped_refptr<EffectPaintPropertyNode> effect =
EffectPaintPropertyNode::Create(
EffectPaintPropertyNode::Root(), TransformPaintPropertyNode::Root(),
ClipPaintPropertyNode::Root(), kColorFilterNone,
CompositorFilterOperations(), 1.0, SkBlendMode::kSrcOver,
CompositingReason::kNone, second_compositor_element_id);
PropertyTreeState state(transform.get(), ClipPaintPropertyNode::Root(),
effect.get());
CompositorElementIdSet composited_element_ids;
composited_element_ids.insert(first_compositor_element_id);
EXPECT_EQ(second_compositor_element_id,
state.GetCompositorElementId(composited_element_ids));
composited_element_ids.clear();
composited_element_ids.insert(second_compositor_element_id);
EXPECT_EQ(first_compositor_element_id,
state.GetCompositorElementId(composited_element_ids));
}
} // namespace blink