multidevice_setup_state_updater.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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_MULTIDEVICE_SETUP_STATE_UPDATER_H_
  5. #define ASH_COMPONENTS_PHONEHUB_MULTIDEVICE_SETUP_STATE_UPDATER_H_
  6. #include "ash/components/phonehub/multidevice_feature_access_manager.h"
  7. #include "ash/services/multidevice_setup/public/cpp/multidevice_setup_client.h"
  8. class PrefRegistrySimple;
  9. class PrefService;
  10. namespace ash {
  11. namespace phonehub {
  12. // This class waits until a multi-device host phone is verified before enabling
  13. // the Phone Hub feature. This intent to enable the feature is persisted across
  14. // restarts. This class also disables the PhoneHubNotification Multidevice
  15. // feature state when Notification access has been revoked by the phone,
  16. // provided via MultideviceFeatureAccessManager.
  17. class MultideviceSetupStateUpdater
  18. : public multidevice_setup::MultiDeviceSetupClient::Observer,
  19. public MultideviceFeatureAccessManager::Observer {
  20. public:
  21. static void RegisterPrefs(PrefRegistrySimple* registry);
  22. MultideviceSetupStateUpdater(
  23. PrefService* pref_service,
  24. multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
  25. MultideviceFeatureAccessManager* multidevice_feature_access_manager);
  26. ~MultideviceSetupStateUpdater() override;
  27. private:
  28. // multidevice_setup::MultiDeviceSetupClient::Observer:
  29. void OnHostStatusChanged(
  30. const multidevice_setup::MultiDeviceSetupClient::HostStatusWithDevice&
  31. host_device_with_status) override;
  32. void OnFeatureStatesChanged(
  33. const multidevice_setup::MultiDeviceSetupClient::FeatureStatesMap&
  34. feature_state_map) override;
  35. // MultideviceFeatureAccessManager::Observer:
  36. void OnNotificationAccessChanged() override;
  37. void OnCameraRollAccessChanged() override;
  38. bool IsWaitingForAccessToInitiallyEnableNotifications() const;
  39. bool IsWaitingForAccessToInitiallyEnableCameraRoll() const;
  40. bool IsPhoneHubEnabled() const;
  41. void EnablePhoneHubIfAwaitingVerifiedHost();
  42. void UpdateIsAwaitingVerifiedHost();
  43. PrefService* pref_service_;
  44. multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client_;
  45. MultideviceFeatureAccessManager* multidevice_feature_access_manager_;
  46. MultideviceFeatureAccessManager::AccessStatus notification_access_status_;
  47. MultideviceFeatureAccessManager::AccessStatus camera_roll_access_status_;
  48. };
  49. } // namespace phonehub
  50. } // namespace ash
  51. #endif // ASH_COMPONENTS_PHONEHUB_MULTIDEVICE_SETUP_STATE_UPDATER_H_