| 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_;
|
|
|
|
|