[media] Clean up audio output device SetSinkId() plumbing.
- Use std::unique_ptr to pass ownership of WebSetSinkIdCallbacks.
- Use base::OnceCallback in //content since the callback can only be
invoked once.
- Remove //media wrapper for std::unique_ptr<WebSetSinkIdCallbacks>.
- Remove the default case from the //content to Blink callback
mapping and handle the previously missed enumerator value
OUTPUT_DEVICE_STATUS_ERROR_TIMED_OUT.
Change-Id: I2695ba1f8b0e715a85e1dbfb4814410bd18188a3
Reviewed-on: https://chromium-review.googlesource.com/c/1297304
Commit-Queue: Daniel Cheng <[email protected]>
Reviewed-by: Dale Curtis <[email protected]>
Reviewed-by: Dmitry Gozman <[email protected]>
Cr-Commit-Position: refs/heads/master@{#602241}
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index 9696bbb0c..6f54a1d 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -95,8 +95,8 @@
void SetSinkIdOnMediaThread(scoped_refptr<WebAudioSourceProviderImpl> sink,
const std::string& device_id,
- const OutputDeviceStatusCB& callback) {
- sink->SwitchOutputDevice(device_id, callback);
+ OutputDeviceStatusCB callback) {
+ sink->SwitchOutputDevice(device_id, std::move(callback));
}
bool IsBackgroundSuspendEnabled(WebMediaPlayerDelegate* delegate) {
@@ -878,16 +878,17 @@
std::move(callback));
}
-void WebMediaPlayerImpl::SetSinkId(const blink::WebString& sink_id,
- blink::WebSetSinkIdCallbacks* web_callback) {
+void WebMediaPlayerImpl::SetSinkId(
+ const blink::WebString& sink_id,
+ std::unique_ptr<blink::WebSetSinkIdCallbacks> web_callback) {
DCHECK(main_task_runner_->BelongsToCurrentThread());
DVLOG(1) << __func__;
media::OutputDeviceStatusCB callback =
- media::ConvertToOutputDeviceStatusCB(web_callback);
+ media::ConvertToOutputDeviceStatusCB(std::move(web_callback));
media_task_runner_->PostTask(
FROM_HERE, base::BindOnce(&SetSinkIdOnMediaThread, audio_source_provider_,
- sink_id.Utf8(), callback));
+ sink_id.Utf8(), std::move(callback)));
}
STATIC_ASSERT_ENUM(WebMediaPlayer::kPreloadNone, MultibufferDataSource::NONE);