1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef ATHENA_WM_WINDOW_LIST_PROVIDER_IMPL_H_
6 #define ATHENA_WM_WINDOW_LIST_PROVIDER_IMPL_H_
8 #include "athena/wm/public/window_list_provider.h"
9 #include "ui/aura/window_observer.h"
13 class WindowListProviderObserver
;
15 // This implementation of the WindowListProviderImpl uses the same order as in
16 // the container window's stacking order.
17 class ATHENA_EXPORT WindowListProviderImpl
: public WindowListProvider
,
18 public aura::WindowObserver
{
20 explicit WindowListProviderImpl(aura::Window
* container
);
21 virtual ~WindowListProviderImpl();
24 // WindowListProvider:
25 virtual void AddObserver(WindowListProviderObserver
* observer
) OVERRIDE
;
26 virtual void RemoveObserver(WindowListProviderObserver
* observer
) OVERRIDE
;
27 virtual aura::Window::Windows
GetWindowList() const OVERRIDE
;
28 virtual bool IsWindowInList(aura::Window
* window
) const OVERRIDE
;
29 virtual bool IsValidWindow(aura::Window
* window
) const OVERRIDE
;
30 virtual void MoveToFront(aura::Window
* window
) OVERRIDE
;
31 virtual void StackWindowFrontOf(aura::Window
* window
,
32 aura::Window
*reference_window
) OVERRIDE
;
33 virtual void StackWindowBehindTo(aura::Window
* window
,
34 aura::Window
*reference_window
) OVERRIDE
;
36 // aura::WindowObserver:
37 virtual void OnWindowAdded(aura::Window
* new_window
) OVERRIDE
;
38 virtual void OnWillRemoveWindow(aura::Window
* old_window
) OVERRIDE
;
39 virtual void OnWindowStackingChanged(aura::Window
* window
) OVERRIDE
;
41 aura::Window
* container_
;
42 ObserverList
<WindowListProviderObserver
> observers_
;
44 DISALLOW_COPY_AND_ASSIGN(WindowListProviderImpl
);
49 #endif // ATHENA_WM_WINDOW_LIST_PROVIDER_IMPL_H_