Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_ROOT_WINDOW_CONTROLLER_H_ | 5 #ifndef ASH_ROOT_WINDOW_CONTROLLER_H_ |
| 6 #define ASH_ROOT_WINDOW_CONTROLLER_H_ | 6 #define ASH_ROOT_WINDOW_CONTROLLER_H_ |
| 7 | 7 |
| 8 #include "ash/ash_export.h" | 8 #include "ash/ash_export.h" |
| 9 #include "ash/shelf_types.h" | 9 #include "ash/shelf/shelf_types.h" |
| 10 #include "ash/system/user/login_status.h" | 10 #include "ash/system/user/login_status.h" |
| 11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
| 12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 13 | 13 |
| 14 class SkBitmap; | 14 class SkBitmap; |
| 15 | 15 |
| 16 namespace aura { | 16 namespace aura { |
| 17 class EventFilter; | 17 class EventFilter; |
| 18 class RootWindow; | 18 class RootWindow; |
| 19 class Window; | 19 class Window; |
| 20 } | 20 } |
| 21 | 21 |
| 22 namespace gfx { | 22 namespace gfx { |
| 23 class Point; | 23 class Point; |
| 24 } | 24 } |
| 25 | 25 |
| 26 namespace views { | 26 namespace views { |
| 27 namespace corewm { | 27 namespace corewm { |
| 28 class InputMethodEventFilter; | 28 class InputMethodEventFilter; |
| 29 class RootWindowEventFilter; | 29 class RootWindowEventFilter; |
| 30 } | 30 } |
| 31 } | 31 } |
| 32 | 32 |
| 33 namespace ash { | 33 namespace ash { |
| 34 class Launcher; | |
| 35 class StackingController; | 34 class StackingController; |
| 35 class ShelfWidget; | |
| 36 class SystemTray; | 36 class SystemTray; |
| 37 class ToplevelWindowEventHandler; | 37 class ToplevelWindowEventHandler; |
| 38 | 38 |
| 39 namespace internal { | 39 namespace internal { |
| 40 | 40 |
| 41 class BootSplashScreen; | 41 class BootSplashScreen; |
| 42 class PanelLayoutManager; | 42 class PanelLayoutManager; |
| 43 class RootWindowLayoutManager; | 43 class RootWindowLayoutManager; |
| 44 class ScreenDimmer; | 44 class ScreenDimmer; |
| 45 class ShelfLayoutManager; | 45 class ShelfLayoutManager; |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 73 aura::RootWindow* root_window() { return root_window_.get(); } | 73 aura::RootWindow* root_window() { return root_window_.get(); } |
| 74 | 74 |
| 75 RootWindowLayoutManager* root_window_layout() { return root_window_layout_; } | 75 RootWindowLayoutManager* root_window_layout() { return root_window_layout_; } |
| 76 | 76 |
| 77 WorkspaceController* workspace_controller() { | 77 WorkspaceController* workspace_controller() { |
| 78 return workspace_controller_.get(); | 78 return workspace_controller_.get(); |
| 79 } | 79 } |
| 80 | 80 |
| 81 ScreenDimmer* screen_dimmer() { return screen_dimmer_.get(); } | 81 ScreenDimmer* screen_dimmer() { return screen_dimmer_.get(); } |
| 82 | 82 |
| 83 Launcher* launcher() { return launcher_.get(); } | 83 ShelfWidget* shelf() const { return shelf_.get(); } |
|
Mr4D (OOO till 08-26)
2013/03/04 19:18:04
Please add a short comment.
Harry McCleave
2013/03/04 20:29:24
Done.
| |
| 84 | 84 ShelfLayoutManager* shelf_layout_manager() const; |
|
Mr4D (OOO till 08-26)
2013/03/04 19:18:04
Here as well. Note that the function might return
Harry McCleave
2013/03/04 20:29:24
Done.
| |
| 85 ShelfLayoutManager* shelf() const { return shelf_; } | |
| 86 | |
| 87 StatusAreaWidget* status_area_widget() { | |
| 88 return status_area_widget_; | |
| 89 } | |
| 90 | 85 |
| 91 // Returns the system tray on this root window. Note that | 86 // Returns the system tray on this root window. Note that |
| 92 // calling this on the root window that doesn't have a launcher will | 87 // calling this on the root window that doesn't have a launcher will |
| 93 // lead to a crash. | 88 // lead to a crash. |
| 94 SystemTray* GetSystemTray(); | 89 SystemTray* GetSystemTray(); |
| 95 | 90 |
| 96 // Shows context menu at the |location_in_screen|. This uses | 91 // Shows context menu at the |location_in_screen|. This uses |
| 97 // |ShellDelegate::CreateContextMenu| to define the content of the menu. | 92 // |ShellDelegate::CreateContextMenu| to define the content of the menu. |
| 98 void ShowContextMenu(const gfx::Point& location_in_screen); | 93 void ShowContextMenu(const gfx::Point& location_in_screen); |
| 99 | 94 |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 113 void CreateContainers(); | 108 void CreateContainers(); |
| 114 | 109 |
| 115 // Initializs the RootWindowController for primary display. This | 110 // Initializs the RootWindowController for primary display. This |
| 116 // creates | 111 // creates |
| 117 void InitForPrimaryDisplay(); | 112 void InitForPrimaryDisplay(); |
| 118 | 113 |
| 119 // Initializes |system_background_| and possibly also |boot_splash_screen_|. | 114 // Initializes |system_background_| and possibly also |boot_splash_screen_|. |
| 120 // |is_first_run_after_boot| determines the background's initial color. | 115 // |is_first_run_after_boot| determines the background's initial color. |
| 121 void CreateSystemBackground(bool is_first_run_after_boot); | 116 void CreateSystemBackground(bool is_first_run_after_boot); |
| 122 | 117 |
| 123 // Initializes |launcher_|. Does nothing if it's already initialized. | |
| 124 void CreateLauncher(); | |
| 125 | |
| 126 // Show launcher view if it was created hidden (before session has started). | 118 // Show launcher view if it was created hidden (before session has started). |
| 127 void ShowLauncher(); | 119 void ShowLauncher(); |
| 128 | 120 |
| 121 // Called when the launcher associated with this root window is created. | |
| 122 void OnLauncherCreated(); | |
| 123 | |
| 129 // Called when the user logs in. | 124 // Called when the user logs in. |
| 130 void OnLoginStateChanged(user::LoginStatus status); | 125 void OnLoginStateChanged(user::LoginStatus status); |
| 131 | 126 |
| 132 // Called when the login status changes after login (such as lock/unlock). | 127 // Called when the login status changes after login (such as lock/unlock). |
| 133 // TODO(oshima): Investigate if we can merge this and |OnLoginStateChanged|. | 128 // TODO(oshima): Investigate if we can merge this and |OnLoginStateChanged|. |
| 134 void UpdateAfterLoginStatusChange(user::LoginStatus status); | 129 void UpdateAfterLoginStatusChange(user::LoginStatus status); |
| 135 | 130 |
| 136 // Called when the brightness/grayscale animation from white to the login | 131 // Called when the brightness/grayscale animation from white to the login |
| 137 // desktop background image has started. Starts |boot_splash_screen_|'s | 132 // desktop background image has started. Starts |boot_splash_screen_|'s |
| 138 // hiding animation (if the screen is non-NULL). | 133 // hiding animation (if the screen is non-NULL). |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 150 | 145 |
| 151 // Deletes all child windows and performs necessary cleanup. | 146 // Deletes all child windows and performs necessary cleanup. |
| 152 void CloseChildWindows(); | 147 void CloseChildWindows(); |
| 153 | 148 |
| 154 // Moves child windows to |dest|. | 149 // Moves child windows to |dest|. |
| 155 void MoveWindowsTo(aura::RootWindow* dest); | 150 void MoveWindowsTo(aura::RootWindow* dest); |
| 156 | 151 |
| 157 // Force the shelf to query for it's current visibility state. | 152 // Force the shelf to query for it's current visibility state. |
| 158 void UpdateShelfVisibility(); | 153 void UpdateShelfVisibility(); |
| 159 | 154 |
| 160 // Sets/gets the shelf auto-hide behavior. | |
| 161 void SetShelfAutoHideBehavior(ShelfAutoHideBehavior behavior); | |
| 162 ShelfAutoHideBehavior GetShelfAutoHideBehavior() const; | |
| 163 | |
| 164 // Sets/gets the shelf alignemnt. | |
| 165 bool SetShelfAlignment(ShelfAlignment alignment); | |
| 166 ShelfAlignment GetShelfAlignment(); | |
| 167 | |
| 168 // Returns true if the active workspace is in immersive mode. Exposed here | 155 // Returns true if the active workspace is in immersive mode. Exposed here |
| 169 // so clients of Ash don't need to know the details of workspace management. | 156 // so clients of Ash don't need to know the details of workspace management. |
| 170 bool IsImmersiveMode() const; | 157 bool IsImmersiveMode() const; |
| 171 | 158 |
| 172 private: | 159 private: |
| 173 // Creates each of the special window containers that holds windows of various | 160 // Creates each of the special window containers that holds windows of various |
| 174 // types in the shell UI. | 161 // types in the shell UI. |
| 175 void CreateContainersInRootWindow(aura::RootWindow* root_window); | 162 void CreateContainersInRootWindow(aura::RootWindow* root_window); |
| 176 | 163 |
| 177 scoped_ptr<aura::RootWindow> root_window_; | 164 scoped_ptr<aura::RootWindow> root_window_; |
| 178 RootWindowLayoutManager* root_window_layout_; | 165 RootWindowLayoutManager* root_window_layout_; |
| 179 | 166 |
| 180 scoped_ptr<StackingController> stacking_controller_; | 167 scoped_ptr<StackingController> stacking_controller_; |
| 181 | 168 |
| 182 // Widget containing system tray. | |
| 183 StatusAreaWidget* status_area_widget_; | |
| 184 | |
| 185 // The shelf for managing the launcher and the status widget. | 169 // The shelf for managing the launcher and the status widget. |
| 186 // RootWindowController does not own the shelf. Instead, it is owned | 170 // RootWindowController does not own the shelf. Instead, it is owned |
| 187 // by container of the status area. | 171 // by container of the status area. |
| 188 ShelfLayoutManager* shelf_; | 172 scoped_ptr<ShelfWidget> shelf_; |
| 189 | 173 |
| 190 // Manages layout of panels. Owned by PanelContainer. | 174 // Manages layout of panels. Owned by PanelContainer. |
| 191 PanelLayoutManager* panel_layout_manager_; | 175 PanelLayoutManager* panel_layout_manager_; |
| 192 | 176 |
| 193 scoped_ptr<Launcher> launcher_; | |
| 194 | |
| 195 scoped_ptr<SystemBackgroundController> system_background_; | 177 scoped_ptr<SystemBackgroundController> system_background_; |
| 196 scoped_ptr<BootSplashScreen> boot_splash_screen_; | 178 scoped_ptr<BootSplashScreen> boot_splash_screen_; |
| 197 | 179 |
| 198 scoped_ptr<ScreenDimmer> screen_dimmer_; | 180 scoped_ptr<ScreenDimmer> screen_dimmer_; |
| 199 scoped_ptr<WorkspaceController> workspace_controller_; | 181 scoped_ptr<WorkspaceController> workspace_controller_; |
| 200 | 182 |
| 201 // We need to own event handlers for various containers. | 183 // We need to own event handlers for various containers. |
| 202 scoped_ptr<ToplevelWindowEventHandler> default_container_handler_; | 184 scoped_ptr<ToplevelWindowEventHandler> default_container_handler_; |
| 203 scoped_ptr<ToplevelWindowEventHandler> always_on_top_container_handler_; | 185 scoped_ptr<ToplevelWindowEventHandler> always_on_top_container_handler_; |
| 204 scoped_ptr<ToplevelWindowEventHandler> modal_container_handler_; | 186 scoped_ptr<ToplevelWindowEventHandler> modal_container_handler_; |
| 205 scoped_ptr<ToplevelWindowEventHandler> lock_modal_container_handler_; | 187 scoped_ptr<ToplevelWindowEventHandler> lock_modal_container_handler_; |
| 206 scoped_ptr<ToplevelWindowEventHandler> panel_container_handler_; | 188 scoped_ptr<ToplevelWindowEventHandler> panel_container_handler_; |
| 207 | 189 |
| 208 DISALLOW_COPY_AND_ASSIGN(RootWindowController); | 190 DISALLOW_COPY_AND_ASSIGN(RootWindowController); |
| 209 }; | 191 }; |
| 210 | 192 |
| 211 } // namespace internal | 193 } // namespace internal |
| 212 } // ash | 194 } // ash |
| 213 | 195 |
| 214 #endif // ASH_ROOT_WINDOW_CONTROLLER_H_ | 196 #endif // ASH_ROOT_WINDOW_CONTROLLER_H_ |
| OLD | NEW |