Index: ash/shell.h |
diff --git a/ash/shell.h b/ash/shell.h |
index 45fb3271bc6ad8e712a9e203d7a4cf67225949ea..343af630921b20b4267869fcff45ed9de47d5453 100644 |
--- a/ash/shell.h |
+++ b/ash/shell.h |
@@ -10,6 +10,7 @@ |
#include <vector> |
#include "ash/ash_export.h" |
+#include "ash/common/session/session_state_observer.h" |
#include "ash/metrics/user_metrics_recorder.h" |
#include "ash/public/cpp/shelf_types.h" |
#include "ash/wm/cursor_manager_chromeos.h" |
@@ -138,7 +139,12 @@ class ScreenOrientationController; |
class ScreenshotController; |
class ScreenPinningController; |
class ScreenPositionController; |
+class SessionController; |
class SessionStateDelegate; |
+class ShelfController; |
+class ShelfDelegate; |
+class ShelfModel; |
+class ShelfWindowWatcher; |
class ShellDelegate; |
struct ShellInitParams; |
class ShellObserver; |
@@ -178,7 +184,8 @@ class SmsObserverTest; |
// |
// Upon creation, the Shell sets itself as the RootWindow's delegate, which |
// takes ownership of the Shell. |
-class ASH_EXPORT Shell : public SystemModalContainerEventFilterDelegate, |
+class ASH_EXPORT Shell : public SessionStateObserver, |
+ public SystemModalContainerEventFilterDelegate, |
public ui::EventTarget, |
public aura::client::ActivationChangeObserver { |
public: |
@@ -326,6 +333,10 @@ class ASH_EXPORT Shell : public SystemModalContainerEventFilterDelegate, |
NewWindowController* new_window_controller() { |
return new_window_controller_.get(); |
} |
+ SessionController* session_controller() { return session_controller_.get(); } |
+ ShelfController* shelf_controller() { return shelf_controller_.get(); } |
+ ShelfDelegate* shelf_delegate() { return shelf_delegate_.get(); } |
+ ShelfModel* shelf_model(); |
SystemTrayController* system_tray_controller() { |
return system_tray_controller_.get(); |
} |
@@ -483,6 +494,10 @@ class ASH_EXPORT Shell : public SystemModalContainerEventFilterDelegate, |
// returned object. |
ash::FirstRunHelper* CreateFirstRunHelper(); |
+ // Creates the ShelfView for each display and populates it with items. |
+ // Called after the user session is active and profile is available. |
+ void CreateShelfView(); |
+ |
void SetLargeCursorSizeInDip(int large_cursor_size_in_dip); |
// Toggles cursor compositing on/off. Native cursor is disabled when cursor |
@@ -518,6 +533,10 @@ class ASH_EXPORT Shell : public SystemModalContainerEventFilterDelegate, |
// Returns app list target visibility. |
bool GetAppListTargetVisibility() const; |
+ // Called when the login status changes. |
+ // TODO(oshima): Investigate if we can merge this and |OnLoginStateChanged|. |
+ void UpdateAfterLoginStatusChange(LoginStatus status); |
+ |
// Notifies observers that maximize mode has started, windows might still |
// animate. |
void NotifyMaximizeModeStarted(); |
@@ -584,6 +603,8 @@ class ASH_EXPORT Shell : public SystemModalContainerEventFilterDelegate, |
void SetSystemTrayDelegate(std::unique_ptr<SystemTrayDelegate> delegate); |
void DeleteSystemTrayDelegate(); |
+ void CreateShelfDelegate(); |
+ |
// Destroys all child windows including widgets across all roots. |
void CloseAllRootWindowChildWindows(); |
@@ -601,6 +622,9 @@ class ASH_EXPORT Shell : public SystemModalContainerEventFilterDelegate, |
aura::Window* gained_active, |
aura::Window* lost_active) override; |
+ // SessionStateObserver: |
+ void SessionStateChanged(session_manager::SessionState state) override; |
+ |
static Shell* instance_; |
// Only valid in mash, for classic ash this is null. |
@@ -640,6 +664,10 @@ class ASH_EXPORT Shell : public SystemModalContainerEventFilterDelegate, |
std::unique_ptr<NewWindowController> new_window_controller_; |
std::unique_ptr<PaletteDelegate> palette_delegate_; |
std::unique_ptr<ResizeShadowController> resize_shadow_controller_; |
+ std::unique_ptr<SessionController> session_controller_; |
+ std::unique_ptr<ShelfController> shelf_controller_; |
+ std::unique_ptr<ShelfDelegate> shelf_delegate_; |
+ std::unique_ptr<ShelfWindowWatcher> shelf_window_watcher_; |
std::unique_ptr<ShellDelegate> shell_delegate_; |
std::unique_ptr<SystemTrayController> system_tray_controller_; |
std::unique_ptr<SystemTrayDelegate> system_tray_delegate_; |