summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-14 01:11:00 +0000
committerstevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-14 01:11:00 +0000
commit83b2b84c1e4bc8434630f58e88bcf1a93b33ded6 (patch)
treee6612ff5286a73ed99df758ee600f331396e51d6
parentd8f1004bcf08a2c0d629198a3695808b3a400487 (diff)
downloadchromium_src-83b2b84c1e4bc8434630f58e88bcf1a93b33ded6.zip
chromium_src-83b2b84c1e4bc8434630f58e88bcf1a93b33ded6.tar.gz
chromium_src-83b2b84c1e4bc8434630f58e88bcf1a93b33ded6.tar.bz2
Add SystemTrayObservers
Once there is more than one SystemTray instance, we will need to support observer lists so that multiple tray items can be notified. Hosting the observer lists in a separate class owned by ass::SystemTrayDelegate seemed like the most forward approach. BUG=159543 For ash.gyp: TBR=sky@chromium.org Review URL: https://chromiumcodereview.appspot.com/11312139 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@167548 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--ash/ash.gyp2
-rw-r--r--ash/shell.cc9
-rw-r--r--ash/shell.h6
-rw-r--r--ash/system/status_area_widget.cc9
-rw-r--r--ash/system/tray/system_tray.cc91
-rw-r--r--ash/system/tray/system_tray.h81
-rw-r--r--ash/system/tray/system_tray_notifier.cc237
-rw-r--r--ash/system/tray/system_tray_notifier.h117
-rw-r--r--chrome/browser/chromeos/locale_change_guard.cc7
-rw-r--r--chrome/browser/chromeos/network_message_observer.cc9
-rw-r--r--chrome/browser/chromeos/sms_observer.cc4
-rw-r--r--chrome/browser/chromeos/status/data_promo_notification.cc17
-rw-r--r--chrome/browser/chromeos/system/ash_system_tray_delegate.cc128
13 files changed, 474 insertions, 243 deletions
diff --git a/ash/ash.gyp b/ash/ash.gyp
index 649062c4..ac60ac8 100644
--- a/ash/ash.gyp
+++ b/ash/ash.gyp
@@ -213,6 +213,8 @@
'system/tray/system_tray_delegate.h',
'system/tray/system_tray_item.cc',
'system/tray/system_tray_item.h',
+ 'system/tray/system_tray_notifier.cc',
+ 'system/tray/system_tray_notifier.h',
'system/tray/test_system_tray_delegate.cc',
'system/tray/test_system_tray_delegate.h',
'system/tray/tray_background_view.cc',
diff --git a/ash/shell.cc b/ash/shell.cc
index bac0bb6..45dc886 100644
--- a/ash/shell.cc
+++ b/ash/shell.cc
@@ -29,6 +29,7 @@
#include "ash/shell_window_ids.h"
#include "ash/system/status_area_widget.h"
#include "ash/system/tray/system_tray_delegate.h"
+#include "ash/system/tray/system_tray_notifier.h"
#include "ash/tooltips/tooltip_controller.h"
#include "ash/touch/touch_observer_hud.h"
#include "ash/wm/activation_controller.h"
@@ -257,6 +258,11 @@ Shell::~Shell() {
// Destroy SystemTrayDelegate before destroying the status area(s).
system_tray_delegate_.reset();
+ // Destroy SystemTrayNotifier immediately after destroying SystemTrayDelegate
+ // so that it is still available when shutting down the UI, but not after
+ // the notifier observers have been destroyed.
+ system_tray_notifier_.reset();
+
// Destroy all child windows including widgets.
display_controller_->CloseChildWindows();
@@ -495,6 +501,9 @@ void Shell::Init() {
shadow_controller_.reset(new internal::ShadowController());
}
+ // Create system_tray_notifier_ before the delegate.
+ system_tray_notifier_.reset(new ash::SystemTrayNotifier());
+
// Initialize system_tray_delegate_ before initializing StatusAreaWidget.
system_tray_delegate_.reset(delegate()->CreateSystemTrayDelegate());
if (!system_tray_delegate_.get())
diff --git a/ash/shell.h b/ash/shell.h
index 8e27380..72073dc 100644
--- a/ash/shell.h
+++ b/ash/shell.h
@@ -75,6 +75,7 @@ class ShellDelegate;
class ShellObserver;
class SystemTray;
class SystemTrayDelegate;
+class SystemTrayNotifier;
class UserActivityDetector;
class UserWallpaperDelegate;
class VideoDetector;
@@ -372,6 +373,10 @@ class ASH_EXPORT Shell : internal::SystemModalContainerEventFilterDelegate,
return system_tray_delegate_.get();
}
+ SystemTrayNotifier* system_tray_notifier() {
+ return system_tray_notifier_.get();
+ }
+
static void set_initially_hide_cursor(bool hide) {
initially_hide_cursor_ = hide;
}
@@ -460,6 +465,7 @@ class ASH_EXPORT Shell : internal::SystemModalContainerEventFilterDelegate,
scoped_ptr<ShellDelegate> delegate_;
scoped_ptr<SystemTrayDelegate> system_tray_delegate_;
+ scoped_ptr<SystemTrayNotifier> system_tray_notifier_;
scoped_ptr<UserWallpaperDelegate> user_wallpaper_delegate_;
scoped_ptr<CapsLockDelegate> caps_lock_delegate_;
diff --git a/ash/system/status_area_widget.cc b/ash/system/status_area_widget.cc
index b487de5..c1b165f 100644
--- a/ash/system/status_area_widget.cc
+++ b/ash/system/status_area_widget.cc
@@ -46,13 +46,14 @@ StatusAreaWidget::~StatusAreaWidget() {
void StatusAreaWidget::CreateTrayViews() {
AddSystemTray();
AddWebNotificationTray();
- // Initialize() must be called after all trays have been created.
+ SystemTrayDelegate* delegate = ash::Shell::GetInstance()->tray_delegate();
+ DCHECK(delegate);
+ // Initialize after all trays have been created.
if (system_tray_)
- system_tray_->Initialize();
+ system_tray_->InitializeTrayItems(delegate);
if (web_notification_tray_)
web_notification_tray_->Initialize();
- UpdateAfterLoginStatusChange(
- ash::Shell::GetInstance()->tray_delegate()->GetUserLoginStatus());
+ UpdateAfterLoginStatusChange(delegate->GetUserLoginStatus());
}
void StatusAreaWidget::Shutdown() {
diff --git a/ash/system/tray/system_tray.cc b/ash/system/tray/system_tray.cc
index e7d8385..9ba7800 100644
--- a/ash/system/tray/system_tray.cc
+++ b/ash/system/tray/system_tray.cc
@@ -18,12 +18,12 @@
#include "ash/system/locale/tray_locale.h"
#include "ash/system/logout_button/tray_logout_button.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_notifier.h"
#include "ash/system/tray/system_tray_item.h"
#include "ash/system/tray/tray_bubble_wrapper.h"
#include "ash/system/tray/tray_constants.h"
@@ -107,23 +107,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),
- logout_button_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();
@@ -140,47 +123,54 @@ 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;
+ 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::TrayLogoutButton* tray_logout_button =
new internal::TrayLogoutButton();
- internal::TrayUpdate* tray_update = new internal::TrayUpdate;
+ 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;
- logout_button_observer_ = tray_logout_button;
- 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
+
+ SystemTrayNotifier* notifier = Shell::GetInstance()->system_tray_notifier();
+ notifier->AddAccessibilityObserver(tray_accessibility);
+ notifier->AddAudioObserver(tray_volume);
+ notifier->AddBluetoothObserver(tray_bluetooth);
+ notifier->AddBrightnessObserver(tray_brightness);
+ notifier->AddCapsLockObserver(tray_caps_lock);
+ notifier->AddClockObserver(tray_date);
+ notifier->AddDriveObserver(tray_drive);
+ notifier->AddIMEObserver(tray_ime);
+ notifier->AddLocaleObserver(tray_locale);
+ notifier->AddLogoutButtonObserver(tray_logout_button);
+ notifier->AddPowerStatusObserver(tray_power);
+ notifier->AddPowerStatusObserver(tray_settings);
+ notifier->AddUpdateObserver(tray_update);
+ notifier->AddUserObserver(tray_user);
+#if defined(OS_CHROMEOS)
+ notifier->AddNetworkObserver(tray_network);
+ notifier->AddVpnObserver(tray_vpn);
+ notifier->AddSmsObserver(tray_sms);
#endif
AddTrayItem(tray_logout_button);
@@ -498,11 +488,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;
diff --git a/ash/system/tray/system_tray.h b/ash/system/tray/system_tray.h
index a42632f..57cc2e7 100644
--- a/ash/system/tray/system_tray.h
+++ b/ash/system/tray/system_tray.h
@@ -34,6 +34,7 @@ class IMEObserver;
class LocaleObserver;
class LogoutButtonObserver;
class PowerStatusObserver;
+class SystemTrayDelegate;
class UpdateObserver;
class UserObserver;
#if defined(OS_CHROMEOS)
@@ -61,8 +62,9 @@ class ASH_EXPORT SystemTray : public internal::TrayBackgroundView,
explicit SystemTray(internal::StatusAreaWidget* status_area_widget);
virtual ~SystemTray();
- // Creates the default set of items for the sytem tray.
- void CreateItems();
+ // Calls TrayBackgroundView::Initialize(), creates the tray items, and
+ // adds them to SystemTrayNotifier.
+ void InitializeTrayItems(SystemTrayDelegate* delegate);
// Adds a new item in the tray.
void AddTrayItem(SystemTrayItem* item);
@@ -118,64 +120,12 @@ class ASH_EXPORT SystemTray : public internal::TrayBackgroundView,
// Returns true if the mouse is inside the notification bubble.
bool IsMouseInNotificationBubble() const;
- AccessibilityObserver* accessibility_observer() {
- return accessibility_observer_;
- }
- AudioObserver* audio_observer() {
- return audio_observer_;
- }
- BluetoothObserver* bluetooth_observer() {
- return bluetooth_observer_;
- }
- BrightnessObserver* brightness_observer() {
- return brightness_observer_;
- }
- CapsLockObserver* caps_lock_observer() {
- return caps_lock_observer_;
- }
- ClockObserver* clock_observer() {
- return clock_observer_;
- }
- DriveObserver* drive_observer() {
- return drive_observer_;
- }
- IMEObserver* ime_observer() {
- return ime_observer_;
- }
- LocaleObserver* locale_observer() {
- return locale_observer_;
- }
- LogoutButtonObserver* logout_button_observer() {
- return logout_button_observer_;
- }
-#if defined(OS_CHROMEOS)
- NetworkObserver* network_observer() {
- return network_observer_;
- }
- NetworkObserver* vpn_observer() {
- return vpn_observer_;
- }
- SmsObserver* sms_observer() {
- return sms_observer_;
- }
-#endif
- ObserverList<PowerStatusObserver>& power_status_observers() {
- return power_status_observers_;
- }
- UpdateObserver* update_observer() {
- return update_observer_;
- }
- UserObserver* user_observer() {
- return user_observer_;
- }
-
// Accessors for testing.
// Returns true if the bubble exists.
bool CloseBubbleForTest() const;
// Overridden from TrayBackgroundView.
- virtual void Initialize() OVERRIDE;
virtual void SetShelfAlignment(ShelfAlignment alignment) OVERRIDE;
virtual void AnchorUpdated() OVERRIDE;
virtual string16 GetAccessibleNameForTray() OVERRIDE;
@@ -194,6 +144,9 @@ class ASH_EXPORT SystemTray : public internal::TrayBackgroundView,
virtual void HideBubble(const views::TrayBubbleView* bubble_view) OVERRIDE;
private:
+ // Creates the default set of items for the sytem tray.
+ void CreateItems(SystemTrayDelegate* delegate);
+
// Returns true if the system_bubble_ exists and is of type |type|.
bool HasSystemBubbleType(internal::SystemTrayBubble::BubbleType type);
@@ -237,26 +190,6 @@ class ASH_EXPORT SystemTray : public internal::TrayBackgroundView,
// Mappings of system tray item and it's view in the tray.
std::map<SystemTrayItem*, views::View*> tray_item_map_;
- // These observers are not owned by the tray.
- AccessibilityObserver* accessibility_observer_;
- AudioObserver* audio_observer_;
- BluetoothObserver* bluetooth_observer_;
- BrightnessObserver* brightness_observer_;
- CapsLockObserver* caps_lock_observer_;
- ClockObserver* clock_observer_;
- DriveObserver* drive_observer_;
- IMEObserver* ime_observer_;
- LocaleObserver* locale_observer_;
- LogoutButtonObserver* logout_button_observer_;
-#if defined(OS_CHROMEOS)
- NetworkObserver* network_observer_;
- NetworkObserver* vpn_observer_;
- SmsObserver* sms_observer_;
-#endif
- ObserverList<PowerStatusObserver> power_status_observers_;
- UpdateObserver* update_observer_;
- UserObserver* user_observer_;
-
// Bubble for default and detailed views.
scoped_ptr<internal::SystemBubbleWrapper> system_bubble_;
diff --git a/ash/system/tray/system_tray_notifier.cc b/ash/system/tray/system_tray_notifier.cc
new file mode 100644
index 0000000..66d490d
--- /dev/null
+++ b/ash/system/tray/system_tray_notifier.cc
@@ -0,0 +1,237 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/system/tray/system_tray_notifier.h"
+
+namespace ash {
+
+SystemTrayNotifier::SystemTrayNotifier() {
+}
+
+SystemTrayNotifier::~SystemTrayNotifier() {
+}
+
+void SystemTrayNotifier::AddAccessibilityObserver(
+ AccessibilityObserver* observer) {
+ accessibility_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddAudioObserver(AudioObserver* observer) {
+ audio_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddBluetoothObserver(BluetoothObserver* observer) {
+ bluetooth_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddBrightnessObserver(BrightnessObserver* observer) {
+ brightness_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddCapsLockObserver(CapsLockObserver* observer) {
+ caps_lock_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddClockObserver(ClockObserver* observer) {
+ clock_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddDriveObserver(DriveObserver* observer) {
+ drive_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddIMEObserver(IMEObserver* observer) {
+ ime_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddLocaleObserver(LocaleObserver* observer) {
+ locale_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddLogoutButtonObserver(
+ LogoutButtonObserver* observer) {
+ logout_button_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddPowerStatusObserver(
+ PowerStatusObserver* observer) {
+ power_status_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddUpdateObserver(UpdateObserver* observer) {
+ update_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddUserObserver(UserObserver* observer) {
+ user_observers_.AddObserver(observer);
+}
+
+#if defined(OS_CHROMEOS)
+void SystemTrayNotifier::AddNetworkObserver(NetworkObserver* observer) {
+ network_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddVpnObserver(NetworkObserver* observer) {
+ vpn_observers_.AddObserver(observer);
+}
+
+void SystemTrayNotifier::AddSmsObserver(SmsObserver* observer) {
+ sms_observers_.AddObserver(observer);
+}
+#endif
+
+void SystemTrayNotifier::NotifyAccessibilityModeChanged(
+ bool spoken_feedback_enabled) {
+ FOR_EACH_OBSERVER(
+ AccessibilityObserver,
+ accessibility_observers_,
+ OnAccessibilityModeChanged(spoken_feedback_enabled));
+}
+
+void SystemTrayNotifier::NotifyVolumeChanged(float level) {
+ FOR_EACH_OBSERVER(AudioObserver,
+ audio_observers_,
+ OnVolumeChanged(level));
+}
+
+void SystemTrayNotifier::NotifyMuteToggled() {
+ FOR_EACH_OBSERVER(AudioObserver,
+ audio_observers_,
+ OnMuteToggled());
+}
+
+void SystemTrayNotifier::NotifyRefreshBluetooth() {
+ FOR_EACH_OBSERVER(BluetoothObserver,
+ bluetooth_observers_,
+ OnBluetoothRefresh());
+}
+
+void SystemTrayNotifier::NotifyBluetoothDiscoveringChanged() {
+ FOR_EACH_OBSERVER(BluetoothObserver,
+ bluetooth_observers_,
+ OnBluetoothDiscoveringChanged());
+}
+
+void SystemTrayNotifier::NotifyBrightnessChanged(double level,
+ bool user_initiated) {
+ FOR_EACH_OBSERVER(
+ BrightnessObserver,
+ brightness_observers_,
+ OnBrightnessChanged(level, user_initiated));
+}
+
+void SystemTrayNotifier::NotifyCapsLockChanged(
+ bool enabled,
+ bool search_mapped_to_caps_lock) {
+ FOR_EACH_OBSERVER(CapsLockObserver,
+ caps_lock_observers_,
+ OnCapsLockChanged(enabled, search_mapped_to_caps_lock));
+}
+
+void SystemTrayNotifier::NotifyRefreshClock() {
+ FOR_EACH_OBSERVER(ClockObserver, clock_observers_, Refresh());
+}
+
+void SystemTrayNotifier::NotifyDateFormatChanged() {
+ FOR_EACH_OBSERVER(ClockObserver,
+ clock_observers_,
+ OnDateFormatChanged());
+}
+
+void SystemTrayNotifier::NotifyRefreshDrive(DriveOperationStatusList& list) {
+ FOR_EACH_OBSERVER(DriveObserver,
+ drive_observers_,
+ OnDriveRefresh(list));
+}
+
+void SystemTrayNotifier::NotifyRefreshIME(bool show_message) {
+ FOR_EACH_OBSERVER(IMEObserver,
+ ime_observers_,
+ OnIMERefresh(show_message));
+}
+
+void SystemTrayNotifier::NotifyShowLoginButtonChanged(bool show_login_button) {
+ FOR_EACH_OBSERVER(LogoutButtonObserver,
+ logout_button_observers_,
+ OnShowLogoutButtonInTrayChanged(show_login_button));
+}
+
+void SystemTrayNotifier::NotifyLocaleChanged(
+ LocaleObserver::Delegate* delegate,
+ const std::string& cur_locale,
+ const std::string& from_locale,
+ const std::string& to_locale) {
+ FOR_EACH_OBSERVER(
+ LocaleObserver,
+ locale_observers_,
+ OnLocaleChanged(delegate, cur_locale, from_locale, to_locale));
+}
+
+void SystemTrayNotifier::NotifyPowerStatusChanged(
+ const PowerSupplyStatus& power_status) {
+ FOR_EACH_OBSERVER(PowerStatusObserver,
+ power_status_observers_,
+ OnPowerStatusChanged(power_status));
+}
+
+void SystemTrayNotifier::NotifyUpdateRecommended(
+ UpdateObserver::UpdateSeverity severity) {
+ FOR_EACH_OBSERVER(UpdateObserver,
+ update_observers_,
+ OnUpdateRecommended(severity));
+}
+
+void SystemTrayNotifier::NotifyUserUpdate() {
+ FOR_EACH_OBSERVER(UserObserver,
+ user_observers_,
+ OnUserUpdate());
+}
+
+#if defined(OS_CHROMEOS)
+
+void SystemTrayNotifier::NotifyRefreshNetwork(const NetworkIconInfo &info) {
+ FOR_EACH_OBSERVER(NetworkObserver,
+ network_observers_,
+ OnNetworkRefresh(info));
+}
+
+void SystemTrayNotifier::NotifySetNetworkMessage(
+ NetworkTrayDelegate* delegate,
+ NetworkObserver::MessageType message_type,
+ const string16& title,
+ const string16& message,
+ const std::vector<string16>& links) {
+ FOR_EACH_OBSERVER(NetworkObserver,
+ network_observers_,
+ SetNetworkMessage(
+ delegate, message_type, title, message, links));
+}
+
+void SystemTrayNotifier::NotifyClearNetworkMessage(
+ NetworkObserver::MessageType message_type) {
+ FOR_EACH_OBSERVER(NetworkObserver,
+ network_observers_,
+ ClearNetworkMessage(message_type));
+}
+
+void SystemTrayNotifier::NotifyVpnRefreshNetwork(const NetworkIconInfo &info) {
+ FOR_EACH_OBSERVER(NetworkObserver,
+ vpn_observers_,
+ OnNetworkRefresh(info));
+}
+
+void SystemTrayNotifier::NotifyWillToggleWifi() {
+ FOR_EACH_OBSERVER(NetworkObserver,
+ network_observers_,
+ OnWillToggleWifi());
+}
+
+void SystemTrayNotifier::NotifyAddSmsMessage(
+ const base::DictionaryValue& message) {
+ FOR_EACH_OBSERVER(SmsObserver, sms_observers_, AddMessage(message));
+}
+
+#endif // OS_CHROMEOS
+
+} // namespace ash
diff --git a/ash/system/tray/system_tray_notifier.h b/ash/system/tray/system_tray_notifier.h
new file mode 100644
index 0000000..b755167
--- /dev/null
+++ b/ash/system/tray/system_tray_notifier.h
@@ -0,0 +1,117 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_
+#define ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_
+
+#include <string>
+#include <vector>
+
+#include "ash/ash_export.h"
+#include "ash/system/audio/audio_observer.h"
+#include "ash/system/bluetooth/bluetooth_observer.h"
+#include "ash/system/brightness/brightness_observer.h"
+#include "ash/system/chromeos/network/network_observer.h"
+#include "ash/system/chromeos/network/sms_observer.h"
+#include "ash/system/date/clock_observer.h"
+#include "ash/system/drive/drive_observer.h"
+#include "ash/system/ime/ime_observer.h"
+#include "ash/system/locale/locale_observer.h"
+#include "ash/system/logout_button/logout_button_observer.h"
+#include "ash/system/power/power_status_observer.h"
+#include "ash/system/tray_accessibility.h"
+#include "ash/system/tray_caps_lock.h"
+#include "ash/system/user/update_observer.h"
+#include "ash/system/user/user_observer.h"
+#include "base/observer_list.h"
+
+#if defined(OS_CHROMEOS)
+#include "ash/system/chromeos/network/network_observer.h"
+#include "ash/system/chromeos/network/sms_observer.h"
+#endif
+
+namespace ash {
+
+class ASH_EXPORT SystemTrayNotifier {
+public:
+ SystemTrayNotifier();
+ ~SystemTrayNotifier();
+
+ void AddAccessibilityObserver(AccessibilityObserver* observer);
+ void AddAudioObserver(AudioObserver* observer);
+ void AddBluetoothObserver(BluetoothObserver* observer);
+ void AddBrightnessObserver(BrightnessObserver* observer);
+ void AddCapsLockObserver(CapsLockObserver* observer);
+ void AddClockObserver(ClockObserver* observer);
+ void AddDriveObserver(DriveObserver* observer);
+ void AddIMEObserver(IMEObserver* observer);
+ void AddLocaleObserver(LocaleObserver* observer);
+ void AddLogoutButtonObserver(LogoutButtonObserver* observer);
+ void AddPowerStatusObserver(PowerStatusObserver* observer);
+ void AddUpdateObserver(UpdateObserver* observer);
+ void AddUserObserver(UserObserver* observer);
+#if defined(OS_CHROMEOS)
+ void AddNetworkObserver(NetworkObserver* observer);
+ void AddVpnObserver(NetworkObserver* observer);
+ void AddSmsObserver(SmsObserver* observer);
+#endif
+
+ void NotifyAccessibilityModeChanged(bool spoken_feedback_enabled);
+ void NotifyVolumeChanged(float level);
+ void NotifyMuteToggled();
+ void NotifyRefreshBluetooth();
+ void NotifyBluetoothDiscoveringChanged();
+ void NotifyBrightnessChanged(double level, bool user_initialted);
+ void NotifyCapsLockChanged(bool enabled, bool search_mapped_to_caps_lock);
+ void NotifyRefreshClock();
+ void NotifyDateFormatChanged();
+ void NotifyRefreshDrive(DriveOperationStatusList& list);
+ void NotifyRefreshIME(bool show_message);
+ void NotifyShowLoginButtonChanged(bool show_login_button);
+ void NotifyLocaleChanged(LocaleObserver::Delegate* delegate,
+ const std::string& cur_locale,
+ const std::string& from_locale,
+ const std::string& to_locale);
+ void NotifyPowerStatusChanged(const PowerSupplyStatus& power_status);
+ void NotifyUpdateRecommended(UpdateObserver::UpdateSeverity severity);
+ void NotifyUserUpdate();
+#if defined(OS_CHROMEOS)
+ void NotifyRefreshNetwork(const NetworkIconInfo &info);
+ void NotifySetNetworkMessage(NetworkTrayDelegate* delegate,
+ NetworkObserver::MessageType message_type,
+ const string16& title,
+ const string16& message,
+ const std::vector<string16>& links);
+ void NotifyClearNetworkMessage(NetworkObserver::MessageType message_type);
+ void NotifyVpnRefreshNetwork(const NetworkIconInfo &info);
+ void NotifyWillToggleWifi();
+ void NotifyAddSmsMessage(const base::DictionaryValue& message);
+#endif
+
+ private:
+ ObserverList<AccessibilityObserver> accessibility_observers_;
+ ObserverList<AudioObserver> audio_observers_;
+ ObserverList<BluetoothObserver> bluetooth_observers_;
+ ObserverList<BrightnessObserver> brightness_observers_;
+ ObserverList<CapsLockObserver> caps_lock_observers_;
+ ObserverList<ClockObserver> clock_observers_;
+ ObserverList<DriveObserver> drive_observers_;
+ ObserverList<IMEObserver> ime_observers_;
+ ObserverList<LocaleObserver> locale_observers_;
+ ObserverList<LogoutButtonObserver> logout_button_observers_;
+ ObserverList<PowerStatusObserver> power_status_observers_;
+ ObserverList<UpdateObserver> update_observers_;
+ ObserverList<UserObserver> user_observers_;
+#if defined(OS_CHROMEOS)
+ ObserverList<NetworkObserver> network_observers_;
+ ObserverList<NetworkObserver> vpn_observers_;
+ ObserverList<SmsObserver> sms_observers_;
+#endif
+
+ DISALLOW_COPY_AND_ASSIGN(SystemTrayNotifier);
+};
+
+} // namespace ash
+
+#endif // ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_
diff --git a/chrome/browser/chromeos/locale_change_guard.cc b/chrome/browser/chromeos/locale_change_guard.cc
index 606bfb4..80108ab 100644
--- a/chrome/browser/chromeos/locale_change_guard.cc
+++ b/chrome/browser/chromeos/locale_change_guard.cc
@@ -6,6 +6,7 @@
#include "ash/shell.h"
#include "ash/system/tray/system_tray.h"
+#include "ash/system/tray/system_tray_notifier.h"
#include "base/bind.h"
#include "base/utf_string_conversions.h"
#include "chrome/app/chrome_command_ids.h"
@@ -171,10 +172,8 @@ void LocaleChangeGuard::Check() {
PrepareChangingLocale(from_locale, to_locale);
}
- if (ash::Shell::GetInstance()->status_area_widget()) {
- ash::Shell::GetInstance()->system_tray()->locale_observer()->
- OnLocaleChanged(this, cur_locale, from_locale_, to_locale_);
- }
+ ash::Shell::GetInstance()->system_tray_notifier()->NotifyLocaleChanged(
+ this, cur_locale, from_locale_, to_locale_);
}
void LocaleChangeGuard::AcceptLocaleChange() {
diff --git a/chrome/browser/chromeos/network_message_observer.cc b/chrome/browser/chromeos/network_message_observer.cc
index 5e24899..5501d76 100644
--- a/chrome/browser/chromeos/network_message_observer.cc
+++ b/chrome/browser/chromeos/network_message_observer.cc
@@ -8,6 +8,7 @@
#include "ash/shell_delegate.h"
#include "ash/system/chromeos/network/network_observer.h"
#include "ash/system/tray/system_tray.h"
+#include "ash/system/tray/system_tray_notifier.h"
#include "base/bind.h"
#include "base/callback.h"
#include "base/stl_util.h"
@@ -71,8 +72,8 @@ class NetworkMessageNotification : public ash::NetworkTrayDelegate {
}
void Hide() {
- ash::Shell::GetInstance()->system_tray()->network_observer()->
- ClearNetworkMessage(error_type_);
+ ash::Shell::GetInstance()->system_tray_notifier()->
+ NotifyClearNetworkMessage(error_type_);
}
void SetTitle(const string16& title) {
@@ -86,8 +87,8 @@ class NetworkMessageNotification : public ash::NetworkTrayDelegate {
callback_ = callback;
std::vector<string16> links;
links.push_back(link_text);
- ash::Shell::GetInstance()->system_tray()->network_observer()->
- SetNetworkMessage(this, error_type_, title_, message, links);
+ ash::Shell::GetInstance()->system_tray_notifier()->NotifySetNetworkMessage(
+ this, error_type_, title_, message, links);
}
void ShowAlways(const string16& message,
diff --git a/chrome/browser/chromeos/sms_observer.cc b/chrome/browser/chromeos/sms_observer.cc
index 866568f..431fc87 100644
--- a/chrome/browser/chromeos/sms_observer.cc
+++ b/chrome/browser/chromeos/sms_observer.cc
@@ -7,6 +7,7 @@
#include "ash/shell.h"
#include "ash/system/chromeos/network/sms_observer.h"
#include "ash/system/tray/system_tray.h"
+#include "ash/system/tray/system_tray_notifier.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
#include "grit/generated_resources.h"
@@ -111,8 +112,7 @@ void SmsObserver::OnNewMessage(const std::string& modem_device_path,
base::DictionaryValue dict;
dict.SetString(ash::kSmsNumberKey, message.number);
dict.SetString(ash::kSmsTextKey, message.text);
- if (ash::Shell::GetInstance()->status_area_widget())
- ash::Shell::GetInstance()->system_tray()->sms_observer()->AddMessage(dict);
+ ash::Shell::GetInstance()->system_tray_notifier()->NotifyAddSmsMessage(dict);
}
} // namespace chromeos
diff --git a/chrome/browser/chromeos/status/data_promo_notification.cc b/chrome/browser/chromeos/status/data_promo_notification.cc
index 6d1cfcf..2acb823 100644
--- a/chrome/browser/chromeos/status/data_promo_notification.cc
+++ b/chrome/browser/chromeos/status/data_promo_notification.cc
@@ -8,6 +8,7 @@
#include "ash/shell_window_ids.h"
#include "ash/system/chromeos/network/network_observer.h"
#include "ash/system/tray/system_tray.h"
+#include "ash/system/tray/system_tray_notifier.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
@@ -202,12 +203,9 @@ void DataPromoNotification::ShowOptionalMobileDataPromoNotification(
links.push_back(l10n_util::GetStringUTF16(link_message_id));
if (!deal_info_url_.empty())
links.push_back(l10n_util::GetStringUTF16(IDS_LEARN_MORE));
- if (ash::Shell::GetInstance()->system_tray()->network_observer()) {
- ash::Shell::GetInstance()->system_tray()->network_observer()->
- SetNetworkMessage(listener, ash::NetworkObserver::MESSAGE_DATA_PROMO,
- string16(), message, links);
- }
-
+ ash::Shell::GetInstance()->system_tray_notifier()->NotifySetNetworkMessage(
+ listener, ash::NetworkObserver::MESSAGE_DATA_PROMO,
+ string16(), message, links);
check_for_promo_ = false;
SetShow3gPromoNotification(false);
if (carrier_deal_promo_pref != kNotificationCountPrefDefault)
@@ -216,11 +214,8 @@ void DataPromoNotification::ShowOptionalMobileDataPromoNotification(
}
void DataPromoNotification::CloseNotification() {
- if (ash::Shell::GetInstance()->status_area_widget() &&
- ash::Shell::GetInstance()->system_tray()->network_observer()) {
- ash::Shell::GetInstance()->system_tray()->network_observer()->
- ClearNetworkMessage(ash::NetworkObserver::MESSAGE_DATA_PROMO);
- }
+ ash::Shell::GetInstance()->system_tray_notifier()->NotifyClearNetworkMessage(
+ ash::NetworkObserver::MESSAGE_DATA_PROMO);
}
} // namespace chromeos
diff --git a/chrome/browser/chromeos/system/ash_system_tray_delegate.cc b/chrome/browser/chromeos/system/ash_system_tray_delegate.cc
index ee421bd..e3f0389 100644
--- a/chrome/browser/chromeos/system/ash_system_tray_delegate.cc
+++ b/chrome/browser/chromeos/system/ash_system_tray_delegate.cc
@@ -17,6 +17,7 @@
#include "ash/system/power/power_status_observer.h"
#include "ash/system/tray/system_tray.h"
#include "ash/system/tray/system_tray_delegate.h"
+#include "ash/system/tray/system_tray_notifier.h"
#include "ash/system/tray_accessibility.h"
#include "ash/system/tray_caps_lock.h"
#include "ash/system/user/update_observer.h"
@@ -176,8 +177,7 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
screen_locked_(false),
connected_network_state_(STATE_UNKNOWN),
data_promo_notification_(new DataPromoNotification()),
- volume_control_delegate_(ALLOW_THIS_IN_INITIALIZER_LIST(
- new VolumeController)) {
+ volume_control_delegate_(new VolumeController()) {
// Register notifications on construction so that events such as
// PROFILE_CREATED do not get missed if they happen before Initialize().
registrar_.Add(this,
@@ -625,7 +625,7 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
}
virtual void ToggleWifi() OVERRIDE {
- GetSystemTray()->network_observer()->OnWillToggleWifi();
+ GetSystemTrayNotifier()->NotifyWillToggleWifi();
network_menu_->ToggleWifi();
}
@@ -739,6 +739,10 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
return ash::Shell::GetInstance()->system_tray();
}
+ ash::SystemTrayNotifier* GetSystemTrayNotifier() {
+ return ash::Shell::GetInstance()->system_tray_notifier();
+ }
+
// Returns the last active browser. If there is no such browser, creates a new
// browser window with an empty tab and returns it.
Browser* GetAppropriateBrowser() {
@@ -771,44 +775,22 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
void UpdateClockType(PrefServiceBase* service) {
clock_type_ = service->GetBoolean(prefs::kUse24HourClock) ?
base::k24HourClock : base::k12HourClock;
- ash::ClockObserver* observer = GetSystemTray()->clock_observer();
- if (observer)
- observer->OnDateFormatChanged();
+ GetSystemTrayNotifier()->NotifyDateFormatChanged();
}
void UpdateShowLogoutButtonInTray(PrefServiceBase* service) {
- ash::LogoutButtonObserver* observer =
- GetSystemTray()->logout_button_observer();
- if (observer) {
- observer->OnShowLogoutButtonInTrayChanged(
- service->GetBoolean(prefs::kShowLogoutButtonInTray));
- }
- }
-
- void NotifyRefreshClock() {
- ash::ClockObserver* observer = GetSystemTray()->clock_observer();
- if (observer)
- observer->Refresh();
+ GetSystemTrayNotifier()->NotifyShowLoginButtonChanged(
+ service->GetBoolean(prefs::kShowLogoutButtonInTray));
}
void NotifyRefreshNetwork() {
- ash::NetworkObserver* observer = GetSystemTray()->network_observer();
chromeos::NetworkLibrary* crosnet =
chromeos::CrosLibrary::Get()->GetNetworkLibrary();
- if (observer) {
- ash::NetworkIconInfo info;
- info.image = network_icon_->GetIconAndText(&info.description);
- info.tray_icon_visible = network_icon_->ShouldShowIconInTray();
- observer->OnNetworkRefresh(info);
- }
-
- ash::NetworkObserver* vpn_observer = GetSystemTray()->vpn_observer();
- if (vpn_observer) {
- ash::NetworkIconInfo info;
- info.image = network_icon_->GetIconAndText(&info.description);
- info.tray_icon_visible = network_icon_->ShouldShowIconInTray();
- vpn_observer->OnNetworkRefresh(info);
- }
+ ash::NetworkIconInfo info;
+ info.image = network_icon_->GetIconAndText(&info.description);
+ info.tray_icon_visible = network_icon_->ShouldShowIconInTray();
+ GetSystemTrayNotifier()->NotifyRefreshNetwork(info);
+ GetSystemTrayNotifier()->NotifyVpnRefreshNetwork(info);
// Update Accessibility.
@@ -838,30 +820,6 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
connected_network_state_ = connected_network_state;
}
- void NotifyRefreshBluetooth() {
- ash::BluetoothObserver* observer = GetSystemTray()->bluetooth_observer();
- if (observer)
- observer->OnBluetoothRefresh();
- }
-
- void NotifyBluetoothDiscoveringChanged() {
- ash::BluetoothObserver* observer = GetSystemTray()->bluetooth_observer();
- if (observer)
- observer->OnBluetoothDiscoveringChanged();
- }
-
- void NotifyRefreshIME(bool show_message) {
- ash::IMEObserver* observer = GetSystemTray()->ime_observer();
- if (observer)
- observer->OnIMERefresh(show_message);
- }
-
- void NotifyRefreshDrive(ash::DriveOperationStatusList& list) {
- ash::DriveObserver* observer = GetSystemTray()->drive_observer();
- if (observer)
- observer->OnDriveRefresh(list);
- }
-
void RefreshNetworkObserver(NetworkLibrary* crosnet) {
const Network* network = crosnet->active_network();
std::string new_path = network ? network->service_path() : std::string();
@@ -983,29 +941,27 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
// Overridden from AudioHandler::VolumeObserver.
virtual void OnVolumeChanged() OVERRIDE {
float level = AudioHandler::GetInstance()->GetVolumePercent() / 100.f;
- GetSystemTray()->audio_observer()->OnVolumeChanged(level);
+ GetSystemTrayNotifier()->NotifyVolumeChanged(level);
}
// Overridden from AudioHandler::VolumeObserver.
virtual void OnMuteToggled() OVERRIDE {
- GetSystemTray()->audio_observer()->OnMuteToggled();
+ GetSystemTrayNotifier()->NotifyMuteToggled();
}
// Overridden from PowerManagerClient::Observer.
virtual void BrightnessChanged(int level, bool user_initiated) OVERRIDE {
- GetSystemTray()->brightness_observer()->
- OnBrightnessChanged(static_cast<double>(level), user_initiated);
+ double leveld = static_cast<double>(level);
+ GetSystemTrayNotifier()->NotifyBrightnessChanged(leveld, user_initiated);
}
virtual void PowerChanged(const PowerSupplyStatus& power_status) OVERRIDE {
power_supply_status_ = power_status;
- FOR_EACH_OBSERVER(ash::PowerStatusObserver,
- GetSystemTray()->power_status_observers(),
- OnPowerStatusChanged(power_status));
+ GetSystemTrayNotifier()->NotifyPowerStatusChanged(power_status);
}
virtual void SystemResumed() OVERRIDE {
- NotifyRefreshClock();
+ GetSystemTrayNotifier()->NotifyRefreshClock();
}
// Overridden from SessionManagerClient::Observer.
@@ -1094,18 +1050,14 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
severity = ash::UpdateObserver::UPDATE_NORMAL;
break;
}
- ash::UpdateObserver* observer = GetSystemTray()->update_observer();
- if (observer)
- observer->OnUpdateRecommended(severity);
+ GetSystemTrayNotifier()->NotifyUpdateRecommended(severity);
break;
}
case chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED: {
// This notification is also sent on login screen when user avatar
// is loaded from file.
if (GetUserLoginStatus() != ash::user::LOGGED_IN_NONE) {
- ash::UserObserver* observer = GetSystemTray()->user_observer();
- if (observer)
- observer->OnUserUpdate();
+ GetSystemTrayNotifier()->NotifyUserUpdate();
}
break;
}
@@ -1140,12 +1092,8 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
search_key_mapped_to_ =
service->GetInteger(prefs::kLanguageRemapSearchKeyTo);
} else if (pref == prefs::kSpokenFeedbackEnabled) {
- ash::AccessibilityObserver* observer =
- GetSystemTray()->accessibility_observer();
- if (observer) {
- observer->OnAccessibilityModeChanged(
- service->GetBoolean(prefs::kSpokenFeedbackEnabled));
- }
+ GetSystemTrayNotifier()->NotifyAccessibilityModeChanged(
+ service->GetBoolean(prefs::kSpokenFeedbackEnabled));
} else if (pref == prefs::kShowLogoutButtonInTray) {
UpdateShowLogoutButtonInTray(service);
} else {
@@ -1156,19 +1104,19 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
// Overridden from InputMethodManager::Observer.
virtual void InputMethodChanged(
input_method::InputMethodManager* manager, bool show_message) OVERRIDE {
- NotifyRefreshIME(show_message);
+ GetSystemTrayNotifier()->NotifyRefreshIME(show_message);
}
virtual void InputMethodPropertyChanged(
input_method::InputMethodManager* manager) OVERRIDE {
- NotifyRefreshIME(false);
+ GetSystemTrayNotifier()->NotifyRefreshIME(false);
}
// google_apis::DriveServiceObserver overrides.
virtual void OnProgressUpdate(
const google_apis::OperationProgressStatusList& list) OVERRIDE {
std::vector<ash::DriveOperationStatus> ui_list = GetDriveStatusList(list);
- NotifyRefreshDrive(ui_list);
+ GetSystemTrayNotifier()->NotifyRefreshDrive(ui_list);
// If we have something to report right now (i.e. completion status only),
// we need to delayed re-check the status in few seconds to ensure we
@@ -1217,38 +1165,38 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
// Overridden from system::TimezoneSettings::Observer.
virtual void TimezoneChanged(const icu::TimeZone& timezone) OVERRIDE {
- NotifyRefreshClock();
+ GetSystemTrayNotifier()->NotifyRefreshClock();
}
// Overridden from BluetoothAdapter::Observer.
virtual void AdapterPresentChanged(device::BluetoothAdapter* adapter,
bool present) OVERRIDE {
- NotifyRefreshBluetooth();
+ GetSystemTrayNotifier()->NotifyRefreshBluetooth();
}
virtual void AdapterPoweredChanged(device::BluetoothAdapter* adapter,
bool powered) OVERRIDE {
- NotifyRefreshBluetooth();
+ GetSystemTrayNotifier()->NotifyRefreshBluetooth();
}
virtual void AdapterDiscoveringChanged(device::BluetoothAdapter* adapter,
bool discovering) OVERRIDE {
- NotifyBluetoothDiscoveringChanged();
+ GetSystemTrayNotifier()->NotifyBluetoothDiscoveringChanged();
}
virtual void DeviceAdded(device::BluetoothAdapter* adapter,
device::BluetoothDevice* device) OVERRIDE {
- NotifyRefreshBluetooth();
+ GetSystemTrayNotifier()->NotifyRefreshBluetooth();
}
virtual void DeviceChanged(device::BluetoothAdapter* adapter,
device::BluetoothDevice* device) OVERRIDE {
- NotifyRefreshBluetooth();
+ GetSystemTrayNotifier()->NotifyRefreshBluetooth();
}
virtual void DeviceRemoved(device::BluetoothAdapter* adapter,
device::BluetoothDevice* device) OVERRIDE {
- NotifyRefreshBluetooth();
+ GetSystemTrayNotifier()->NotifyRefreshBluetooth();
}
// Overridden from SystemKeyEventListener::CapsLockObserver.
@@ -1257,10 +1205,8 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
if (!base::chromeos::IsRunningOnChromeOS() ||
search_key_mapped_to_ == input_method::kCapsLockKey)
search_mapped_to_caps_lock = true;
-
- ash::CapsLockObserver* observer = GetSystemTray()->caps_lock_observer();
- if (observer)
- observer->OnCapsLockChanged(enabled, search_mapped_to_caps_lock);
+ GetSystemTrayNotifier()->NotifyCapsLockChanged(
+ enabled, search_mapped_to_caps_lock);
}
// Overridden from ash::NetworkTrayDelegate