summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/browser/renderer_host/media/media_stream_dispatcher_host.cc10
-rw-r--r--content/browser/renderer_host/media/media_stream_manager.cc24
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);