phone_hub_manager_impl.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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_HUB_MANAGER_IMPL_H_
  5. #define ASH_COMPONENTS_PHONEHUB_PHONE_HUB_MANAGER_IMPL_H_
  6. #include <memory>
  7. #include "ash/components/phonehub/feature_setup_response_processor.h"
  8. #include "ash/components/phonehub/phone_hub_manager.h"
  9. // TODO(https://crbug.com/1164001): move to forward declaration.
  10. #include "ash/services/secure_channel/public/cpp/client/connection_manager.h"
  11. // TODO(https://crbug.com/1164001): move to forward declaration.
  12. #include "ash/services/secure_channel/public/cpp/client/secure_channel_client.h"
  13. #include "base/callback.h"
  14. #include "components/keyed_service/core/keyed_service.h"
  15. class PrefService;
  16. namespace ash {
  17. namespace device_sync {
  18. class DeviceSyncClient;
  19. }
  20. namespace multidevice_setup {
  21. class MultiDeviceSetupClient;
  22. }
  23. namespace phonehub {
  24. class BrowserTabsModelController;
  25. class BrowserTabsModelProvider;
  26. class CameraRollDownloadManager;
  27. class CameraRollManager;
  28. class CrosStateSender;
  29. class InvalidConnectionDisconnector;
  30. class MessageReceiver;
  31. class MessageSender;
  32. class MultideviceSetupStateUpdater;
  33. class MutablePhoneModel;
  34. class NotificationProcessor;
  35. class PhoneStatusProcessor;
  36. class UserActionRecorder;
  37. // Implemented as a KeyedService which is keyed by the primary Profile.
  38. class PhoneHubManagerImpl : public PhoneHubManager, public KeyedService {
  39. public:
  40. PhoneHubManagerImpl(
  41. PrefService* pref_service,
  42. device_sync::DeviceSyncClient* device_sync_client,
  43. multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
  44. secure_channel::SecureChannelClient* secure_channel_client,
  45. std::unique_ptr<BrowserTabsModelProvider> browser_tabs_model_provider,
  46. std::unique_ptr<CameraRollDownloadManager> camera_roll_download_manager,
  47. const base::RepeatingClosure& show_multidevice_setup_dialog_callback);
  48. ~PhoneHubManagerImpl() override;
  49. // PhoneHubManager:
  50. BrowserTabsModelProvider* GetBrowserTabsModelProvider() override;
  51. CameraRollManager* GetCameraRollManager() override;
  52. ConnectionScheduler* GetConnectionScheduler() override;
  53. DoNotDisturbController* GetDoNotDisturbController() override;
  54. FeatureStatusProvider* GetFeatureStatusProvider() override;
  55. FindMyDeviceController* GetFindMyDeviceController() override;
  56. MultideviceFeatureAccessManager* GetMultideviceFeatureAccessManager()
  57. override;
  58. NotificationInteractionHandler* GetNotificationInteractionHandler() override;
  59. NotificationManager* GetNotificationManager() override;
  60. OnboardingUiTracker* GetOnboardingUiTracker() override;
  61. PhoneModel* GetPhoneModel() override;
  62. RecentAppsInteractionHandler* GetRecentAppsInteractionHandler() override;
  63. ScreenLockManager* GetScreenLockManager() override;
  64. TetherController* GetTetherController() override;
  65. UserActionRecorder* GetUserActionRecorder() override;
  66. void GetHostLastSeenTimestamp(
  67. base::OnceCallback<void(absl::optional<base::Time>)> callback) override;
  68. private:
  69. // KeyedService:
  70. void Shutdown() override;
  71. std::unique_ptr<secure_channel::ConnectionManager> connection_manager_;
  72. std::unique_ptr<FeatureStatusProvider> feature_status_provider_;
  73. std::unique_ptr<UserActionRecorder> user_action_recorder_;
  74. std::unique_ptr<MessageReceiver> message_receiver_;
  75. std::unique_ptr<MessageSender> message_sender_;
  76. std::unique_ptr<MutablePhoneModel> phone_model_;
  77. std::unique_ptr<CrosStateSender> cros_state_sender_;
  78. std::unique_ptr<DoNotDisturbController> do_not_disturb_controller_;
  79. std::unique_ptr<ConnectionScheduler> connection_scheduler_;
  80. std::unique_ptr<FindMyDeviceController> find_my_device_controller_;
  81. std::unique_ptr<MultideviceFeatureAccessManager>
  82. multidevice_feature_access_manager_;
  83. std::unique_ptr<ScreenLockManager> screen_lock_manager_;
  84. std::unique_ptr<NotificationInteractionHandler>
  85. notification_interaction_handler_;
  86. std::unique_ptr<NotificationManager> notification_manager_;
  87. std::unique_ptr<OnboardingUiTracker> onboarding_ui_tracker_;
  88. std::unique_ptr<NotificationProcessor> notification_processor_;
  89. std::unique_ptr<RecentAppsInteractionHandler>
  90. recent_apps_interaction_handler_;
  91. std::unique_ptr<PhoneStatusProcessor> phone_status_processor_;
  92. std::unique_ptr<TetherController> tether_controller_;
  93. std::unique_ptr<BrowserTabsModelProvider> browser_tabs_model_provider_;
  94. std::unique_ptr<BrowserTabsModelController> browser_tabs_model_controller_;
  95. std::unique_ptr<MultideviceSetupStateUpdater>
  96. multidevice_setup_state_updater_;
  97. std::unique_ptr<InvalidConnectionDisconnector>
  98. invalid_connection_disconnector_;
  99. std::unique_ptr<CameraRollManager> camera_roll_manager_;
  100. std::unique_ptr<FeatureSetupResponseProcessor>
  101. feature_setup_response_processor_;
  102. };
  103. } // namespace phonehub
  104. } // namespace ash
  105. #endif // ASH_COMPONENTS_PHONEHUB_PHONE_HUB_MANAGER_IMPL_H_