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 5 #ifndef CHROMEOS_SERVICES_MULTIDEVICE_SETUP_MULTIDEVICE_SETUP_SERVICE_H_ 6 #define CHROMEOS_SERVICES_MULTIDEVICE_SETUP_MULTIDEVICE_SETUP_SERVICE_H_ 7 8 #include <memory> 9 10 #include "chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom.h" 11 12 class PrefService; 13 class PrefRegistrySimple; 14 15 namespace chromeos { 16 17 namespace device_sync { 18 class DeviceSyncClient; 19 class GcmDeviceInfoProvider; 20 } // namespace device_sync 21 22 namespace multidevice_setup { 23 24 class AndroidSmsAppHelperDelegate; 25 class AndroidSmsPairingStateTracker; 26 class AuthTokenValidator; 27 class MultiDeviceSetupBase; 28 class PrivilegedHostDeviceSetterBase; 29 class OobeCompletionTracker; 30 31 // Service which provides an implementation for mojom::MultiDeviceSetup. This 32 // service creates one implementation and shares it among all connection 33 // requests. 34 class MultiDeviceSetupService { 35 public: 36 MultiDeviceSetupService( 37 PrefService* pref_service, 38 device_sync::DeviceSyncClient* device_sync_client, 39 AuthTokenValidator* auth_token_validator, 40 OobeCompletionTracker* oobe_completion_tracker, 41 AndroidSmsAppHelperDelegate* android_sms_app_helper_delegate, 42 AndroidSmsPairingStateTracker* android_sms_pairing_state_tracker, 43 const device_sync::GcmDeviceInfoProvider* gcm_device_info_provider); 44 ~MultiDeviceSetupService(); 45 46 static void RegisterProfilePrefs(PrefRegistrySimple* registry); 47 48 void BindMultiDeviceSetup( 49 mojo::PendingReceiver<mojom::MultiDeviceSetup> receiver); 50 void BindPrivilegedHostDeviceSetter( 51 mojo::PendingReceiver<mojom::PrivilegedHostDeviceSetter> receiver); 52 53 private: 54 std::unique_ptr<MultiDeviceSetupBase> multidevice_setup_; 55 std::unique_ptr<PrivilegedHostDeviceSetterBase> 56 privileged_host_device_setter_; 57 58 DISALLOW_COPY_AND_ASSIGN(MultiDeviceSetupService); 59 }; 60 61 } // namespace multidevice_setup 62 63 } // namespace chromeos 64 65 #endif // CHROMEOS_SERVICES_MULTIDEVICE_SETUP_MULTIDEVICE_SETUP_SERVICE_H_ 66