device_factory_adapter_lacros.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Copyright 2021 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 SERVICES_VIDEO_CAPTURE_LACROS_DEVICE_FACTORY_ADAPTER_LACROS_H_
  5. #define SERVICES_VIDEO_CAPTURE_LACROS_DEVICE_FACTORY_ADAPTER_LACROS_H_
  6. #include <memory>
  7. #include <string>
  8. #include "base/containers/flat_map.h"
  9. #include "chromeos/crosapi/mojom/video_capture.mojom.h"
  10. #include "mojo/public/cpp/bindings/pending_receiver.h"
  11. #include "mojo/public/cpp/bindings/pending_remote.h"
  12. #include "mojo/public/cpp/bindings/remote.h"
  13. #include "services/video_capture/device_factory.h"
  14. #include "services/video_capture/public/mojom/device_factory.mojom.h"
  15. namespace video_capture {
  16. class DeviceProxyLacros;
  17. // A proxy which forwards the requests to the actual
  18. // video_capture::DeviceFactory in Ash-Chrome.
  19. class DeviceFactoryAdapterLacros : public DeviceFactory {
  20. public:
  21. explicit DeviceFactoryAdapterLacros(
  22. mojo::PendingRemote<crosapi::mojom::VideoCaptureDeviceFactory>
  23. device_factory_ash);
  24. DeviceFactoryAdapterLacros(const DeviceFactoryAdapterLacros&) = delete;
  25. DeviceFactoryAdapterLacros& operator=(const DeviceFactoryAdapterLacros&) =
  26. delete;
  27. ~DeviceFactoryAdapterLacros() override;
  28. private:
  29. // DeviceFactory implementation.
  30. void GetDeviceInfos(GetDeviceInfosCallback callback) override;
  31. void CreateDevice(const std::string& device_id,
  32. mojo::PendingReceiver<mojom::Device> device_receiver,
  33. CreateDeviceCallback callback) override;
  34. void AddSharedMemoryVirtualDevice(
  35. const media::VideoCaptureDeviceInfo& device_info,
  36. mojo::PendingRemote<mojom::Producer> producer,
  37. bool send_buffer_handles_to_producer_as_raw_file_descriptors,
  38. mojo::PendingReceiver<mojom::SharedMemoryVirtualDevice>
  39. virtual_device_receiver) override;
  40. void AddTextureVirtualDevice(
  41. const media::VideoCaptureDeviceInfo& device_info,
  42. mojo::PendingReceiver<mojom::TextureVirtualDevice>
  43. virtual_device_receiver) override;
  44. void AddGpuMemoryBufferVirtualDevice(
  45. const media::VideoCaptureDeviceInfo& device_info,
  46. mojo::PendingReceiver<mojom::GpuMemoryBufferVirtualDevice>
  47. virtual_device_receiver) override;
  48. void RegisterVirtualDevicesChangedObserver(
  49. mojo::PendingRemote<mojom::DevicesChangedObserver> observer,
  50. bool raise_event_if_virtual_devices_already_present) override;
  51. void OnClientConnectionErrorOrClose(std::string device_id);
  52. mojo::Remote<crosapi::mojom::VideoCaptureDeviceFactory> device_factory_ash_;
  53. // The key is the device id used in blink::MediaStreamDevice.
  54. base::flat_map<std::string, std::unique_ptr<DeviceProxyLacros>> devices_;
  55. };
  56. } // namespace video_capture
  57. #endif // SERVICES_VIDEO_CAPTURE_LACROS_DEVICE_FACTORY_ADAPTER_LACROS_H_