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

Unified Diff: ash/common/wm_root_window_controller.h

Issue 2350953009: Centralizes more shared code between ash and mash (Closed)
Patch Set: feedback Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/common/wm/workspace/workspace_layout_manager.cc ('k') | ash/common/wm_root_window_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/common/wm_root_window_controller.h
diff --git a/ash/common/wm_root_window_controller.h b/ash/common/wm_root_window_controller.h
index ab44458a8b20b200e6f8c788d81ebf7b0bc75ea6..958fd6ae6cf2ee030cd1bc950b09b995f397b0a2 100644
--- a/ash/common/wm_root_window_controller.h
+++ b/ash/common/wm_root_window_controller.h
@@ -28,6 +28,8 @@ namespace ash {
class AlwaysOnTopController;
class AnimatingWallpaperWidgetController;
+class DockedWindowLayoutManager;
+class PanelLayoutManager;
class SystemModalContainerLayoutManager;
class WallpaperWidgetController;
class WmShelf;
@@ -45,6 +47,12 @@ class ASH_EXPORT WmRootWindowController {
explicit WmRootWindowController(WmWindow* window);
virtual ~WmRootWindowController();
+ DockedWindowLayoutManager* docked_window_layout_manager() {
+ return docked_window_layout_manager_;
+ }
+
+ PanelLayoutManager* panel_layout_manager() { return panel_layout_manager_; }
+
wm::RootWindowLayoutManager* root_window_layout_manager() {
return root_window_layout_manager_;
}
@@ -64,6 +72,10 @@ class ASH_EXPORT WmRootWindowController {
return workspace_controller_.get();
}
+ AlwaysOnTopController* always_on_top_controller() {
+ return always_on_top_controller_.get();
+ }
+
wm::WorkspaceWindowState GetWorkspaceWindowState();
// Returns the layout manager for the appropriate modal-container. If the
@@ -80,8 +92,6 @@ class ASH_EXPORT WmRootWindowController {
virtual WmShell* GetShell() = 0;
- virtual AlwaysOnTopController* GetAlwaysOnTopController() = 0;
-
virtual WmShelf* GetShelf() = 0;
// Returns the window associated with this WmRootWindowController.
@@ -128,7 +138,17 @@ class ASH_EXPORT WmRootWindowController {
// Creates the LayoutManagers for the windows created by CreateContainers().
void CreateLayoutManagers();
- void DeleteWorkspaceController();
+ // Resets WmShell::GetRootWindowForNewWindows() if appropriate. This is called
+ // during shutdown to make sure GetRootWindowForNewWindows() isn't referencing
+ // this.
+ void ResetRootForNewWindowsIfNecessary();
+
+ // Called during shutdown to destroy state such as windows and LayoutManagers.
+ void CloseChildWindows();
+
+ // Called from CloseChildWindows() to determine if the specified window should
+ // be destroyed.
+ virtual bool ShouldDestroyWindowInCloseChildWindows(WmWindow* window) = 0;
private:
// Callback for MenuModelAdapter.
@@ -136,13 +156,18 @@ class ASH_EXPORT WmRootWindowController {
WmWindow* root_;
- wm::RootWindowLayoutManager* root_window_layout_manager_;
+ // LayoutManagers are owned by the window they are installed on.
+ DockedWindowLayoutManager* docked_window_layout_manager_ = nullptr;
+ PanelLayoutManager* panel_layout_manager_ = nullptr;
+ wm::RootWindowLayoutManager* root_window_layout_manager_ = nullptr;
std::unique_ptr<WallpaperWidgetController> wallpaper_widget_controller_;
std::unique_ptr<AnimatingWallpaperWidgetController>
animating_wallpaper_widget_controller_;
std::unique_ptr<WorkspaceController> workspace_controller_;
+ std::unique_ptr<AlwaysOnTopController> always_on_top_controller_;
+
// Manages the context menu.
std::unique_ptr<ui::MenuModel> menu_model_;
std::unique_ptr<views::MenuModelAdapter> menu_model_adapter_;
« no previous file with comments | « ash/common/wm/workspace/workspace_layout_manager.cc ('k') | ash/common/wm_root_window_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698