diff options
Diffstat (limited to 'content/browser')
-rw-r--r-- | content/browser/renderer_host/media/media_stream_manager.cc | 11 | ||||
-rw-r--r-- | content/browser/renderer_host/media/video_capture_manager.cc | 18 |
2 files changed, 17 insertions, 12 deletions
diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc index b5151bc..db7581d 100644 --- a/content/browser/renderer_host/media/media_stream_manager.cc +++ b/content/browser/renderer_host/media/media_stream_manager.cc @@ -263,18 +263,19 @@ std::string MediaStreamManager::GenerateStream( DCHECK(found_match || translated_video_device_id.empty()); } - if (options.video_type == MEDIA_SCREEN_VIDEO_CAPTURE || + if (options.video_type == MEDIA_DESKTOP_VIDEO_CAPTURE || options.audio_type == MEDIA_SYSTEM_AUDIO_CAPTURE) { // For screen capture we only support two valid combinations: // (1) screen video capture only, or // (2) screen video capture with system audio capture. - if (options.video_type != MEDIA_SCREEN_VIDEO_CAPTURE || + if (options.video_type != MEDIA_DESKTOP_VIDEO_CAPTURE || (options.audio_type != MEDIA_NO_SERVICE && options.audio_type != MEDIA_SYSTEM_AUDIO_CAPTURE)) { // TODO(sergeyu): Surface error message to the calling JS code. LOG(ERROR) << "Invalid screen capture request."; return std::string(); } + translated_video_device_id = options.video_device_id; } // Create a new request based on options. @@ -624,11 +625,11 @@ void MediaStreamManager::HandleRequest(const std::string& label) { audio_type == MEDIA_TAB_AUDIO_CAPTURE || video_type == MEDIA_TAB_VIDEO_CAPTURE; - bool is_screen_capure = - video_type == MEDIA_SCREEN_VIDEO_CAPTURE; + bool is_screen_capture = + video_type == MEDIA_DESKTOP_VIDEO_CAPTURE; if (!is_web_contents_capture && - !is_screen_capure && + !is_screen_capture && ((IsAudioMediaType(audio_type) && !audio_enumeration_cache_.valid) || (IsVideoMediaType(video_type) && !video_enumeration_cache_.valid))) { // Enumerate the devices if there is no valid device lists to be used. diff --git a/content/browser/renderer_host/media/video_capture_manager.cc b/content/browser/renderer_host/media/video_capture_manager.cc index aa27e12..d96f08d 100644 --- a/content/browser/renderer_host/media/video_capture_manager.cc +++ b/content/browser/renderer_host/media/video_capture_manager.cc @@ -16,6 +16,7 @@ #include "content/browser/renderer_host/media/web_contents_video_capture_device.h" #include "content/public/browser/browser_thread.h" #include "content/public/common/content_switches.h" +#include "content/public/common/desktop_media_id.h" #include "content/public/common/media_stream_request.h" #include "media/base/scoped_histogram_timer.h" #include "media/video/capture/fake_video_capture_device.h" @@ -187,13 +188,16 @@ void VideoCaptureManager::OnOpen(int capture_session_id, device.device.id); break; } - case MEDIA_SCREEN_VIDEO_CAPTURE: { + case MEDIA_DESKTOP_VIDEO_CAPTURE: { #if defined(ENABLE_SCREEN_CAPTURE) - scoped_refptr<base::SequencedWorkerPool> blocking_pool = - BrowserThread::GetBlockingPool(); - video_capture_device = new ScreenCaptureDevice( - blocking_pool->GetSequencedTaskRunner( - blocking_pool->GetSequenceToken())); + DesktopMediaID id = DesktopMediaID::Parse(device.device.id); + if (id.type == DesktopMediaID::TYPE_SCREEN) { + scoped_refptr<base::SequencedWorkerPool> blocking_pool = + BrowserThread::GetBlockingPool(); + video_capture_device = new ScreenCaptureDevice( + blocking_pool->GetSequencedTaskRunner( + blocking_pool->GetSequenceToken())); + } #endif // defined(ENABLE_SCREEN_CAPTURE) break; } @@ -434,7 +438,7 @@ void VideoCaptureManager::GetAvailableDevices( *device_names = video_capture_devices_; break; - case MEDIA_SCREEN_VIDEO_CAPTURE: + case MEDIA_DESKTOP_VIDEO_CAPTURE: device_names->clear(); break; |