Index: athena/wm/public/window_list_provider.h |
diff --git a/athena/wm/public/window_list_provider.h b/athena/wm/public/window_list_provider.h |
index d22aa3da376069285b1c1bf0b1a9f556a3f2fb3d..b3083a969a8e000a803ea537c1c86dabb7f27b62 100644 |
--- a/athena/wm/public/window_list_provider.h |
+++ b/athena/wm/public/window_list_provider.h |
@@ -10,13 +10,42 @@ |
namespace athena { |
+class WindowListProviderObserver; |
+ |
// Interface for an ordered list of aura::Window objects. |
+// Note that lists returned by GetCurrentWindowList() will not change if any of |
+// the other member functions will be called later. |
class ATHENA_EXPORT WindowListProvider { |
public: |
virtual ~WindowListProvider() {} |
- // Returns an ordered list of windows. |
+ // Adding/removing an observer to status changes. |
+ virtual void AddObserver(WindowListProviderObserver* observer) = 0; |
+ virtual void RemoveObserver(WindowListProviderObserver* observer) = 0; |
+ |
+ // Returns an ordered list of the current window configuration. |
virtual aura::Window::Windows GetWindowList() const = 0; |
+ |
+ // Returns true if the |window| is part of the list. |
+ virtual bool IsWindowInList(aura::Window* window) const = 0; |
+ |
+ // Returns true if the given window is a window which can be handled by the |
+ // WindowListProvider. |
+ virtual bool IsValidWindow(aura::Window* window) const = 0; |
+ |
+ // Moves a given |window| to the front of all windows of the window list. |
+ // Note: The window has to be in the list already. |
+ virtual void MoveToFront(aura::Window* window) = 0; |
+ |
+ // Stacks a given |window| in direct front of a |reference_window|. |
+ // Note: The |window| and |reference_window| has to be in the list already. |
+ virtual void StackWindowFrontOf(aura::Window* window, |
+ aura::Window* reference_window) = 0; |
+ |
+ // Stacks a given |window| directly behind a |reference_window|. |
+ // Note: The |window| and |reference_window| has to be in the list already. |
+ virtual void StackWindowBehindTo(aura::Window* window, |
+ aura::Window* reference_window) = 0; |
}; |
} // namespace athena |