Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Unified Diff: content/renderer/media/media_stream_impl.cc

Issue 391703002: Implement ConstraintNotSatisfiedError for getusermedia (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add bug id and reviewer Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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,
+ "");
}
}

Powered by Google App Engine
This is Rietveld 408576698