Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(657)

Unified Diff: chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc

Issue 130983007: Creating multi profile animations for switching users and teleporting of windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc
index dd48b9602565e9d5f7cd1465b14144c9eb245912..207905e3f67a26ff4e2812b6b170742bc3c9a01f 100644
--- a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc
+++ b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc
@@ -12,6 +12,7 @@
#include "base/compiler_specific.h"
#include "base/logging.h"
#include "base/strings/string_util.h"
+#include "base/time/time.h"
#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h"
#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h"
#include "chrome/common/chrome_switches.h"
@@ -40,6 +41,17 @@ class MultiUserWindowManagerChromeOSTest : public AshTestBase {
// Set up the test environment for this many windows.
void SetUpForThisManyWindows(int windows);
+ // Switch the user and wait until the animation is finished.
+ void SwitchUserAndWaitForAnimation(const std::string& user_id) {
+ multi_user_window_manager_->ActiveUserChanged(user_id);
+ base::TimeTicks now = base::TimeTicks::Now();
+ while (multi_user_window_manager_->IsAnimationRunningForTest()) {
+ // This should never take longer then a second.
+ ASSERT_GE(1000, (base::TimeTicks::Now() - now).InMilliseconds());
+ base::MessageLoop::current()->RunUntilIdle();
+ }
+ }
+
// Return the window with the given index.
aura::Window* window(size_t index) {
DCHECK(index < window_.size());
@@ -107,6 +119,7 @@ void MultiUserWindowManagerChromeOSTest::SetUpForThisManyWindows(int windows) {
window_[i]->Show();
}
multi_user_window_manager_ = new chrome::MultiUserWindowManagerChromeOS("A");
+ multi_user_window_manager_->SetAnimationsForTest(true);
chrome::MultiUserWindowManager::SetInstanceForTest(multi_user_window_manager_,
chrome::MultiUserWindowManager::MULTI_PROFILE_MODE_SEPARATED);
EXPECT_TRUE(multi_user_window_manager_);
@@ -644,5 +657,38 @@ TEST_F(MultiUserWindowManagerChromeOSTest,
EXPECT_EQ("b", session_state_delegate()->get_activated_user());
}
+// Test that using the full user switch animations are working as expected.
+TEST_F(MultiUserWindowManagerChromeOSTest, FullUserSwitchAnimationTests) {
+ SetUpForThisManyWindows(3);
+ // Turn the use of delays and animation on.
+ multi_user_window_manager()->SetAnimationsForTest(false);
+ // Set some owners and make sure we got what we asked for.
+ multi_user_window_manager()->SetWindowOwner(window(0), "A");
+ multi_user_window_manager()->SetWindowOwner(window(1), "B");
+ multi_user_window_manager()->SetWindowOwner(window(2), "C");
+ EXPECT_EQ("S[A], H[B], H[C]", GetStatus());
+ EXPECT_EQ("A", GetOwnersOfVisibleWindowsAsString());
+
+ // Switch the user fore and back and see that the results are correct.
+ SwitchUserAndWaitForAnimation("B");
+
+ EXPECT_EQ("H[A], S[B], H[C]", GetStatus());
+ EXPECT_EQ("B", GetOwnersOfVisibleWindowsAsString());
+
+ SwitchUserAndWaitForAnimation("A");
+
+ EXPECT_EQ("S[A], H[B], H[C]", GetStatus());
+
+ // Switch the user quickly to another user and before the animation is done
+ // switch back and see that this works.
+ multi_user_window_manager()->ActiveUserChanged("B");
+ // Check that at this time we have nothing visible (in the middle of the
+ // animation).
+ EXPECT_EQ("H[A], H[B], H[C]", GetStatus());
+ // Check that after switching to C, C is fully visible.
+ SwitchUserAndWaitForAnimation("C");
+ EXPECT_EQ("H[A], H[B], S[C]", GetStatus());
+}
+
} // namespace test
} // namespace ash

Powered by Google App Engine
This is Rietveld 408576698