message_center_ash.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Copyright 2021 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_PUBLIC_CPP_MESSAGE_CENTER_ASH_H_
  5. #define ASH_PUBLIC_CPP_MESSAGE_CENTER_ASH_H_
  6. #include "ash/public/cpp/ash_public_export.h"
  7. #include "base/observer_list.h"
  8. #include "base/observer_list_types.h"
  9. namespace ash {
  10. // Provide public access to quiet mode to code in //chrome that cannot
  11. // directly depend on //ui/message_center.
  12. class ASH_PUBLIC_EXPORT MessageCenterAsh {
  13. public:
  14. class Observer : public base::CheckedObserver {
  15. public:
  16. ~Observer() override = default;
  17. virtual void OnQuietModeChanged(bool in_quiet_mode) = 0;
  18. };
  19. // Returns the instance owned by Shell.
  20. static MessageCenterAsh* Get();
  21. // Initializes MessageCenterAsh for testing.
  22. static void SetForTesting(MessageCenterAsh* message_center);
  23. MessageCenterAsh(const MessageCenterAsh&) = delete;
  24. MessageCenterAsh& operator=(const MessageCenterAsh&) = delete;
  25. // This sets the internal state of the Quiet Mode and fires
  26. // observer on change for OnQuietModeChanged.
  27. virtual void SetQuietMode(bool in_quiet_mode) = 0;
  28. // Queries current notification Quiet Mode status.
  29. virtual bool IsQuietMode() const = 0;
  30. void AddObserver(Observer* observer);
  31. void RemoveObserver(Observer* observer);
  32. protected:
  33. MessageCenterAsh();
  34. virtual ~MessageCenterAsh();
  35. void NotifyOnQuietModeChanged(bool in_quiet_mode);
  36. private:
  37. base::ObserverList<Observer> observer_list_;
  38. };
  39. } // namespace ash
  40. #endif // ASH_PUBLIC_CPP_MESSAGE_CENTER_ASH_H_