| 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..b615b4268138c8067c431158a10d4e9ddd4f8ce1 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
|
| @@ -1,4 +1,4 @@
|
| -// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| @@ -12,17 +12,46 @@ InProcessVideoCaptureProvider::InProcessVideoCaptureProvider(
|
| std::unique_ptr<media::VideoCaptureSystem> video_capture_system,
|
| scoped_refptr<base::SingleThreadTaskRunner> device_task_runner)
|
| : video_capture_system_(std::move(video_capture_system)),
|
| - device_task_runner_(std::move(device_task_runner)) {}
|
| + device_task_runner_(std::move(device_task_runner)) {
|
| + DETACH_FROM_SEQUENCE(sequence_checker_);
|
| +}
|
| +
|
| +InProcessVideoCaptureProvider::~InProcessVideoCaptureProvider() {
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| +}
|
| +
|
| +// static
|
| +std::unique_ptr<VideoCaptureProvider>
|
| +InProcessVideoCaptureProvider::CreateInstanceForNonDeviceCapture(
|
| + scoped_refptr<base::SingleThreadTaskRunner> device_task_runner) {
|
| + return base::MakeUnique<InProcessVideoCaptureProvider>(
|
| + nullptr, std::move(device_task_runner));
|
| +}
|
|
|
| -InProcessVideoCaptureProvider::~InProcessVideoCaptureProvider() = default;
|
| +// static
|
| +std::unique_ptr<VideoCaptureProvider>
|
| +InProcessVideoCaptureProvider::CreateInstance(
|
| + std::unique_ptr<media::VideoCaptureSystem> video_capture_system,
|
| + scoped_refptr<base::SingleThreadTaskRunner> device_task_runner) {
|
| + return base::MakeUnique<InProcessVideoCaptureProvider>(
|
| + std::move(video_capture_system), std::move(device_task_runner));
|
| +}
|
|
|
| -void InProcessVideoCaptureProvider::Uninitialize() {}
|
| +void InProcessVideoCaptureProvider::Uninitialize() {
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| +}
|
|
|
| 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) {
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| + if (!video_capture_system_) {
|
| + std::vector<media::VideoCaptureDeviceInfo> empty_result;
|
| + result_callback.Run(empty_result);
|
| + return;
|
| + }
|
| + // Using Unretained() is safe because |this| owns
|
| + // |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()),
|
| @@ -31,6 +60,7 @@ void InProcessVideoCaptureProvider::GetDeviceInfosAsync(
|
|
|
| std::unique_ptr<VideoCaptureDeviceLauncher>
|
| InProcessVideoCaptureProvider::CreateDeviceLauncher() {
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| return base::MakeUnique<InProcessVideoCaptureDeviceLauncher>(
|
| device_task_runner_, video_capture_system_.get());
|
| }
|
|
|