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

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

Issue 2625843002: Folds WmRootWindowController into RootWindowController (Closed)
Patch Set: definition in wm_root_window_controller.cc 2 Created 3 years, 11 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_lookup.h ('k') | ash/common/wm_root_window_controller.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef ASH_COMMON_WM_ROOT_WINDOW_CONTROLLER_H_
6 #define ASH_COMMON_WM_ROOT_WINDOW_CONTROLLER_H_
7
8 #include "ash/ash_export.h"
9 #include "ash/common/wm/workspace/workspace_types.h"
10 #include "base/macros.h"
11 #include "ui/base/ui_base_types.h"
12 #include "ui/views/widget/widget.h"
13
14 namespace gfx {
15 class Point;
16 }
17
18 namespace ui {
19 class MenuModel;
20 }
21
22 namespace views {
23 class MenuModelAdapter;
24 class MenuRunner;
25 }
26
27 namespace ash {
28
29 class AlwaysOnTopController;
30 class AnimatingWallpaperWidgetController;
31 class DockedWindowLayoutManager;
32 class PanelLayoutManager;
33 class RootWindowController;
34 class SystemModalContainerLayoutManager;
35 class SystemTray;
36 class WallpaperWidgetController;
37 class WmShelf;
38 class WmWindow;
39 class WorkspaceController;
40
41 enum class LoginStatus;
42
43 namespace wm {
44 class RootWindowLayoutManager;
45 }
46
47 // Provides state associated with a root of a window hierarchy.
48 class ASH_EXPORT WmRootWindowController {
49 public:
50 WmRootWindowController(RootWindowController* root_window_controller,
51 WmWindow* window);
52 ~WmRootWindowController();
53
54 DockedWindowLayoutManager* docked_window_layout_manager() {
55 return docked_window_layout_manager_;
56 }
57
58 PanelLayoutManager* panel_layout_manager() { return panel_layout_manager_; }
59
60 wm::RootWindowLayoutManager* root_window_layout_manager() {
61 return root_window_layout_manager_;
62 }
63
64 WallpaperWidgetController* wallpaper_widget_controller() {
65 return wallpaper_widget_controller_.get();
66 }
67 void SetWallpaperWidgetController(WallpaperWidgetController* controller);
68
69 AnimatingWallpaperWidgetController* animating_wallpaper_widget_controller() {
70 return animating_wallpaper_widget_controller_.get();
71 }
72 void SetAnimatingWallpaperWidgetController(
73 AnimatingWallpaperWidgetController* controller);
74
75 WorkspaceController* workspace_controller() {
76 return workspace_controller_.get();
77 }
78
79 AlwaysOnTopController* always_on_top_controller() {
80 return always_on_top_controller_.get();
81 }
82
83 wm::WorkspaceWindowState GetWorkspaceWindowState();
84
85 // Returns the layout manager for the appropriate modal-container. If the
86 // window is inside the lockscreen modal container, then the layout manager
87 // for that is returned. Otherwise the layout manager for the default modal
88 // container is returned.
89 // If no window is specified (i.e. |window| is null), then the lockscreen
90 // modal container is used if the screen is currently locked. Otherwise, the
91 // default modal container is used.
92 SystemModalContainerLayoutManager* GetSystemModalLayoutManager(
93 WmWindow* window);
94
95 bool HasShelf();
96
97 WmShelf* GetShelf();
98
99 // Creates the shelf for this root window and notifies observers.
100 void CreateShelf();
101
102 // Show shelf view if it was created hidden (before session has started).
103 // TODO(jamescook): Eliminate this and handle show via Shelf.
104 void ShowShelf();
105
106 // Returns the system tray controller. May be null for external displays.
107 SystemTray* GetSystemTray();
108
109 // Returns the window associated with this WmRootWindowController.
110 WmWindow* GetWindow();
111
112 // Gets the WmWindow whose shell window id is |container_id|.
113 WmWindow* GetContainer(int container_id);
114 const WmWindow* GetContainer(int container_id) const;
115
116 // Configures |init_params| prior to initializing |widget|.
117 // |shell_container_id| is the id of the container to parent |widget| to.
118 void ConfigureWidgetInitParamsForContainer(
119 views::Widget* widget,
120 int shell_container_id,
121 views::Widget::InitParams* init_params);
122
123 // Returns the window events will be targeted at for the specified location
124 // (in screen coordinates).
125 //
126 // NOTE: the returned window may not contain the location as resize handles
127 // may extend outside the bounds of the window.
128 WmWindow* FindEventTarget(const gfx::Point& location_in_screen);
129
130 // Gets the last location seen in a mouse event in this root window's
131 // coordinates. This may return a point outside the root window's bounds.
132 gfx::Point GetLastMouseLocationInRoot();
133
134 // Shows a context menu at the |location_in_screen|.
135 void ShowContextMenu(const gfx::Point& location_in_screen,
136 ui::MenuSourceType source_type);
137
138 // Called when the wallpaper animation has started or finished.
139 // TODO: port remaining classic ash wallpaper functionality here.
140 void OnInitialWallpaperAnimationStarted();
141 void OnWallpaperAnimationFinished(views::Widget* widget);
142
143 // Called when the login status changes after login (such as lock/unlock).
144 // TODO(oshima): Investigate if we can merge this and |OnLoginStateChanged|.
145 virtual void UpdateAfterLoginStatusChange(LoginStatus status);
146
147 protected:
148 // Moves child windows to |dest|.
149 void MoveWindowsTo(WmWindow* dest);
150
151 // Creates the containers (WmWindows) used by the shell.
152 void CreateContainers();
153
154 // Creates the LayoutManagers for the windows created by CreateContainers().
155 void CreateLayoutManagers();
156
157 // Resets WmShell::GetRootWindowForNewWindows() if appropriate. This is called
158 // during shutdown to make sure GetRootWindowForNewWindows() isn't referencing
159 // this.
160 void ResetRootForNewWindowsIfNecessary();
161
162 // Called during shutdown to destroy state such as windows and LayoutManagers.
163 void CloseChildWindows();
164
165 private:
166 friend class RootWindowController;
167
168 // Called from CloseChildWindows() to determine if the specified window should
169 // be destroyed.
170 bool ShouldDestroyWindowInCloseChildWindows(WmWindow* window);
171
172 // Callback for MenuModelAdapter.
173 void OnMenuClosed();
174
175 // TODO(sky): remove this, needed until merge two classes.
176 RootWindowController* root_window_controller_;
177
178 WmWindow* root_;
179
180 // LayoutManagers are owned by the window they are installed on.
181 DockedWindowLayoutManager* docked_window_layout_manager_ = nullptr;
182 PanelLayoutManager* panel_layout_manager_ = nullptr;
183 wm::RootWindowLayoutManager* root_window_layout_manager_ = nullptr;
184
185 std::unique_ptr<WallpaperWidgetController> wallpaper_widget_controller_;
186 std::unique_ptr<AnimatingWallpaperWidgetController>
187 animating_wallpaper_widget_controller_;
188 std::unique_ptr<WorkspaceController> workspace_controller_;
189
190 std::unique_ptr<AlwaysOnTopController> always_on_top_controller_;
191
192 // Manages the context menu.
193 std::unique_ptr<ui::MenuModel> menu_model_;
194 std::unique_ptr<views::MenuModelAdapter> menu_model_adapter_;
195 std::unique_ptr<views::MenuRunner> menu_runner_;
196
197 DISALLOW_COPY_AND_ASSIGN(WmRootWindowController);
198 };
199
200 } // namespace ash
201
202 #endif // ASH_COMMON_WM_ROOT_WINDOW_CONTROLLER_H_
OLDNEW
« no previous file with comments | « ash/common/wm_lookup.h ('k') | ash/common/wm_root_window_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698