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

Unified Diff: ash/common/wm_root_window_controller.h

Issue 2350953009: Centralizes more shared code between ash and mash (Closed)
Patch Set: moar 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
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..dd853e42dc043f5a00ebf1d633dae6d87f16e683 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_;
}
@@ -80,7 +88,9 @@ class ASH_EXPORT WmRootWindowController {
virtual WmShell* GetShell() = 0;
- virtual AlwaysOnTopController* GetAlwaysOnTopController() = 0;
+ AlwaysOnTopController* always_on_top_controller() {
James Cook 2016/09/21 22:03:18 nit: move this up with other inline getters
sky 2016/09/21 22:47:48 Done.
+ return always_on_top_controller_.get();
+ }
virtual WmShelf* GetShelf() = 0;
@@ -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.
James Cook 2016/09/21 22:03:18 +1 for helpful ownership comment
+ 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_;

Powered by Google App Engine
This is Rietveld 408576698