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" 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ash/system/audio/audio_observer.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/bluetooth/bluetooth_observer.h" 14ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ash/system/chromeos/tray_tracing.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/date/clock_observer.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/ime/ime_observer.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/locale/locale_observer.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/tray_accessibility.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/user/update_observer.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/user/user_observer.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/observer_list.h" 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ash/system/chromeos/enterprise/enterprise_domain_observer.h" 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/chromeos/network/network_observer.h" 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ash/system/chromeos/network/network_portal_detector_observer.h" 27868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "ash/system/chromeos/screen_security/screen_capture_observer.h" 28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "ash/system/chromeos/screen_security/screen_share_observer.h" 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ash/system/chromeos/session/last_window_closed_observer.h" 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ash/system/chromeos/session/logout_button_observer.h" 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ash/system/chromeos/session/session_length_limit_observer.h" 32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "ash/system/tray/media_security/media_capture_observer.h" 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/time/time.h" 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ash { 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 38868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#if defined(OS_CHROMEOS) 39868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class NetworkStateNotifier; 40868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif 41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ASH_EXPORT SystemTrayNotifier { 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public: 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SystemTrayNotifier(); 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ~SystemTrayNotifier(); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddAccessibilityObserver(AccessibilityObserver* observer); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveAccessibilityObserver(AccessibilityObserver* observer); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void AddAudioObserver(AudioObserver* observer); 51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void RemoveAudioObserver(AudioObserver* observer); 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddBluetoothObserver(BluetoothObserver* observer); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveBluetoothObserver(BluetoothObserver* observer); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddClockObserver(ClockObserver* observer); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveClockObserver(ClockObserver* observer); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddIMEObserver(IMEObserver* observer); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveIMEObserver(IMEObserver* observer); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddLocaleObserver(LocaleObserver* observer); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveLocaleObserver(LocaleObserver* observer); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 65ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch void AddTracingObserver(TracingObserver* observer); 66ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch void RemoveTracingObserver(TracingObserver* observer); 67ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddUpdateObserver(UpdateObserver* observer); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveUpdateObserver(UpdateObserver* observer); 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddUserObserver(UserObserver* observer); 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveUserObserver(UserObserver* observer); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void AddLogoutButtonObserver(LogoutButtonObserver* observer); 76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void RemoveLogoutButtonObserver(LogoutButtonObserver* observer); 77a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 78a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void AddSessionLengthLimitObserver(SessionLengthLimitObserver* observer); 79a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void RemoveSessionLengthLimitObserver(SessionLengthLimitObserver* observer); 80a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddNetworkObserver(NetworkObserver* observer); 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveNetworkObserver(NetworkObserver* observer); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 84a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void AddNetworkPortalDetectorObserver( 85a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) NetworkPortalDetectorObserver* observer); 86a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void RemoveNetworkPortalDetectorObserver( 87a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) NetworkPortalDetectorObserver* observer); 88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddEnterpriseDomainObserver(EnterpriseDomainObserver* observer); 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveEnterpriseDomainObserver(EnterpriseDomainObserver* observer); 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void AddMediaCaptureObserver(MediaCaptureObserver* observer); 93010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void RemoveMediaCaptureObserver(MediaCaptureObserver* observer); 94010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddScreenCaptureObserver(ScreenCaptureObserver* observer); 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveScreenCaptureObserver(ScreenCaptureObserver* observer); 97868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 98868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void AddScreenShareObserver(ScreenShareObserver* observer); 99868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void RemoveScreenShareObserver(ScreenShareObserver* observer); 100a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 101a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void AddLastWindowClosedObserver(LastWindowClosedObserver* observer); 102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void RemoveLastWindowClosedObserver(LastWindowClosedObserver* observer); 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyAccessibilityModeChanged( 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AccessibilityNotificationVisibility notify); 107a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotifyAudioOutputVolumeChanged(); 108a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotifyAudioOutputMuteChanged(); 109a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotifyAudioNodesChanged(); 110a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotifyAudioActiveOutputNodeChanged(); 111a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotifyAudioActiveInputNodeChanged(); 112ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch void NotifyTracingModeChanged(bool value); 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyRefreshBluetooth(); 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyBluetoothDiscoveringChanged(); 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyRefreshClock(); 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyDateFormatChanged(); 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifySystemClockTimeUpdated(); 1185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void NotifySystemClockCanSetTimeChanged(bool can_set_time); 119a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotifyRefreshIME(); 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyLocaleChanged(LocaleObserver::Delegate* delegate, 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& cur_locale, 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& from_locale, 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& to_locale); 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyUpdateRecommended(UpdateObserver::UpdateSeverity severity); 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyUserUpdate(); 1264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void NotifyUserAddedToSession(); 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 128a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotifyShowLoginButtonChanged(bool show_login_button); 129a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotifyLogoutDialogDurationChanged(base::TimeDelta duration); 130a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotifySessionStartTimeChanged(); 131a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotifySessionLengthLimitChanged(); 13290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void NotifyRequestToggleWifi(); 133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotifyOnCaptivePortalDetected(const std::string& service_path); 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void NotifyEnterpriseDomainChanged(); 135010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void NotifyMediaCaptureChanged(); 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(); 142a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotifyLastWindowClosed(); 143868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 144868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) NetworkStateNotifier* network_state_notifier() { 145868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return network_state_notifier_.get(); 146868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<AccessibilityObserver> accessibility_observers_; 151a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ObserverList<AudioObserver> audio_observers_; 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<BluetoothObserver> bluetooth_observers_; 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<ClockObserver> clock_observers_; 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<IMEObserver> ime_observers_; 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<LocaleObserver> locale_observers_; 156ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ObserverList<TracingObserver> tracing_observers_; 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<UpdateObserver> update_observers_; 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<UserObserver> user_observers_; 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 160a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ObserverList<LogoutButtonObserver> logout_button_observers_; 161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ObserverList<SessionLengthLimitObserver> session_length_limit_observers_; 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<NetworkObserver> network_observers_; 163a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ObserverList<NetworkPortalDetectorObserver> 164a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) network_portal_detector_observers_; 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<EnterpriseDomainObserver> enterprise_domain_observers_; 166010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ObserverList<MediaCaptureObserver> media_capture_observers_; 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserverList<ScreenCaptureObserver> screen_capture_observers_; 168868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ObserverList<ScreenShareObserver> screen_share_observers_; 169a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ObserverList<LastWindowClosedObserver> last_window_closed_observers_; 170868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) scoped_ptr<NetworkStateNotifier> network_state_notifier_; 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SystemTrayNotifier); 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace ash 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_ 179