| // 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/bluetooth/bluetooth_observer.h" |
| #include "ash/system/chromeos/tray_tracing.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/session_length_limit/session_length_limit_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/enterprise/enterprise_domain_observer.h" |
| #include "ash/system/chromeos/network/network_observer.h" |
| #include "ash/system/chromeos/screen_security/screen_capture_observer.h" |
| #include "ash/system/chromeos/screen_security/screen_share_observer.h" |
| #endif |
| |
| namespace ash { |
| |
| #if defined(OS_CHROMEOS) |
| class NetworkStateNotifier; |
| #endif |
| |
| class ASH_EXPORT SystemTrayNotifier { |
| public: |
| SystemTrayNotifier(); |
| ~SystemTrayNotifier(); |
| |
| void AddAccessibilityObserver(AccessibilityObserver* observer); |
| void RemoveAccessibilityObserver(AccessibilityObserver* observer); |
| |
| void AddBluetoothObserver(BluetoothObserver* observer); |
| void RemoveBluetoothObserver(BluetoothObserver* observer); |
| |
| void AddCapsLockObserver(CapsLockObserver* observer); |
| void RemoveCapsLockObserver(CapsLockObserver* observer); |
| |
| void AddClockObserver(ClockObserver* observer); |
| void RemoveClockObserver(ClockObserver* observer); |
| |
| void AddDriveObserver(DriveObserver* observer); |
| void RemoveDriveObserver(DriveObserver* observer); |
| |
| void AddIMEObserver(IMEObserver* observer); |
| void RemoveIMEObserver(IMEObserver* observer); |
| |
| void AddLocaleObserver(LocaleObserver* observer); |
| void RemoveLocaleObserver(LocaleObserver* observer); |
| |
| void AddLogoutButtonObserver(LogoutButtonObserver* observer); |
| void RemoveLogoutButtonObserver(LogoutButtonObserver* observer); |
| |
| void AddSessionLengthLimitObserver(SessionLengthLimitObserver* observer); |
| void RemoveSessionLengthLimitObserver(SessionLengthLimitObserver* observer); |
| |
| void AddTracingObserver(TracingObserver* observer); |
| void RemoveTracingObserver(TracingObserver* observer); |
| |
| void AddUpdateObserver(UpdateObserver* observer); |
| void RemoveUpdateObserver(UpdateObserver* observer); |
| |
| void AddUserObserver(UserObserver* observer); |
| void RemoveUserObserver(UserObserver* observer); |
| |
| #if defined(OS_CHROMEOS) |
| void AddNetworkObserver(NetworkObserver* observer); |
| void RemoveNetworkObserver(NetworkObserver* observer); |
| |
| void AddEnterpriseDomainObserver(EnterpriseDomainObserver* observer); |
| void RemoveEnterpriseDomainObserver(EnterpriseDomainObserver* observer); |
| |
| void AddScreenCaptureObserver(ScreenCaptureObserver* observer); |
| void RemoveScreenCaptureObserver(ScreenCaptureObserver* observer); |
| |
| void AddScreenShareObserver(ScreenShareObserver* observer); |
| void RemoveScreenShareObserver(ScreenShareObserver* observer); |
| #endif |
| |
| void NotifyAccessibilityModeChanged( |
| AccessibilityNotificationVisibility notify); |
| void NotifyTracingModeChanged(bool value); |
| void NotifyRefreshBluetooth(); |
| void NotifyBluetoothDiscoveringChanged(); |
| void NotifyCapsLockChanged(bool enabled, bool search_mapped_to_caps_lock); |
| void NotifyRefreshClock(); |
| void NotifyDateFormatChanged(); |
| void NotifySystemClockTimeUpdated(); |
| void NotifyDriveJobUpdated(const DriveOperationStatus& status); |
| 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 NotifySessionStartTimeChanged(); |
| void NotifySessionLengthLimitChanged(); |
| void NotifyUpdateRecommended(UpdateObserver::UpdateSeverity severity); |
| void NotifyUserUpdate(); |
| void NotifyUserAddedToSession(); |
| #if defined(OS_CHROMEOS) |
| void NotifyRequestToggleWifi(); |
| void NotifyEnterpriseDomainChanged(); |
| void NotifyScreenCaptureStart(const base::Closure& stop_callback, |
| const base::string16& sharing_app_name); |
| void NotifyScreenCaptureStop(); |
| void NotifyScreenShareStart(const base::Closure& stop_callback, |
| const base::string16& helper_name); |
| void NotifyScreenShareStop(); |
| |
| NetworkStateNotifier* network_state_notifier() { |
| return network_state_notifier_.get(); |
| } |
| #endif |
| |
| private: |
| ObserverList<AccessibilityObserver> accessibility_observers_; |
| ObserverList<BluetoothObserver> bluetooth_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<SessionLengthLimitObserver> session_length_limit_observers_; |
| ObserverList<TracingObserver> tracing_observers_; |
| ObserverList<UpdateObserver> update_observers_; |
| ObserverList<UserObserver> user_observers_; |
| #if defined(OS_CHROMEOS) |
| ObserverList<NetworkObserver> network_observers_; |
| ObserverList<EnterpriseDomainObserver> enterprise_domain_observers_; |
| ObserverList<ScreenCaptureObserver> screen_capture_observers_; |
| ObserverList<ScreenShareObserver> screen_share_observers_; |
| scoped_ptr<NetworkStateNotifier> network_state_notifier_; |
| #endif |
| |
| DISALLOW_COPY_AND_ASSIGN(SystemTrayNotifier); |
| }; |
| |
| } // namespace ash |
| |
| #endif // ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_ |