Commit e083cc6e authored by oshima's avatar oshima Committed by Commit bot

RecreateLayer should copy the transform as well.

BUG=581917
TEST=LayerOwnerTest.RecreateLayerWithTransform

Review URL: https://codereview.chromium.org/1800393002

Cr-Commit-Position: refs/heads/master@{#381571}
parent 4e7ecf36
...@@ -49,6 +49,7 @@ scoped_ptr<Layer> LayerOwner::RecreateLayer() { ...@@ -49,6 +49,7 @@ scoped_ptr<Layer> LayerOwner::RecreateLayer() {
new_layer->SetFillsBoundsCompletely(old_layer->FillsBoundsCompletely()); new_layer->SetFillsBoundsCompletely(old_layer->FillsBoundsCompletely());
new_layer->SetSubpixelPositionOffset(old_layer->subpixel_position_offset()); new_layer->SetSubpixelPositionOffset(old_layer->subpixel_position_offset());
new_layer->SetLayerInverted(old_layer->layer_inverted()); new_layer->SetLayerInverted(old_layer->layer_inverted());
new_layer->SetTransform(old_layer->GetTargetTransform());
if (old_layer->type() == LAYER_SOLID_COLOR) if (old_layer->type() == LAYER_SOLID_COLOR)
new_layer->SetColor(old_layer->GetTargetColor()); new_layer->SetColor(old_layer->GetTargetColor());
SkRegion* alpha_shape = old_layer->alpha_shape(); SkRegion* alpha_shape = old_layer->alpha_shape();
......
...@@ -157,6 +157,31 @@ TEST(LayerOwnerTest, InvertPropertyRemainSameWithRecreateLayer) { ...@@ -157,6 +157,31 @@ TEST(LayerOwnerTest, InvertPropertyRemainSameWithRecreateLayer) {
EXPECT_EQ(old_layer2->layer_inverted(), owner.layer()->layer_inverted()); EXPECT_EQ(old_layer2->layer_inverted(), owner.layer()->layer_inverted());
} }
TEST(LayerOwnerTest, RecreateLayerWithTransform) {
LayerOwner owner;
Layer* layer = new Layer;
owner.SetLayer(layer);
gfx::Transform transform;
transform.Scale(2, 1);
transform.Translate(10, 5);
layer->SetTransform(transform);
scoped_ptr<Layer> old_layer1 = owner.RecreateLayer();
// Both new layer and original layer have the same transform.
EXPECT_EQ(transform, old_layer1->GetTargetTransform());
EXPECT_EQ(transform, owner.layer()->GetTargetTransform());
// But they're now separated, so changing the old layer's transform
// should not affect the owner's.
owner.layer()->SetTransform(gfx::Transform());
EXPECT_EQ(transform, old_layer1->GetTargetTransform());
scoped_ptr<Layer> old_layer2 = owner.RecreateLayer();
EXPECT_TRUE(old_layer2->GetTargetTransform().IsIdentity());
EXPECT_TRUE(owner.layer()->GetTargetTransform().IsIdentity());
}
TEST_F(LayerOwnerTestWithCompositor, RecreateRootLayerWithCompositor) { TEST_F(LayerOwnerTestWithCompositor, RecreateRootLayerWithCompositor) {
LayerOwner owner; LayerOwner owner;
Layer* layer = new Layer; Layer* layer = new Layer;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment