Chromium Code Reviews| Index: content/renderer/media/media_stream_impl.cc |
| diff --git a/content/renderer/media/media_stream_impl.cc b/content/renderer/media/media_stream_impl.cc |
| index 887b593b9cf42eb91f91e2783d2b82532dcce765..adad891478890588ec568c800ef56ab22dd7da63 100644 |
| --- a/content/renderer/media/media_stream_impl.cc |
| +++ b/content/renderer/media/media_stream_impl.cc |
| @@ -336,7 +336,7 @@ void MediaStreamImpl::OnStreamGenerated( |
| // The requested stream failed to be generated. |
| void MediaStreamImpl::OnStreamGenerationFailed( |
| int request_id, |
| - content::MediaStreamRequestResult result) { |
| + MediaStreamRequestResult result) { |
| DCHECK(CalledOnValidThread()); |
| DVLOG(1) << "MediaStreamImpl::OnStreamGenerationFailed(" |
| << request_id << ")"; |
| @@ -494,14 +494,15 @@ void MediaStreamImpl::CreateAudioTracks( |
| void MediaStreamImpl::OnCreateNativeTracksCompleted( |
| UserMediaRequestInfo* request, |
| - content::MediaStreamRequestResult result) { |
| + MediaStreamRequestResult result, |
| + const blink::WebString& result_name) { |
| DVLOG(1) << "MediaStreamImpl::OnCreateNativeTracksComplete(" |
| << "{request_id = " << request->request_id << "} " |
| << "{result = " << result << "})"; |
| if (result == content::MEDIA_DEVICE_OK) |
| GetUserMediaRequestSucceeded(request->web_stream, &request->request); |
| else |
| - GetUserMediaRequestFailed(&request->request, result); |
| + GetUserMediaRequestFailed(&request->request, result, result_name); |
| DeleteUserMediaRequestInfo(request); |
| } |
| @@ -606,7 +607,7 @@ void MediaStreamImpl::GetUserMediaRequestSucceeded( |
| void MediaStreamImpl::GetUserMediaRequestFailed( |
| blink::WebUserMediaRequest* request_info, |
| - content::MediaStreamRequestResult result) { |
| + MediaStreamRequestResult result) { |
| switch (result) { |
| case MEDIA_DEVICE_OK: |
| NOTREACHED(); |
| @@ -635,6 +636,20 @@ void MediaStreamImpl::GetUserMediaRequestFailed( |
| case MEDIA_DEVICE_CAPTURE_FAILURE: |
| request_info->requestFailedUASpecific("DeviceCaptureError"); |
| break; |
| + default: |
|
miu
2014/07/30 19:37:23
It's generally not good practice to use "default"
jiajia.qin
2014/07/31 13:43:00
Done.
miu
2014/07/31 19:30:09
You should still call request_info->requestFailed(
jiajia.qin
2014/08/01 05:25:33
Done.
|
| + request_info->requestFailed(); |
| + break; |
| + } |
| +} |
| + |
| +void MediaStreamImpl::GetUserMediaRequestFailed( |
|
miu
2014/07/30 19:37:23
IMHO, this shouldn't be a separate method. Can yo
jiajia.qin
2014/07/31 13:43:00
The new 3rd arg is only for 'TrackStartError'. For
|
| + blink::WebUserMediaRequest* request_info, |
| + MediaStreamRequestResult result, |
| + const blink::WebString& result_name) { |
| + switch (result) { |
| + case MEDIA_DEVICE_CONSTRAINT_NOT_SATISFIED: |
| + request_info->requestFailedConstraint(result_name); |
| + break; |
| case MEDIA_DEVICE_TRACK_START_FAILURE: |
| request_info->requestFailedUASpecific("TrackStartError"); |
| break; |
| @@ -862,8 +877,10 @@ void MediaStreamImpl::UserMediaRequestInfo::CallbackOnTracksStarted( |
| } |
| void MediaStreamImpl::UserMediaRequestInfo::OnTrackStarted( |
| - MediaStreamSource* source, bool success) { |
| - DVLOG(1) << "OnTrackStarted result " << success; |
| + MediaStreamSource* source, |
| + MediaStreamRequestResult result, |
| + const blink::WebString& result_name) { |
| + DVLOG(1) << "OnTrackStarted result " << result; |
| std::vector<MediaStreamSource*>::iterator it = |
| std::find(sources_waiting_for_callback_.begin(), |
| sources_waiting_for_callback_.end(), |
| @@ -872,16 +889,19 @@ void MediaStreamImpl::UserMediaRequestInfo::OnTrackStarted( |
| sources_waiting_for_callback_.erase(it); |
| // All tracks must be started successfully. Otherwise the request is a |
| // failure. |
| - if (!success) |
| + if (result != MEDIA_DEVICE_OK) |
| request_failed_ = true; |
| - CheckAllTracksStarted(); |
| + if (!ready_callback_.is_null() && sources_waiting_for_callback_.empty()) { |
| + ready_callback_.Run(this, result, result_name); |
| + } |
| } |
| void MediaStreamImpl::UserMediaRequestInfo::CheckAllTracksStarted() { |
| if (!ready_callback_.is_null() && sources_waiting_for_callback_.empty()) { |
| ready_callback_.Run( |
| this, |
| - request_failed_ ? MEDIA_DEVICE_TRACK_START_FAILURE : MEDIA_DEVICE_OK); |
| + request_failed_ ? MEDIA_DEVICE_TRACK_START_FAILURE : MEDIA_DEVICE_OK, |
| + ""); |
| } |
| } |