eligible_host_devices_provider_impl.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // Copyright 2018 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_SERVICES_MULTIDEVICE_SETUP_ELIGIBLE_HOST_DEVICES_PROVIDER_IMPL_H_
  5. #define ASH_SERVICES_MULTIDEVICE_SETUP_ELIGIBLE_HOST_DEVICES_PROVIDER_IMPL_H_
  6. #include "ash/components/multidevice/remote_device_ref.h"
  7. #include "ash/services/device_sync/public/cpp/device_sync_client.h"
  8. #include "ash/services/multidevice_setup/eligible_host_devices_provider.h"
  9. namespace ash {
  10. namespace multidevice_setup {
  11. // Concrete EligibleHostDevicesProvider implementation, which utilizes
  12. // DeviceSyncClient to fetch devices.
  13. class EligibleHostDevicesProviderImpl
  14. : public EligibleHostDevicesProvider,
  15. public device_sync::DeviceSyncClient::Observer {
  16. public:
  17. static constexpr base::TimeDelta kInactiveDeviceThresholdInDays =
  18. base::Days(30);
  19. class Factory {
  20. public:
  21. static std::unique_ptr<EligibleHostDevicesProvider> Create(
  22. device_sync::DeviceSyncClient* device_sync_client);
  23. static void SetFactoryForTesting(Factory* factory);
  24. protected:
  25. virtual ~Factory();
  26. virtual std::unique_ptr<EligibleHostDevicesProvider> CreateInstance(
  27. device_sync::DeviceSyncClient* device_sync_client) = 0;
  28. private:
  29. static Factory* test_factory_;
  30. };
  31. EligibleHostDevicesProviderImpl(const EligibleHostDevicesProviderImpl&) =
  32. delete;
  33. EligibleHostDevicesProviderImpl& operator=(
  34. const EligibleHostDevicesProviderImpl&) = delete;
  35. ~EligibleHostDevicesProviderImpl() override;
  36. private:
  37. explicit EligibleHostDevicesProviderImpl(
  38. device_sync::DeviceSyncClient* device_sync_client);
  39. // EligibleHostDevicesProvider:
  40. multidevice::RemoteDeviceRefList GetEligibleHostDevices() const override;
  41. multidevice::DeviceWithConnectivityStatusList GetEligibleActiveHostDevices()
  42. const override;
  43. // device_sync::DeviceSyncClient::Observer:
  44. void OnNewDevicesSynced() override;
  45. void UpdateEligibleDevicesSet();
  46. void OnGetDevicesActivityStatus(
  47. device_sync::mojom::NetworkRequestResult,
  48. absl::optional<std::vector<device_sync::mojom::DeviceActivityStatusPtr>>);
  49. device_sync::DeviceSyncClient* device_sync_client_;
  50. multidevice::RemoteDeviceRefList eligible_devices_from_last_sync_;
  51. multidevice::DeviceWithConnectivityStatusList
  52. eligible_active_devices_from_last_sync_;
  53. };
  54. } // namespace multidevice_setup
  55. } // namespace ash
  56. #endif // ASH_SERVICES_MULTIDEVICE_SETUP_ELIGIBLE_HOST_DEVICES_PROVIDER_IMPL_H_