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

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: 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 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,
+ "");
}
}

Powered by Google App Engine
This is Rietveld 408576698