| 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 648fe2a5a55accf56157f4e014c10277029387d3..5b89bc9f0318e88f0e368097577e849f43b2440f 100644
|
| --- a/content/renderer/media/media_stream_impl.cc
|
| +++ b/content/renderer/media/media_stream_impl.cc
|
| @@ -88,12 +88,8 @@ void MediaStreamImpl::requestUserMedia(
|
| // webGetUserMedia.
|
| UpdateWebRTCMethodCount(WEBKIT_GET_USER_MEDIA);
|
| DCHECK(CalledOnValidThread());
|
| - int request_id = g_next_request_id++;
|
| bool audio = false;
|
| bool video = false;
|
| - WebKit::WebFrame* frame = NULL;
|
| - GURL security_origin;
|
| -
|
| // |user_media_request| can't be mocked. So in order to test at all we check
|
| // if it isNull.
|
| if (user_media_request.isNull()) {
|
| @@ -103,6 +99,38 @@ void MediaStreamImpl::requestUserMedia(
|
| } else {
|
| audio = user_media_request.audio();
|
| video = user_media_request.video();
|
| + }
|
| +
|
| + content::MediaStreamDeviceType audio_type =
|
| + audio ? content::MEDIA_DEVICE_AUDIO_CAPTURE : content::MEDIA_NO_SERVICE;
|
| + content::MediaStreamDeviceType video_type =
|
| + video ? content::MEDIA_DEVICE_VIDEO_CAPTURE : content::MEDIA_NO_SERVICE;
|
| + GenerateStreamForMedia(user_media_request, audio_type, video_type, NULL);
|
| +}
|
| +
|
| +void MediaStreamImpl::requestDeviceMedia(
|
| + const WebKit::WebDeviceMediaRequest& media_request) {
|
| + const std::string& device_id = UTF16ToUTF8(media_request.deviceId());
|
| +
|
| + content::MediaStreamDeviceType audio_type = media_request.audio() ?
|
| + content::MEDIA_TAB_AUDIO_CAPTURE : content::MEDIA_NO_SERVICE;
|
| + content::MediaStreamDeviceType video_type = media_request.video() ?
|
| + content::MEDIA_TAB_VIDEO_CAPTURE : content::MEDIA_NO_SERVICE;
|
| +
|
| + GenerateStreamForMedia(media_request, audio_type, video_type, &device_id);
|
| +}
|
| +
|
| +void MediaStreamImpl::GenerateStreamForMedia(
|
| + const WebKit::WebUserMediaRequest& user_media_request,
|
| + const content::MediaStreamDeviceType audio,
|
| + const content::MediaStreamDeviceType video,
|
| + const std::string* device_id) {
|
| + DCHECK(CalledOnValidThread());
|
| + int request_id = g_next_request_id++;
|
| + WebKit::WebFrame* frame = NULL;
|
| + GURL security_origin;
|
| +
|
| + if (!user_media_request.isNull()) {
|
| security_origin = GURL(user_media_request.securityOrigin().toString());
|
| // Get the WebFrame that requested a MediaStream.
|
| // The frame is needed to tell the MediaStreamDispatcher when a stream goes
|
| @@ -119,11 +147,23 @@ void MediaStreamImpl::requestUserMedia(
|
| user_media_requests_[request_id] =
|
| UserMediaRequestInfo(frame, user_media_request);
|
|
|
| - media_stream_dispatcher_->GenerateStream(
|
| - request_id,
|
| - AsWeakPtr(),
|
| - media_stream::StreamOptions(audio, video),
|
| - security_origin);
|
| + if (device_id == NULL) {
|
| + // WebUserMediaRequest.
|
| + media_stream_dispatcher_->GenerateStream(
|
| + request_id,
|
| + AsWeakPtr(),
|
| + media_stream::StreamOptions(audio, video),
|
| + security_origin);
|
| + } else {
|
| + // WebDeviceMediaRequest.
|
| + media_stream_dispatcher_->GenerateStreamForDevice(
|
| + request_id,
|
| + AsWeakPtr(),
|
| + media_stream::StreamOptions(audio, video),
|
| + *device_id,
|
| + security_origin);
|
| +
|
| + }
|
| }
|
|
|
| void MediaStreamImpl::cancelUserMediaRequest(
|
|
|