Index: ash/system/tray/system_tray.cc |
diff --git a/ash/system/tray/system_tray.cc b/ash/system/tray/system_tray.cc |
index 5116dc8bdadfc481ce78a01c33492529e86e9b61..d476b9a92d297827c59cfd301844a4a68cbceb6e 100644 |
--- a/ash/system/tray/system_tray.cc |
+++ b/ash/system/tray/system_tray.cc |
@@ -17,12 +17,12 @@ |
#include "ash/system/ime/tray_ime.h" |
#include "ash/system/locale/tray_locale.h" |
#include "ash/system/monitor/tray_monitor.h" |
-#include "ash/system/power/power_status_observer.h" |
#include "ash/system/power/power_supply_status.h" |
#include "ash/system/power/tray_power.h" |
#include "ash/system/settings/tray_settings.h" |
#include "ash/system/status_area_widget.h" |
#include "ash/system/tray/system_tray_delegate.h" |
+#include "ash/system/tray/system_tray_observers.h" |
#include "ash/system/tray/system_tray_item.h" |
#include "ash/system/tray/tray_bubble_wrapper.h" |
#include "ash/system/tray/tray_constants.h" |
@@ -106,22 +106,6 @@ using internal::SystemTrayBubble; |
SystemTray::SystemTray(internal::StatusAreaWidget* status_area_widget) |
: internal::TrayBackgroundView(status_area_widget), |
items_(), |
- accessibility_observer_(NULL), |
- audio_observer_(NULL), |
- bluetooth_observer_(NULL), |
- brightness_observer_(NULL), |
- caps_lock_observer_(NULL), |
- clock_observer_(NULL), |
- drive_observer_(NULL), |
- ime_observer_(NULL), |
- locale_observer_(NULL), |
-#if defined(OS_CHROMEOS) |
- network_observer_(NULL), |
- vpn_observer_(NULL), |
- sms_observer_(NULL), |
-#endif |
- update_observer_(NULL), |
- user_observer_(NULL), |
default_bubble_height_(0), |
hide_notifications_(false) { |
SetContentsBackground(); |
@@ -138,46 +122,55 @@ SystemTray::~SystemTray() { |
} |
} |
-void SystemTray::CreateItems() { |
+void SystemTray::InitializeTrayItems(SystemTrayDelegate* delegate) { |
+ internal::TrayBackgroundView::Initialize(); |
+ CreateItems(delegate); |
+} |
+ |
+void SystemTray::CreateItems(SystemTrayDelegate* delegate) { |
internal::TrayVolume* tray_volume = new internal::TrayVolume(); |
internal::TrayBluetooth* tray_bluetooth = new internal::TrayBluetooth(); |
internal::TrayBrightness* tray_brightness = new internal::TrayBrightness(); |
internal::TrayDate* tray_date = new internal::TrayDate(); |
internal::TrayPower* tray_power = new internal::TrayPower(); |
- internal::TrayIME* tray_ime = new internal::TrayIME; |
- internal::TrayUser* tray_user = new internal::TrayUser; |
+ internal::TrayIME* tray_ime = new internal::TrayIME(); |
+ internal::TrayUser* tray_user = new internal::TrayUser(); |
internal::TrayAccessibility* tray_accessibility = |
- new internal::TrayAccessibility; |
- internal::TrayCapsLock* tray_caps_lock = new internal::TrayCapsLock; |
- internal::TrayDrive* tray_drive = new internal::TrayDrive; |
- internal::TrayLocale* tray_locale = new internal::TrayLocale; |
- internal::TrayUpdate* tray_update = new internal::TrayUpdate; |
+ new internal::TrayAccessibility(); |
+ internal::TrayCapsLock* tray_caps_lock = new internal::TrayCapsLock(); |
+ internal::TrayDrive* tray_drive = new internal::TrayDrive(); |
+ internal::TrayLocale* tray_locale = new internal::TrayLocale(); |
+ internal::TrayUpdate* tray_update = new internal::TrayUpdate(); |
internal::TraySettings* tray_settings = new internal::TraySettings(); |
- |
- accessibility_observer_ = tray_accessibility; |
- audio_observer_ = tray_volume; |
- bluetooth_observer_ = tray_bluetooth; |
- brightness_observer_ = tray_brightness; |
- caps_lock_observer_ = tray_caps_lock; |
- clock_observer_ = tray_date; |
- drive_observer_ = tray_drive; |
- ime_observer_ = tray_ime; |
- locale_observer_ = tray_locale; |
- power_status_observers_.AddObserver(tray_power); |
- power_status_observers_.AddObserver(tray_settings); |
- update_observer_ = tray_update; |
- user_observer_ = tray_user; |
- |
#if defined(OS_CHROMEOS) |
- internal::TrayDisplay* tray_display = new internal::TrayDisplay; |
- internal::TrayNetwork* tray_network = new internal::TrayNetwork; |
- internal::TrayVPN* tray_vpn = new internal::TrayVPN; |
+ internal::TrayDisplay* tray_display = new internal::TrayDisplay(); |
+ internal::TrayNetwork* tray_network = new internal::TrayNetwork(); |
+ internal::TrayVPN* tray_vpn = new internal::TrayVPN(); |
internal::TraySms* tray_sms = new internal::TraySms(); |
- network_observer_ = tray_network; |
- vpn_observer_ = tray_vpn; |
- sms_observer_ = tray_sms; |
#endif |
+ SystemTrayObservers* observers = delegate->GetSystemTrayObservers(); |
+ if (observers) { |
+ observers->accessibility_observers().AddObserver(tray_accessibility); |
+ observers->audio_observers().AddObserver(tray_volume); |
+ observers->bluetooth_observers().AddObserver(tray_bluetooth); |
+ observers->brightness_observers().AddObserver(tray_brightness); |
+ observers->caps_lock_observers().AddObserver(tray_caps_lock); |
+ observers->clock_observers().AddObserver(tray_date); |
+ observers->drive_observers().AddObserver(tray_drive); |
+ observers->ime_observers().AddObserver(tray_ime); |
+ observers->locale_observers().AddObserver(tray_locale); |
+ observers->power_status_observers().AddObserver(tray_power); |
+ observers->power_status_observers().AddObserver(tray_settings); |
+ observers->update_observers().AddObserver(tray_update); |
+ observers->user_observers().AddObserver(tray_user); |
+#if defined(OS_CHROMEOS) |
+ observers->network_observers().AddObserver(tray_network); |
+ observers->vpn_observers().AddObserver(tray_vpn); |
+ observers->sms_observers().AddObserver(tray_sms); |
+#endif |
+ } |
+ |
AddTrayItem(tray_user); |
AddTrayItem(tray_ime); |
AddTrayItem(tray_power); |
@@ -492,11 +485,6 @@ void SystemTray::UpdateNotificationBubble() { |
status_area_widget()->SetHideWebNotifications(true); |
} |
-void SystemTray::Initialize() { |
- internal::TrayBackgroundView::Initialize(); |
- CreateItems(); |
-} |
- |
void SystemTray::SetShelfAlignment(ShelfAlignment alignment) { |
if (alignment == shelf_alignment()) |
return; |