| Index: ash/wm/power_button_controller.h
|
| diff --git a/ash/wm/power_button_controller.h b/ash/wm/power_button_controller.h
|
| index eee5f1cd9ee832ca9cd4509402e9f008eeddec70..1bb4d321a5449e1c981ebb67c0bfd5d6c5ce795b 100644
|
| --- a/ash/wm/power_button_controller.h
|
| +++ b/ash/wm/power_button_controller.h
|
| @@ -43,7 +43,7 @@ class ASH_EXPORT PowerButtonController : public aura::RootWindowObserver,
|
| public ShellObserver {
|
| public:
|
| // Animations that can be applied to groups of containers.
|
| - // Exposed here for TestApi::ContainerGroupIsAnimated().
|
| + // Exposed here for TestApi::ContainersAreAnimated().
|
| enum AnimationType {
|
| ANIMATION_SLOW_CLOSE = 0,
|
| ANIMATION_UNDO_SLOW_CLOSE,
|
| @@ -53,13 +53,27 @@ class ASH_EXPORT PowerButtonController : public aura::RootWindowObserver,
|
| ANIMATION_RESTORE,
|
| };
|
|
|
| - // Groups of containers that can be animated.
|
| - // Exposed here for TestApi::ContainerGroupIsAnimated().
|
| - enum ContainerGroup {
|
| - ALL_CONTAINERS = 0,
|
| - SCREEN_LOCKER_CONTAINERS,
|
| - SCREEN_LOCKER_AND_RELATED_CONTAINERS,
|
| - ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS,
|
| + // Specific containers or groups of containers that can be animated.
|
| + // Exposed here for TestApi::ContainersAreAnimated().
|
| + enum Container {
|
| + DESKTOP_BACKGROUND = 1 << 0,
|
| +
|
| + // All user session related containers including system background but
|
| + // not including desktop background (wallpaper).
|
| + NON_LOCK_SCREEN_CONTAINERS = 1 << 1,
|
| +
|
| + // Desktop wallpaper is moved to this layer when screen is locked.
|
| + // This layer is excluded from lock animation so that wallpaper stays as is,
|
| + // user session windows are hidden and lock UI is shown on top of it.
|
| + // This layer is included in shutdown animation.
|
| + LOCK_SCREEN_BACKGROUND = 1 << 2,
|
| +
|
| + // Lock screen and lock screen modal containers.
|
| + LOCK_SCREEN_CONTAINERS = 1 << 3,
|
| +
|
| + // Multiple system layers belong here like status, menu, tooltip
|
| + // and overlay layers.
|
| + LOCK_SCREEN_RELATED_CONTAINERS = 1 << 4,
|
| };
|
|
|
| // Helper class used by tests to access internal state.
|
| @@ -83,8 +97,8 @@ class ASH_EXPORT PowerButtonController : public aura::RootWindowObserver,
|
| bool real_shutdown_timer_is_running() const {
|
| return controller_->real_shutdown_timer_.IsRunning();
|
| }
|
| - bool hide_background_layer_timer_is_running() const {
|
| - return controller_->hide_background_layer_timer_.IsRunning();
|
| + bool hide_black_layer_timer_is_running() const {
|
| + return controller_->hide_black_layer_timer_.IsRunning();
|
| }
|
|
|
| void trigger_lock_timeout() {
|
| @@ -107,22 +121,22 @@ class ASH_EXPORT PowerButtonController : public aura::RootWindowObserver,
|
| controller_->OnRealShutdownTimeout();
|
| controller_->real_shutdown_timer_.Stop();
|
| }
|
| - void trigger_hide_background_layer_timeout() {
|
| - controller_->HideBackgroundLayer();
|
| - controller_->hide_background_layer_timer_.Stop();
|
| + void trigger_hide_black_layer_timeout() {
|
| + controller_->HideBlackLayer();
|
| + controller_->hide_black_layer_timer_.Stop();
|
| }
|
|
|
| - // Returns true if the given set of containers was last animated with
|
| - // |type| (probably; the analysis is fairly ad-hoc).
|
| - bool ContainerGroupIsAnimated(ContainerGroup group,
|
| - AnimationType type) const;
|
| + // Returns true if containers of a given |container_mask|
|
| + // were last animated with |type| (probably; the analysis is fairly ad-hoc).
|
| + // |container_mask| is a bitfield of a Container.
|
| + bool ContainersAreAnimated(int container_mask, AnimationType type) const;
|
|
|
| - // Returns true if |background_layer_| is non-NULL and visible.
|
| - bool BackgroundLayerIsVisible() const;
|
| + // Returns true if |black_layer_| is non-NULL and visible.
|
| + bool BlackLayerIsVisible() const;
|
|
|
| - // Returns |background_layer_|'s bounds, or an empty rect if the layer is
|
| + // Returns |black_layer_|'s bounds, or an empty rect if the layer is
|
| // NULL.
|
| - gfx::Rect GetBackgroundLayerBounds() const;
|
| + gfx::Rect GetBlackLayerBounds() const;
|
|
|
| private:
|
| PowerButtonController* controller_; // not owned
|
| @@ -130,6 +144,13 @@ class ASH_EXPORT PowerButtonController : public aura::RootWindowObserver,
|
| DISALLOW_COPY_AND_ASSIGN(TestApi);
|
| };
|
|
|
| + // Helper method that returns a bitfield mask of all containers.
|
| + static int GetAllContainersMask();
|
| +
|
| + // Helper method that returns a bitfield mask including LOCK_SCREEN_WALLPAPER,
|
| + // LOCK_SCREEN_CONTAINERS, and LOCK_SCREEN_RELATED_CONTAINERS.
|
| + static int GetAllLockScreenContainersMask();
|
| +
|
| PowerButtonController();
|
| virtual ~PowerButtonController();
|
|
|
| @@ -190,10 +211,10 @@ class ASH_EXPORT PowerButtonController : public aura::RootWindowObserver,
|
| // Displays the shutdown animation and starts |real_shutdown_timer_|.
|
| void StartShutdownAnimationAndRequestShutdown();
|
|
|
| - // Shows or hides |background_layer_|. The show method creates and
|
| + // Shows or hides |black_layer_|. The show method creates and
|
| // initializes the layer if it doesn't already exist.
|
| - void ShowBackgroundLayer();
|
| - void HideBackgroundLayer();
|
| + void ShowBlackLayer();
|
| + void HideBlackLayer();
|
|
|
| scoped_ptr<PowerButtonControllerDelegate> delegate_;
|
|
|
| @@ -213,10 +234,6 @@ class ASH_EXPORT PowerButtonController : public aura::RootWindowObserver,
|
| // Are we in the process of shutting the machine down?
|
| bool shutting_down_;
|
|
|
| - // Should we start |shutdown_timer_| when we receive notification that the
|
| - // screen has been locked?
|
| - bool should_start_shutdown_timer_after_lock_;
|
| -
|
| // Was a command-line switch set telling us that we're running on hardware
|
| // that misreports power button releases?
|
| bool has_legacy_power_button_;
|
| @@ -226,7 +243,7 @@ class ASH_EXPORT PowerButtonController : public aura::RootWindowObserver,
|
| // TODO(derat): Remove this in favor of having the compositor only clear the
|
| // viewport when there are regions not covered by a layer:
|
| // http://crbug.com/113445
|
| - scoped_ptr<ui::Layer> background_layer_;
|
| + scoped_ptr<ui::Layer> black_layer_;
|
|
|
| // Started when the user first presses the power button while in a
|
| // logged-in-as-a-non-guest-user, unlocked state. When it fires, we lock the
|
| @@ -252,9 +269,9 @@ class ASH_EXPORT PowerButtonController : public aura::RootWindowObserver,
|
| base::OneShotTimer<PowerButtonController> real_shutdown_timer_;
|
|
|
| // Started when we abort the pre-lock state. When it fires, we hide
|
| - // |background_layer_|, as the desktop background is now covering the whole
|
| + // |black_layer_|, as the desktop background is now covering the whole
|
| // screen.
|
| - base::OneShotTimer<PowerButtonController> hide_background_layer_timer_;
|
| + base::OneShotTimer<PowerButtonController> hide_black_layer_timer_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PowerButtonController);
|
| };
|
|
|