| 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 3cbdc8f05e4a5e6788d4b5122b33e7c966772b15..6f1069f4ef0e0447091f86ff3edb5ca27ea6a128 100644
|
| --- a/content/renderer/media/media_stream_impl.cc
|
| +++ b/content/renderer/media/media_stream_impl.cc
|
| @@ -342,7 +342,7 @@ void MediaStreamImpl::OnStreamGeneratedForCancelledRequest(
|
| // 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 << ")";
|
| @@ -500,14 +500,17 @@ 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);
|
| + GetUserMediaRequestTrackStartedFailed(&request->request,
|
| + result,
|
| + result_name);
|
|
|
| DeleteUserMediaRequestInfo(request);
|
| }
|
| @@ -613,7 +616,7 @@ void MediaStreamImpl::GetUserMediaRequestSucceeded(
|
|
|
| void MediaStreamImpl::GetUserMediaRequestFailed(
|
| blink::WebUserMediaRequest* request_info,
|
| - content::MediaStreamRequestResult result) {
|
| + MediaStreamRequestResult result) {
|
| LogUserMediaRequestResult(result);
|
| switch (result) {
|
| case MEDIA_DEVICE_OK:
|
| @@ -643,10 +646,26 @@ void MediaStreamImpl::GetUserMediaRequestFailed(
|
| case MEDIA_DEVICE_CAPTURE_FAILURE:
|
| request_info->requestFailedUASpecific("DeviceCaptureError");
|
| break;
|
| + default:
|
| + NOTREACHED();
|
| + request_info->requestFailed();
|
| + break;
|
| + }
|
| +}
|
| +
|
| +void MediaStreamImpl::GetUserMediaRequestTrackStartedFailed(
|
| + 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;
|
| default:
|
| + NOTREACHED();
|
| request_info->requestFailed();
|
| break;
|
| }
|
| @@ -832,7 +851,8 @@ MediaStreamImpl::UserMediaRequestInfo::UserMediaRequestInfo(
|
| enable_automatic_output_device_selection(
|
| enable_automatic_output_device_selection),
|
| request(request),
|
| - request_failed_(false) {
|
| + request_result_(MEDIA_DEVICE_OK),
|
| + request_result_name_("") {
|
| }
|
|
|
| MediaStreamImpl::UserMediaRequestInfo::~UserMediaRequestInfo() {
|
| @@ -880,8 +900,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(),
|
| @@ -890,16 +912,17 @@ void MediaStreamImpl::UserMediaRequestInfo::OnTrackStarted(
|
| sources_waiting_for_callback_.erase(it);
|
| // All tracks must be started successfully. Otherwise the request is a
|
| // failure.
|
| - if (!success)
|
| - request_failed_ = true;
|
| + if (result != MEDIA_DEVICE_OK) {
|
| + request_result_ = result;
|
| + request_result_name_ = result_name;
|
| + }
|
| +
|
| CheckAllTracksStarted();
|
| }
|
|
|
| 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);
|
| + ready_callback_.Run(this, request_result_, request_result_name_);
|
| }
|
| }
|
|
|
|
|