summaryrefslogtreecommitdiffstats
path: root/ash/shell.cc
diff options
context:
space:
mode:
authorstevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-30 23:12:02 +0000
committerstevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-30 23:12:02 +0000
commit6d6546e0497dae4572bcbf1edbc3950b87046256 (patch)
tree0203858fa083a153efb520c1c43d1ee365ec5db8 /ash/shell.cc
parent43c15cbdfa1af7e5de8ebfcd423b0f84b96795b8 (diff)
downloadchromium_src-6d6546e0497dae4572bcbf1edbc3950b87046256.zip
chromium_src-6d6546e0497dae4572bcbf1edbc3950b87046256.tar.gz
chromium_src-6d6546e0497dae4572bcbf1edbc3950b87046256.tar.bz2
Prepare to support Ash notification tray:
* Separate status area widget from system tray * Support adding multiple trays to status area widget * Move the background animation into a common base class BUG=124914 TEST=Status area should look and behave the same as before. TBR=ben for ash/ OWNER Review URL: https://chromiumcodereview.appspot.com/10447040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@139671 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/shell.cc')
-rw-r--r--ash/shell.cc38
1 files changed, 25 insertions, 13 deletions
diff --git a/ash/shell.cc b/ash/shell.cc
index 0b137f18..ebf4a19 100644
--- a/ash/shell.cc
+++ b/ash/shell.cc
@@ -27,6 +27,7 @@
#include "ash/shell_window_ids.h"
#include "ash/system/bluetooth/bluetooth_observer.h"
#include "ash/system/network/network_observer.h"
+#include "ash/system/status_area_widget.h"
#include "ash/system/tray/system_tray.h"
#include "ash/system/tray/system_tray_delegate.h"
#include "ash/tooltips/tooltip_controller.h"
@@ -423,7 +424,7 @@ class DummySystemTrayDelegate : public SystemTrayDelegate {
virtual void ToggleWifi() OVERRIDE {
wifi_enabled_ = !wifi_enabled_;
ash::NetworkObserver* observer =
- ash::Shell::GetInstance()->tray()->network_observer();
+ ash::Shell::GetInstance()->system_tray()->network_observer();
if (observer) {
ash::NetworkIconInfo info;
observer->OnNetworkRefresh(info);
@@ -433,7 +434,7 @@ class DummySystemTrayDelegate : public SystemTrayDelegate {
virtual void ToggleMobile() OVERRIDE {
cellular_enabled_ = !cellular_enabled_;
ash::NetworkObserver* observer =
- ash::Shell::GetInstance()->tray()->network_observer();
+ ash::Shell::GetInstance()->system_tray()->network_observer();
if (observer) {
ash::NetworkIconInfo info;
observer->OnNetworkRefresh(info);
@@ -443,7 +444,7 @@ class DummySystemTrayDelegate : public SystemTrayDelegate {
virtual void ToggleBluetooth() OVERRIDE {
bluetooth_enabled_ = !bluetooth_enabled_;
ash::BluetoothObserver* observer =
- ash::Shell::GetInstance()->tray()->bluetooth_observer();
+ ash::Shell::GetInstance()->system_tray()->bluetooth_observer();
if (observer)
observer->OnBluetoothRefresh();
}
@@ -549,7 +550,9 @@ Shell::Shell(ShellDelegate* delegate)
delegate_(delegate),
shelf_(NULL),
panel_layout_manager_(NULL),
- root_window_layout_(NULL) {
+ root_window_layout_(NULL),
+ status_area_widget_(NULL),
+ browser_context_(NULL) {
gfx::Screen::SetInstance(screen_);
ui_controls::InstallUIControlsAura(CreateUIControlsAura(root_window_.get()));
}
@@ -581,7 +584,7 @@ Shell::~Shell() {
workspace_controller_.reset();
// The system tray needs to be reset before all the windows are destroyed.
- tray_.reset();
+ system_tray_.reset();
tray_delegate_.reset();
// Desroy secondary monitor's widgets before all the windows are destroyed.
@@ -726,13 +729,22 @@ void Shell::Init() {
event_client_.reset(new internal::EventClientImpl(root_window));
- tray_.reset(new SystemTray());
- if (delegate_.get())
- tray_delegate_.reset(delegate_->CreateSystemTrayDelegate(tray_.get()));
+ status_area_widget_ = new internal::StatusAreaWidget;
+
+ system_tray_.reset(new SystemTray());
+ status_area_widget_->AddTray(system_tray_.get());
+ system_tray_->Initialize();
+
+ if (delegate_.get()) {
+ tray_delegate_.reset(delegate_->CreateSystemTrayDelegate(
+ system_tray_.get()));
+ }
if (!tray_delegate_.get())
tray_delegate_.reset(new DummySystemTrayDelegate());
- tray_->CreateItems();
- tray_->CreateWidget();
+
+ system_tray_->CreateItems(); // Called after delegate is created.
+
+ status_area_widget_->Show();
// This controller needs to be set before SetupManagedWindowMode.
desktop_background_controller_.reset(new DesktopBackgroundController);
@@ -749,7 +761,7 @@ void Shell::Init() {
}
focus_cycler_.reset(new internal::FocusCycler());
- focus_cycler_->AddWidget(tray_->widget());
+ focus_cycler_->AddWidget(status_area_widget_);
if (!delegate_.get() || delegate_->IsUserLoggedIn())
CreateLauncher();
@@ -951,10 +963,10 @@ void Shell::InitRootWindowForSecondaryMonitor(aura::RootWindow* root) {
void Shell::InitLayoutManagers() {
DCHECK(root_window_layout_);
- DCHECK(tray_->widget());
+ DCHECK(status_area_widget_);
internal::ShelfLayoutManager* shelf_layout_manager =
- new internal::ShelfLayoutManager(tray_->widget());
+ new internal::ShelfLayoutManager(status_area_widget_);
GetContainer(internal::kShellWindowId_LauncherContainer)->
SetLayoutManager(shelf_layout_manager);
shelf_ = shelf_layout_manager;