system_tray_notifier.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // Copyright 2016 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. #ifndef ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_
  5. #define ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_
  6. #include <string>
  7. #include "ash/ash_export.h"
  8. #include "base/callback_forward.h"
  9. #include "base/observer_list.h"
  10. namespace ash {
  11. class IMEObserver;
  12. class NetworkObserver;
  13. class ScreenCaptureObserver;
  14. class ScreenShareObserver;
  15. class SystemTrayObserver;
  16. class VirtualKeyboardObserver;
  17. namespace mojom {
  18. enum class UpdateSeverity;
  19. }
  20. // Observer and notification manager for the ash system tray.
  21. class ASH_EXPORT SystemTrayNotifier {
  22. public:
  23. SystemTrayNotifier();
  24. SystemTrayNotifier(const SystemTrayNotifier&) = delete;
  25. SystemTrayNotifier& operator=(const SystemTrayNotifier&) = delete;
  26. ~SystemTrayNotifier();
  27. // Input methods.
  28. void AddIMEObserver(IMEObserver* observer);
  29. void RemoveIMEObserver(IMEObserver* observer);
  30. void NotifyRefreshIME();
  31. void NotifyRefreshIMEMenu(bool is_active);
  32. // Network.
  33. void AddNetworkObserver(NetworkObserver* observer);
  34. void RemoveNetworkObserver(NetworkObserver* observer);
  35. void NotifyRequestToggleWifi();
  36. // Screen capture.
  37. void AddScreenCaptureObserver(ScreenCaptureObserver* observer);
  38. void RemoveScreenCaptureObserver(ScreenCaptureObserver* observer);
  39. void NotifyScreenCaptureStart(base::RepeatingClosure stop_callback,
  40. base::RepeatingClosure source_callback,
  41. const std::u16string& sharing_app_name);
  42. void NotifyScreenCaptureStop();
  43. // Screen share.
  44. void AddScreenShareObserver(ScreenShareObserver* observer);
  45. void RemoveScreenShareObserver(ScreenShareObserver* observer);
  46. void NotifyScreenShareStart(base::RepeatingClosure stop_callback,
  47. const std::u16string& helper_name);
  48. void NotifyScreenShareStop();
  49. // System tray focus.
  50. void AddSystemTrayObserver(SystemTrayObserver* observer);
  51. void RemoveSystemTrayObserver(SystemTrayObserver* observer);
  52. void NotifyFocusOut(bool reverse);
  53. void NotifySystemTrayBubbleShown();
  54. // Virtual keyboard.
  55. void AddVirtualKeyboardObserver(VirtualKeyboardObserver* observer);
  56. void RemoveVirtualKeyboardObserver(VirtualKeyboardObserver* observer);
  57. void NotifyVirtualKeyboardSuppressionChanged(bool suppressed);
  58. private:
  59. base::ObserverList<IMEObserver>::Unchecked ime_observers_;
  60. base::ObserverList<NetworkObserver>::Unchecked network_observers_;
  61. base::ObserverList<ScreenCaptureObserver>::Unchecked
  62. screen_capture_observers_;
  63. base::ObserverList<ScreenShareObserver>::Unchecked screen_share_observers_;
  64. base::ObserverList<SystemTrayObserver>::Unchecked system_tray_observers_;
  65. base::ObserverList<VirtualKeyboardObserver>::Unchecked
  66. virtual_keyboard_observers_;
  67. };
  68. } // namespace ash
  69. #endif // ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_