host_device_timestamp_manager_impl.h 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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_HOST_DEVICE_TIMESTAMP_MANAGER_IMPL_H_
  5. #define ASH_SERVICES_MULTIDEVICE_SETUP_HOST_DEVICE_TIMESTAMP_MANAGER_IMPL_H_
  6. #include <memory>
  7. #include "ash/services/multidevice_setup/host_device_timestamp_manager.h"
  8. #include "ash/services/multidevice_setup/host_status_provider.h"
  9. #include "base/time/time.h"
  10. #include "third_party/abseil-cpp/absl/types/optional.h"
  11. class PrefRegistrySimple;
  12. class PrefService;
  13. namespace base {
  14. class Clock;
  15. }
  16. namespace ash {
  17. namespace multidevice_setup {
  18. // Concrete HostDeviceTimestampManager implementation.
  19. class HostDeviceTimestampManagerImpl : public HostDeviceTimestampManager,
  20. public HostStatusProvider::Observer {
  21. public:
  22. class Factory {
  23. public:
  24. static std::unique_ptr<HostDeviceTimestampManager> Create(
  25. HostStatusProvider* host_status_provider,
  26. PrefService* pref_service,
  27. base::Clock* clock);
  28. static void SetFactoryForTesting(Factory* test_factory);
  29. protected:
  30. virtual ~Factory();
  31. virtual std::unique_ptr<HostDeviceTimestampManager> CreateInstance(
  32. HostStatusProvider* host_status_provider,
  33. PrefService* pref_service,
  34. base::Clock* clock) = 0;
  35. private:
  36. static Factory* test_factory_;
  37. };
  38. static void RegisterPrefs(PrefRegistrySimple* registry);
  39. HostDeviceTimestampManagerImpl(const HostDeviceTimestampManagerImpl&) =
  40. delete;
  41. HostDeviceTimestampManagerImpl& operator=(
  42. const HostDeviceTimestampManagerImpl&) = delete;
  43. ~HostDeviceTimestampManagerImpl() override;
  44. // HostDeviceTimestampManager:
  45. bool WasHostSetFromThisChromebook() override;
  46. absl::optional<base::Time> GetLatestSetupFlowCompletionTimestamp() override;
  47. absl::optional<base::Time> GetLatestVerificationTimestamp() override;
  48. private:
  49. static const char kWasHostSetFromThisChromebookPrefName[];
  50. static const char kSetupFlowCompletedPrefName[];
  51. static const char kHostVerifiedUpdateReceivedPrefName[];
  52. HostDeviceTimestampManagerImpl(HostStatusProvider* host_status_provider,
  53. PrefService* pref_service,
  54. base::Clock* clock);
  55. // HostStatusProvider::Observer:
  56. void OnHostStatusChange(const HostStatusProvider::HostStatusWithDevice&
  57. host_status_with_device) override;
  58. HostStatusProvider* host_status_provider_;
  59. PrefService* pref_service_;
  60. base::Clock* clock_;
  61. };
  62. } // namespace multidevice_setup
  63. } // namespace ash
  64. #endif // ASH_SERVICES_MULTIDEVICE_SETUP_HOST_DEVICE_TIMESTAMP_MANAGER_IMPL_H_