privileged_host_device_setter_impl.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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_PRIVILEGED_HOST_DEVICE_SETTER_IMPL_H_
  5. #define ASH_SERVICES_MULTIDEVICE_SETUP_PRIVILEGED_HOST_DEVICE_SETTER_IMPL_H_
  6. #include "ash/services/multidevice_setup/privileged_host_device_setter_base.h"
  7. #include "ash/services/multidevice_setup/public/mojom/multidevice_setup.mojom.h"
  8. namespace ash {
  9. namespace multidevice_setup {
  10. class MultiDeviceSetupBase;
  11. // Concrete PrivilegedHostDeviceSetterBase implementation, which delegates
  12. // SetHostDevice() calls to MultiDeviceSetupBase.
  13. class PrivilegedHostDeviceSetterImpl : public PrivilegedHostDeviceSetterBase {
  14. public:
  15. class Factory {
  16. public:
  17. static std::unique_ptr<PrivilegedHostDeviceSetterBase> Create(
  18. MultiDeviceSetupBase* multidevice_setup);
  19. static void SetFactoryForTesting(Factory* test_factory);
  20. protected:
  21. virtual ~Factory();
  22. virtual std::unique_ptr<PrivilegedHostDeviceSetterBase> CreateInstance(
  23. MultiDeviceSetupBase* multidevice_setup) = 0;
  24. private:
  25. static Factory* test_factory_;
  26. };
  27. PrivilegedHostDeviceSetterImpl(const PrivilegedHostDeviceSetterImpl&) =
  28. delete;
  29. PrivilegedHostDeviceSetterImpl& operator=(
  30. const PrivilegedHostDeviceSetterImpl&) = delete;
  31. ~PrivilegedHostDeviceSetterImpl() override;
  32. private:
  33. explicit PrivilegedHostDeviceSetterImpl(
  34. MultiDeviceSetupBase* multidevice_setup);
  35. // mojom::PrivilegedHostDeviceSetter:
  36. void SetHostDevice(const std::string& host_instance_id_or_legacy_device_id,
  37. SetHostDeviceCallback callback) override;
  38. MultiDeviceSetupBase* multidevice_setup_;
  39. };
  40. } // namespace multidevice_setup
  41. } // namespace ash
  42. #endif // ASH_SERVICES_MULTIDEVICE_SETUP_PRIVILEGED_HOST_DEVICE_SETTER_IMPL_H_