Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1394)

Unified Diff: chrome/browser/chromeos/system/ash_system_tray_delegate.cc

Issue 11312139: Add SystemTrayObservers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/system/ash_system_tray_delegate.cc
diff --git a/chrome/browser/chromeos/system/ash_system_tray_delegate.cc b/chrome/browser/chromeos/system/ash_system_tray_delegate.cc
index 1474c3c5ea9a7292ecbd10444aa6881e210b22b7..27efb1afc30d1c9ae97a9ba2dce21336d98128e0 100644
--- a/chrome/browser/chromeos/system/ash_system_tray_delegate.cc
+++ b/chrome/browser/chromeos/system/ash_system_tray_delegate.cc
@@ -16,6 +16,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_observers.h"
#include "ash/system/tray_accessibility.h"
#include "ash/system/tray_caps_lock.h"
#include "ash/system/user/update_observer.h"
@@ -174,8 +175,8 @@ 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()),
+ system_tray_observers_(new ash::SystemTrayObservers()) {
// Register notifications on construction so that events such as
// PROFILE_CREATED do not get missed if they happen before Initialize().
registrar_.Add(this,
@@ -228,6 +229,9 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
}
virtual ~SystemTrayDelegate() {
+ // Clear observers first.
+ system_tray_observers_.reset();
+
AudioHandler* audiohandler = AudioHandler::GetInstance();
if (audiohandler)
audiohandler->RemoveVolumeObserver(this);
@@ -251,6 +255,10 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
}
}
+ virtual ash::SystemTrayObservers* GetSystemTrayObservers() OVERRIDE {
+ return system_tray_observers_.get();
+ }
+
// Overridden from ash::SystemTrayDelegate:
virtual bool GetTrayVisibilityOnStartup() OVERRIDE {
// In case of OOBE / sign in screen tray will be shown later.
@@ -625,7 +633,9 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
}
virtual void ToggleWifi() OVERRIDE {
- GetSystemTray()->network_observer()->OnWillToggleWifi();
+ FOR_EACH_OBSERVER(ash::NetworkObserver,
+ system_tray_observers_->network_observers(),
+ OnWillToggleWifi());
network_menu_->ToggleWifi();
}
@@ -768,35 +778,29 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
void UpdateClockType(PrefService* service) {
clock_type_ = service->GetBoolean(prefs::kUse24HourClock) ?
base::k24HourClock : base::k12HourClock;
- ash::ClockObserver* observer = GetSystemTray()->clock_observer();
- if (observer)
- observer->OnDateFormatChanged();
+ FOR_EACH_OBSERVER(ash::ClockObserver,
+ system_tray_observers_->clock_observers(),
+ OnDateFormatChanged());
}
void NotifyRefreshClock() {
- ash::ClockObserver* observer = GetSystemTray()->clock_observer();
- if (observer)
- observer->Refresh();
+ FOR_EACH_OBSERVER(ash::ClockObserver,
+ system_tray_observers_->clock_observers(),
+ Refresh());
}
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();
+ FOR_EACH_OBSERVER(ash::NetworkObserver,
+ system_tray_observers_->network_observers(),
+ OnNetworkRefresh(info));
+ FOR_EACH_OBSERVER(ash::NetworkObserver,
+ system_tray_observers_->vpn_observers(),
+ OnNetworkRefresh(info));
// Update Accessibility.
@@ -827,27 +831,27 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
}
void NotifyRefreshBluetooth() {
- ash::BluetoothObserver* observer = GetSystemTray()->bluetooth_observer();
- if (observer)
- observer->OnBluetoothRefresh();
+ FOR_EACH_OBSERVER(ash::BluetoothObserver,
+ system_tray_observers_->bluetooth_observers(),
+ OnBluetoothRefresh());
}
void NotifyBluetoothDiscoveringChanged() {
- ash::BluetoothObserver* observer = GetSystemTray()->bluetooth_observer();
- if (observer)
- observer->OnBluetoothDiscoveringChanged();
+ FOR_EACH_OBSERVER(ash::BluetoothObserver,
+ system_tray_observers_->bluetooth_observers(),
+ OnBluetoothDiscoveringChanged());
}
void NotifyRefreshIME(bool show_message) {
- ash::IMEObserver* observer = GetSystemTray()->ime_observer();
- if (observer)
- observer->OnIMERefresh(show_message);
+ FOR_EACH_OBSERVER(ash::IMEObserver,
+ system_tray_observers_->ime_observers(),
+ OnIMERefresh(show_message));
}
void NotifyRefreshDrive(ash::DriveOperationStatusList& list) {
- ash::DriveObserver* observer = GetSystemTray()->drive_observer();
- if (observer)
- observer->OnDriveRefresh(list);
+ FOR_EACH_OBSERVER(ash::DriveObserver,
+ system_tray_observers_->drive_observers(),
+ OnDriveRefresh(list));
}
void RefreshNetworkObserver(NetworkLibrary* crosnet) {
@@ -971,24 +975,30 @@ 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);
+ FOR_EACH_OBSERVER(ash::AudioObserver,
+ system_tray_observers_->audio_observers(),
+ OnVolumeChanged(level));
}
// Overridden from AudioHandler::VolumeObserver.
virtual void OnMuteToggled() OVERRIDE {
- GetSystemTray()->audio_observer()->OnMuteToggled();
+ FOR_EACH_OBSERVER(ash::AudioObserver,
+ system_tray_observers_->audio_observers(),
+ OnMuteToggled());
}
// Overridden from PowerManagerClient::Observer.
virtual void BrightnessChanged(int level, bool user_initiated) OVERRIDE {
- GetSystemTray()->brightness_observer()->
- OnBrightnessChanged(static_cast<double>(level), user_initiated);
+ FOR_EACH_OBSERVER(
+ ash::BrightnessObserver,
+ system_tray_observers_->brightness_observers(),
+ OnBrightnessChanged(static_cast<double>(level), user_initiated));
}
virtual void PowerChanged(const PowerSupplyStatus& power_status) OVERRIDE {
power_supply_status_ = power_status;
FOR_EACH_OBSERVER(ash::PowerStatusObserver,
- GetSystemTray()->power_status_observers(),
+ system_tray_observers_->power_status_observers(),
OnPowerStatusChanged(power_status));
}
@@ -1082,18 +1092,18 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
severity = ash::UpdateObserver::UPDATE_NORMAL;
break;
}
- ash::UpdateObserver* observer = GetSystemTray()->update_observer();
- if (observer)
- observer->OnUpdateRecommended(severity);
+ FOR_EACH_OBSERVER(ash::UpdateObserver,
+ system_tray_observers_->update_observers(),
+ OnUpdateRecommended(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();
+ FOR_EACH_OBSERVER(ash::UserObserver,
+ system_tray_observers_->user_observers(),
+ OnUserUpdate());
}
break;
}
@@ -1128,12 +1138,11 @@ 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));
- }
+ FOR_EACH_OBSERVER(
+ ash::AccessibilityObserver,
+ system_tray_observers_->accessibility_observers(),
+ OnAccessibilityModeChanged(
+ service->GetBoolean(prefs::kSpokenFeedbackEnabled)));
} else {
NOTREACHED();
}
@@ -1244,9 +1253,9 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
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);
+ FOR_EACH_OBSERVER(ash::CapsLockObserver,
+ system_tray_observers_->caps_lock_observers(),
+ OnCapsLockChanged(enabled, search_mapped_to_caps_lock));
}
// Overridden from ash::NetworkTrayDelegate
@@ -1309,6 +1318,8 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
scoped_ptr<ash::VolumeControlDelegate> volume_control_delegate_;
+ scoped_ptr<ash::SystemTrayObservers> system_tray_observers_;
+
DISALLOW_COPY_AND_ASSIGN(SystemTrayDelegate);
};

Powered by Google App Engine
This is Rietveld 408576698