| 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 8bb9fd540ba4fc45dd189fa617717c0961c62cfc..f108b79ccb402cbc16c01904b1920b4846cabdfc 100644
|
| --- a/content/renderer/media/media_stream_impl.cc
|
| +++ b/content/renderer/media/media_stream_impl.cc
|
| @@ -497,14 +497,15 @@ void MediaStreamImpl::CreateAudioTracks(
|
|
|
| void MediaStreamImpl::OnCreateNativeTracksCompleted(
|
| UserMediaRequestInfo* request,
|
| - content::MediaStreamRequestResult result) {
|
| + content::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);
|
| }
|
| @@ -621,7 +622,8 @@ void MediaStreamImpl::GetUserMediaRequestSucceeded(
|
|
|
| void MediaStreamImpl::GetUserMediaRequestFailed(
|
| blink::WebUserMediaRequest* request_info,
|
| - content::MediaStreamRequestResult result) {
|
| + content::MediaStreamRequestResult result,
|
| + const blink::WebString& result_name) {
|
| switch (result) {
|
| case MEDIA_DEVICE_OK:
|
| NOTREACHED();
|
| @@ -650,9 +652,15 @@ void MediaStreamImpl::GetUserMediaRequestFailed(
|
| case MEDIA_DEVICE_CAPTURE_FAILURE:
|
| request_info->requestFailedUASpecific("DeviceCaptureError");
|
| break;
|
| + case MEDIA_DEVICE_CONSTRAINT_NOT_SATISFIED:
|
| + request_info->requestFailedConstraint(result_name);
|
| + break;
|
| case MEDIA_DEVICE_TRACK_START_FAILURE:
|
| request_info->requestFailedUASpecific("TrackStartError");
|
| break;
|
| + case MEDIA_DEVICE_SOURCE_START_FAILURE:
|
| + request_info->requestFailedUASpecific("SourceStartError");
|
| + break;
|
| default:
|
| request_info->requestFailed();
|
| break;
|
| @@ -886,8 +894,10 @@ void MediaStreamImpl::UserMediaRequestInfo::CallbackOnTracksStarted(
|
| }
|
|
|
| void MediaStreamImpl::UserMediaRequestInfo::OnTrackStarted(
|
| - MediaStreamSource* source, bool success) {
|
| - DVLOG(1) << "OnTrackStarted result " << success;
|
| + MediaStreamSource* source,
|
| + content::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(),
|
| @@ -896,16 +906,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,
|
| + "");
|
| }
|
| }
|
|
|
|
|