diff options
-rw-r--r-- | content/browser/renderer_host/media/media_stream_dispatcher_host.cc | 10 | ||||
-rw-r--r-- | content/browser/renderer_host/media/media_stream_manager.cc | 24 |
2 files changed, 18 insertions, 16 deletions
diff --git a/content/browser/renderer_host/media/media_stream_dispatcher_host.cc b/content/browser/renderer_host/media/media_stream_dispatcher_host.cc index 5aab3e5..0c7a762 100644 --- a/content/browser/renderer_host/media/media_stream_dispatcher_host.cc +++ b/content/browser/renderer_host/media/media_stream_dispatcher_host.cc @@ -161,9 +161,15 @@ void MediaStreamDispatcherHost::OnGenerateStream( label = GetManager()->GenerateStream(this, render_process_id_, render_view_id, components, security_origin); + DCHECK(!label.empty()); + } + + if (label.empty()) { + Send(new MediaStreamMsg_StreamGenerationFailed(render_view_id, + page_request_id)); + } else { + streams_[label] = StreamRequest(render_view_id, page_request_id); } - DCHECK(!label.empty()); - streams_[label] = StreamRequest(render_view_id, page_request_id); } void MediaStreamDispatcherHost::OnCancelGenerateStream(int render_view_id, diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc index 4e63a55..0e198b2 100644 --- a/content/browser/renderer_host/media/media_stream_manager.cc +++ b/content/browser/renderer_host/media/media_stream_manager.cc @@ -257,15 +257,6 @@ std::string MediaStreamManager::GenerateStreamForDevice( bool has_valid_device_id = WebContentsCaptureUtil::ExtractTabCaptureTarget( device_id, &target_render_process_id, &target_render_view_id); - // Create a new request based on options. - DeviceRequest* request = new DeviceRequest(requester, options, - DeviceRequest::GENERATE_STREAM, - target_render_process_id, - target_render_view_id, - security_origin); - const std::string& label = AddRequest(request); - request->requested_device_id = device_id; - if (!has_valid_device_id || !security_origin.SchemeIs(kExtensionScheme) || (options.audio_type != MEDIA_TAB_AUDIO_CAPTURE && @@ -273,13 +264,18 @@ std::string MediaStreamManager::GenerateStreamForDevice( (options.video_type != MEDIA_TAB_VIDEO_CAPTURE && options.video_type != MEDIA_NO_SERVICE)) { LOG(ERROR) << "Invalid request or used tab capture outside extension API."; - - BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, - base::Bind(&MediaStreamManager::CancelRequest, - base::Unretained(this), label)); - return label; + return std::string(); } + // Create a new request based on options. + DeviceRequest* request = new DeviceRequest(requester, options, + DeviceRequest::GENERATE_STREAM, + target_render_process_id, + target_render_view_id, + security_origin); + const std::string& label = AddRequest(request); + request->requested_device_id = device_id; + // Get user confirmation to use the capture device. PostRequestToUI(label); |