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 6d9e148e83059b6f986767eaf94b3b42c8764903..b66bc25cc4a8fd88241f47223074bae235f1934c 100644 |
| --- a/content/renderer/media/media_stream_impl.cc |
| +++ b/content/renderer/media/media_stream_impl.cc |
| @@ -352,7 +352,9 @@ void MediaStreamImpl::OnStreamGenerated( |
| // Callback from MediaStreamDispatcher. |
| // The requested stream failed to be generated. |
| -void MediaStreamImpl::OnStreamGenerationFailed(int request_id) { |
| +void MediaStreamImpl::OnStreamGenerationFailed( |
| + int request_id, |
| + content::MediaStreamRequestResult result) { |
| DCHECK(CalledOnValidThread()); |
| DVLOG(1) << "MediaStreamImpl::OnStreamGenerationFailed(" |
| << request_id << ")"; |
| @@ -365,7 +367,7 @@ void MediaStreamImpl::OnStreamGenerationFailed(int request_id) { |
| } |
| CompleteGetUserMediaRequest(request_info->web_stream, |
| &request_info->request, |
| - false); |
| + result); |
| DeleteUserMediaRequestInfo(request_info); |
| } |
| @@ -528,13 +530,13 @@ void MediaStreamImpl::CreateAudioTracks( |
| void MediaStreamImpl::OnCreateNativeTracksCompleted( |
| UserMediaRequestInfo* request, |
| - bool request_succeeded) { |
| + content::MediaStreamRequestResult result) { |
| DVLOG(1) << "MediaStreamImpl::OnCreateNativeTracksComplete(" |
| << "{request_id = " << request->request_id << "} " |
| - << "{request_succeeded = " << request_succeeded << "})"; |
| + << "{result = " << result << "})"; |
| CompleteGetUserMediaRequest(request->web_stream, &request->request, |
| - request_succeeded); |
| - if (!request_succeeded) { |
| + result); |
| + if (result != content::OK) { |
| // TODO(perkj): Once we don't support MediaStream::Stop the |request_info| |
| // can be deleted even if the request succeeds. |
| DeleteUserMediaRequestInfo(request); |
| @@ -568,11 +570,42 @@ void MediaStreamImpl::OnDeviceOpenFailed(int request_id) { |
| void MediaStreamImpl::CompleteGetUserMediaRequest( |
| const blink::WebMediaStream& stream, |
| blink::WebUserMediaRequest* request_info, |
| - bool request_succeeded) { |
| - if (request_succeeded) { |
| - request_info->requestSucceeded(stream); |
| - } else { |
| - request_info->requestFailed(); |
| + content::MediaStreamRequestResult result) { |
| + |
| + DVLOG(1) << "MediaStreamImpl::CompleteGetUserMediaRequest(" |
| + << "result=" << result; |
| + |
| + switch (result) { |
| + case content::OK: |
| + request_info->requestSucceeded(stream); |
| + break; |
| + case content::PERMISSION_DENIED: |
| + request_info->requestDenied(); |
| + break; |
| + case content::PERMISSION_DISMISSED: |
| + request_info->requestFailedUASpecific("PermissionDismissedError"); |
|
perkj_chrome
2014/03/04 07:27:54
Should these strings ever be localized?
Tommy Widenflycht
2014/03/04 09:59:32
No, that would make it impossible to write apps th
|
| + break; |
| + case content::INVALID_STATE: |
| + request_info->requestFailedUASpecific("InvalidStateError"); |
| + break; |
| + case content::NO_HARDWARE: |
| + request_info->requestFailedUASpecific("DevicesNotFoundError"); |
| + break; |
| + case content::INVALID_SECURITY_ORIGIN: |
| + request_info->requestFailedUASpecific("InvalidSecurityOriginError"); |
| + break; |
| + case content::TAB_CAPTURE_FAILURE: |
| + request_info->requestFailedUASpecific("TabCaptureError"); |
| + break; |
| + case content::SCREEN_CAPTURE_FAILURE: |
| + request_info->requestFailedUASpecific("ScreenCaptureError"); |
| + break; |
| + case content::DEVICE_CAPTURE_FAILURE: |
| + request_info->requestFailedUASpecific("DeviceCaptureError"); |
| + break; |
| + default: |
| + request_info->requestFailed(); |
| + |
| } |
| } |
| @@ -874,7 +907,9 @@ void MediaStreamImpl::UserMediaRequestInfo::OnTrackStarted( |
| void MediaStreamImpl::UserMediaRequestInfo::CheckAllTracksStarted() { |
| if (!ready_callback_.is_null() && sources_waiting_for_callback_.empty()) |
| - ready_callback_.Run(this, !request_failed_); |
| + ready_callback_.Run( |
| + this, |
| + request_failed_ ? content::TRACK_START_FAILURE : content::OK); |
|
perkj_chrome
2014/03/04 07:27:54
This can happen if the constraints are invalid or
Tommy Widenflycht
2014/03/04 09:59:32
Done.
|
| } |
| bool MediaStreamImpl::UserMediaRequestInfo::IsSourceUsed( |