Chromium Code Reviews| Index: ash/rotator/screen_rotation_animation_unittest.cc |
| diff --git a/ash/rotator/screen_rotation_animation_unittest.cc b/ash/rotator/screen_rotation_animation_unittest.cc |
| index b4ce508f9dd7f531c35af5949f890f0c421de95d..8c3535c8e6d012aa695f7e508b172e6b07853089 100644 |
| --- a/ash/rotator/screen_rotation_animation_unittest.cc |
| +++ b/ash/rotator/screen_rotation_animation_unittest.cc |
| @@ -8,6 +8,7 @@ |
| #include "ash/test/ash_test_base.h" |
| #include "base/macros.h" |
| +#include "base/memory/ptr_util.h" |
| #include "base/time/time.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "ui/aura/window.h" |
| @@ -69,5 +70,29 @@ TEST_F(ScreenRotationAnimationTest, LayerTransformGetsSetToTargetWhenAborted) { |
| EXPECT_EQ(identity_transform, layer->transform()); |
| } |
| +// Tests that ScreenRotationAnimation::OnAbort() doesn't segfault when passed a |
| +// null delegate in response to its ui::Layer being destroyed: |
| +// http://crbug.com/661313 |
| +TEST_F(ScreenRotationAnimationTest, DestroyLayerDuringAnimation) { |
| + // Create a ui::Layer directly rather than an aura::Window, as the latter |
| + // finishes all of its animation before destroying its layer. |
| + std::unique_ptr<ui::Layer> layer = base::MakeUnique<ui::Layer>(); |
| + |
| + ui::Layer* root_layer = CurrentContext()->layer(); |
| + layer->SetBounds(gfx::Rect(root_layer->bounds().size())); |
| + root_layer->Add(layer.get()); |
| + |
| + std::unique_ptr<ScreenRotationAnimation> screen_rotation( |
| + new ScreenRotationAnimation(layer.get(), 45, 0, 1.0f, 1.0f, gfx::Point(), |
| + base::TimeDelta::FromSeconds(1), |
| + gfx::Tween::LINEAR)); |
| + ui::LayerAnimator* animator = layer->GetAnimator(); |
| + std::unique_ptr<ui::LayerAnimationSequence> animation_sequence( |
| + new ui::LayerAnimationSequence(screen_rotation.release())); |
| + animator->StartAnimation(animation_sequence.release()); |
| + |
| + layer.reset(); |
|
James Cook
2016/11/02 02:19:17
not needed? or comment that you're explicitly dest
Daniel Erat
2016/11/02 14:04:05
Done. (kept this because if this starts failing, i
|
| +} |
| + |
| } // namespace test |
| } // namespace ash |