Index: services/video_capture/video_capture_service_impl.cc |
diff --git a/services/video_capture/service_impl.cc b/services/video_capture/video_capture_service_impl.cc |
similarity index 61% |
rename from services/video_capture/service_impl.cc |
rename to services/video_capture/video_capture_service_impl.cc |
index cb1b98d9578e46bc5bbf4a423bca9f6b24b71a80..179159eb219073d3024296621435476a1eaab064 100644 |
--- a/services/video_capture/service_impl.cc |
+++ b/services/video_capture/video_capture_service_impl.cc |
@@ -2,10 +2,9 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "services/video_capture/service_impl.h" |
+#include "services/video_capture/video_capture_service_impl.h" |
#include "base/memory/ptr_util.h" |
-#include "base/message_loop/message_loop.h" |
#include "media/capture/video/fake_video_capture_device_factory.h" |
#include "media/capture/video/video_capture_buffer_pool.h" |
#include "media/capture/video/video_capture_buffer_tracker.h" |
@@ -26,54 +25,51 @@ std::unique_ptr<media::VideoCaptureJpegDecoder> CreateJpegDecoder() { |
namespace video_capture { |
-ServiceImpl::ServiceImpl() { |
- registry_.AddInterface<mojom::Service>(this); |
-} |
- |
-ServiceImpl::~ServiceImpl() = default; |
- |
-void ServiceImpl::OnBindInterface( |
- const service_manager::ServiceInfo& source_info, |
- const std::string& interface_name, |
- mojo::ScopedMessagePipeHandle interface_pipe) { |
- registry_.BindInterface(source_info.identity, interface_name, |
- std::move(interface_pipe)); |
-} |
+VideoCaptureServiceImpl::VideoCaptureServiceImpl( |
+ std::unique_ptr<service_manager::ServiceContextRef> service_ref, |
+ base::Callback<void(float)> set_shutdown_delay_cb) |
+ : service_ref_(std::move(service_ref)), |
+ set_shutdown_delay_cb_(std::move(set_shutdown_delay_cb)) {} |
-void ServiceImpl::Create(const service_manager::Identity& remote_identity, |
- mojom::ServiceRequest request) { |
- service_bindings_.AddBinding(this, std::move(request)); |
-} |
+VideoCaptureServiceImpl::~VideoCaptureServiceImpl() {} |
-void ServiceImpl::ConnectToDeviceFactory(mojom::DeviceFactoryRequest request) { |
+void VideoCaptureServiceImpl::ConnectToDeviceFactory( |
+ mojom::DeviceFactoryRequest request) { |
LazyInitializeDeviceFactory(); |
factory_bindings_.AddBinding(device_factory_.get(), std::move(request)); |
} |
-void ServiceImpl::ConnectToFakeDeviceFactory( |
+void VideoCaptureServiceImpl::ConnectToFakeDeviceFactory( |
mojom::DeviceFactoryRequest request) { |
LazyInitializeFakeDeviceFactory(); |
fake_factory_bindings_.AddBinding(fake_device_factory_.get(), |
std::move(request)); |
} |
-void ServiceImpl::LazyInitializeDeviceFactory() { |
+void VideoCaptureServiceImpl::SetShutdownDelayInSeconds(float seconds) { |
+ set_shutdown_delay_cb_.Run(seconds); |
+} |
+ |
+void VideoCaptureServiceImpl::LazyInitializeDeviceFactory() { |
if (device_factory_) |
return; |
// Create the platform-specific device factory. |
- // Task runner does not seem to actually be used. |
+ // The task runner passed to CreateFactory is used for things that need to |
+ // happen on a "UI thread equivalent", e.g. obtaining screen rotation on |
+ // Chrome OS. |
std::unique_ptr<media::VideoCaptureDeviceFactory> media_device_factory = |
media::VideoCaptureDeviceFactory::CreateFactory( |
- base::MessageLoop::current()->task_runner()); |
+ base::ThreadTaskRunnerHandle::Get()); |
auto video_capture_system = base::MakeUnique<media::VideoCaptureSystemImpl>( |
std::move(media_device_factory)); |
device_factory_ = base::MakeUnique<DeviceFactoryMediaToMojoAdapter>( |
- std::move(video_capture_system), base::Bind(CreateJpegDecoder)); |
+ service_ref_->Clone(), std::move(video_capture_system), |
+ base::Bind(CreateJpegDecoder)); |
} |
-void ServiceImpl::LazyInitializeFakeDeviceFactory() { |
+void VideoCaptureServiceImpl::LazyInitializeFakeDeviceFactory() { |
if (fake_device_factory_) |
return; |
@@ -82,7 +78,8 @@ void ServiceImpl::LazyInitializeFakeDeviceFactory() { |
base::MakeUnique<media::VideoCaptureSystemImpl>(std::move(factory)); |
fake_device_factory_ = base::MakeUnique<DeviceFactoryMediaToMojoAdapter>( |
- std::move(video_capture_system), base::Bind(&CreateJpegDecoder)); |
+ service_ref_->Clone(), std::move(video_capture_system), |
+ base::Bind(&CreateJpegDecoder)); |
} |
} // namespace video_capture |