phone_status_processor.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // Copyright 2020 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_COMPONENTS_PHONEHUB_PHONE_STATUS_PROCESSOR_H_
  5. #define ASH_COMPONENTS_PHONEHUB_PHONE_STATUS_PROCESSOR_H_
  6. #include <google/protobuf/repeated_field.h>
  7. #include "ash/components/phonehub/feature_status_provider.h"
  8. #include "ash/components/phonehub/message_receiver.h"
  9. #include "ash/components/phonehub/proto/phonehub_api.pb.h"
  10. #include "ash/services/multidevice_setup/public/cpp/multidevice_setup_client.h"
  11. namespace ash {
  12. namespace phonehub {
  13. using ::google::protobuf::RepeatedPtrField;
  14. class DoNotDisturbController;
  15. class FindMyDeviceController;
  16. class MutablePhoneModel;
  17. class MultideviceFeatureAccessManager;
  18. class NotificationProcessor;
  19. class ScreenLockManager;
  20. class RecentAppsInteractionHandler;
  21. // Responsible for receiving incoming protos and calling on clients to update
  22. // their models.
  23. class PhoneStatusProcessor
  24. : public MessageReceiver::Observer,
  25. public FeatureStatusProvider::Observer,
  26. public multidevice_setup::MultiDeviceSetupClient::Observer {
  27. public:
  28. PhoneStatusProcessor(
  29. DoNotDisturbController* do_not_disturb_controller,
  30. FeatureStatusProvider* feature_status_provider,
  31. MessageReceiver* message_receiver,
  32. FindMyDeviceController* find_my_device_controller,
  33. MultideviceFeatureAccessManager* multidevice_feature_access_manager,
  34. ScreenLockManager* screen_lock_manager,
  35. NotificationProcessor* notification_processor_,
  36. multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
  37. MutablePhoneModel* phone_model,
  38. RecentAppsInteractionHandler* recent_apps_interaction_handler);
  39. ~PhoneStatusProcessor() override;
  40. PhoneStatusProcessor(const PhoneStatusProcessor&) = delete;
  41. PhoneStatusProcessor& operator=(const PhoneStatusProcessor&) = delete;
  42. private:
  43. friend class PhoneStatusProcessorTest;
  44. // FeatureStatusProvider::Observer:
  45. void OnFeatureStatusChanged() override;
  46. // MessageReceiver::Observer:
  47. void OnPhoneStatusSnapshotReceived(
  48. proto::PhoneStatusSnapshot phone_status_snapshot) override;
  49. void OnPhoneStatusUpdateReceived(
  50. proto::PhoneStatusUpdate phone_status_update) override;
  51. // MultiDeviceSetupClient::Observer:
  52. void OnHostStatusChanged(
  53. const multidevice_setup::MultiDeviceSetupClient::HostStatusWithDevice&
  54. host_device_with_status) override;
  55. void SetStreamableApps(const proto::StreamableApps& streamable_apps);
  56. void ProcessReceivedNotifications(
  57. const RepeatedPtrField<proto::Notification>& notification_protos);
  58. void SetReceivedPhoneStatusModelStates(
  59. const proto::PhoneProperties& phone_properties);
  60. void MaybeSetPhoneModelName(
  61. const absl::optional<multidevice::RemoteDeviceRef>& remote_device);
  62. void SetDoNotDisturbState(proto::NotificationMode mode);
  63. DoNotDisturbController* do_not_disturb_controller_;
  64. FeatureStatusProvider* feature_status_provider_;
  65. MessageReceiver* message_receiver_;
  66. FindMyDeviceController* find_my_device_controller_;
  67. MultideviceFeatureAccessManager* multidevice_feature_access_manager_;
  68. ScreenLockManager* screen_lock_manager_;
  69. NotificationProcessor* notification_processor_;
  70. multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client_;
  71. MutablePhoneModel* phone_model_;
  72. RecentAppsInteractionHandler* recent_apps_interaction_handler_;
  73. };
  74. } // namespace phonehub
  75. } // namespace ash
  76. #endif // ASH_COMPONENTS_PHONEHUB_PHONE_STATUS_PROCESSOR_H_