Index: ash/wm/session_state_animator_impl_unittest.cc |
diff --git a/ash/wm/session_state_animator_impl_unittest.cc b/ash/wm/session_state_animator_impl_unittest.cc |
index 05be53c0549958e61e6976c311e265f20faa4b6d..abcbaa4de5db8d093183a66e081f86bb2339af6c 100644 |
--- a/ash/wm/session_state_animator_impl_unittest.cc |
+++ b/ash/wm/session_state_animator_impl_unittest.cc |
@@ -2,11 +2,14 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "ash/wm/session_state_animator_impl.h" |
+ |
#include "ash/public/cpp/shell_window_ids.h" |
#include "ash/shell.h" |
#include "ash/test/ash_test_base.h" |
#include "ash/wm/session_state_animator.h" |
-#include "ash/wm/session_state_animator_impl.h" |
+#include "base/bind.h" |
+#include "base/run_loop.h" |
#include "ui/aura/client/aura_constants.h" |
typedef ash::test::AshTestBase SessionStateAnimatiorImplContainersTest; |
@@ -80,4 +83,22 @@ TEST_F(SessionStateAnimatiorImplContainersTest, ContainersHaveIdTest) { |
EXPECT_TRUE(containers.empty()); |
} |
+// Test that SessionStateAnimatorImpl invokes the callback only once on |
+// multi-display env, where it needs to run multiple animations on multiple |
+// containers. See http://crbug.com/712422 for details. |
+TEST_F(SessionStateAnimatiorImplContainersTest, |
+ AnimationCallbackOnMultiDisplay) { |
+ UpdateDisplay("200x200,400x400"); |
+ |
+ int callback_count = 0; |
+ SessionStateAnimatorImpl animator; |
+ animator.StartAnimationWithCallback( |
+ SessionStateAnimator::LOCK_SCREEN_CONTAINERS, |
+ SessionStateAnimator::ANIMATION_LIFT, |
+ SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE, |
+ base::Bind([](int* count) { ++(*count); }, &callback_count)); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(1, callback_count); |
+} |
+ |
} // namespace ash |