Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Side by Side Diff: ash/common/wm_shell.h

Issue 2761373002: Move yet more from WmShell to Shell (Closed)
Patch Set: merge Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ash/common/wm/workspace/workspace_layout_manager_unittest.cc ('k') | ash/common/wm_shell.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef ASH_COMMON_WM_SHELL_H_ 5 #ifndef ASH_COMMON_WM_SHELL_H_
6 #define ASH_COMMON_WM_SHELL_H_ 6 #define ASH_COMMON_WM_SHELL_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
11 #include <vector> 11 #include <vector>
12 12
13 #include "ash/ash_export.h" 13 #include "ash/ash_export.h"
14 #include "ash/common/metrics/gesture_action_type.h" 14 #include "ash/common/metrics/gesture_action_type.h"
15 #include "ash/common/metrics/user_metrics_action.h" 15 #include "ash/common/metrics/user_metrics_action.h"
16 #include "ash/common/session/session_state_observer.h"
17 #include "ash/common/wm/lock_state_observer.h" 16 #include "ash/common/wm/lock_state_observer.h"
18 #include "base/observer_list.h" 17 #include "base/observer_list.h"
19 #include "ui/base/ui_base_types.h" 18 #include "ui/base/ui_base_types.h"
20 #include "ui/compositor/layer_type.h" 19 #include "ui/compositor/layer_type.h"
21 #include "ui/wm/public/activation_change_observer.h" 20 #include "ui/wm/public/activation_change_observer.h"
22 #include "ui/wm/public/window_types.h" 21 #include "ui/wm/public/window_types.h"
23 22
24 namespace display { 23 namespace display {
25 class Display; 24 class Display;
26 class ManagedDisplayInfo; 25 class ManagedDisplayInfo;
27 } 26 }
28 27
29 namespace gfx { 28 namespace gfx {
30 class Insets; 29 class Insets;
31 class Point; 30 class Point;
32 } 31 }
33 32
34 namespace views { 33 namespace views {
35 class PointerWatcher; 34 class PointerWatcher;
36 enum class PointerWatcherEventTypes; 35 enum class PointerWatcherEventTypes;
37 } 36 }
38 37
39 namespace ash { 38 namespace ash {
40 class AcceleratorController; 39 class AcceleratorController;
41 class ImmersiveFullscreenController; 40 class ImmersiveFullscreenController;
42 class KeyEventWatcher; 41 class KeyEventWatcher;
43 class KeyboardUI; 42 class KeyboardUI;
44 class RootWindowController; 43 class RootWindowController;
45 class ScopedDisableInternalMouseAndKeyboard; 44 class ScopedDisableInternalMouseAndKeyboard;
46 class SessionController;
47 class SessionStateDelegate; 45 class SessionStateDelegate;
48 class ShelfController;
49 class ShelfDelegate;
50 class ShelfModel;
51 class ShelfWindowWatcher;
52 struct ShellInitParams; 46 struct ShellInitParams;
53 class ShutdownController; 47 class ShutdownController;
54 class SystemTrayNotifier; 48 class SystemTrayNotifier;
55 class VpnList; 49 class VpnList;
56 class WindowCycleController; 50 class WindowCycleController;
57 class WindowCycleEventFilter; 51 class WindowCycleEventFilter;
58 class WindowResizer; 52 class WindowResizer;
59 class WindowSelectorController; 53 class WindowSelectorController;
60 class WmDisplayObserver; 54 class WmDisplayObserver;
61 class WmWindow; 55 class WmWindow;
62 class WorkspaceEventHandler; 56 class WorkspaceEventHandler;
63 57
64 enum class LoginStatus; 58 enum class LoginStatus;
65 enum class TaskSwitchSource; 59 enum class TaskSwitchSource;
66 60
67 namespace wm { 61 namespace wm {
68 class MaximizeModeEventHandler; 62 class MaximizeModeEventHandler;
69 class WindowState; 63 class WindowState;
70 } 64 }
71 65
72 // Similar to ash::Shell. Eventually the two will be merged. 66 // Similar to ash::Shell. Eventually the two will be merged.
73 class ASH_EXPORT WmShell : public SessionStateObserver { 67 class ASH_EXPORT WmShell {
74 public: 68 public:
75 ~WmShell() override; 69 virtual ~WmShell();
76 70
77 static WmShell* Get(); 71 static WmShell* Get();
78 static bool HasInstance() { return instance_ != nullptr; } 72 static bool HasInstance() { return instance_ != nullptr; }
79 73
80 virtual void Shutdown(); 74 virtual void Shutdown();
81 75
82 SessionController* session_controller() { return session_controller_.get(); }
83
84 ShelfController* shelf_controller() { return shelf_controller_.get(); }
85
86 ShelfDelegate* shelf_delegate() { return shelf_delegate_.get(); }
87
88 ShelfModel* shelf_model();
89
90 ShutdownController* shutdown_controller() { 76 ShutdownController* shutdown_controller() {
91 return shutdown_controller_.get(); 77 return shutdown_controller_.get();
92 } 78 }
93 79
94 SystemTrayNotifier* system_tray_notifier() { 80 SystemTrayNotifier* system_tray_notifier() {
95 return system_tray_notifier_.get(); 81 return system_tray_notifier_.get();
96 } 82 }
97 83
98 VpnList* vpn_list() { return vpn_list_.get(); } 84 VpnList* vpn_list() { return vpn_list_.get(); }
99 85
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 CreateScopedDisableInternalMouseAndKeyboard() = 0; 202 CreateScopedDisableInternalMouseAndKeyboard() = 0;
217 203
218 virtual std::unique_ptr<ImmersiveFullscreenController> 204 virtual std::unique_ptr<ImmersiveFullscreenController>
219 CreateImmersiveFullscreenController() = 0; 205 CreateImmersiveFullscreenController() = 0;
220 206
221 // Creates the KeyboardUI. This is called early on. 207 // Creates the KeyboardUI. This is called early on.
222 virtual std::unique_ptr<KeyboardUI> CreateKeyboardUI() = 0; 208 virtual std::unique_ptr<KeyboardUI> CreateKeyboardUI() = 0;
223 209
224 virtual std::unique_ptr<KeyEventWatcher> CreateKeyEventWatcher() = 0; 210 virtual std::unique_ptr<KeyEventWatcher> CreateKeyEventWatcher() = 0;
225 211
226 // Creates the ShelfView for each display and populates it with items.
227 // Called after the user session is active and profile is available.
228 void CreateShelfView();
229
230 void CreateShelfDelegate();
231
232 // Called when the login status changes.
233 // TODO(oshima): Investigate if we can merge this and |OnLoginStateChanged|.
234 void UpdateAfterLoginStatusChange(LoginStatus status);
235
236 virtual SessionStateDelegate* GetSessionStateDelegate() = 0; 212 virtual SessionStateDelegate* GetSessionStateDelegate() = 0;
237 213
238 virtual void AddDisplayObserver(WmDisplayObserver* observer) = 0; 214 virtual void AddDisplayObserver(WmDisplayObserver* observer) = 0;
239 virtual void RemoveDisplayObserver(WmDisplayObserver* observer) = 0; 215 virtual void RemoveDisplayObserver(WmDisplayObserver* observer) = 0;
240 216
241 // If |events| is PointerWatcherEventTypes::MOVES, 217 // If |events| is PointerWatcherEventTypes::MOVES,
242 // PointerWatcher::OnPointerEventObserved() is called for pointer move events. 218 // PointerWatcher::OnPointerEventObserved() is called for pointer move events.
243 // If |events| is PointerWatcherEventTypes::DRAGS, 219 // If |events| is PointerWatcherEventTypes::DRAGS,
244 // PointerWatcher::OnPointerEventObserved() is called for pointer drag events. 220 // PointerWatcher::OnPointerEventObserved() is called for pointer drag events.
245 // Requesting pointer moves or drags may incur a performance hit and should be 221 // Requesting pointer moves or drags may incur a performance hit and should be
246 // avoided if possible. 222 // avoided if possible.
247 virtual void AddPointerWatcher(views::PointerWatcher* watcher, 223 virtual void AddPointerWatcher(views::PointerWatcher* watcher,
248 views::PointerWatcherEventTypes events) = 0; 224 views::PointerWatcherEventTypes events) = 0;
249 virtual void RemovePointerWatcher(views::PointerWatcher* watcher) = 0; 225 virtual void RemovePointerWatcher(views::PointerWatcher* watcher) = 0;
250 226
251 // TODO: Move these back to LockStateController when that has been moved. 227 // TODO: Move these back to LockStateController when that has been moved.
252 void OnLockStateEvent(LockStateObserver::EventType event); 228 void OnLockStateEvent(LockStateObserver::EventType event);
253 void AddLockStateObserver(LockStateObserver* observer); 229 void AddLockStateObserver(LockStateObserver* observer);
254 void RemoveLockStateObserver(LockStateObserver* observer); 230 void RemoveLockStateObserver(LockStateObserver* observer);
255 231
256 void SetShelfDelegateForTesting(std::unique_ptr<ShelfDelegate> test_delegate);
257
258 // True if any touch points are down. 232 // True if any touch points are down.
259 virtual bool IsTouchDown() = 0; 233 virtual bool IsTouchDown() = 0;
260 234
261 // TODO(jamescook): Remove this when VirtualKeyboardController has been moved. 235 // TODO(jamescook): Remove this when VirtualKeyboardController has been moved.
262 virtual void ToggleIgnoreExternalKeyboard() = 0; 236 virtual void ToggleIgnoreExternalKeyboard() = 0;
263 237
264 // Enable or disable the laser pointer. 238 // Enable or disable the laser pointer.
265 virtual void SetLaserPointerEnabled(bool enabled) = 0; 239 virtual void SetLaserPointerEnabled(bool enabled) = 0;
266 240
267 // Enable or disable the partial magnifier. 241 // Enable or disable the partial magnifier.
(...skipping 10 matching lines...) Expand all
278 virtual void InitHosts(const ShellInitParams& init_params) = 0; 252 virtual void InitHosts(const ShellInitParams& init_params) = 0;
279 253
280 // Called during startup to create the AcceleratorController. 254 // Called during startup to create the AcceleratorController.
281 virtual std::unique_ptr<AcceleratorController> 255 virtual std::unique_ptr<AcceleratorController>
282 CreateAcceleratorController() = 0; 256 CreateAcceleratorController() = 0;
283 257
284 void DeleteWindowCycleController(); 258 void DeleteWindowCycleController();
285 259
286 void DeleteWindowSelectorController(); 260 void DeleteWindowSelectorController();
287 261
288 // SessionStateObserver:
289 void SessionStateChanged(session_manager::SessionState state) override;
290
291 private: 262 private:
292 friend class AcceleratorControllerTest; 263 friend class AcceleratorControllerTest;
293 friend class Shell; 264 friend class Shell;
294 265
295 static WmShell* instance_; 266 static WmShell* instance_;
296 267
297 std::unique_ptr<SessionController> session_controller_;
298 std::unique_ptr<ShelfController> shelf_controller_;
299 std::unique_ptr<ShelfDelegate> shelf_delegate_;
300 std::unique_ptr<ShelfWindowWatcher> shelf_window_watcher_;
301 std::unique_ptr<ShutdownController> shutdown_controller_; 268 std::unique_ptr<ShutdownController> shutdown_controller_;
302 std::unique_ptr<SystemTrayNotifier> system_tray_notifier_; 269 std::unique_ptr<SystemTrayNotifier> system_tray_notifier_;
303 std::unique_ptr<VpnList> vpn_list_; 270 std::unique_ptr<VpnList> vpn_list_;
304 std::unique_ptr<WindowCycleController> window_cycle_controller_; 271 std::unique_ptr<WindowCycleController> window_cycle_controller_;
305 std::unique_ptr<WindowSelectorController> window_selector_controller_; 272 std::unique_ptr<WindowSelectorController> window_selector_controller_;
306 273
307 base::ObserverList<LockStateObserver> lock_state_observers_; 274 base::ObserverList<LockStateObserver> lock_state_observers_;
308 275
309 bool simulate_modal_window_open_for_testing_ = false; 276 bool simulate_modal_window_open_for_testing_ = false;
310 }; 277 };
311 278
312 } // namespace ash 279 } // namespace ash
313 280
314 #endif // ASH_COMMON_WM_SHELL_H_ 281 #endif // ASH_COMMON_WM_SHELL_H_
OLDNEW
« no previous file with comments | « ash/common/wm/workspace/workspace_layout_manager_unittest.cc ('k') | ash/common/wm_shell.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698