Chromium Code Reviews| Index: content/renderer/media/user_media_client_impl.cc |
| diff --git a/content/renderer/media/user_media_client_impl.cc b/content/renderer/media/user_media_client_impl.cc |
| index 771ed274a147638e3a8f74e7ed8914c47c76a900..bfd0004a6c5a281d11a87de9d461669577e66ce4 100644 |
| --- a/content/renderer/media/user_media_client_impl.cc |
| +++ b/content/renderer/media/user_media_client_impl.cc |
| @@ -20,6 +20,7 @@ |
| #include "content/public/renderer/render_frame.h" |
| #include "content/renderer/media/local_media_stream_audio_source.h" |
| #include "content/renderer/media/media_stream.h" |
| +#include "content/renderer/media/media_stream_audio_track.h" |
| #include "content/renderer/media/media_stream_constraints_util.h" |
| #include "content/renderer/media/media_stream_constraints_util_video_content.h" |
| #include "content/renderer/media/media_stream_constraints_util_video_device.h" |
| @@ -31,6 +32,7 @@ |
| #include "content/renderer/media/webrtc_logging.h" |
| #include "content/renderer/media/webrtc_uma_histograms.h" |
| #include "content/renderer/render_thread_impl.h" |
| +#include "media/base/bind_to_current_loop.h" |
| #include "media/capture/video_capture_types.h" |
| #include "third_party/WebKit/public/platform/WebMediaConstraints.h" |
| #include "third_party/WebKit/public/platform/WebMediaDeviceInfo.h" |
| @@ -711,7 +713,9 @@ void UserMediaClientImpl::OnAudioSourceStarted( |
| local_sources_.push_back((*it)); |
| pending_local_sources_.erase(it); |
| - NotifyCurrentRequestInfoOfAudioSourceStarted(source, result, result_name); |
| + // The task of notifying the current request is moved. |
| + // NotifyCurrentRequestInfoOfAudioSourceStarted(source, result, |
|
Guido Urdaneta
2017/04/06 13:18:57
Use a more descriptive comment. Something like:
/
hta - Chromium
2017/04/06 13:57:51
My bad. Deleting the commented-out code instead.
|
| + // result_name); |
| return; |
| } |
| NOTREACHED(); |
| @@ -1292,10 +1296,14 @@ void UserMediaClientImpl::UserMediaRequestInfo::StartAudioTrack( |
| sources_.push_back(track.source()); |
| bool connected = native_source->ConnectToTrack(track); |
| - if (!is_pending) { |
| - OnTrackStarted( |
| - native_source, |
| - connected ? MEDIA_DEVICE_OK : MEDIA_DEVICE_TRACK_START_FAILURE, ""); |
| + if (!is_pending && !connected) { |
|
Guido Urdaneta
2017/04/06 13:18:57
Should this be ||?
What happens if it is pending b
hta - Chromium
2017/04/06 13:57:51
the previous code was
if !pending & connected: ca
|
| + OnTrackStarted(native_source, MEDIA_DEVICE_TRACK_START_FAILURE, ""); |
| + } else { |
| + MediaStreamAudioTrack::From(track)->SetFormatConfiguredCallback( |
| + media::BindToCurrentLoop(base::Bind( |
| + &UserMediaClientImpl::UserMediaRequestInfo::OnTrackStarted, |
| + AsWeakPtr(), native_source, content::MEDIA_DEVICE_OK, |
| + blink::WebString()))); |
| } |
| } |
| @@ -1363,7 +1371,9 @@ void UserMediaClientImpl::UserMediaRequestInfo::OnAudioSourceStarted( |
| // ignore the notification. |
| auto found = std::find(sources_waiting_for_callback_.begin(), |
| sources_waiting_for_callback_.end(), source); |
| - if (found != sources_waiting_for_callback_.end()) |
| + // If the start failed, inform the request here. |
|
Guido Urdaneta
2017/04/06 13:18:57
Extend the comment with "Otherwise, wait for ... t
|
| + if (found != sources_waiting_for_callback_.end() && |
| + result != content::MEDIA_DEVICE_OK) |
| OnTrackStarted(source, result, result_name); |
| } |