| Index: media/blink/webaudiosourceprovider_impl.cc | 
| diff --git a/media/blink/webaudiosourceprovider_impl.cc b/media/blink/webaudiosourceprovider_impl.cc | 
| index d43a16fb5b1b927eab078c7fb7f952b02aafe3b6..5dca26415f5a2f00576a006dec44077fe99eae26 100644 | 
| --- a/media/blink/webaudiosourceprovider_impl.cc | 
| +++ b/media/blink/webaudiosourceprovider_impl.cc | 
| @@ -87,7 +87,7 @@ class WebAudioSourceProviderImpl::TeeFilter | 
| }; | 
|  | 
| WebAudioSourceProviderImpl::WebAudioSourceProviderImpl( | 
| -    const scoped_refptr<RestartableAudioRendererSink>& sink) | 
| +    const scoped_refptr<SwitchableAudioRendererSink>& sink) | 
| : volume_(1.0), | 
| state_(kStopped), | 
| client_(nullptr), | 
| @@ -199,9 +199,20 @@ bool WebAudioSourceProviderImpl::SetVolume(double volume) { | 
| return true; | 
| } | 
|  | 
| -OutputDevice* WebAudioSourceProviderImpl::GetOutputDevice() { | 
| +media::OutputDeviceInfo WebAudioSourceProviderImpl::GetOutputDeviceInfo() { | 
| base::AutoLock auto_lock(sink_lock_); | 
| -  return sink_->GetOutputDevice(); | 
| +  return client_ ? media::OutputDeviceInfo() : sink_->GetOutputDeviceInfo(); | 
| +} | 
| + | 
| +void WebAudioSourceProviderImpl::SwitchOutputDevice( | 
| +    const std::string& device_id, | 
| +    const url::Origin& security_origin, | 
| +    const OutputDeviceStatusCB& callback) { | 
| +  base::AutoLock auto_lock(sink_lock_); | 
| +  if (client_) | 
| +    callback.Run(media::OUTPUT_DEVICE_STATUS_ERROR_INTERNAL); | 
| +  else | 
| +    sink_->SwitchOutputDevice(device_id, security_origin, callback); | 
| } | 
|  | 
| void WebAudioSourceProviderImpl::Initialize(const AudioParameters& params, | 
|  |