Chromium Code Reviews| Index: ui/compositor/layer_unittest.cc |
| diff --git a/ui/compositor/layer_unittest.cc b/ui/compositor/layer_unittest.cc |
| index 6efe2d23642bd7d2fc94eb8c7160cbd4491285de..db9382305f8634be6c772a64e8f2c7fa616bd841 100644 |
| --- a/ui/compositor/layer_unittest.cc |
| +++ b/ui/compositor/layer_unittest.cc |
| @@ -29,6 +29,8 @@ |
| #include "ui/compositor/layer_animator.h" |
| #include "ui/compositor/paint_context.h" |
| #include "ui/compositor/paint_recorder.h" |
| +#include "ui/compositor/scoped_animation_duration_scale_mode.h" |
| +#include "ui/compositor/scoped_layer_animation_settings.h" |
| #include "ui/compositor/test/context_factories_for_test.h" |
| #include "ui/compositor/test/draw_waiter_for_test.h" |
| #include "ui/compositor/test/test_compositor_host.h" |
| @@ -1604,6 +1606,77 @@ TEST_F(LayerWithRealCompositorTest, SwitchCCLayerAnimations) { |
| EXPECT_FLOAT_EQ(l1->opacity(), 0.5f); |
| } |
| +// Tests that when a LAYER_SOLID_COLOR has its CC layer switched, that |
| +// opaqueness and color set while not animating, are maintained. |
| +TEST_F(LayerWithRealCompositorTest, SwitchCCLayerSolidColorNotAnimating) { |
| + SkColor transparent = SK_ColorTRANSPARENT; |
| + scoped_ptr<Layer> root(CreateLayer(LAYER_SOLID_COLOR)); |
| + GetCompositor()->SetRootLayer(root.get()); |
| + root->SetFillsBoundsOpaquely(false); |
| + root->SetColor(transparent); |
| + |
| + ASSERT_FALSE(root->fills_bounds_opaquely()); |
|
danakj
2015/05/19 21:56:25
EXPECT rather than ASSERT everywhere
jonross
2015/05/20 01:03:54
Done.
|
| + ASSERT_FALSE( |
| + root->GetAnimator()->IsAnimatingProperty(LayerAnimationElement::COLOR)); |
| + ASSERT_EQ(transparent, root->background_color()); |
| + ASSERT_EQ(transparent, root->GetTargetColor()); |
| + |
| + // Changing the underlying layer should not affect targets. |
| + root->SwitchCCLayerForTest(); |
| + |
| + EXPECT_FALSE(root->fills_bounds_opaquely()); |
| + EXPECT_FALSE( |
| + root->GetAnimator()->IsAnimatingProperty(LayerAnimationElement::COLOR)); |
| + EXPECT_EQ(transparent, root->background_color()); |
| + EXPECT_EQ(transparent, root->GetTargetColor()); |
| +} |
| + |
| +// Tests that when a LAYER_SOLID_COLOR has its CC layer switched during an |
| +// animation of its opaquness and color, that both the current values, and the |
| +// targets are maintained. |
| +TEST_F(LayerWithRealCompositorTest, SwitchCCLayerSolidColorWhileAnimating) { |
| + SkColor transparent = SK_ColorTRANSPARENT; |
| + scoped_ptr<Layer> root(CreateLayer(LAYER_SOLID_COLOR)); |
| + GetCompositor()->SetRootLayer(root.get()); |
| + root->SetColor(SK_ColorBLACK); |
| + |
| + ASSERT_TRUE(root->fills_bounds_opaquely()); |
| + ASSERT_EQ(SK_ColorBLACK, root->GetTargetColor()); |
| + |
| + scoped_ptr<ui::ScopedAnimationDurationScaleMode> long_duration_animation( |
| + new ui::ScopedAnimationDurationScaleMode( |
| + ui::ScopedAnimationDurationScaleMode::SLOW_DURATION)); |
| + { |
| + ui::ScopedLayerAnimationSettings animation(root->GetAnimator()); |
| + animation.SetTransitionDuration(base::TimeDelta::FromMilliseconds(1000)); |
| + root->SetFillsBoundsOpaquely(false); |
| + root->SetColor(transparent); |
| + } |
| + |
| + EXPECT_TRUE(root->fills_bounds_opaquely()); |
| + EXPECT_TRUE( |
| + root->GetAnimator()->IsAnimatingProperty(LayerAnimationElement::COLOR)); |
| + EXPECT_EQ(SK_ColorBLACK, root->background_color()); |
| + EXPECT_EQ(transparent, root->GetTargetColor()); |
| + |
| + // Changing the underlying layer should not affect targets. |
| + root->SwitchCCLayerForTest(); |
| + |
| + EXPECT_TRUE(root->fills_bounds_opaquely()); |
| + EXPECT_TRUE( |
| + root->GetAnimator()->IsAnimatingProperty(LayerAnimationElement::COLOR)); |
| + EXPECT_EQ(SK_ColorBLACK, root->background_color()); |
| + EXPECT_EQ(transparent, root->GetTargetColor()); |
| + |
| + // End all animations. |
| + root->GetAnimator()->StopAnimating(); |
| + EXPECT_FALSE(root->fills_bounds_opaquely()); |
| + EXPECT_FALSE( |
| + root->GetAnimator()->IsAnimatingProperty(LayerAnimationElement::COLOR)); |
| + EXPECT_EQ(transparent, root->background_color()); |
| + EXPECT_EQ(transparent, root->GetTargetColor()); |
| +} |
| + |
| // Tests that the animators in the layer tree is added to the |
| // animator-collection when the root-layer is set to the compositor. |
| TEST_F(LayerWithDelegateTest, RootLayerAnimatorsInCompositor) { |