| Index: ui/compositor/layer_owner_unittest.cc
|
| diff --git a/ui/compositor/layer_owner_unittest.cc b/ui/compositor/layer_owner_unittest.cc
|
| index 5e81fe98426e511eaa21bd0d059383d136ee5125..cdffd2a5aca1c1c786bf0a74e91e8e770a49d707 100644
|
| --- a/ui/compositor/layer_owner_unittest.cc
|
| +++ b/ui/compositor/layer_owner_unittest.cc
|
| @@ -85,10 +85,108 @@
|
|
|
| } // namespace
|
|
|
| +TEST(LayerOwnerTest, RecreateLayerHonorsAnimationTargets) {
|
| + LayerOwner owner;
|
| + Layer* layer = new Layer(LAYER_SOLID_COLOR);
|
| + layer->SetVisible(true);
|
| + layer->SetOpacity(1.0f);
|
| + layer->SetColor(SK_ColorRED);
|
| +
|
| + owner.SetLayer(layer);
|
| +
|
| + ScopedLayerAnimationSettings settings(layer->GetAnimator());
|
| + layer->SetVisible(false);
|
| + layer->SetOpacity(0.0f);
|
| + layer->SetColor(SK_ColorGREEN);
|
| + EXPECT_TRUE(layer->visible());
|
| + EXPECT_EQ(1.0f, layer->opacity());
|
| + EXPECT_EQ(SK_ColorRED, layer->background_color());
|
| +
|
| + std::unique_ptr<Layer> old_layer(owner.RecreateLayer());
|
| + EXPECT_FALSE(owner.layer()->visible());
|
| + EXPECT_EQ(0.0f, owner.layer()->opacity());
|
| + EXPECT_EQ(SK_ColorGREEN, owner.layer()->background_color());
|
| +}
|
| +
|
| +// Tests that when a LAYER_SOLID_COLOR which is not backed by a SolidColorLayer
|
| +// that opaqueness and color targets are maintained when the
|
| +// LayerOwner::RecreateLayers is called.
|
| +TEST(LayerOwnerTest, RecreateLayerSolidColorWithChangedCCLayerHonorsTargets) {
|
| + SkColor transparent = SK_ColorTRANSPARENT;
|
| + LayerOwner owner;
|
| + Layer* layer = new Layer(LAYER_SOLID_COLOR);
|
| + owner.SetLayer(layer);
|
| + layer->SetFillsBoundsOpaquely(false);
|
| + layer->SetColor(transparent);
|
| + // Changing the backing layer takes LAYER_SOLID_COLOR off of the normal layer
|
| + // flow, need to ensure that set values are maintained.
|
| + layer->SwitchCCLayerForTest();
|
| +
|
| + EXPECT_FALSE(layer->fills_bounds_opaquely());
|
| + EXPECT_EQ(transparent, layer->background_color());
|
| + EXPECT_EQ(transparent, layer->GetTargetColor());
|
| +
|
| + std::unique_ptr<Layer> old_layer(owner.RecreateLayer());
|
| + EXPECT_FALSE(owner.layer()->fills_bounds_opaquely());
|
| + EXPECT_EQ(transparent, owner.layer()->background_color());
|
| + EXPECT_EQ(transparent, owner.layer()->GetTargetColor());
|
| +}
|
| +
|
| +TEST(LayerOwnerTest, RecreateRootLayerWithNullCompositor) {
|
| + LayerOwner owner;
|
| + Layer* layer = new Layer;
|
| + owner.SetLayer(layer);
|
| +
|
| + std::unique_ptr<Layer> layer_copy = owner.RecreateLayer();
|
| +
|
| + EXPECT_EQ(nullptr, owner.layer()->GetCompositor());
|
| + EXPECT_EQ(nullptr, layer_copy->GetCompositor());
|
| +}
|
| +
|
| +TEST(LayerOwnerTest, InvertPropertyRemainSameWithRecreateLayer) {
|
| + LayerOwner owner;
|
| + Layer* layer = new Layer;
|
| + owner.SetLayer(layer);
|
| +
|
| + layer->SetLayerInverted(true);
|
| + std::unique_ptr<Layer> old_layer1 = owner.RecreateLayer();
|
| + EXPECT_EQ(old_layer1->layer_inverted(), owner.layer()->layer_inverted());
|
| +
|
| + old_layer1->SetLayerInverted(false);
|
| + std::unique_ptr<Layer> old_layer2 = owner.RecreateLayer();
|
| + 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);
|
| +
|
| + std::unique_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());
|
| + std::unique_ptr<Layer> old_layer2 = owner.RecreateLayer();
|
| + EXPECT_TRUE(old_layer2->GetTargetTransform().IsIdentity());
|
| + EXPECT_TRUE(owner.layer()->GetTargetTransform().IsIdentity());
|
| +}
|
| +
|
| TEST_F(LayerOwnerTestWithCompositor, RecreateRootLayerWithCompositor) {
|
| LayerOwner owner;
|
| - owner.SetLayer(base::MakeUnique<Layer>());
|
| - Layer* layer = owner.layer();
|
| + Layer* layer = new Layer;
|
| + owner.SetLayer(layer);
|
| +
|
| compositor()->SetRootLayer(layer);
|
|
|
| std::unique_ptr<Layer> layer_copy = owner.RecreateLayer();
|
| @@ -103,8 +201,8 @@
|
| // of animations being cancelled.
|
| TEST_F(LayerOwnerTestWithCompositor, RecreateRootLayerDuringAnimation) {
|
| LayerOwner owner;
|
| - owner.SetLayer(base::MakeUnique<Layer>());
|
| - Layer* layer = owner.layer();
|
| + Layer* layer = new Layer;
|
| + owner.SetLayer(layer);
|
| compositor()->SetRootLayer(layer);
|
|
|
| std::unique_ptr<Layer> child(new Layer);
|
| @@ -138,8 +236,8 @@
|
| compositor()->SetRootLayer(root_layer.get());
|
|
|
| LayerOwner owner;
|
| - owner.SetLayer(base::MakeUnique<Layer>());
|
| - Layer* layer = owner.layer();
|
| + Layer* layer = new Layer;
|
| + owner.SetLayer(layer);
|
| root_layer->Add(layer);
|
|
|
| std::unique_ptr<Layer> child(new Layer);
|
| @@ -172,8 +270,8 @@
|
| compositor()->SetRootLayer(root_layer.get());
|
|
|
| LayerOwnerForTesting owner;
|
| - owner.SetLayer(base::MakeUnique<Layer>());
|
| - Layer* layer = owner.layer();
|
| + Layer* layer = new Layer;
|
| + owner.SetLayer(layer);
|
| layer->SetOpacity(0.5f);
|
| root_layer->Add(layer);
|
|
|
| @@ -195,8 +293,8 @@
|
| compositor()->SetRootLayer(root_layer.get());
|
|
|
| LayerOwner owner;
|
| - owner.SetLayer(base::MakeUnique<Layer>());
|
| - Layer* layer = owner.layer();
|
| + Layer* layer = new Layer;
|
| + owner.SetLayer(layer);
|
| root_layer->Add(layer);
|
|
|
| layer->SetOpacity(0.5f);
|
|
|