15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ASH_SHELL_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ASH_SHELL_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <utility> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/ash_export.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ash/metrics/user_metrics_recorder.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/shelf/shelf_types.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/user/login_status.h" 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "ash/wm/cursor_manager_chromeos.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/wm/system_modal_container_event_filter_delegate.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/gtest_prod_util.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/memory/weak_ptr.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/observer_list.h" 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/aura/window.h" 247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "ui/base/ui_base_types.h" 25d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/events/event_target.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/insets.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/screen.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/size.h" 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/wm/core/cursor_manager.h" 30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ui/wm/public/activation_change_observer.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)namespace app_list { 338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class AppListView; 348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class EventFilter; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RootWindow; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Window; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace client { 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ActivationClient; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FocusClient; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ImageSkia; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Point; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Rect; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui { 52c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass DisplayConfigurator; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Layer; 540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass UserActivityPowerManagerNotifier; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NonClientFrameView; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Widget; 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace corewm { 60a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class TooltipController; 61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 62a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace wm { 65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class AcceleratorFilter; 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CompoundEventFilter; 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class InputMethodEventFilter; 68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class NestedAcceleratorController; 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ShadowController; 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class VisibilityController; 71c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass UserActivityDetector; 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WindowModalityController; 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash { 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AcceleratorController; 78c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass AccelerometerController; 791e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class AccessibilityDelegate; 80c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass AppListController; 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AshNativeCursorManager; 824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class AutoclickController; 83c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass BluetoothNotificationController; 84c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass CaptureController; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DesktopBackgroundController; 86c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass DisplayChangeObserver; 875c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass DisplayConfiguratorAnimation; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DisplayController; 89c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass DisplayErrorObserver; 90c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass DisplayManager; 91c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass DragDropController; 92c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass EventClientImpl; 93c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass EventRewriterEventFilter; 94c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass EventTransformationHandler; 958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class FirstRunHelper; 96c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass FocusCycler; 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class GPUSupport; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HighContrastController; 99c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass KeyboardUMAEventFilter; 100c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass LastWindowClosedLogoutReminder; 101c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass LocaleNotificationController; 1021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class LockStateController; 103c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass LogoutConfirmationController; 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class MagnificationController; 105c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass MaximizeModeController; 106c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass MaximizeModeWindowManager; 1070f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)class MediaDelegate; 108c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass MouseCursorEventFilter; 109a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class MruWindowTracker; 1101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class NewWindowDelegate; 111c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass OverlayEventFilter; 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PartialMagnificationController; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PowerButtonController; 114c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass PowerEventObserver; 115c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass ProjectingObserver; 116c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass ResizeShadowController; 117c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass ResolutionNotificationController; 118c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass RootWindowController; 119c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass ScopedTargetRootWindow; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ScreenAsh; 121c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass ScreenPositionController; 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class SessionStateDelegate; 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class Shelf; 1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ShelfDelegate; 125a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class ShelfItemDelegateManager; 126f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class ShelfModel; 127c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass ShelfWindowWatcher; 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShellDelegate; 129cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)struct ShellInitParams; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShellObserver; 131c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass SlowAnimationEventFilter; 132c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass StatusAreaWidget; 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class StickyKeysController; 134c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass SystemGestureEventFilter; 135c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass SystemModalContainerEventFilter; 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SystemTray; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SystemTrayDelegate; 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class SystemTrayNotifier; 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ToplevelWindowEventHandler; 140cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class TouchTransformerController; 141c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass TouchObserverHUD; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UserActivityDetector; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UserWallpaperDelegate; 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass VirtualKeyboardController; 145c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass VideoActivityNotifier; 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class VideoDetector; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebNotificationTray; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WindowCycleController; 1494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class WindowPositioner; 150a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class WindowSelectorController; 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace shell { 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WindowWatcher; 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace test { 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ShellTestApi; 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Shell is a singleton object that presents the Shell API and implements the 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RootWindow's delegate interface. 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Upon creation, the Shell sets itself as the RootWindow's delegate, which 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// takes ownership of the Shell. 165c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass ASH_EXPORT Shell : public SystemModalContainerEventFilterDelegate, 166c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch public ui::EventTarget, 167c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch public aura::client::ActivationChangeObserver { 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 169c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch typedef std::vector<RootWindowController*> RootWindowControllerList; 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum Direction { 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FORWARD, 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BACKWARD 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A shell must be explicitly created so that it can call |Init()| with the 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // delegate set. |delegate| can be NULL (if not required for initialization). 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Takes ownership of |delegate|. 179cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) static Shell* CreateInstance(const ShellInitParams& init_params); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Should never be called before |CreateInstance()|. 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static Shell* GetInstance(); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the ash shell has been instantiated. 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool HasInstance(); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void DeleteInstance(); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the root window controller for the primary root window. 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TODO(oshima): move this to |RootWindowController| 191c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch static RootWindowController* GetPrimaryRootWindowController(); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns all root window controllers. 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TODO(oshima): move this to |RootWindowController| 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static RootWindowControllerList GetAllRootWindowControllers(); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1971e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Returns the primary root Window. The primary root Window is the one that 1981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // has a launcher. 1991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) static aura::Window* GetPrimaryRootWindow(); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2011e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Returns a root Window when used as a target when creating a new window. 202a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // The root window of the active window is used in most cases, but can 203a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // be overridden by using ScopedTargetRootWindow(). 2041e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // If you want to get the root Window of the active window, just use 205a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // |wm::GetActiveWindow()->GetRootWindow()|. 2061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) static aura::Window* GetTargetRootWindow(); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the global Screen object that's always active in ash. 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static gfx::Screen* GetScreen(); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns all root windows. 212f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static aura::Window::Windows GetAllRootWindows(); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) static aura::Window* GetContainer(aura::Window* root_window, 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int container_id); 2161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) static const aura::Window* GetContainer(const aura::Window* root_window, 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int container_id); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the list of containers that match |container_id| in 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // all root windows. If |priority_root| is given, the container 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // in the |priority_root| will be inserted at the top of the list. 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static std::vector<aura::Window*> GetContainersFromAllRootWindows( 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int container_id, 2241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) aura::Window* priority_root); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void set_target_root_window(aura::Window* target_root_window) { 227a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) target_root_window_ = target_root_window; 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the context menu for the background and launcher at 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |location_in_screen| (in screen coordinates). 2327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void ShowContextMenu(const gfx::Point& location_in_screen, 2337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ui::MenuSourceType source_type); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Shows the app list. |window| specifies in which display the app 2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // list should be shown. If this is NULL, the active root window 2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // will be used. 2386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void ShowAppList(aura::Window* anchor); 2396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Dismisses the app list. 2416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void DismissAppList(); 2426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Shows the app list if it's not visible. Dismisses it otherwise. 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ToggleAppList(aura::Window* anchor); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns app list target visibility. 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool GetAppListTargetVisibility() const; 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns app list window or NULL if it is not visible. 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) aura::Window* GetAppListWindow(); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Returns app list view or NULL if it is not visible. 2538bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) app_list::AppListView* GetAppListView(); 2548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns true if a system-modal dialog window is currently open. 2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool IsSystemModalWindowOpen() const; 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // For testing only: set simulation that a modal window is open 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SimulateModalWindowOpenForTesting(bool modal_window_open) { 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) simulate_modal_window_open_for_testing_ = modal_window_open; 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a default views::NonClientFrameView for use by windows in the 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ash environment. 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::NonClientFrameView* CreateDefaultNonClientFrameView( 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::Widget* widget); 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Rotates focus through containers that can receive focus. 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RotateFocus(Direction direction); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets the work area insets of the display that contains |window|, 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // this notifies observers too. 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(sky): this no longer really replicates what happens and is unreliable. 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Remove this. 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetDisplayWorkAreaInsets(aura::Window* window, 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Insets& insets); 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the user logs in. 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnLoginStateChanged(user::LoginStatus status); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 281f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Called after the logged-in user's profile is ready. 282f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void OnLoginUserProfilePrepared(); 283f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the login status changes. 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(oshima): Investigate if we can merge this and |OnLoginStateChanged|. 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateAfterLoginStatusChange(user::LoginStatus status); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the application is exiting. 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnAppTerminating(); 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the screen is locked (after the lock window is visible) or 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // unlocked. 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnLockStateChanged(bool locked); 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Called when a casting session is started or stopped. 2965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnCastingSessionStartedOrStopped(bool started); 2975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 298a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Called when the overview mode is about to be started (before the windows 299a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // get re-arranged). 300a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnOverviewModeStarting(); 301a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 302a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Called before the overview mode is ending (before the windows get arranged 303a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // to their final position). 304a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnOverviewModeEnding(); 305a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 306a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Called after maximize mode has started, windows might still animate though. 307a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnMaximizeModeStarted(); 308a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 309a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Called after maximize mode has ended, windows might still be returning to 310a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // their original position. 311a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnMaximizeModeEnded(); 312a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 313a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // Called when a root window is created. 314a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch void OnRootWindowAdded(aura::Window* root_window); 315a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 3165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Initializes |shelf_|. Does nothing if it's already initialized. 3175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void CreateShelf(); 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Called when the shelf is created for |root_window|. 3200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void OnShelfCreatedForRootWindow(aura::Window* root_window); 3210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 3225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Creates a virtual keyboard. Deletes the old virtual keyboard if it already 3235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // exists. 324f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void CreateKeyboard(); 325f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 3265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Deactivates the virtual keyboard. 3275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void DeactivateKeyboard(); 3285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Show shelf view if it was created hidden (before session has started). 3305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void ShowShelf(); 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Adds/removes observer. 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddShellObserver(ShellObserver* observer); 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveShellObserver(ShellObserver* observer); 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 336cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_CHROMEOS) 337cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Test if MaximizeModeWindowManager is not enabled, and if 338cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // MaximizeModeController is not currently setting a display rotation. Or if 339cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // the |resolution_notification_controller_| is not showing its confirmation 340cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // dialog. If true then changes to display settings can be saved. 341cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool ShouldSaveDisplaySettings(); 342cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif 343cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AcceleratorController* accelerator_controller() { 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return accelerator_controller_.get(); 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 348c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch DisplayManager* display_manager() { return display_manager_.get(); } 349a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ::wm::InputMethodEventFilter* input_method_filter() { 350c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return input_method_filter_.get(); 351c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 352a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ::wm::CompoundEventFilter* env_filter() { 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return env_filter_.get(); 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::corewm::TooltipController* tooltip_controller() { 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return tooltip_controller_.get(); 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 358c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch OverlayEventFilter* overlay_filter() { return overlay_filter_.get(); } 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DesktopBackgroundController* desktop_background_controller() { 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return desktop_background_controller_.get(); 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PowerButtonController* power_button_controller() { 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return power_button_controller_.get(); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 365868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) LockStateController* lock_state_controller() { 366868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return lock_state_controller_.get(); 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 368a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) MruWindowTracker* mru_window_tracker() { 369a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) return mru_window_tracker_.get(); 370a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 371c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ::wm::UserActivityDetector* user_activity_detector() { 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return user_activity_detector_.get(); 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VideoDetector* video_detector() { 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return video_detector_.get(); 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 377cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) WindowCycleController* window_cycle_controller() { 378cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return window_cycle_controller_.get(); 379cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 380a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) WindowSelectorController* window_selector_controller() { 381a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) return window_selector_controller_.get(); 382a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 383c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch FocusCycler* focus_cycler() { return focus_cycler_.get(); } 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayController* display_controller() { 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return display_controller_.get(); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 387cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_CHROMEOS) && defined(USE_X11) 388cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) TouchTransformerController* touch_transformer_controller() { 389cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return touch_transformer_controller_.get(); 390cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 391cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif // defined(OS_CHROMEOS) && defined(USE_X11) 392c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch MouseCursorEventFilter* mouse_cursor_filter() { 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mouse_cursor_filter_.get(); 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 395c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EventTransformationHandler* event_transformation_handler() { 3962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return event_transformation_handler_.get(); 3972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 398a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ::wm::CursorManager* cursor_manager() { return &cursor_manager_; } 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShellDelegate* delegate() { return delegate_.get(); } 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserWallpaperDelegate* user_wallpaper_delegate() { 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return user_wallpaper_delegate_.get(); 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 406c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SessionStateDelegate* session_state_delegate() { 407c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return session_state_delegate_.get(); 408c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 409c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 4101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) AccessibilityDelegate* accessibility_delegate() { 4111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return accessibility_delegate_.get(); 4121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 4131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 4141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) NewWindowDelegate* new_window_delegate() { 4151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return new_window_delegate_.get(); 4161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 4171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 4180f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) MediaDelegate* media_delegate() { 4190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) return media_delegate_.get(); 4200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) } 4210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HighContrastController* high_contrast_controller() { 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return high_contrast_controller_.get(); 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MagnificationController* magnification_controller() { 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return magnification_controller_.get(); 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PartialMagnificationController* partial_magnification_controller() { 4312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return partial_magnification_controller_.get(); 4322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 4344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) AutoclickController* autoclick_controller() { 4354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return autoclick_controller_.get(); 4364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 4374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 4382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) aura::client::ActivationClient* activation_client() { 4392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return activation_client_; 4402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ShelfItemDelegateManager* shelf_item_delegate_manager() { 443a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return shelf_item_delegate_manager_.get(); 444424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 445424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Force the shelf to query for it's current visibility state. 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateShelfVisibility(); 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(oshima): Define an interface to access shelf/launcher 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // state, or just use Launcher. 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets/gets the shelf auto-hide behavior on |root_window|. 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetShelfAutoHideBehavior(ShelfAutoHideBehavior behavior, 4541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) aura::Window* root_window); 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShelfAutoHideBehavior GetShelfAutoHideBehavior( 4561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) aura::Window* root_window) const; 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets/gets shelf's alignment on |root_window|. 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetShelfAlignment(ShelfAlignment alignment, 4601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) aura::Window* root_window); 461f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ShelfAlignment GetShelfAlignment(const aura::Window* root_window); 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Dims or undims the screen. 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetDimming(bool should_dim); 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Notifies |observers_| when entering or exiting fullscreen mode in 4674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // |root_window|. 4684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void NotifyFullscreenStateChange(bool is_fullscreen, 4691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) aura::Window* root_window); 4704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a modal background (a partially-opaque fullscreen window) 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // on all displays for |window|. 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateModalBackground(aura::Window* window); 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when a modal window is removed. It will activate 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // another modal window if any, or remove modal screens 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // on all displays. 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnModalWindowRemoved(aura::Window* removed); 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns WebNotificationTray on the primary root window. 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebNotificationTray* GetWebNotificationTray(); 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Does the primary display have status area? 4842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool HasPrimaryStatusArea(); 4852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the system tray on primary display. 4872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SystemTray* GetPrimarySystemTray(); 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SystemTrayDelegate* system_tray_delegate() { 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return system_tray_delegate_.get(); 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SystemTrayNotifier* system_tray_notifier() { 4942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return system_tray_notifier_.get(); 4952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_initially_hide_cursor(bool hide) { 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) initially_hide_cursor_ = hide; 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 501c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ResizeShadowController* resize_shadow_controller() { 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return resize_shadow_controller_.get(); 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Made available for tests. 506a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ::wm::ShadowController* shadow_controller() { 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return shadow_controller_.get(); 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Starts the animation that occurs on first login. 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DoInitialWorkspaceAnimation(); 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 513c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch AccelerometerController* accelerometer_controller() { 514c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return accelerometer_controller_.get(); 515c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch } 516c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 517c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch MaximizeModeController* maximize_mode_controller() { 518c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return maximize_mode_controller_.get(); 519c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch } 520c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 5215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_CHROMEOS) 5222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TODO(oshima): Move these objects to DisplayController. 523c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ui::DisplayConfigurator* display_configurator() { 524c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return display_configurator_.get(); 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DisplayConfiguratorAnimation* display_configurator_animation() { 5275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return display_configurator_animation_.get(); 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 529c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch DisplayErrorObserver* display_error_observer() { 5302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return display_error_observer_.get(); 5312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 533c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ResolutionNotificationController* resolution_notification_controller() { 534ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return resolution_notification_controller_.get(); 535ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 536a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 537c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch LogoutConfirmationController* logout_confirmation_controller() { 538a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return logout_confirmation_controller_.get(); 539a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 5405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // defined(OS_CHROMEOS) 541ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 542f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ShelfModel* shelf_model() { 543f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return shelf_model_.get(); 5442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 5452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WindowPositioner* window_positioner() { 5474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return window_positioner_.get(); 5484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 5494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 5502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the launcher delegate, creating if necesary. 551a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ShelfDelegate* GetShelfDelegate(); 5522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) UserMetricsRecorder* metrics() { 5545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return user_metrics_recorder_.get(); 5555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 5565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 557eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void SetTouchHudProjectionEnabled(bool enabled); 558eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 559eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool is_touch_hud_projection_enabled() const { 560eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return is_touch_hud_projection_enabled_; 561eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 562eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if defined(OS_CHROMEOS) 5648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Creates instance of FirstRunHelper. Caller is responsible for deleting 5658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // returned object. 5668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) ash::FirstRunHelper* CreateFirstRunHelper(); 567f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Toggles cursor compositing on/off. Native cursor is disabled when cursor 5695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // compositing is enabled, and vice versa. 5705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SetCursorCompositingEnabled(bool enabled); 5715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) StickyKeysController* sticky_keys_controller() { 5735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return sticky_keys_controller_.get(); 574f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 5758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif // defined(OS_CHROMEOS) 5768bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 5775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GPUSupport* gpu_support() { return gpu_support_.get(); } 5785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(ExtendedDesktopTest, TestCursor); 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(WindowManagerTest, MouseEventCursors); 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(WindowManagerTest, TransformActivate); 583c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch friend class RootWindowController; 584c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch friend class ScopedTargetRootWindow; 5852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend class test::ShellTestApi; 5862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend class shell::WindowWatcher; 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::pair<aura::Window*, gfx::Rect> WindowAndBoundsPair; 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 590c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Takes ownership of |delegate|. 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit Shell(ShellDelegate* delegate); 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~Shell(); 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 594cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void Init(const ShellInitParams& init_params); 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 596f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Initializes virtual keyboard controller. 597f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void InitKeyboard(); 5984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 5998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Initializes the root window so that it can host browser windows. 600f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void InitRootWindow(aura::Window* root_window); 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 602c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // ash::SystemModalContainerEventFilterDelegate overrides: 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanWindowReceiveEvents(aura::Window* window) OVERRIDE; 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from ui::EventTarget: 6062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool CanAcceptEvent(const ui::Event& event) OVERRIDE; 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual EventTarget* GetParentTarget() OVERRIDE; 608a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual scoped_ptr<ui::EventTargetIterator> GetChildIterator() const OVERRIDE; 609a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual ui::EventTargeter* GetEventTargeter() OVERRIDE; 6102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnEvent(ui::Event* event) OVERRIDE; 6112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Overridden from aura::client::ActivationChangeObserver: 6132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnWindowActivated(aura::Window* gained_active, 6142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) aura::Window* lost_active) OVERRIDE; 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static Shell* instance_; 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If set before the Shell is initialized, the mouse cursor will be hidden 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // when the screen is initially created. 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool initially_hide_cursor_; 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 622a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // When no explicit target display/RootWindow is given, new windows are 623a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // created on |scoped_target_root_window_| , unless NULL in 624a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // which case they are created on |target_root_window_|. 625a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // |target_root_window_| never becomes NULL during the session. 6261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) aura::Window* target_root_window_; 6271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) aura::Window* scoped_target_root_window_; 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The CompoundEventFilter owned by aura::Env object. 630a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr< ::wm::CompoundEventFilter> env_filter_; 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<WindowAndBoundsPair> to_restore_; 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<UserMetricsRecorder> user_metrics_recorder_; 635cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr< ::wm::NestedAcceleratorController> nested_accelerator_controller_; 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<AcceleratorController> accelerator_controller_; 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<ShellDelegate> delegate_; 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<SystemTrayDelegate> system_tray_delegate_; 6392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<SystemTrayNotifier> system_tray_notifier_; 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<UserWallpaperDelegate> user_wallpaper_delegate_; 641c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<SessionStateDelegate> session_state_delegate_; 6421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) scoped_ptr<AccessibilityDelegate> accessibility_delegate_; 6431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) scoped_ptr<NewWindowDelegate> new_window_delegate_; 6440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) scoped_ptr<MediaDelegate> media_delegate_; 645a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_ptr<ShelfDelegate> shelf_delegate_; 646a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_ptr<ShelfItemDelegateManager> shelf_item_delegate_manager_; 647c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<ShelfWindowWatcher> shelf_window_watcher_; 6482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 649f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<ShelfModel> shelf_model_; 650f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<WindowPositioner> window_positioner_; 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 652c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<AppListController> app_list_controller_; 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 654c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<DragDropController> drag_drop_controller_; 655c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<ResizeShadowController> resize_shadow_controller_; 656a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr< ::wm::ShadowController> shadow_controller_; 657a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr< ::wm::VisibilityController> visibility_controller_; 658a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr< ::wm::WindowModalityController> window_modality_controller_; 6592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<views::corewm::TooltipController> tooltip_controller_; 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<DesktopBackgroundController> desktop_background_controller_; 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PowerButtonController> power_button_controller_; 662868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) scoped_ptr<LockStateController> lock_state_controller_; 663a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) scoped_ptr<MruWindowTracker> mru_window_tracker_; 664c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr< ::wm::UserActivityDetector> user_activity_detector_; 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<VideoDetector> video_detector_; 666cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr<WindowCycleController> window_cycle_controller_; 667a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) scoped_ptr<WindowSelectorController> window_selector_controller_; 668c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<FocusCycler> focus_cycler_; 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<DisplayController> display_controller_; 6701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<VirtualKeyboardController> virtual_keyboard_controller_; 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<HighContrastController> high_contrast_controller_; 6722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<MagnificationController> magnification_controller_; 6732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PartialMagnificationController> partial_magnification_controller_; 6744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_ptr<AutoclickController> autoclick_controller_; 6752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<aura::client::FocusClient> focus_client_; 6762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) aura::client::ActivationClient* activation_client_; 677a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 678c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<MouseCursorEventFilter> mouse_cursor_filter_; 679c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<ScreenPositionController> screen_position_controller_; 680c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<SystemModalContainerEventFilter> modality_filter_; 681c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<EventClientImpl> event_client_; 682c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<EventTransformationHandler> event_transformation_handler_; 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // An event filter that pre-handles key events while the partial 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // screenshot UI or the keyboard overlay is active. 686c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<OverlayEventFilter> overlay_filter_; 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // An event filter for logging keyboard-related metrics. 689c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<KeyboardUMAEventFilter> keyboard_metrics_filter_; 6904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 6915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // An event filter which handles moving and resizing windows. 6925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<ToplevelWindowEventHandler> toplevel_window_event_handler_; 6935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // An event filter which handles system level gestures 695c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<SystemGestureEventFilter> system_gesture_filter_; 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // An event filter that pre-handles global accelerators. 698cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr< ::wm::AcceleratorFilter> accelerator_filter_; 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // An event filter that pre-handles all key events to send them to an IME. 701a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr< ::wm::InputMethodEventFilter> input_method_filter_; 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 703c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<DisplayManager> display_manager_; 704c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<base::WeakPtrFactory<DisplayManager> > 7051e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) weak_display_manager_factory_; 7062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 707c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<LocaleNotificationController> locale_notification_controller_; 708a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 709c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<AccelerometerController> accelerometer_controller_; 710a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 7114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_CHROMEOS) 712c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<PowerEventObserver> power_event_observer_; 7130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch scoped_ptr<ui::UserActivityPowerManagerNotifier> user_activity_notifier_; 714c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<VideoActivityNotifier> video_activity_notifier_; 7155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<StickyKeysController> sticky_keys_controller_; 716c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<ResolutionNotificationController> 7175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) resolution_notification_controller_; 718c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<BluetoothNotificationController> 719a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bluetooth_notification_controller_; 720c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<LogoutConfirmationController> logout_confirmation_controller_; 721c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<LastWindowClosedLogoutReminder> 722a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) last_window_closed_logout_reminder_; 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Controls video output device state. 724c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<ui::DisplayConfigurator> display_configurator_; 7255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu scoped_ptr<DisplayConfiguratorAnimation> display_configurator_animation_; 726c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<DisplayErrorObserver> display_error_observer_; 727c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<ProjectingObserver> projecting_observer_; 7282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Listens for output changes and updates the display manager. 730c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<DisplayChangeObserver> display_change_observer_; 7315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 732effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#if defined(USE_X11) 7335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<ui::EventHandler> magnifier_key_scroll_handler_; 7345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<ui::EventHandler> speech_feedback_handler_; 735cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr<TouchTransformerController> touch_transformer_controller_; 7364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif // defined(USE_X11) 7374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif // defined(OS_CHROMEOS) 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 739c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<MaximizeModeController> maximize_mode_controller_; 740c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 7412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |native_cursor_manager_| is owned by |cursor_manager_|, but we keep a 7422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // pointer to vend to test code. 7432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AshNativeCursorManager* native_cursor_manager_; 744c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 745c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Cursor may be hidden on certain key events in ChromeOS, whereas we never hide 746c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// the cursor on Windows. 747c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_CHROMEOS) 748c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch CursorManager cursor_manager_; 749c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#else // !defined(OS_CHROMEOS) 750a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ::wm::CursorManager cursor_manager_; 751c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif // defined(OS_CHROMEOS) 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObserverList<ShellObserver> observers_; 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // For testing only: simulate that a modal window is open 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool simulate_modal_window_open_for_testing_; 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 758eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool is_touch_hud_projection_enabled_; 759eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 7605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Injected content::GPUDataManager support. 7615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<GPUSupport> gpu_support_; 7625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Shell); 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ash 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // ASH_SHELL_H_ 769