Chromium Code Reviews| Index: ash/display/display_configuration_controller.h |
| diff --git a/ash/display/display_configuration_controller.h b/ash/display/display_configuration_controller.h |
| index 3ab4d160c57cfc39da6d414d4e048b3e0f85a924..6c6ef0d45eb0267485e5ddbace5d9d2af7d3154e 100644 |
| --- a/ash/display/display_configuration_controller.h |
| +++ b/ash/display/display_configuration_controller.h |
| @@ -9,6 +9,7 @@ |
| #include "ash/ash_export.h" |
| #include "ash/display/window_tree_host_manager.h" |
| +#include "ash/rotator/screen_rotation_animator.h" |
|
bruthig
2017/03/10 22:34:07
super-nit: If ScreenRotationAnimatorObserver was i
wutao
2017/03/14 16:46:37
Moved ScreenRotationAnimatorObserver to it's own .
|
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| #include "ui/display/display.h" |
| @@ -21,7 +22,7 @@ class DisplayManager; |
| namespace ash { |
| namespace test { |
| -class ShellTestApi; |
| +class DisplayConfigurationControllerTestApi; |
| } // namespace test |
| class DisplayAnimator; |
| @@ -32,7 +33,8 @@ class DisplayAnimator; |
| // * Provides a single interface for UI and API classes. |
| // * TODO: Forwards display configuration changed events to UI and API classes. |
| class ASH_EXPORT DisplayConfigurationController |
| - : public WindowTreeHostManager::Observer { |
| + : public WindowTreeHostManager::Observer, |
| + public ScreenRotationAnimator::ScreenRotationAnimatorObserver { |
| public: |
| DisplayConfigurationController( |
| display::DisplayManager* display_manager, |
| @@ -60,8 +62,12 @@ class ASH_EXPORT DisplayConfigurationController |
| // WindowTreeHostManager::Observer |
| void OnDisplayConfigurationChanged() override; |
| + // ScreenRotationAnimator::ScreenRotationAnimatorObserver |
| + void OnEndedOrAbortedScreenRotationAnimation( |
| + ScreenRotationAnimator* animator) override; |
| + |
| protected: |
| - friend class ash::test::ShellTestApi; |
| + friend class ash::test::DisplayConfigurationControllerTestApi; |
| // Allow tests to skip animations. |
| void ResetAnimatorForTest(); |
| @@ -77,11 +83,32 @@ class ASH_EXPORT DisplayConfigurationController |
| void SetMirrorModeImpl(bool mirror); |
| void SetPrimaryDisplayIdImpl(int64_t display_id); |
| + // Returns true if the screen rotation animation can be completed |
| + // successfully. For example an animation is not possible if |display_id_| |
| + // specifies a display::Display that is not currently active. See |
| + // www.crbug.com/479503. |
| + bool CanAnimateScreenRotation(int64_t display_id) const; |
| + |
| + // Returns the currently active rotation for the display with |display_id|. If |
| + // an animation is in progress, the target rotation will be returned. |
| + display::Display::Rotation GetCurrentScreenRotation(int64_t display_id) const; |
| + |
| + ScreenRotationAnimator* GetScreenRotationAnimatorForDisplay( |
|
bruthig
2017/03/10 22:34:07
nit: Can you doc this method that it creates one i
wutao
2017/03/14 16:46:37
Done.
|
| + int64_t display_id); |
| + |
| display::DisplayManager* display_manager_; // weak ptr |
| WindowTreeHostManager* window_tree_host_manager_; // weak ptr |
| std::unique_ptr<DisplayAnimator> display_animator_; |
| std::unique_ptr<DisplayChangeLimiter> limiter_; |
| + // Tracks |display_id| to ScreenRotationAnimator mappings. The |
| + // |rotation_animator_map_| is populated on demand the first time a |
| + // ScreenRotationAnimator is needed for a given |display_id|. |
| + // On animation ended or aborted, the animator may be deleted if there is no |
| + // more pending rotation request. |
| + std::unordered_map<int64_t, std::unique_ptr<ScreenRotationAnimator>> |
| + rotation_animator_map_; |
| + |
| base::WeakPtrFactory<DisplayConfigurationController> weak_ptr_factory_; |
| DISALLOW_COPY_AND_ASSIGN(DisplayConfigurationController); |