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

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

Issue 10928043: Media Related changes for TabCapture API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Initial Created 8 years, 3 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 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(

Powered by Google App Engine
This is Rietveld 408576698