Index: services/video_capture/video_capture_service.cc |
diff --git a/services/video_capture/video_capture_service.cc b/services/video_capture/video_capture_service.cc |
index e025b6b4903cf177e072c8f99e100bba4d06b9ac..f5ad5e6aa0787bf2d3aea2be6634ca4e8261db55 100644 |
--- a/services/video_capture/video_capture_service.cc |
+++ b/services/video_capture/video_capture_service.cc |
@@ -4,6 +4,14 @@ |
#include "services/video_capture/video_capture_service.h" |
+#include "services/video_capture/video_capture_device_factory_impl.h" |
+ |
+namespace { |
+static const char kFakeDeviceDisplayName[] = "Fake Video Capture Device"; |
+static const char kFakeDeviceId[] = "FakeDeviceId"; |
+static const char kFakeModelId[] = "FakeModelId"; |
+} |
+ |
namespace video_capture { |
VideoCaptureService::VideoCaptureService() = default; |
@@ -12,14 +20,47 @@ VideoCaptureService::~VideoCaptureService() = default; |
bool VideoCaptureService::OnConnect(const shell::Identity& remote_identity, |
shell::InterfaceRegistry* registry) { |
- registry->AddInterface<mojom::VideoCaptureDeviceFactory>(this); |
+ registry->AddInterface<mojom::VideoCaptureService>(this); |
return true; |
} |
-void VideoCaptureService::Create( |
- const shell::Identity& remote_identity, |
+void VideoCaptureService::Create(const shell::Identity& remote_identity, |
+ mojom::VideoCaptureServiceRequest request) { |
+ bindings_.AddBinding(this, std::move(request)); |
+} |
+ |
+void VideoCaptureService::ConnectToDeviceFactory( |
+ mojom::VideoCaptureDeviceFactoryRequest request) { |
+ LazyInitializeDeviceFactory(); |
+ factory_bindings_.AddBinding(device_factory_.get(), std::move(request)); |
+} |
+ |
+void VideoCaptureService::ConnectToFakeDeviceFactory( |
mojom::VideoCaptureDeviceFactoryRequest request) { |
- bindings_.AddBinding(&device_factory_, std::move(request)); |
+ LazyInitializeFakeDeviceFactory(); |
+ fake_factory_bindings_.AddBinding(fake_device_factory_.get(), |
+ std::move(request)); |
+} |
+ |
+void VideoCaptureService::LazyInitializeDeviceFactory() { |
+ if (device_factory_) |
+ return; |
+ device_factory_ = base::MakeUnique<VideoCaptureDeviceFactoryImpl>(); |
+} |
+ |
+void VideoCaptureService::LazyInitializeFakeDeviceFactory() { |
+ if (fake_device_factory_) |
+ return; |
+ fake_device_factory_ = base::MakeUnique<VideoCaptureDeviceFactoryImpl>(); |
+ auto fake_device_descriptor = mojom::VideoCaptureDeviceDescriptor::New(); |
+ fake_device_descriptor->display_name = kFakeDeviceDisplayName; |
+ fake_device_descriptor->device_id = kFakeDeviceId; |
+ fake_device_descriptor->model_id = kFakeModelId; |
+ fake_device_descriptor->capture_api = mojom::VideoCaptureApi::UNKNOWN; |
+ fake_device_descriptor->transport_type = |
+ mojom::VideoCaptureTransportType::OTHER_TRANSPORT; |
+ fake_device_factory_->AddDevice(std::move(fake_device_descriptor), |
+ base::MakeUnique<VideoCaptureDeviceImpl>()); |
} |
} // namespace video_capture |