12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector> 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/ash_export.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/bluetooth/bluetooth_observer.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/brightness/brightness_observer.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/chromeos/enterprise/enterprise_domain_observer.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/chromeos/network/network_observer.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/chromeos/network/sms_observer.h" 173d4dfb6f11fb4e934d658743a8efc26d5490fdb0Ben Murdoch#include "ash/system/chromeos/tray_tracing.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/date/clock_observer.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/drive/drive_observer.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/ime/ime_observer.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/locale/locale_observer.h" 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/logout_button/logout_button_observer.h" 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/session_length_limit/session_length_limit_observer.h" 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/tray_accessibility.h" 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/tray_caps_lock.h" 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/user/update_observer.h" 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/user/user_observer.h" 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/observer_list.h" 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/chromeos/network/network_observer.h" 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/chromeos/network/sms_observer.h" 33868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "ash/system/chromeos/screen_security/screen_capture_observer.h" 34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "ash/system/chromeos/screen_security/screen_share_observer.h" 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ash { 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 39868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#if defined(OS_CHROMEOS) 40868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class NetworkStateNotifier; 41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif 42868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ASH_EXPORT SystemTrayNotifier { 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)public: 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SystemTrayNotifier(); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ~SystemTrayNotifier(); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddAccessibilityObserver(AccessibilityObserver* observer); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveAccessibilityObserver(AccessibilityObserver* observer); 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddBluetoothObserver(BluetoothObserver* observer); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveBluetoothObserver(BluetoothObserver* observer); 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddBrightnessObserver(BrightnessObserver* observer); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveBrightnessObserver(BrightnessObserver* observer); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddCapsLockObserver(CapsLockObserver* observer); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveCapsLockObserver(CapsLockObserver* observer); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddClockObserver(ClockObserver* observer); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveClockObserver(ClockObserver* observer); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddDriveObserver(DriveObserver* observer); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveDriveObserver(DriveObserver* observer); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddIMEObserver(IMEObserver* observer); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveIMEObserver(IMEObserver* observer); 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddLocaleObserver(LocaleObserver* observer); 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveLocaleObserver(LocaleObserver* observer); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddLogoutButtonObserver(LogoutButtonObserver* observer); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveLogoutButtonObserver(LogoutButtonObserver* observer); 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddSessionLengthLimitObserver(SessionLengthLimitObserver* observer); 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveSessionLengthLimitObserver(SessionLengthLimitObserver* observer); 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 783d4dfb6f11fb4e934d658743a8efc26d5490fdb0Ben Murdoch void AddTracingObserver(TracingObserver* observer); 793d4dfb6f11fb4e934d658743a8efc26d5490fdb0Ben Murdoch void RemoveTracingObserver(TracingObserver* observer); 803d4dfb6f11fb4e934d658743a8efc26d5490fdb0Ben Murdoch 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddUpdateObserver(UpdateObserver* observer); 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveUpdateObserver(UpdateObserver* observer); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddUserObserver(UserObserver* observer); 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveUserObserver(UserObserver* observer); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddNetworkObserver(NetworkObserver* observer); 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveNetworkObserver(NetworkObserver* observer); 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddSmsObserver(SmsObserver* observer); 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveSmsObserver(SmsObserver* observer); 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddEnterpriseDomainObserver(EnterpriseDomainObserver* observer); 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveEnterpriseDomainObserver(EnterpriseDomainObserver* observer); 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddScreenCaptureObserver(ScreenCaptureObserver* observer); 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveScreenCaptureObserver(ScreenCaptureObserver* observer); 99868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 100868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void AddScreenShareObserver(ScreenShareObserver* observer); 101868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void RemoveScreenShareObserver(ScreenShareObserver* observer); 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyAccessibilityModeChanged( 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AccessibilityNotificationVisibility notify); 1063d4dfb6f11fb4e934d658743a8efc26d5490fdb0Ben Murdoch void NotifyTracingModeChanged(bool value); 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyRefreshBluetooth(); 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyBluetoothDiscoveringChanged(); 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyBrightnessChanged(double level, bool user_initialted); 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyCapsLockChanged(bool enabled, bool search_mapped_to_caps_lock); 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyRefreshClock(); 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyDateFormatChanged(); 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifySystemClockTimeUpdated(); 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void NotifyDriveJobUpdated(const DriveOperationStatus& status); 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyRefreshIME(bool show_message); 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyShowLoginButtonChanged(bool show_login_button); 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyLocaleChanged(LocaleObserver::Delegate* delegate, 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& cur_locale, 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& from_locale, 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& to_locale); 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifySessionStartTimeChanged(); 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifySessionLengthLimitChanged(); 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyUpdateRecommended(UpdateObserver::UpdateSeverity severity); 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyUserUpdate(); 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifySetNetworkMessage(NetworkTrayDelegate* delegate, 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NetworkObserver::MessageType message_type, 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NetworkObserver::NetworkType network_type, 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::string16& title, 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::string16& message, 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::vector<base::string16>& links); 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyClearNetworkMessage(NetworkObserver::MessageType message_type); 13390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void NotifyRequestToggleWifi(); 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyAddSmsMessage(const base::DictionaryValue& message); 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyEnterpriseDomainChanged(); 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyScreenCaptureStart(const base::Closure& stop_callback, 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::string16& sharing_app_name); 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyScreenCaptureStop(); 139868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void NotifyScreenShareStart(const base::Closure& stop_callback, 140868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const base::string16& helper_name); 141868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void NotifyScreenShareStop(); 142868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 143868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) NetworkStateNotifier* network_state_notifier() { 144868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return network_state_notifier_.get(); 145868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<AccessibilityObserver> accessibility_observers_; 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<BluetoothObserver> bluetooth_observers_; 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<BrightnessObserver> brightness_observers_; 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<CapsLockObserver> caps_lock_observers_; 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<ClockObserver> clock_observers_; 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<DriveObserver> drive_observers_; 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<IMEObserver> ime_observers_; 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<LocaleObserver> locale_observers_; 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<LogoutButtonObserver> logout_button_observers_; 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<SessionLengthLimitObserver> session_length_limit_observers_; 1593d4dfb6f11fb4e934d658743a8efc26d5490fdb0Ben Murdoch ObserverList<TracingObserver> tracing_observers_; 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<UpdateObserver> update_observers_; 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<UserObserver> user_observers_; 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<NetworkObserver> network_observers_; 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<SmsObserver> sms_observers_; 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<EnterpriseDomainObserver> enterprise_domain_observers_; 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<ScreenCaptureObserver> screen_capture_observers_; 167868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ObserverList<ScreenShareObserver> screen_share_observers_; 168868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) scoped_ptr<NetworkStateNotifier> network_state_notifier_; 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SystemTrayNotifier); 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace ash 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_ 177