Chromium Code Reviews| Index: media/blink/webmediaplayer_impl.cc |
| diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc |
| index 814a93267dab762d04e201e7a55375ecb9d4180d..b9af114bb315f657b4d297efd62c5b3475153d12 100644 |
| --- a/media/blink/webmediaplayer_impl.cc |
| +++ b/media/blink/webmediaplayer_impl.cc |
| @@ -370,6 +370,49 @@ void WebMediaPlayerImpl::setVolume(double volume) { |
| pipeline_.SetVolume(volume); |
| } |
| +void WebMediaPlayerImpl::FinishSetAudioOutputRequest( |
| + blink::WebSetAudioOutputDeviceRequest *request, |
| + int result) { |
| + DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| + DVLOG(1) << __PRETTY_FUNCTION__; |
| + request->finish(result); |
| + delete request; |
| +} |
| + |
| +void WebMediaPlayerImpl::PrepareFinishSetAudioOutputRequest( |
| + WebMediaPlayerImpl* media_player, |
| + const scoped_refptr<base::SingleThreadTaskRunner> task_runner, |
| + blink::WebSetAudioOutputDeviceRequest *request, |
| + int result) { |
| + DCHECK(!task_runner->BelongsToCurrentThread()); |
| + DVLOG(1) << __PRETTY_FUNCTION__; |
| + // TODO(guidou): Change base::Unretained to a weak pointer |
|
miu
2015/06/03 21:01:02
This TODO needs to be resolved before committing.
|
| + task_runner->PostTask( |
| + FROM_HERE, base::Bind(&WebMediaPlayerImpl::FinishSetAudioOutputRequest, |
| + base::Unretained(media_player), |
| + request, |
| + result)); |
| +} |
| + |
| +void WebMediaPlayerImpl::setAudioOutputDevice( |
| + const blink::WebSetAudioOutputDeviceRequest& request) { |
| + DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| + std::string device_id_str(request.deviceID().utf8()); |
| + GURL security_origin(request.securityOrigin().toString().utf8()); |
| + DVLOG(1) << __FUNCTION__ << "(" << device_id_str << ", " |
| + << security_origin << ")"; |
| + |
| + blink::WebSetAudioOutputDeviceRequest *request_ptr = |
| + new blink::WebSetAudioOutputDeviceRequest(request); |
| + pipeline_.SwitchAudioOutputDevice( |
| + device_id_str, |
| + security_origin, |
| + base::Bind(&WebMediaPlayerImpl::PrepareFinishSetAudioOutputRequest, |
| + base::Unretained(this), |
| + main_task_runner_, |
| + request_ptr)); |
| +} |
| + |
| #define STATIC_ASSERT_MATCHING_ENUM(webkit_name, chromium_name) \ |
| static_assert(static_cast<int>(WebMediaPlayer::webkit_name) == \ |
| static_cast<int>(BufferedDataSource::chromium_name), \ |