Index: ash/rotator/screen_rotation_animator.h |
diff --git a/ash/rotator/screen_rotation_animator.h b/ash/rotator/screen_rotation_animator.h |
index b541106e88030c68a5217cc03451e46268688eae..67ec82c9ca1bb282957c21f7c4637140c93675d6 100644 |
--- a/ash/rotator/screen_rotation_animator.h |
+++ b/ash/rotator/screen_rotation_animator.h |
@@ -11,10 +11,16 @@ |
#include "base/macros.h" |
#include "base/memory/weak_ptr.h" |
#include "base/observer_list.h" |
+#include "cc/output/copy_output_request.h" |
#include "ui/display/display.h" |
+namespace cc { |
+class CopyOutputResult; |
+} // namespace cc |
+ |
namespace ui { |
class AnimationMetricsReporter; |
+class CallbackLayerAnimationObserver; |
class Layer; |
class LayerTreeOwner; |
} // namespace ui |
@@ -59,7 +65,42 @@ class ASH_EXPORT ScreenRotationAnimator { |
friend class ash::test::ScreenRotationAnimatorTestApi; |
struct ScreenRotationRequest; |
- // Set the screen orientation to |new_rotation| and animate the change. The |
+ void StartRotationAnimation( |
+ std::unique_ptr<ScreenRotationRequest> rotation_request); |
+ |
+ // The fallback plan if copy output request failed, such as the request is |
+ // canceled. |
+ void StartSlowAnimation( |
+ std::unique_ptr<ScreenRotationRequest> rotation_request); |
+ |
+ // This is an asynchronous call to request copy output of root layer. |
+ void RequestCopyRootLayerByName( |
+ const std::string& layer_name, |
+ const cc::CopyOutputRequest::CopyOutputRequestCallback& callback); |
+ |
+ // The callback for the first CopyOutputRequest before screen rotation. |
+ void OnRootLayerCopiedBeforeRotation( |
+ std::unique_ptr<ScreenRotationRequest> rotation_request, |
+ std::unique_ptr<cc::CopyOutputResult> result); |
+ |
+ // The callback for the second CopyOutputRequest after screen rotation. |
+ void OnRootLayerCopiedAfterRotation( |
+ std::unique_ptr<ScreenRotationRequest> rotation_request, |
+ std::unique_ptr<cc::CopyOutputResult> result); |
+ |
+ // Recreates all |root_window| layers. |
+ void CreateOldLayerTree(); |
+ |
+ // Creates a copy layer from cc::CopyOutputResult |result|. |
+ std::unique_ptr<ui::LayerTreeOwner> CopyLayerTree( |
+ const std::string& layer_name, |
+ std::unique_ptr<cc::CopyOutputResult> result); |
+ |
+ void SetRotation(const display::Display::Rotation& new_rotation, |
+ const display::Display::Rotation& old_rotation, |
+ const display::Display::RotationSource& source); |
+ |
+ // Sets the screen orientation to |new_rotation| and animate the change. The |
// animation will rotate the initial orientation's layer towards the new |
// orientation through |rotation_degrees| while fading out, and the new |
// orientation's layer will be rotated in to the |new_orientation| through |
@@ -79,6 +120,7 @@ class ASH_EXPORT ScreenRotationAnimator { |
base::ObserverList<ScreenRotationAnimatorObserver> |
screen_rotation_animator_observers_; |
std::unique_ptr<ui::LayerTreeOwner> old_layer_tree_owner_; |
+ std::unique_ptr<ui::LayerTreeOwner> new_layer_tree_owner_; |
std::unique_ptr<ScreenRotationRequest> last_pending_request_; |
base::WeakPtrFactory<ScreenRotationAnimator> weak_factory_; |