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

Unified Diff: chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h

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.h
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h
index 23ac68696542a7aab6882404e4e32e2288c3c123..7f004b28323d131bbb11e93b3e0a8a72c22b4cb8 100644
--- a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h
+++ b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h
@@ -12,6 +12,7 @@
#include "ash/wm/window_state_observer.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
+#include "base/timer/timer.h"
#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
@@ -98,6 +99,12 @@ class MultiUserWindowManagerChromeOS
const content::NotificationSource& source,
const content::NotificationDetails& details) OVERRIDE;
+ // Disable any animations for unit tests.
+ void SetAnimationsForTest(bool disable);
+
+ // Returns true when a user switch animation is running. For unit tests.
+ bool IsAnimationRunningForTest();
+
private:
friend class ::MultiUserNotificationBlockerChromeOSTest;
@@ -144,6 +151,24 @@ class MultiUserWindowManagerChromeOS
typedef std::map<std::string, AppObserver*> UserIDToShellWindowObserver;
typedef std::map<aura::Window*, bool> TransientWindowToVisibility;
+ // The animation step for the user change animation. First the old user gets
+ // hidden and then the new one gets presented.
+ enum AnimationStep {
+ HIDE_OLD_USER,
+ SHOW_NEW_USER
+ };
+
+ // Start the user change animation required for |animation_step|.
+ // Note that a call with SHOW_NEW_USER will finalize the animation and kill
+ // the timer (if there is one).
+ void TransitionUser(AnimationStep animtion_step);
+
+ // Start the user wallpaper animations.
+ void TransitionWallpaper(AnimationStep animtion_step);
+
+ // Start the user shelf animations.
+ void TransitionUserShelf(AnimationStep animtion_step);
+
// Add a browser window to the system so that the owner can be remembered.
void AddBrowserWindow(Browser* browser);
@@ -152,11 +177,17 @@ class MultiUserWindowManagerChromeOS
// distinguish state changes performed by this class vs. state changes
// performed by the others. Note furthermore that system modal dialogs will
// not get hidden. We will switch instead to the owners desktop.
- void SetWindowVisibility(aura::Window* window, bool visible);
+ // The |animation_time_in_ms| is the time the animation should take. Set to 0
+ // if it should get set instantly.
+ void SetWindowVisibility(aura::Window* window,
+ bool visible,
+ int animation_time_in_ms);
// Show the window and its transient children. However - if a transient child
// was turned invisible by some other operation, it will stay invisible.
- void ShowWithTransientChildrenRecursive(aura::Window* window);
+ // Use the given |animation_time_in_ms| for transitioning.
+ void ShowWithTransientChildrenRecursive(aura::Window* window,
+ int animation_time_in_ms);
// Find the first owned window in the chain.
// Returns NULL when the window itself is owned.
@@ -172,6 +203,11 @@ class MultiUserWindowManagerChromeOS
// unregistered.
void RemoveTransientOwnerRecursive(aura::Window* window);
+ // Animate a |window| to be |visible| in |animation_time_in_ms|.
+ void SetWindowVisible(aura::Window* window,
+ bool visible,
+ int aimation_time_in_ms);
+
// A lookup to see to which user the given window belongs to, where and if it
// should get shown.
WindowToEntryMap window_to_entry_;
@@ -201,6 +237,13 @@ class MultiUserWindowManagerChromeOS
// used is quite expensive.
static MultiProfileMode multi_user_mode_;
+ // A timer which watches to executes the second part of a "user changed"
+ // animation. Note that this timer exists only during such an animation.
+ scoped_ptr<base::Timer> user_changed_animation_timer_;
+
+ // If true, all animations will be suppressed.
+ bool animations_disabled_;
+
DISALLOW_COPY_AND_ASSIGN(MultiUserWindowManagerChromeOS);
};

Powered by Google App Engine
This is Rietveld 408576698