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

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

Issue 223823004: Improving the user transition to add special cases for maximized windows and make the transition "m… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed preferences browser test [disabling animations] Created 6 years, 8 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 644d5ca3f8b52ee1d0e45fce495ba75e402935de..1cc1a0c4e54ac5fb1940e49aafdcc22eee30672e 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,7 +12,6 @@
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "base/observer_list.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"
@@ -40,6 +39,7 @@ class MultiUserWindowManagerChromeOSTest;
namespace chrome {
class AppObserver;
+class UserSwichAnimatorChromeOS;
// This ChromeOS implementation of the MultiUserWindowManager interface is
// detecting app and browser creations, tagging their windows automatically and
@@ -112,9 +112,8 @@ class MultiUserWindowManagerChromeOS
// Returns the current user for unit tests.
const std::string& GetCurrentUserForTest();
- private:
- friend class ::MultiUserNotificationBlockerChromeOSTest;
- friend class ash::test::MultiUserWindowManagerChromeOSTest;
+ protected:
+ friend class UserSwichAnimatorChromeOS;
class WindowEntry {
public:
@@ -156,35 +155,12 @@ class MultiUserWindowManagerChromeOS
};
typedef std::map<aura::Window*, WindowEntry*> WindowToEntryMap;
- typedef std::map<std::string, AppObserver*> UserIDToAppWindowObserver;
- 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
- };
// Show a window for a user without switching the user.
// Returns true when the window moved to a new desktop.
bool ShowWindowForUserIntern(aura::Window* window,
const std::string& user_id);
- // 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);
-
// Show / hide the given window. Note: By not doing this within the functions,
// this allows to either switching to different ways to show/hide and / or to
// distinguish state changes performed by this class vs. state changes
@@ -196,6 +172,21 @@ class MultiUserWindowManagerChromeOS
bool visible,
int animation_time_in_ms);
+ const WindowToEntryMap& window_to_entry() { return window_to_entry_; }
+ MultiUserNotificationBlockerChromeOS* notification_blocker() {
+ return notification_blocker_.get();
+ }
+
+ private:
+ friend class ::MultiUserNotificationBlockerChromeOSTest;
+ friend class ash::test::MultiUserWindowManagerChromeOSTest;
+
+ typedef std::map<std::string, AppObserver*> UserIDToAppWindowObserver;
+ typedef std::map<aura::Window*, bool> TransientWindowToVisibility;
+
+ // Add a browser window to the system so that the owner can be remembered.
+ void AddBrowserWindow(Browser* browser);
+
// Show the window and its transient children. However - if a transient child
// was turned invisible by some other operation, it will stay invisible.
// Use the given |animation_time_in_ms| for transitioning.
@@ -253,13 +244,12 @@ 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_;
+ // The animation between users.
+ scoped_ptr<UserSwichAnimatorChromeOS> animation_;
+
DISALLOW_COPY_AND_ASSIGN(MultiUserWindowManagerChromeOS);
};

Powered by Google App Engine
This is Rietveld 408576698