Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ash / system / tray / system_tray_notifier.h
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_
6 #define ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "ash/ash_export.h"
12 #include "ash/system/audio/audio_observer.h"
13 #include "ash/system/bluetooth/bluetooth_observer.h"
14 #include "ash/system/chromeos/tray_tracing.h"
15 #include "ash/system/date/clock_observer.h"
16 #include "ash/system/ime/ime_observer.h"
17 #include "ash/system/locale/locale_observer.h"
18 #include "ash/system/tray_accessibility.h"
19 #include "ash/system/user/update_observer.h"
20 #include "ash/system/user/user_observer.h"
21 #include "base/observer_list.h"
22
23 #if defined(OS_CHROMEOS)
24 #include "ash/system/chromeos/enterprise/enterprise_domain_observer.h"
25 #include "ash/system/chromeos/network/network_observer.h"
26 #include "ash/system/chromeos/network/network_portal_detector_observer.h"
27 #include "ash/system/chromeos/screen_security/screen_capture_observer.h"
28 #include "ash/system/chromeos/screen_security/screen_share_observer.h"
29 #include "ash/system/chromeos/session/last_window_closed_observer.h"
30 #include "ash/system/chromeos/session/logout_button_observer.h"
31 #include "ash/system/chromeos/session/session_length_limit_observer.h"
32 #include "ash/system/chromeos/virtual_keyboard/virtual_keyboard_observer.h"
33 #include "ash/system/tray/media_security/media_capture_observer.h"
34 #include "base/time/time.h"
35 #endif
36
37 namespace ash {
38
39 struct UpdateInfo;
40
41 #if defined(OS_CHROMEOS)
42 class NetworkStateNotifier;
43 #endif
44
45 class ASH_EXPORT SystemTrayNotifier {
46  public:
47   SystemTrayNotifier();
48   ~SystemTrayNotifier();
49
50   void AddAccessibilityObserver(AccessibilityObserver* observer);
51   void RemoveAccessibilityObserver(AccessibilityObserver* observer);
52
53   void AddAudioObserver(AudioObserver* observer);
54   void RemoveAudioObserver(AudioObserver* observer);
55
56   void AddBluetoothObserver(BluetoothObserver* observer);
57   void RemoveBluetoothObserver(BluetoothObserver* observer);
58
59   void AddClockObserver(ClockObserver* observer);
60   void RemoveClockObserver(ClockObserver* observer);
61
62   void AddIMEObserver(IMEObserver* observer);
63   void RemoveIMEObserver(IMEObserver* observer);
64
65   void AddLocaleObserver(LocaleObserver* observer);
66   void RemoveLocaleObserver(LocaleObserver* observer);
67
68   void AddTracingObserver(TracingObserver* observer);
69   void RemoveTracingObserver(TracingObserver* observer);
70
71   void AddUpdateObserver(UpdateObserver* observer);
72   void RemoveUpdateObserver(UpdateObserver* observer);
73
74   void AddUserObserver(UserObserver* observer);
75   void RemoveUserObserver(UserObserver* observer);
76
77 #if defined(OS_CHROMEOS)
78   void AddLogoutButtonObserver(LogoutButtonObserver* observer);
79   void RemoveLogoutButtonObserver(LogoutButtonObserver* observer);
80
81   void AddSessionLengthLimitObserver(SessionLengthLimitObserver* observer);
82   void RemoveSessionLengthLimitObserver(SessionLengthLimitObserver* observer);
83
84   void AddNetworkObserver(NetworkObserver* observer);
85   void RemoveNetworkObserver(NetworkObserver* observer);
86
87   void AddNetworkPortalDetectorObserver(
88       NetworkPortalDetectorObserver* observer);
89   void RemoveNetworkPortalDetectorObserver(
90       NetworkPortalDetectorObserver* observer);
91
92   void AddEnterpriseDomainObserver(EnterpriseDomainObserver* observer);
93   void RemoveEnterpriseDomainObserver(EnterpriseDomainObserver* observer);
94
95   void AddMediaCaptureObserver(MediaCaptureObserver* observer);
96   void RemoveMediaCaptureObserver(MediaCaptureObserver* observer);
97
98   void AddScreenCaptureObserver(ScreenCaptureObserver* observer);
99   void RemoveScreenCaptureObserver(ScreenCaptureObserver* observer);
100
101   void AddScreenShareObserver(ScreenShareObserver* observer);
102   void RemoveScreenShareObserver(ScreenShareObserver* observer);
103
104   void AddLastWindowClosedObserver(LastWindowClosedObserver* observer);
105   void RemoveLastWindowClosedObserver(LastWindowClosedObserver* observer);
106
107   void AddVirtualKeyboardObserver(VirtualKeyboardObserver* observer);
108   void RemoveVirtualKeyboardObserver(VirtualKeyboardObserver* observer);
109 #endif
110
111   void NotifyAccessibilityModeChanged(
112       ui::AccessibilityNotificationVisibility notify);
113   void NotifyAudioOutputVolumeChanged();
114   void NotifyAudioOutputMuteChanged();
115   void NotifyAudioNodesChanged();
116   void NotifyAudioActiveOutputNodeChanged();
117   void NotifyAudioActiveInputNodeChanged();
118   void NotifyTracingModeChanged(bool value);
119   void NotifyRefreshBluetooth();
120   void NotifyBluetoothDiscoveringChanged();
121   void NotifyRefreshClock();
122   void NotifyDateFormatChanged();
123   void NotifySystemClockTimeUpdated();
124   void NotifySystemClockCanSetTimeChanged(bool can_set_time);
125   void NotifyRefreshIME();
126   void NotifyLocaleChanged(LocaleObserver::Delegate* delegate,
127                            const std::string& cur_locale,
128                            const std::string& from_locale,
129                            const std::string& to_locale);
130   void NotifyUpdateRecommended(const UpdateInfo& info);
131   void NotifyUserUpdate();
132   void NotifyUserAddedToSession();
133 #if defined(OS_CHROMEOS)
134   void NotifyShowLoginButtonChanged(bool show_login_button);
135   void NotifyLogoutDialogDurationChanged(base::TimeDelta duration);
136   void NotifySessionStartTimeChanged();
137   void NotifySessionLengthLimitChanged();
138   void NotifyRequestToggleWifi();
139   void NotifyOnCaptivePortalDetected(const std::string& service_path);
140   void NotifyEnterpriseDomainChanged();
141   void NotifyMediaCaptureChanged();
142   void NotifyScreenCaptureStart(const base::Closure& stop_callback,
143                                 const base::string16& sharing_app_name);
144   void NotifyScreenCaptureStop();
145   void NotifyScreenShareStart(const base::Closure& stop_callback,
146                               const base::string16& helper_name);
147   void NotifyScreenShareStop();
148   void NotifyLastWindowClosed();
149   void NotifyVirtualKeyboardSuppressionChanged(bool suppressed);
150 #endif
151
152  private:
153   ObserverList<AccessibilityObserver> accessibility_observers_;
154   ObserverList<AudioObserver> audio_observers_;
155   ObserverList<BluetoothObserver> bluetooth_observers_;
156   ObserverList<ClockObserver> clock_observers_;
157   ObserverList<IMEObserver> ime_observers_;
158   ObserverList<LocaleObserver> locale_observers_;
159   ObserverList<TracingObserver> tracing_observers_;
160   ObserverList<UpdateObserver> update_observers_;
161   ObserverList<UserObserver> user_observers_;
162 #if defined(OS_CHROMEOS)
163   ObserverList<LogoutButtonObserver> logout_button_observers_;
164   ObserverList<SessionLengthLimitObserver> session_length_limit_observers_;
165   ObserverList<NetworkObserver> network_observers_;
166   ObserverList<NetworkPortalDetectorObserver>
167       network_portal_detector_observers_;
168   ObserverList<EnterpriseDomainObserver> enterprise_domain_observers_;
169   ObserverList<MediaCaptureObserver> media_capture_observers_;
170   ObserverList<ScreenCaptureObserver> screen_capture_observers_;
171   ObserverList<ScreenShareObserver> screen_share_observers_;
172   ObserverList<LastWindowClosedObserver> last_window_closed_observers_;
173   ObserverList<VirtualKeyboardObserver> virtual_keyboard_observers_;
174 #endif
175
176   DISALLOW_COPY_AND_ASSIGN(SystemTrayNotifier);
177 };
178
179 }  // namespace ash
180
181 #endif  // ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_