eche_feature_status_provider.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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_WEBUI_ECHE_APP_UI_ECHE_FEATURE_STATUS_PROVIDER_H_
  5. #define ASH_WEBUI_ECHE_APP_UI_ECHE_FEATURE_STATUS_PROVIDER_H_
  6. #include "ash/components/phonehub/feature_status_provider.h"
  7. // TODO(https://crbug.com/1164001): move to forward declaration.
  8. #include "ash/components/phonehub/phone_hub_manager.h"
  9. #include "ash/services/multidevice_setup/public/cpp/multidevice_setup_client.h"
  10. #include "ash/services/secure_channel/public/cpp/client/connection_manager.h"
  11. #include "ash/webui/eche_app_ui/feature_status_provider.h"
  12. #include "base/memory/weak_ptr.h"
  13. namespace ash {
  14. namespace device_sync {
  15. class DeviceSyncClient;
  16. }
  17. namespace eche_app {
  18. // FeatureStatusProvider implementation which observes PhoneHub's state, then
  19. // layers in Eche's state.
  20. class EcheFeatureStatusProvider
  21. : public FeatureStatusProvider,
  22. public phonehub::FeatureStatusProvider::Observer,
  23. public secure_channel::ConnectionManager::Observer,
  24. public multidevice_setup::MultiDeviceSetupClient::Observer {
  25. public:
  26. EcheFeatureStatusProvider(
  27. phonehub::PhoneHubManager* phone_hub_manager,
  28. device_sync::DeviceSyncClient* device_sync_client,
  29. multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
  30. secure_channel::ConnectionManager* connection_manager);
  31. ~EcheFeatureStatusProvider() override;
  32. // FeatureStatusProvider:
  33. FeatureStatus GetStatus() const override;
  34. private:
  35. void UpdateStatus();
  36. FeatureStatus ComputeStatus();
  37. // phonehub::FeatureStatusProvider::Observer:
  38. void OnFeatureStatusChanged() override;
  39. // secure_channel::ConnectionManager::Observer:
  40. void OnConnectionStatusChanged() override;
  41. // multidevice_setup::MultiDeviceSetupClient::Observer:
  42. void OnHostStatusChanged(
  43. const multidevice_setup::MultiDeviceSetupClient::HostStatusWithDevice&
  44. host_device_with_status) override;
  45. void OnFeatureStatesChanged(
  46. const multidevice_setup::MultiDeviceSetupClient::FeatureStatesMap&
  47. feature_states_map) override;
  48. phonehub::FeatureStatusProvider* phone_hub_feature_status_provider_;
  49. device_sync::DeviceSyncClient* device_sync_client_;
  50. multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client_;
  51. secure_channel::ConnectionManager* connection_manager_;
  52. phonehub::FeatureStatus current_phone_hub_feature_status_;
  53. absl::optional<FeatureStatus> status_;
  54. base::WeakPtrFactory<EcheFeatureStatusProvider> weak_ptr_factory_{this};
  55. };
  56. } // namespace eche_app
  57. } // namespace ash
  58. #endif // ASH_WEBUI_ECHE_APP_UI_ECHE_FEATURE_STATUS_PROVIDER_H_