Index: ash/common/wm/overview/window_selector_delegate.h |
diff --git a/ash/common/wm/overview/window_selector_delegate.h b/ash/common/wm/overview/window_selector_delegate.h |
index 0e300b5f7466efe2d7079f3ebc11db7d5bd13675..655198d3504d5c650e5da696a14bee84d3d4d907 100644 |
--- a/ash/common/wm/overview/window_selector_delegate.h |
+++ b/ash/common/wm/overview/window_selector_delegate.h |
@@ -8,18 +8,43 @@ |
#include "ash/ash_export.h" |
#include "base/compiler_specific.h" |
-namespace aura { |
-class Window; |
-} |
- |
namespace ash { |
+class WindowSelectorDelegate; |
+ |
+class ASH_EXPORT DelayedAnimationObserver { |
+ public: |
+ virtual ~DelayedAnimationObserver() {} |
+ |
+ // Sets an |owner| that can be notified when the animation that |this| |
+ // observes completes. |
+ virtual void SetOwner(WindowSelectorDelegate* owner) = 0; |
+ |
+ // Can be called by the |owner| to delete the owned widget. The |owner| is |
+ // then responsible for deleting |this| instance of the |
+ // DelayedAnimationObserver. |
+ virtual void Shutdown() = 0; |
+}; |
+ |
// Implement this class to handle the selection event from WindowSelector. |
class ASH_EXPORT WindowSelectorDelegate { |
public: |
// Invoked if selection is ended. |
virtual void OnSelectionEnded() = 0; |
+ // Passes ownership of |animation_observer| to |this| delegate. |
+ virtual void AddDelayedAnimationObserver( |
+ std::unique_ptr<DelayedAnimationObserver> animation_observer) = 0; |
+ |
+ // Finds and erases |animation_observer| from the list deleting the widget |
+ // owned by the |animation_observer|. |
+ // This method should be called when a scheduled animation completes. |
+ // If the animation completion callback is a result of a window getting |
+ // destroyed then the DelayedAnimationObserver::Shutdown() should be called |
+ // first before destroying the window. |
+ virtual void RemoveAndDestroyAnimationObserver( |
+ DelayedAnimationObserver* animation_observer) = 0; |
+ |
protected: |
virtual ~WindowSelectorDelegate() {} |
}; |