| Index: content/browser/web_contents/aura/window_slider.h
|
| diff --git a/content/browser/web_contents/aura/window_slider.h b/content/browser/web_contents/aura/window_slider.h
|
| index 0ebe79239fd35277d712dba0163d84629c51e506..c8181699b0f59d9140135ecfdbd81124089d7b81 100644
|
| --- a/content/browser/web_contents/aura/window_slider.h
|
| +++ b/content/browser/web_contents/aura/window_slider.h
|
| @@ -10,6 +10,7 @@
|
| #include "base/memory/weak_ptr.h"
|
| #include "content/common/content_export.h"
|
| #include "ui/aura/window_observer.h"
|
| +#include "ui/compositor/layer_animator.h"
|
| #include "ui/events/event_handler.h"
|
|
|
| namespace ui {
|
| @@ -28,25 +29,33 @@ class CONTENT_EXPORT WindowSlider : public ui::EventHandler,
|
| public:
|
| virtual ~Delegate() {}
|
|
|
| - // Creates a layer to show in the background, as the window-layer slides
|
| - // with the scroll gesture.
|
| + // Creates a layer to show behind the window-layer. Called when the
|
| + // window-layer starts sliding out to reveal the layer underneath.
|
| // The WindowSlider takes ownership of the created layer.
|
| virtual ui::Layer* CreateBackLayer() = 0;
|
|
|
| - // Creates a layer to slide on top of the window-layer with the scroll
|
| - // gesture.
|
| + // Creates a layer to show on top of the window-layer. Called when the new
|
| + // layer needs to start sliding in on top of the window-layer.
|
| // The WindowSlider takes ownership of the created layer.
|
| virtual ui::Layer* CreateFrontLayer() = 0;
|
|
|
| - // Called when the slide is complete. Note that at the end of a completed
|
| - // slide, the window-layer may have been transformed. The callback here
|
| - // should reset the transform if necessary.
|
| - virtual void OnWindowSlideComplete() = 0;
|
| -
|
| // Called when the slide is aborted. Note that when the slide is aborted,
|
| // the WindowSlider resets any transform it applied on the window-layer.
|
| virtual void OnWindowSlideAborted() = 0;
|
|
|
| + // Called when the slide is about to be complete. The delegate can take
|
| + // action with the assumption that slide will complete soon (within the
|
| + // duration of the final transition animation effect).
|
| + // This callback is always preceeded by CreateBackLayerAndSetAsTarget() or
|
| + // by CreateFrontLayerAndSetAsTarget() callback, and is guaranteed to be
|
| + // followed by the OnWindowSlideCompleted() callback.
|
| + virtual void OnWindowSlideCompleting() = 0;
|
| +
|
| + // Called when the window slide completes. Note that at the end the
|
| + // window-layer may have been transformed. The callback here should reset
|
| + // the transform if necessary.
|
| + virtual void OnWindowSlideCompleted() = 0;
|
| +
|
| // Called when the slider is destroyed.
|
| virtual void OnWindowSliderDestroyed() = 0;
|
| };
|
| @@ -74,18 +83,25 @@ class CONTENT_EXPORT WindowSlider : public ui::EventHandler,
|
|
|
| void UpdateForScroll(float x_offset, float y_offset);
|
|
|
| - void UpdateForFling(float x_velocity, float y_velocity);
|
| + // Completes or resets the slide depending on whether the sliding layer
|
| + // passed the "complete slide threshold".
|
| + void CompleteOrResetSlide();
|
|
|
| - // Resets any in-progress slide.
|
| - void ResetScroll();
|
| + // Stops all slider-owned animations, progressing them to their end-points.
|
| + // Note that depending on the sate of the Delegate and the WindowSlider, this
|
| + // may destroy the WindowSlider through animation callbacks.
|
| + void CompleteActiveAnimations();
|
|
|
| - // Cancels any scroll/animation in progress.
|
| - void CancelScroll();
|
| + // Resets in-progress slide if any, and starts the animation of the slidden
|
| + // window to its original position.
|
| + void ResetSlide();
|
|
|
| // The following callbacks are triggered after an animation.
|
| - void CompleteWindowSlideAfterAnimation();
|
| + void SlideAnimationCompleted(scoped_ptr<ui::Layer> layer,
|
| + scoped_ptr<ShadowLayerDelegate> shadow);
|
|
|
| - void AbortWindowSlideAfterAnimation();
|
| + void ResetSlideAnimationCompleted(scoped_ptr<ui::Layer> layer,
|
| + scoped_ptr<ShadowLayerDelegate> shadow);
|
|
|
| // Overridden from ui::EventHandler:
|
| virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE;
|
| @@ -109,6 +125,10 @@ class CONTENT_EXPORT WindowSlider : public ui::EventHandler,
|
| // destroy |owner_|.
|
| aura::Window* owner_;
|
|
|
| + // Set to the Animator of the currently active animation. If no animation is
|
| + // active, this is set to NULL.
|
| + ui::LayerAnimator* active_animator_;
|
| +
|
| // The accumulated amount of horizontal scroll.
|
| float delta_x_;
|
|
|
|
|