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 #include "ash/system/tray/system_tray_notifier.h" 6 7 #if defined(OS_CHROMEOS) 8 #include "ash/system/chromeos/network/network_state_notifier.h" 9 #endif 10 11 namespace ash { 12 13 SystemTrayNotifier::SystemTrayNotifier() { 14 #if defined(OS_CHROMEOS) 15 network_state_notifier_.reset(new NetworkStateNotifier()); 16 #endif 17 } 18 19 SystemTrayNotifier::~SystemTrayNotifier() { 20 } 21 22 void SystemTrayNotifier::AddAccessibilityObserver( 23 AccessibilityObserver* observer) { 24 accessibility_observers_.AddObserver(observer); 25 } 26 27 void SystemTrayNotifier::RemoveAccessibilityObserver( 28 AccessibilityObserver* observer) { 29 accessibility_observers_.RemoveObserver(observer); 30 } 31 32 void SystemTrayNotifier::AddAudioObserver(AudioObserver* observer) { 33 audio_observers_.AddObserver(observer); 34 } 35 36 void SystemTrayNotifier::RemoveAudioObserver(AudioObserver* observer) { 37 audio_observers_.RemoveObserver(observer); 38 } 39 40 void SystemTrayNotifier::AddBluetoothObserver(BluetoothObserver* observer) { 41 bluetooth_observers_.AddObserver(observer); 42 } 43 44 void SystemTrayNotifier::RemoveBluetoothObserver(BluetoothObserver* observer) { 45 bluetooth_observers_.RemoveObserver(observer); 46 } 47 48 void SystemTrayNotifier::AddClockObserver(ClockObserver* observer) { 49 clock_observers_.AddObserver(observer); 50 } 51 52 void SystemTrayNotifier::RemoveClockObserver(ClockObserver* observer) { 53 clock_observers_.RemoveObserver(observer); 54 } 55 56 void SystemTrayNotifier::AddIMEObserver(IMEObserver* observer) { 57 ime_observers_.AddObserver(observer); 58 } 59 60 void SystemTrayNotifier::RemoveIMEObserver(IMEObserver* observer) { 61 ime_observers_.RemoveObserver(observer); 62 } 63 64 void SystemTrayNotifier::AddLocaleObserver(LocaleObserver* observer) { 65 locale_observers_.AddObserver(observer); 66 } 67 68 void SystemTrayNotifier::RemoveLocaleObserver(LocaleObserver* observer) { 69 locale_observers_.RemoveObserver(observer); 70 } 71 72 void SystemTrayNotifier::AddTracingObserver(TracingObserver* observer) { 73 tracing_observers_.AddObserver(observer); 74 } 75 76 void SystemTrayNotifier::RemoveTracingObserver(TracingObserver* observer) { 77 tracing_observers_.RemoveObserver(observer); 78 } 79 80 void SystemTrayNotifier::AddUpdateObserver(UpdateObserver* observer) { 81 update_observers_.AddObserver(observer); 82 } 83 84 void SystemTrayNotifier::RemoveUpdateObserver(UpdateObserver* observer) { 85 update_observers_.RemoveObserver(observer); 86 } 87 88 void SystemTrayNotifier::AddUserObserver(UserObserver* observer) { 89 user_observers_.AddObserver(observer); 90 } 91 92 void SystemTrayNotifier::RemoveUserObserver(UserObserver* observer) { 93 user_observers_.RemoveObserver(observer); 94 } 95 96 #if defined(OS_CHROMEOS) 97 98 void SystemTrayNotifier::AddLogoutButtonObserver( 99 LogoutButtonObserver* observer) { 100 logout_button_observers_.AddObserver(observer); 101 } 102 103 void SystemTrayNotifier::RemoveLogoutButtonObserver( 104 LogoutButtonObserver* observer) { 105 logout_button_observers_.RemoveObserver(observer); 106 } 107 108 void SystemTrayNotifier::AddSessionLengthLimitObserver( 109 SessionLengthLimitObserver* observer) { 110 session_length_limit_observers_.AddObserver(observer); 111 } 112 113 void SystemTrayNotifier::RemoveSessionLengthLimitObserver( 114 SessionLengthLimitObserver* observer) { 115 session_length_limit_observers_.RemoveObserver(observer); 116 } 117 118 void SystemTrayNotifier::AddNetworkObserver(NetworkObserver* observer) { 119 network_observers_.AddObserver(observer); 120 } 121 122 void SystemTrayNotifier::RemoveNetworkObserver(NetworkObserver* observer) { 123 network_observers_.RemoveObserver(observer); 124 } 125 126 void SystemTrayNotifier::AddNetworkPortalDetectorObserver( 127 NetworkPortalDetectorObserver* observer) { 128 network_portal_detector_observers_.AddObserver(observer); 129 } 130 131 void SystemTrayNotifier::RemoveNetworkPortalDetectorObserver( 132 NetworkPortalDetectorObserver* observer) { 133 network_portal_detector_observers_.RemoveObserver(observer); 134 } 135 136 void SystemTrayNotifier::AddEnterpriseDomainObserver( 137 EnterpriseDomainObserver* observer) { 138 enterprise_domain_observers_.AddObserver(observer); 139 } 140 141 void SystemTrayNotifier::RemoveEnterpriseDomainObserver( 142 EnterpriseDomainObserver* observer) { 143 enterprise_domain_observers_.RemoveObserver(observer); 144 } 145 146 void SystemTrayNotifier::AddMediaCaptureObserver( 147 MediaCaptureObserver* observer) { 148 media_capture_observers_.AddObserver(observer); 149 } 150 151 void SystemTrayNotifier::RemoveMediaCaptureObserver( 152 MediaCaptureObserver* observer) { 153 media_capture_observers_.RemoveObserver(observer); 154 } 155 156 void SystemTrayNotifier::AddScreenCaptureObserver( 157 ScreenCaptureObserver* observer) { 158 screen_capture_observers_.AddObserver(observer); 159 } 160 161 void SystemTrayNotifier::RemoveScreenCaptureObserver( 162 ScreenCaptureObserver* observer) { 163 screen_capture_observers_.RemoveObserver(observer); 164 } 165 166 void SystemTrayNotifier::AddScreenShareObserver( 167 ScreenShareObserver* observer) { 168 screen_share_observers_.AddObserver(observer); 169 } 170 171 void SystemTrayNotifier::RemoveScreenShareObserver( 172 ScreenShareObserver* observer) { 173 screen_share_observers_.RemoveObserver(observer); 174 } 175 176 void SystemTrayNotifier::AddLastWindowClosedObserver( 177 LastWindowClosedObserver* observer) { 178 last_window_closed_observers_.AddObserver(observer); 179 } 180 181 void SystemTrayNotifier::RemoveLastWindowClosedObserver( 182 LastWindowClosedObserver* observer) { 183 last_window_closed_observers_.RemoveObserver(observer); 184 } 185 #endif 186 187 void SystemTrayNotifier::NotifyAccessibilityModeChanged( 188 AccessibilityNotificationVisibility notify) { 189 FOR_EACH_OBSERVER( 190 AccessibilityObserver, 191 accessibility_observers_, 192 OnAccessibilityModeChanged(notify)); 193 } 194 195 void SystemTrayNotifier::NotifyAudioOutputVolumeChanged() { 196 FOR_EACH_OBSERVER( 197 AudioObserver, 198 audio_observers_, 199 OnOutputVolumeChanged()); 200 } 201 202 void SystemTrayNotifier::NotifyAudioOutputMuteChanged() { 203 FOR_EACH_OBSERVER( 204 AudioObserver, 205 audio_observers_, 206 OnOutputMuteChanged()); 207 } 208 209 void SystemTrayNotifier::NotifyAudioNodesChanged() { 210 FOR_EACH_OBSERVER( 211 AudioObserver, 212 audio_observers_, 213 OnAudioNodesChanged()); 214 } 215 216 void SystemTrayNotifier::NotifyAudioActiveOutputNodeChanged() { 217 FOR_EACH_OBSERVER( 218 AudioObserver, 219 audio_observers_, 220 OnActiveOutputNodeChanged()); 221 } 222 223 void SystemTrayNotifier::NotifyAudioActiveInputNodeChanged() { 224 FOR_EACH_OBSERVER( 225 AudioObserver, 226 audio_observers_, 227 OnActiveInputNodeChanged()); 228 } 229 230 void SystemTrayNotifier::NotifyTracingModeChanged(bool value) { 231 FOR_EACH_OBSERVER( 232 TracingObserver, 233 tracing_observers_, 234 OnTracingModeChanged(value)); 235 } 236 237 void SystemTrayNotifier::NotifyRefreshBluetooth() { 238 FOR_EACH_OBSERVER(BluetoothObserver, 239 bluetooth_observers_, 240 OnBluetoothRefresh()); 241 } 242 243 void SystemTrayNotifier::NotifyBluetoothDiscoveringChanged() { 244 FOR_EACH_OBSERVER(BluetoothObserver, 245 bluetooth_observers_, 246 OnBluetoothDiscoveringChanged()); 247 } 248 249 void SystemTrayNotifier::NotifyRefreshClock() { 250 FOR_EACH_OBSERVER(ClockObserver, clock_observers_, Refresh()); 251 } 252 253 void SystemTrayNotifier::NotifyDateFormatChanged() { 254 FOR_EACH_OBSERVER(ClockObserver, 255 clock_observers_, 256 OnDateFormatChanged()); 257 } 258 259 void SystemTrayNotifier::NotifySystemClockTimeUpdated() { 260 FOR_EACH_OBSERVER(ClockObserver, 261 clock_observers_, 262 OnSystemClockTimeUpdated()); 263 } 264 265 void SystemTrayNotifier::NotifySystemClockCanSetTimeChanged(bool can_set_time) { 266 FOR_EACH_OBSERVER(ClockObserver, 267 clock_observers_, 268 OnSystemClockCanSetTimeChanged(can_set_time)); 269 } 270 271 void SystemTrayNotifier::NotifyRefreshIME() { 272 FOR_EACH_OBSERVER(IMEObserver, 273 ime_observers_, 274 OnIMERefresh()); 275 } 276 277 void SystemTrayNotifier::NotifyLocaleChanged( 278 LocaleObserver::Delegate* delegate, 279 const std::string& cur_locale, 280 const std::string& from_locale, 281 const std::string& to_locale) { 282 FOR_EACH_OBSERVER( 283 LocaleObserver, 284 locale_observers_, 285 OnLocaleChanged(delegate, cur_locale, from_locale, to_locale)); 286 } 287 288 void SystemTrayNotifier::NotifyUpdateRecommended( 289 UpdateObserver::UpdateSeverity severity) { 290 FOR_EACH_OBSERVER(UpdateObserver, 291 update_observers_, 292 OnUpdateRecommended(severity)); 293 } 294 295 void SystemTrayNotifier::NotifyUserUpdate() { 296 FOR_EACH_OBSERVER(UserObserver, 297 user_observers_, 298 OnUserUpdate()); 299 } 300 301 void SystemTrayNotifier::NotifyUserAddedToSession() { 302 FOR_EACH_OBSERVER(UserObserver, 303 user_observers_, 304 OnUserAddedToSession()); 305 } 306 307 #if defined(OS_CHROMEOS) 308 309 void SystemTrayNotifier::NotifyShowLoginButtonChanged(bool show_login_button) { 310 FOR_EACH_OBSERVER(LogoutButtonObserver, 311 logout_button_observers_, 312 OnShowLogoutButtonInTrayChanged(show_login_button)); 313 } 314 315 void SystemTrayNotifier::NotifyLogoutDialogDurationChanged( 316 base::TimeDelta duration) { 317 FOR_EACH_OBSERVER(LogoutButtonObserver, 318 logout_button_observers_, 319 OnLogoutDialogDurationChanged(duration)); 320 } 321 322 void SystemTrayNotifier::NotifySessionStartTimeChanged() { 323 FOR_EACH_OBSERVER(SessionLengthLimitObserver, 324 session_length_limit_observers_, 325 OnSessionStartTimeChanged()); 326 } 327 328 void SystemTrayNotifier::NotifySessionLengthLimitChanged() { 329 FOR_EACH_OBSERVER(SessionLengthLimitObserver, 330 session_length_limit_observers_, 331 OnSessionLengthLimitChanged()); 332 } 333 334 void SystemTrayNotifier::NotifyRequestToggleWifi() { 335 FOR_EACH_OBSERVER(NetworkObserver, 336 network_observers_, 337 RequestToggleWifi()); 338 } 339 340 void SystemTrayNotifier::NotifyOnCaptivePortalDetected( 341 const std::string& service_path) { 342 FOR_EACH_OBSERVER(NetworkPortalDetectorObserver, 343 network_portal_detector_observers_, 344 OnCaptivePortalDetected(service_path)); 345 } 346 347 void SystemTrayNotifier::NotifyEnterpriseDomainChanged() { 348 FOR_EACH_OBSERVER(EnterpriseDomainObserver, enterprise_domain_observers_, 349 OnEnterpriseDomainChanged()); 350 } 351 352 void SystemTrayNotifier::NotifyMediaCaptureChanged() { 353 FOR_EACH_OBSERVER( 354 MediaCaptureObserver, media_capture_observers_, OnMediaCaptureChanged()); 355 } 356 357 void SystemTrayNotifier::NotifyScreenCaptureStart( 358 const base::Closure& stop_callback, 359 const base::string16& sharing_app_name) { 360 FOR_EACH_OBSERVER(ScreenCaptureObserver, screen_capture_observers_, 361 OnScreenCaptureStart(stop_callback, sharing_app_name)); 362 } 363 364 void SystemTrayNotifier::NotifyScreenCaptureStop() { 365 FOR_EACH_OBSERVER(ScreenCaptureObserver, screen_capture_observers_, 366 OnScreenCaptureStop()); 367 } 368 369 void SystemTrayNotifier::NotifyScreenShareStart( 370 const base::Closure& stop_callback, 371 const base::string16& helper_name) { 372 FOR_EACH_OBSERVER(ScreenShareObserver, screen_share_observers_, 373 OnScreenShareStart(stop_callback, helper_name)); 374 } 375 376 void SystemTrayNotifier::NotifyScreenShareStop() { 377 FOR_EACH_OBSERVER(ScreenShareObserver, screen_share_observers_, 378 OnScreenShareStop()); 379 } 380 381 void SystemTrayNotifier::NotifyLastWindowClosed() { 382 FOR_EACH_OBSERVER(LastWindowClosedObserver, 383 last_window_closed_observers_, 384 OnLastWindowClosed()); 385 } 386 387 #endif // OS_CHROMEOS 388 389 } // namespace ash 390