| Index: ash/wm/overview/window_selector_unittest.cc
|
| diff --git a/ash/wm/overview/window_selector_unittest.cc b/ash/wm/overview/window_selector_unittest.cc
|
| index 9042d0eaddbee8c86c176ccbb45c84e2a53f063e..64a6e3d5d4af720067d419af363dd0d54fe110a9 100644
|
| --- a/ash/wm/overview/window_selector_unittest.cc
|
| +++ b/ash/wm/overview/window_selector_unittest.cc
|
| @@ -60,6 +60,7 @@
|
| #include "ui/display/manager/display_layout.h"
|
| #include "ui/events/event_utils.h"
|
| #include "ui/events/test/event_generator.h"
|
| +#include "ui/gfx/animation/slide_animation.h"
|
| #include "ui/gfx/geometry/point_conversions.h"
|
| #include "ui/gfx/geometry/rect_conversions.h"
|
| #include "ui/gfx/geometry/safe_integer_conversions.h"
|
| @@ -273,6 +274,13 @@ class WindowSelectorTest
|
| return *iter;
|
| }
|
|
|
| + gfx::SlideAnimation* GetBackgroundViewAnimationForWindow(
|
| + int grid_index,
|
| + aura::Window* window) {
|
| + return GetWindowItemForWindow(grid_index, window)
|
| + ->GetBackgroundViewAnimation();
|
| + }
|
| +
|
| // Selects |window| in the active overview session by cycling through all
|
| // windows in overview until it is found. Returns true if |window| was found,
|
| // false otherwise.
|
| @@ -1286,6 +1294,38 @@ TEST_P(WindowSelectorTest, DISABLED_MinimizedWindowVisibility) {
|
| }
|
| }
|
|
|
| +// Tests that it is safe to destroy a window while the overview header animation
|
| +// is still active. See http://crbug.com/646350.
|
| +TEST_P(WindowSelectorTest, SafeToDestroyWindowDuringAnimation) {
|
| + gfx::Rect bounds(0, 0, 400, 400);
|
| + {
|
| + // Quickly enter and exit overview mode to activate header animations.
|
| + std::unique_ptr<aura::Window> window(CreateWindow(bounds));
|
| + ui::ScopedAnimationDurationScaleMode test_duration_mode(
|
| + ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
|
| + ToggleOverview();
|
| + EXPECT_TRUE(IsSelecting());
|
| +
|
| + gfx::SlideAnimation* animation =
|
| + GetBackgroundViewAnimationForWindow(0, window.get());
|
| + if (ash::MaterialDesignController::IsOverviewMaterial())
|
| + ASSERT_NE(nullptr, animation);
|
| + ToggleOverview();
|
| + EXPECT_FALSE(IsSelecting());
|
| + if (animation)
|
| + EXPECT_TRUE(animation->is_animating());
|
| +
|
| + // Close the window while the overview header animation is active.
|
| + window.reset();
|
| +
|
| + // Progress animation to the end - should not crash.
|
| + if (animation) {
|
| + animation->SetCurrentValue(1.0);
|
| + animation->Reset(1.0);
|
| + }
|
| + }
|
| +}
|
| +
|
| // Tests that a bounds change during overview is corrected for.
|
| TEST_P(WindowSelectorTest, BoundsChangeDuringOverview) {
|
| std::unique_ptr<aura::Window> window(CreateWindow(gfx::Rect(0, 0, 400, 400)));
|
|
|