Commit c96de186 authored by tzik's avatar tzik Committed by Commit Bot

Use OnceCallback on Mojo interfaces in //media/capture and //services/video_capture

This CL flips `use_once_callback` flag on the Mojo code generator, and
fixes all compile errors after it. After this CL, Mojo interfaces in
//media/capture and //services/video_capture start using base::OnceCallback
instead of base::Callback on its return value handling.

Bug: 714018
Change-Id: I0fcf6bfb2511332f53f1a1b01e269ebce4629a71
Reviewed-on: https://chromium-review.googlesource.com/567842
Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
Reviewed-by: default avatarChristian Fremerey <chfremer@chromium.org>
Reviewed-by: default avatarMiguel Casas <mcasas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487408}
parent c94fe768
...@@ -37,17 +37,17 @@ void RunFailedGetPhotoStateCallback( ...@@ -37,17 +37,17 @@ void RunFailedGetPhotoStateCallback(
empty_capabilities->contrast = media::mojom::Range::New(); empty_capabilities->contrast = media::mojom::Range::New();
empty_capabilities->saturation = media::mojom::Range::New(); empty_capabilities->saturation = media::mojom::Range::New();
empty_capabilities->sharpness = media::mojom::Range::New(); empty_capabilities->sharpness = media::mojom::Range::New();
cb.Run(std::move(empty_capabilities)); std::move(cb).Run(std::move(empty_capabilities));
} }
void RunFailedSetOptionsCallback(ImageCaptureImpl::SetOptionsCallback cb) { void RunFailedSetOptionsCallback(ImageCaptureImpl::SetOptionsCallback cb) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
cb.Run(false); std::move(cb).Run(false);
} }
void RunFailedTakePhotoCallback(ImageCaptureImpl::TakePhotoCallback cb) { void RunFailedTakePhotoCallback(ImageCaptureImpl::TakePhotoCallback cb) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
cb.Run(media::mojom::Blob::New()); std::move(cb).Run(media::mojom::Blob::New());
} }
void GetPhotoStateOnIOThread( void GetPhotoStateOnIOThread(
...@@ -120,12 +120,13 @@ void ImageCaptureImpl::Create( ...@@ -120,12 +120,13 @@ void ImageCaptureImpl::Create(
} }
void ImageCaptureImpl::GetPhotoState(const std::string& source_id, void ImageCaptureImpl::GetPhotoState(const std::string& source_id,
const GetPhotoStateCallback& callback) { GetPhotoStateCallback callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
media::ScopedResultCallback<GetPhotoStateCallback> scoped_callback( media::ScopedResultCallback<GetPhotoStateCallback> scoped_callback(
media::BindToCurrentLoop(callback), media::BindToCurrentLoop(std::move(callback)),
media::BindToCurrentLoop(base::Bind(&RunFailedGetPhotoStateCallback))); media::BindToCurrentLoop(
base::BindOnce(&RunFailedGetPhotoStateCallback)));
BrowserThread::PostTask( BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE, BrowserThread::IO, FROM_HERE,
...@@ -136,11 +137,11 @@ void ImageCaptureImpl::GetPhotoState(const std::string& source_id, ...@@ -136,11 +137,11 @@ void ImageCaptureImpl::GetPhotoState(const std::string& source_id,
void ImageCaptureImpl::SetOptions(const std::string& source_id, void ImageCaptureImpl::SetOptions(const std::string& source_id,
media::mojom::PhotoSettingsPtr settings, media::mojom::PhotoSettingsPtr settings,
const SetOptionsCallback& callback) { SetOptionsCallback callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
media::ScopedResultCallback<SetOptionsCallback> scoped_callback( media::ScopedResultCallback<SetOptionsCallback> scoped_callback(
media::BindToCurrentLoop(callback), media::BindToCurrentLoop(std::move(callback)),
media::BindToCurrentLoop(base::Bind(&RunFailedSetOptionsCallback))); media::BindToCurrentLoop(base::Bind(&RunFailedSetOptionsCallback)));
BrowserThread::PostTask( BrowserThread::PostTask(
...@@ -151,12 +152,12 @@ void ImageCaptureImpl::SetOptions(const std::string& source_id, ...@@ -151,12 +152,12 @@ void ImageCaptureImpl::SetOptions(const std::string& source_id,
} }
void ImageCaptureImpl::TakePhoto(const std::string& source_id, void ImageCaptureImpl::TakePhoto(const std::string& source_id,
const TakePhotoCallback& callback) { TakePhotoCallback callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
media::ScopedResultCallback<TakePhotoCallback> scoped_callback( media::ScopedResultCallback<TakePhotoCallback> scoped_callback(
media::BindToCurrentLoop(callback), media::BindToCurrentLoop(std::move(callback)),
media::BindToCurrentLoop(base::Bind(&RunFailedTakePhotoCallback))); media::BindToCurrentLoop(base::BindOnce(&RunFailedTakePhotoCallback)));
BrowserThread::PostTask( BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE, BrowserThread::IO, FROM_HERE,
......
...@@ -22,14 +22,14 @@ class ImageCaptureImpl : public media::mojom::ImageCapture { ...@@ -22,14 +22,14 @@ class ImageCaptureImpl : public media::mojom::ImageCapture {
media::mojom::ImageCaptureRequest request); media::mojom::ImageCaptureRequest request);
void GetPhotoState(const std::string& source_id, void GetPhotoState(const std::string& source_id,
const GetPhotoStateCallback& callback) override; GetPhotoStateCallback callback) override;
void SetOptions(const std::string& source_id, void SetOptions(const std::string& source_id,
media::mojom::PhotoSettingsPtr settings, media::mojom::PhotoSettingsPtr settings,
const SetOptionsCallback& callback) override; SetOptionsCallback callback) override;
void TakePhoto(const std::string& source_id, void TakePhoto(const std::string& source_id,
const TakePhotoCallback& callback) override; TakePhotoCallback callback) override;
private: private:
DISALLOW_COPY_AND_ASSIGN(ImageCaptureImpl); DISALLOW_COPY_AND_ASSIGN(ImageCaptureImpl);
......
...@@ -21,9 +21,6 @@ mojom("image_capture") { ...@@ -21,9 +21,6 @@ mojom("image_capture") {
"image_capture.mojom", "image_capture.mojom",
] ]
# TODO(crbug.com/714018): Convert the implementation to use OnceCallback.
use_once_callback = false
# TODO(crbug.com/699569): Convert to use the new JS bindings. # TODO(crbug.com/699569): Convert to use the new JS bindings.
use_new_js_bindings = false use_new_js_bindings = false
} }
...@@ -163,13 +163,24 @@ class ImageCaptureClient : public base::RefCounted<ImageCaptureClient> { ...@@ -163,13 +163,24 @@ class ImageCaptureClient : public base::RefCounted<ImageCaptureClient> {
OnCorrectGetPhotoState(); OnCorrectGetPhotoState();
} }
MOCK_METHOD0(OnCorrectGetPhotoState, void(void)); MOCK_METHOD0(OnCorrectGetPhotoState, void(void));
MOCK_METHOD1(OnGetPhotoStateFailure,
void(base::Callback<void(mojom::PhotoStatePtr)>)); void OnGetPhotoStateFailure(
mojom::ImageCapture::GetPhotoStateCallback callback) {
OnGetPhotoStateFailureInternal(callback);
}
MOCK_METHOD1(OnGetPhotoStateFailureInternal,
void(mojom::ImageCapture::GetPhotoStateCallback&));
const mojom::PhotoState* state() { return state_.get(); } const mojom::PhotoState* state() { return state_.get(); }
MOCK_METHOD1(OnCorrectSetPhotoOptions, void(bool)); MOCK_METHOD1(OnCorrectSetPhotoOptions, void(bool));
MOCK_METHOD1(OnSetPhotoOptionsFailure, void(base::Callback<void(bool)>));
void OnSetPhotoOptionsFailure(
mojom::ImageCapture::SetOptionsCallback callback) {
OnSetPhotoOptionsFailureInternal(callback);
}
MOCK_METHOD1(OnSetPhotoOptionsFailureInternal,
void(mojom::ImageCapture::SetOptionsCallback&));
// GMock doesn't support move-only arguments, so we use this forward method. // GMock doesn't support move-only arguments, so we use this forward method.
void DoOnPhotoTaken(mojom::BlobPtr blob) { void DoOnPhotoTaken(mojom::BlobPtr blob) {
...@@ -184,7 +195,12 @@ class ImageCaptureClient : public base::RefCounted<ImageCaptureClient> { ...@@ -184,7 +195,12 @@ class ImageCaptureClient : public base::RefCounted<ImageCaptureClient> {
OnCorrectPhotoTaken(); OnCorrectPhotoTaken();
} }
MOCK_METHOD0(OnCorrectPhotoTaken, void(void)); MOCK_METHOD0(OnCorrectPhotoTaken, void(void));
MOCK_METHOD1(OnTakePhotoFailure, void(base::Callback<void(mojom::BlobPtr)>));
void OnTakePhotoFailure(mojom::ImageCapture::TakePhotoCallback callback) {
OnTakePhotoFailureInternal(callback);
}
MOCK_METHOD1(OnTakePhotoFailureInternal,
void(mojom::ImageCapture::TakePhotoCallback&));
private: private:
friend class base::RefCounted<ImageCaptureClient>; friend class base::RefCounted<ImageCaptureClient>;
...@@ -376,9 +392,10 @@ TEST_F(FakeVideoCaptureDeviceTest, GetAndSetCapabilities) { ...@@ -376,9 +392,10 @@ TEST_F(FakeVideoCaptureDeviceTest, GetAndSetCapabilities) {
device->AllocateAndStart(capture_params, std::move(client_)); device->AllocateAndStart(capture_params, std::move(client_));
VideoCaptureDevice::GetPhotoStateCallback scoped_get_callback( VideoCaptureDevice::GetPhotoStateCallback scoped_get_callback(
base::Bind(&ImageCaptureClient::DoOnGetPhotoState, image_capture_client_), base::BindOnce(&ImageCaptureClient::DoOnGetPhotoState,
base::Bind(&ImageCaptureClient::OnGetPhotoStateFailure, image_capture_client_),
image_capture_client_)); base::BindOnce(&ImageCaptureClient::OnGetPhotoStateFailure,
image_capture_client_));
EXPECT_CALL(*image_capture_client_.get(), OnCorrectGetPhotoState()).Times(1); EXPECT_CALL(*image_capture_client_.get(), OnCorrectGetPhotoState()).Times(1);
device->GetPhotoState(std::move(scoped_get_callback)); device->GetPhotoState(std::move(scoped_get_callback));
...@@ -445,10 +462,10 @@ TEST_F(FakeVideoCaptureDeviceTest, GetAndSetCapabilities) { ...@@ -445,10 +462,10 @@ TEST_F(FakeVideoCaptureDeviceTest, GetAndSetCapabilities) {
// Set options: zoom to the maximum value. // Set options: zoom to the maximum value.
const int max_zoom_value = state->zoom->max; const int max_zoom_value = state->zoom->max;
VideoCaptureDevice::SetPhotoOptionsCallback scoped_set_callback( VideoCaptureDevice::SetPhotoOptionsCallback scoped_set_callback(
base::Bind(&ImageCaptureClient::OnCorrectSetPhotoOptions, base::BindOnce(&ImageCaptureClient::OnCorrectSetPhotoOptions,
image_capture_client_), image_capture_client_),
base::Bind(&ImageCaptureClient::OnSetPhotoOptionsFailure, base::BindOnce(&ImageCaptureClient::OnSetPhotoOptionsFailure,
image_capture_client_)); image_capture_client_));
mojom::PhotoSettingsPtr settings = mojom::PhotoSettings::New(); mojom::PhotoSettingsPtr settings = mojom::PhotoSettings::New();
settings->zoom = max_zoom_value; settings->zoom = max_zoom_value;
...@@ -490,9 +507,10 @@ TEST_F(FakeVideoCaptureDeviceTest, TakePhoto) { ...@@ -490,9 +507,10 @@ TEST_F(FakeVideoCaptureDeviceTest, TakePhoto) {
device->AllocateAndStart(capture_params, std::move(client_)); device->AllocateAndStart(capture_params, std::move(client_));
VideoCaptureDevice::TakePhotoCallback scoped_callback( VideoCaptureDevice::TakePhotoCallback scoped_callback(
base::Bind(&ImageCaptureClient::DoOnPhotoTaken, image_capture_client_), base::BindOnce(&ImageCaptureClient::DoOnPhotoTaken,
base::Bind(&ImageCaptureClient::OnTakePhotoFailure, image_capture_client_),
image_capture_client_)); base::BindOnce(&ImageCaptureClient::OnTakePhotoFailure,
image_capture_client_));
EXPECT_CALL(*image_capture_client_.get(), OnCorrectPhotoTaken()).Times(1); EXPECT_CALL(*image_capture_client_.get(), OnCorrectPhotoTaken()).Times(1);
device->TakePhoto(std::move(scoped_callback)); device->TakePhoto(std::move(scoped_callback));
......
...@@ -275,13 +275,13 @@ class CAPTURE_EXPORT VideoCaptureDevice ...@@ -275,13 +275,13 @@ class CAPTURE_EXPORT VideoCaptureDevice
// levels etc). On success, invokes |callback|. On failure, drops callback // levels etc). On success, invokes |callback|. On failure, drops callback
// without invoking it. // without invoking it.
using GetPhotoStateCallback = using GetPhotoStateCallback =
ScopedResultCallback<base::Callback<void(mojom::PhotoStatePtr)>>; ScopedResultCallback<base::OnceCallback<void(mojom::PhotoStatePtr)>>;
virtual void GetPhotoState(GetPhotoStateCallback callback); virtual void GetPhotoState(GetPhotoStateCallback callback);
// On success, invokes |callback| with value |true|. On failure, drops // On success, invokes |callback| with value |true|. On failure, drops
// callback without invoking it. // callback without invoking it.
using SetPhotoOptionsCallback = using SetPhotoOptionsCallback =
ScopedResultCallback<base::Callback<void(bool)>>; ScopedResultCallback<base::OnceCallback<void(bool)>>;
virtual void SetPhotoOptions(mojom::PhotoSettingsPtr settings, virtual void SetPhotoOptions(mojom::PhotoSettingsPtr settings,
SetPhotoOptionsCallback callback); SetPhotoOptionsCallback callback);
...@@ -290,7 +290,7 @@ class CAPTURE_EXPORT VideoCaptureDevice ...@@ -290,7 +290,7 @@ class CAPTURE_EXPORT VideoCaptureDevice
// where TakePhoto() is called, if the photo was successfully taken. On // where TakePhoto() is called, if the photo was successfully taken. On
// failure, drops callback without invoking it. // failure, drops callback without invoking it.
using TakePhotoCallback = using TakePhotoCallback =
ScopedResultCallback<base::Callback<void(mojom::BlobPtr blob)>>; ScopedResultCallback<base::OnceCallback<void(mojom::BlobPtr blob)>>;
virtual void TakePhoto(TakePhotoCallback callback); virtual void TakePhoto(TakePhotoCallback callback);
// Gets the power line frequency, either from the params if specified by the // Gets the power line frequency, either from the params if specified by the
......
...@@ -192,7 +192,13 @@ class MockImageCaptureClient ...@@ -192,7 +192,13 @@ class MockImageCaptureClient
} }
} }
MOCK_METHOD0(OnCorrectPhotoTaken, void(void)); MOCK_METHOD0(OnCorrectPhotoTaken, void(void));
MOCK_METHOD1(OnTakePhotoFailure, void(base::Callback<void(mojom::BlobPtr)>));
void OnTakePhotoFailure(mojom::ImageCapture::TakePhotoCallback callback) {
OnTakePhotoFailureInternal(callback);
}
MOCK_METHOD1(OnTakePhotoFailureInternal,
void(mojom::ImageCapture::TakePhotoCallback&));
// GMock doesn't support move-only arguments, so we use this forward method. // GMock doesn't support move-only arguments, so we use this forward method.
void DoOnGetPhotoState(mojom::PhotoStatePtr state) { void DoOnGetPhotoState(mojom::PhotoStatePtr state) {
...@@ -200,8 +206,13 @@ class MockImageCaptureClient ...@@ -200,8 +206,13 @@ class MockImageCaptureClient
OnCorrectGetPhotoState(); OnCorrectGetPhotoState();
} }
MOCK_METHOD0(OnCorrectGetPhotoState, void(void)); MOCK_METHOD0(OnCorrectGetPhotoState, void(void));
MOCK_METHOD1(OnGetPhotoStateFailure,
void(base::Callback<void(mojom::PhotoStatePtr)>)); void OnGetPhotoStateFailure(
mojom::ImageCapture::GetPhotoStateCallback callback) {
OnGetPhotoStateFailureInternal(callback);
}
MOCK_METHOD1(OnGetPhotoStateFailureInternal,
void(mojom::ImageCapture::GetPhotoStateCallback&));
const mojom::PhotoState* capabilities() { return state_.get(); } const mojom::PhotoState* capabilities() { return state_.get(); }
...@@ -604,8 +615,8 @@ TEST_F(VideoCaptureDeviceTest, MAYBE_TakePhoto) { ...@@ -604,8 +615,8 @@ TEST_F(VideoCaptureDeviceTest, MAYBE_TakePhoto) {
device->AllocateAndStart(capture_params, std::move(video_capture_client_)); device->AllocateAndStart(capture_params, std::move(video_capture_client_));
VideoCaptureDevice::TakePhotoCallback scoped_callback( VideoCaptureDevice::TakePhotoCallback scoped_callback(
base::Bind(&MockImageCaptureClient::DoOnPhotoTaken, base::BindOnce(&MockImageCaptureClient::DoOnPhotoTaken,
image_capture_client_), image_capture_client_),
media::BindToCurrentLoop(base::Bind( media::BindToCurrentLoop(base::Bind(
&MockImageCaptureClient::OnTakePhotoFailure, image_capture_client_))); &MockImageCaptureClient::OnTakePhotoFailure, image_capture_client_)));
...@@ -656,11 +667,11 @@ TEST_F(VideoCaptureDeviceTest, MAYBE_GetPhotoState) { ...@@ -656,11 +667,11 @@ TEST_F(VideoCaptureDeviceTest, MAYBE_GetPhotoState) {
device->AllocateAndStart(capture_params, std::move(video_capture_client_)); device->AllocateAndStart(capture_params, std::move(video_capture_client_));
VideoCaptureDevice::GetPhotoStateCallback scoped_get_callback( VideoCaptureDevice::GetPhotoStateCallback scoped_get_callback(
base::Bind(&MockImageCaptureClient::DoOnGetPhotoState, base::BindOnce(&MockImageCaptureClient::DoOnGetPhotoState,
image_capture_client_), image_capture_client_),
media::BindToCurrentLoop( media::BindToCurrentLoop(
base::Bind(&MockImageCaptureClient::OnGetPhotoStateFailure, base::BindOnce(&MockImageCaptureClient::OnGetPhotoStateFailure,
image_capture_client_))); image_capture_client_)));
base::RunLoop run_loop; base::RunLoop run_loop;
base::Closure quit_closure = media::BindToCurrentLoop(run_loop.QuitClosure()); base::Closure quit_closure = media::BindToCurrentLoop(run_loop.QuitClosure());
......
...@@ -28,7 +28,7 @@ namespace { ...@@ -28,7 +28,7 @@ namespace {
// happen in VideoCaptureDeviceClient, and talk only to VideoCaptureDeviceClient // happen in VideoCaptureDeviceClient, and talk only to VideoCaptureDeviceClient
// instead of VideoCaptureSystem. // instead of VideoCaptureSystem.
static void TranslateDeviceInfos( static void TranslateDeviceInfos(
const video_capture::mojom::DeviceFactory::GetDeviceInfosCallback& callback, video_capture::mojom::DeviceFactory::GetDeviceInfosCallback callback,
const std::vector<media::VideoCaptureDeviceInfo>& device_infos) { const std::vector<media::VideoCaptureDeviceInfo>& device_infos) {
std::vector<media::VideoCaptureDeviceInfo> translated_device_infos; std::vector<media::VideoCaptureDeviceInfo> translated_device_infos;
for (const auto& device_info : device_infos) { for (const auto& device_info : device_infos) {
...@@ -52,13 +52,13 @@ static void TranslateDeviceInfos( ...@@ -52,13 +52,13 @@ static void TranslateDeviceInfos(
continue; continue;
translated_device_infos.push_back(translated_device_info); translated_device_infos.push_back(translated_device_info);
} }
callback.Run(translated_device_infos); std::move(callback).Run(translated_device_infos);
} }
static void DiscardDeviceInfosAndCallContinuation( static void DiscardDeviceInfosAndCallContinuation(
base::Closure continuation, base::OnceClosure continuation,
const std::vector<media::VideoCaptureDeviceInfo>&) { const std::vector<media::VideoCaptureDeviceInfo>&) {
continuation.Run(); std::move(continuation).Run();
} }
} // anonymous namespace } // anonymous namespace
...@@ -92,16 +92,16 @@ DeviceFactoryMediaToMojoAdapter::DeviceFactoryMediaToMojoAdapter( ...@@ -92,16 +92,16 @@ DeviceFactoryMediaToMojoAdapter::DeviceFactoryMediaToMojoAdapter(
DeviceFactoryMediaToMojoAdapter::~DeviceFactoryMediaToMojoAdapter() = default; DeviceFactoryMediaToMojoAdapter::~DeviceFactoryMediaToMojoAdapter() = default;
void DeviceFactoryMediaToMojoAdapter::GetDeviceInfos( void DeviceFactoryMediaToMojoAdapter::GetDeviceInfos(
const GetDeviceInfosCallback& callback) { GetDeviceInfosCallback callback) {
capture_system_->GetDeviceInfosAsync( capture_system_->GetDeviceInfosAsync(
base::Bind(&TranslateDeviceInfos, callback)); base::Bind(&TranslateDeviceInfos, base::Passed(&callback)));
has_called_get_device_infos_ = true; has_called_get_device_infos_ = true;
} }
void DeviceFactoryMediaToMojoAdapter::CreateDevice( void DeviceFactoryMediaToMojoAdapter::CreateDevice(
const std::string& device_id, const std::string& device_id,
mojom::DeviceRequest device_request, mojom::DeviceRequest device_request,
const CreateDeviceCallback& callback) { CreateDeviceCallback callback) {
auto active_device_iter = active_devices_by_id_.find(device_id); auto active_device_iter = active_devices_by_id_.find(device_id);
if (active_device_iter != active_devices_by_id_.end()) { if (active_device_iter != active_devices_by_id_.end()) {
// The requested device is already in use. // The requested device is already in use.
...@@ -113,32 +113,34 @@ void DeviceFactoryMediaToMojoAdapter::CreateDevice( ...@@ -113,32 +113,34 @@ void DeviceFactoryMediaToMojoAdapter::CreateDevice(
device_entry.binding->set_connection_error_handler(base::Bind( device_entry.binding->set_connection_error_handler(base::Bind(
&DeviceFactoryMediaToMojoAdapter::OnClientConnectionErrorOrClose, &DeviceFactoryMediaToMojoAdapter::OnClientConnectionErrorOrClose,
base::Unretained(this), device_id)); base::Unretained(this), device_id));
callback.Run(mojom::DeviceAccessResultCode::SUCCESS); std::move(callback).Run(mojom::DeviceAccessResultCode::SUCCESS);
return; return;
} }
const auto create_and_add_new_device_cb = auto create_and_add_new_device_cb =
base::Bind(&DeviceFactoryMediaToMojoAdapter::CreateAndAddNewDevice, base::BindOnce(&DeviceFactoryMediaToMojoAdapter::CreateAndAddNewDevice,
weak_factory_.GetWeakPtr(), device_id, weak_factory_.GetWeakPtr(), device_id,
base::Passed(&device_request), callback); std::move(device_request), std::move(callback));
if (has_called_get_device_infos_) { if (has_called_get_device_infos_) {
create_and_add_new_device_cb.Run(); std::move(create_and_add_new_device_cb).Run();
return; return;
} }
capture_system_->GetDeviceInfosAsync(base::Bind( capture_system_->GetDeviceInfosAsync(
&DiscardDeviceInfosAndCallContinuation, create_and_add_new_device_cb)); base::Bind(&DiscardDeviceInfosAndCallContinuation,
base::Passed(&create_and_add_new_device_cb)));
} }
void DeviceFactoryMediaToMojoAdapter::CreateAndAddNewDevice( void DeviceFactoryMediaToMojoAdapter::CreateAndAddNewDevice(
const std::string& device_id, const std::string& device_id,
mojom::DeviceRequest device_request, mojom::DeviceRequest device_request,
const CreateDeviceCallback& callback) { CreateDeviceCallback callback) {
std::unique_ptr<media::VideoCaptureDevice> media_device = std::unique_ptr<media::VideoCaptureDevice> media_device =
capture_system_->CreateDevice(device_id); capture_system_->CreateDevice(device_id);
if (media_device == nullptr) { if (media_device == nullptr) {
callback.Run(mojom::DeviceAccessResultCode::ERROR_DEVICE_NOT_FOUND); std::move(callback).Run(
mojom::DeviceAccessResultCode::ERROR_DEVICE_NOT_FOUND);
return; return;
} }
...@@ -154,7 +156,7 @@ void DeviceFactoryMediaToMojoAdapter::CreateAndAddNewDevice( ...@@ -154,7 +156,7 @@ void DeviceFactoryMediaToMojoAdapter::CreateAndAddNewDevice(
base::Unretained(this), device_id)); base::Unretained(this), device_id));
active_devices_by_id_[device_id] = std::move(device_entry); active_devices_by_id_[device_id] = std::move(device_entry);
callback.Run(mojom::DeviceAccessResultCode::SUCCESS); std::move(callback).Run(mojom::DeviceAccessResultCode::SUCCESS);
} }
void DeviceFactoryMediaToMojoAdapter::OnClientConnectionErrorOrClose( void DeviceFactoryMediaToMojoAdapter::OnClientConnectionErrorOrClose(
......
...@@ -31,10 +31,10 @@ class DeviceFactoryMediaToMojoAdapter : public mojom::DeviceFactory { ...@@ -31,10 +31,10 @@ class DeviceFactoryMediaToMojoAdapter : public mojom::DeviceFactory {
~DeviceFactoryMediaToMojoAdapter() override; ~DeviceFactoryMediaToMojoAdapter() override;
// mojom::DeviceFactory implementation. // mojom::DeviceFactory implementation.
void GetDeviceInfos(const GetDeviceInfosCallback& callback) override; void GetDeviceInfos(GetDeviceInfosCallback callback) override;
void CreateDevice(const std::string& device_id, void CreateDevice(const std::string& device_id,
mojom::DeviceRequest device_request, mojom::DeviceRequest device_request,
const CreateDeviceCallback& callback) override; CreateDeviceCallback callback) override;
private: private:
struct ActiveDeviceEntry { struct ActiveDeviceEntry {
...@@ -52,7 +52,7 @@ class DeviceFactoryMediaToMojoAdapter : public mojom::DeviceFactory { ...@@ -52,7 +52,7 @@ class DeviceFactoryMediaToMojoAdapter : public mojom::DeviceFactory {
void CreateAndAddNewDevice(const std::string& device_id, void CreateAndAddNewDevice(const std::string& device_id,
mojom::DeviceRequest device_request, mojom::DeviceRequest device_request,
const CreateDeviceCallback& callback); CreateDeviceCallback callback);
void OnClientConnectionErrorOrClose(const std::string& device_id); void OnClientConnectionErrorOrClose(const std::string& device_id);
const std::unique_ptr<service_manager::ServiceContextRef> service_ref_; const std::unique_ptr<service_manager::ServiceContextRef> service_ref_;
......
...@@ -20,17 +20,17 @@ namespace { ...@@ -20,17 +20,17 @@ namespace {
static const int kMaxBufferCount = 3; static const int kMaxBufferCount = 3;
void RunFailedGetPhotoStateCallback( void RunFailedGetPhotoStateCallback(
base::Callback<void(media::mojom::PhotoStatePtr)> cb) { base::OnceCallback<void(media::mojom::PhotoStatePtr)> cb) {
cb.Run(nullptr); std::move(cb).Run(nullptr);
} }
void RunFailedSetOptionsCallback(base::Callback<void(bool)> cb) { void RunFailedSetOptionsCallback(base::OnceCallback<void(bool)> cb) {
cb.Run(false); std::move(cb).Run(false);
} }
void RunFailedTakePhotoCallback( void RunFailedTakePhotoCallback(
base::Callback<void(media::mojom::BlobPtr blob)> cb) { base::OnceCallback<void(media::mojom::BlobPtr blob)> cb) {
cb.Run(nullptr); std::move(cb).Run(nullptr);
} }
} // anonymous namespace } // anonymous namespace
...@@ -112,29 +112,29 @@ void DeviceMediaToMojoAdapter::Resume() { ...@@ -112,29 +112,29 @@ void DeviceMediaToMojoAdapter::Resume() {
device_->Resume(); device_->Resume();
} }
void DeviceMediaToMojoAdapter::GetPhotoState( void DeviceMediaToMojoAdapter::GetPhotoState(GetPhotoStateCallback callback) {
const GetPhotoStateCallback& callback) {
media::VideoCaptureDevice::GetPhotoStateCallback scoped_callback( media::VideoCaptureDevice::GetPhotoStateCallback scoped_callback(
media::BindToCurrentLoop(callback), media::BindToCurrentLoop(std::move(callback)),
media::BindToCurrentLoop(base::Bind(&RunFailedGetPhotoStateCallback))); media::BindToCurrentLoop(
base::BindOnce(&RunFailedGetPhotoStateCallback)));
device_->GetPhotoState(std::move(scoped_callback)); device_->GetPhotoState(std::move(scoped_callback));
} }
void DeviceMediaToMojoAdapter::SetPhotoOptions( void DeviceMediaToMojoAdapter::SetPhotoOptions(
media::mojom::PhotoSettingsPtr settings, media::mojom::PhotoSettingsPtr settings,
const SetPhotoOptionsCallback& callback) { SetPhotoOptionsCallback callback) {
media::ScopedResultCallback<media::mojom::ImageCapture::SetOptionsCallback> media::ScopedResultCallback<media::mojom::ImageCapture::SetOptionsCallback>
scoped_callback( scoped_callback(media::BindToCurrentLoop(std::move(callback)),
media::BindToCurrentLoop(std::move(callback)), media::BindToCurrentLoop(
media::BindToCurrentLoop(base::Bind(&RunFailedSetOptionsCallback))); base::BindOnce(&RunFailedSetOptionsCallback)));
device_->SetPhotoOptions(std::move(settings), std::move(scoped_callback)); device_->SetPhotoOptions(std::move(settings), std::move(scoped_callback));
} }
void DeviceMediaToMojoAdapter::TakePhoto(const TakePhotoCallback& callback) { void DeviceMediaToMojoAdapter::TakePhoto(TakePhotoCallback callback) {
media::ScopedResultCallback<media::mojom::ImageCapture::TakePhotoCallback> media::ScopedResultCallback<media::mojom::ImageCapture::TakePhotoCallback>
scoped_callback( scoped_callback(media::BindToCurrentLoop(std::move(callback)),
media::BindToCurrentLoop(callback), media::BindToCurrentLoop(
media::BindToCurrentLoop(base::Bind(&RunFailedTakePhotoCallback))); base::BindOnce(&RunFailedTakePhotoCallback)));
device_->TakePhoto(std::move(scoped_callback)); device_->TakePhoto(std::move(scoped_callback));
} }
......
...@@ -35,10 +35,10 @@ class DeviceMediaToMojoAdapter : public mojom::Device { ...@@ -35,10 +35,10 @@ class DeviceMediaToMojoAdapter : public mojom::Device {
void RequestRefreshFrame() override; void RequestRefreshFrame() override;
void MaybeSuspend() override; void MaybeSuspend() override;
void Resume() override; void Resume() override;
void GetPhotoState(const GetPhotoStateCallback& callback) override; void GetPhotoState(GetPhotoStateCallback callback) override;
void SetPhotoOptions(media::mojom::PhotoSettingsPtr settings, void SetPhotoOptions(media::mojom::PhotoSettingsPtr settings,
const SetPhotoOptionsCallback& callback) override; SetPhotoOptionsCallback callback) override;
void TakePhoto(const TakePhotoCallback& callback) override; void TakePhoto(TakePhotoCallback callback) override;
void Stop(); void Stop();
void OnClientConnectionErrorOrClose(); void OnClientConnectionErrorOrClose();
......
...@@ -19,9 +19,6 @@ mojom("interfaces") { ...@@ -19,9 +19,6 @@ mojom("interfaces") {
"//media/mojo/interfaces", "//media/mojo/interfaces",
"//ui/gfx/geometry/mojo", "//ui/gfx/geometry/mojo",
] ]
# TODO(crbug.com/714018): Convert the implementation to use OnceCallback.
use_once_callback = false
} }
mojom("constants") { mojom("constants") {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment