Index: content/browser/renderer_host/media/in_process_video_capture_provider.cc |
diff --git a/content/browser/renderer_host/media/in_process_video_capture_provider.cc b/content/browser/renderer_host/media/in_process_video_capture_provider.cc |
index ff639713e83a4dd1ccf983036f58017eb7997a0c..9c62f8ee354e56710d05077f0102036848e71788 100644 |
--- a/content/browser/renderer_host/media/in_process_video_capture_provider.cc |
+++ b/content/browser/renderer_host/media/in_process_video_capture_provider.cc |
@@ -9,30 +9,53 @@ |
namespace content { |
InProcessVideoCaptureProvider::InProcessVideoCaptureProvider( |
- std::unique_ptr<media::VideoCaptureSystem> video_capture_system, |
+ std::unique_ptr<media::VideoCaptureSystem> optional_video_capture_system, |
scoped_refptr<base::SingleThreadTaskRunner> device_task_runner) |
- : video_capture_system_(std::move(video_capture_system)), |
+ : optional_video_capture_system_(std::move(optional_video_capture_system)), |
device_task_runner_(std::move(device_task_runner)) {} |
InProcessVideoCaptureProvider::~InProcessVideoCaptureProvider() = default; |
+// static |
+std::unique_ptr<VideoCaptureProvider> |
+InProcessVideoCaptureProvider::CreateInstanceForNonDeviceCapture( |
+ scoped_refptr<base::SingleThreadTaskRunner> device_task_runner) { |
+ return base::MakeUnique<InProcessVideoCaptureProvider>( |
+ nullptr, std::move(device_task_runner)); |
+} |
+ |
+// static |
+std::unique_ptr<VideoCaptureProvider> |
+InProcessVideoCaptureProvider::CreateInstance( |
+ std::unique_ptr<media::VideoCaptureSystem> optional_video_capture_system, |
mcasas
2017/05/18 17:42:12
in l.29 of the .h, this parameter is called |video
chfremer
2017/05/18 18:28:31
Correct, thanks for catching this! I forgot to rem
|
+ scoped_refptr<base::SingleThreadTaskRunner> device_task_runner) { |
+ return base::MakeUnique<InProcessVideoCaptureProvider>( |
+ std::move(optional_video_capture_system), std::move(device_task_runner)); |
+} |
+ |
void InProcessVideoCaptureProvider::Uninitialize() {} |
void InProcessVideoCaptureProvider::GetDeviceInfosAsync( |
- const base::Callback<void( |
- const std::vector<media::VideoCaptureDeviceInfo>&)>& result_callback) { |
- // Using Unretained() is safe because |this| owns |video_capture_system_| and |
- // |result_callback| has ownership of |this|. |
+ const GetDeviceInfosCallback& result_callback) { |
+ if (!optional_video_capture_system_) { |
+ std::vector<media::VideoCaptureDeviceInfo> empty_result; |
+ result_callback.Run(empty_result); |
+ return; |
+ } |
+ // Using Unretained() is safe because |this| owns |
+ // |optional_video_capture_system_| and |result_callback| has ownership of |
+ // |this|. |
device_task_runner_->PostTask( |
- FROM_HERE, base::Bind(&media::VideoCaptureSystem::GetDeviceInfosAsync, |
- base::Unretained(video_capture_system_.get()), |
- result_callback)); |
+ FROM_HERE, |
+ base::Bind(&media::VideoCaptureSystem::GetDeviceInfosAsync, |
+ base::Unretained(optional_video_capture_system_.get()), |
+ result_callback)); |
} |
std::unique_ptr<VideoCaptureDeviceLauncher> |
InProcessVideoCaptureProvider::CreateDeviceLauncher() { |
return base::MakeUnique<InProcessVideoCaptureDeviceLauncher>( |
- device_task_runner_, video_capture_system_.get()); |
+ device_task_runner_, optional_video_capture_system_.get()); |
} |
} // namespace content |