103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// found in the LICENSE file. 403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#ifndef ATHENA_WM_WINDOW_MANAGER_IMPL_H_ 603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#define ATHENA_WM_WINDOW_MANAGER_IMPL_H_ 703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "athena/athena_export.h" 903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "athena/input/public/accelerator_manager.h" 1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "athena/wm/public/window_manager.h" 1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "athena/wm/title_drag_controller.h" 1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "athena/wm/window_overview_mode.h" 1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "base/observer_list.h" 1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "ui/aura/window_observer.h" 1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace wm { 1803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class ShadowController; 1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class WMState; 2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace athena { 2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 2403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace test { 2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class WindowManagerImplTestApi; 2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 2703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class BezelController; 2903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class SplitViewController; 3003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class WindowListProvider; 3103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class WindowManagerObserver; 3203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass ATHENA_EXPORT WindowManagerImpl : public WindowManager, 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public WindowOverviewModeDelegate, 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public aura::WindowObserver, 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public AcceleratorHandler, 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public TitleDragControllerDelegate { 3803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) public: 3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) WindowManagerImpl(); 4003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual ~WindowManagerImpl(); 4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void ToggleSplitView(); 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // WindowManager: 4503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void ToggleOverview() OVERRIDE; 4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual bool IsOverviewModeActive() OVERRIDE; 4703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 4803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) private: 4903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) friend class test::WindowManagerImplTestApi; 5003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) friend class AthenaContainerLayoutManager; 5103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 5203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) enum Command { 5303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) CMD_TOGGLE_OVERVIEW, 5403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) CMD_TOGGLE_SPLIT_VIEW, 5503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) }; 5603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 5703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Sets whether overview mode is active. 5803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void SetInOverview(bool active); 5903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 6003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void InstallAccelerators(); 6103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 6203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // WindowManager: 6303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void AddObserver(WindowManagerObserver* observer) OVERRIDE; 6403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void RemoveObserver(WindowManagerObserver* observer) OVERRIDE; 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void ToggleSplitViewForTest() OVERRIDE; 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual WindowListProvider* GetWindowListProvider() OVERRIDE; 6703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 6803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // WindowOverviewModeDelegate: 6903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void OnSelectWindow(aura::Window* window) OVERRIDE; 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void OnSelectSplitViewWindow(aura::Window* left, 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci aura::Window* right, 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci aura::Window* to_activate) OVERRIDE; 7303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 7403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // aura::WindowObserver: 7503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void OnWindowDestroying(aura::Window* window) OVERRIDE; 7603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 7703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // AcceleratorHandler: 7803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual bool IsCommandEnabled(int command_id) const OVERRIDE; 7903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual bool OnAcceleratorFired(int command_id, 8003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const ui::Accelerator& accelerator) OVERRIDE; 8103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 8203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // TitleDragControllerDelegate: 8303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual aura::Window* GetWindowBehind(aura::Window* window) OVERRIDE; 8403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void OnTitleDragStarted(aura::Window* window) OVERRIDE; 8503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void OnTitleDragCompleted(aura::Window* window) OVERRIDE; 8603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void OnTitleDragCanceled(aura::Window* window) OVERRIDE; 8703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 8803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<aura::Window> container_; 8903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<WindowListProvider> window_list_provider_; 9003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<WindowOverviewMode> overview_; 9103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<BezelController> bezel_controller_; 9203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<SplitViewController> split_view_controller_; 9303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<wm::WMState> wm_state_; 9403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<TitleDragController> title_drag_controller_; 9503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<wm::ShadowController> shadow_controller_; 9603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ObserverList<WindowManagerObserver> observers_; 9703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 9803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(WindowManagerImpl); 9903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}; 10003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 10103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} // namespace athena 10203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 10303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#endif // ATHENA_WM_WINDOW_MANAGER_IMPL_H_ 104