Index: content/browser/renderer_host/media/media_stream_dispatcher_host.cc |
=================================================================== |
--- content/browser/renderer_host/media/media_stream_dispatcher_host.cc (revision 111389) |
+++ content/browser/renderer_host/media/media_stream_dispatcher_host.cc (working copy) |
@@ -43,6 +43,10 @@ |
IPC_MESSAGE_HANDLER(MediaStreamHostMsg_GenerateStream, OnGenerateStream) |
IPC_MESSAGE_HANDLER(MediaStreamHostMsg_StopGeneratedStream, |
OnStopGeneratedStream) |
+ IPC_MESSAGE_HANDLER(MediaStreamHostMsg_EnumerateVideoDevices, |
+ OnEnumerateVideoDevices) |
+ IPC_MESSAGE_HANDLER(MediaStreamHostMsg_OpenVideoDevice, |
+ OnOpenVideoDevice) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP_EX() |
return handled; |
@@ -101,6 +105,40 @@ |
streams_.erase(it); |
} |
+void MediaStreamDispatcherHost::OnEnumerateVideoDevices( |
+ int render_view_id, |
+ int page_request_id, |
+ const std::string& security_origin) { |
+ DVLOG(1) << "MediaStreamDispatcherHost::OnEnumerateVideoDevices(" |
+ << render_view_id << ", " |
+ << page_request_id << ", " |
+ << security_origin << ")"; |
+ |
+ std::string label; |
+ manager()->EnumerateVideoDevices(this, render_process_id_, render_view_id, |
+ security_origin, &label); |
+ DCHECK(!label.empty()); |
+ streams_[label] = StreamRequest(render_view_id, page_request_id); |
+} |
+ |
+void MediaStreamDispatcherHost::OnOpenVideoDevice( |
+ int render_view_id, |
+ int page_request_id, |
+ const std::string& device_id, |
+ const std::string& security_origin) { |
+ DVLOG(1) << "MediaStreamDispatcherHost::OnOpenVideoDevice(" |
+ << render_view_id << ", " |
+ << page_request_id << ", device_id: " |
+ << device_id.c_str() << ", " |
+ << security_origin << ")"; |
+ |
+ std::string label; |
+ manager()->OpenVideoDevice(this, render_process_id_, render_view_id, |
+ device_id, security_origin, &label); |
+ DCHECK(!label.empty()); |
+ streams_[label] = StreamRequest(render_view_id, page_request_id); |
+} |
+ |
void MediaStreamDispatcherHost::StreamGenerated( |
const std::string& label, |
const StreamDeviceInfoArray& audio_devices, |
@@ -161,4 +199,65 @@ |
index)); |
} |
+void MediaStreamDispatcherHost::VideoDevicesEnumerated( |
+ const std::string& label, |
+ const StreamDeviceInfoArray& devices) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ DVLOG(1) << "MediaStreamDispatcherHost::VideoDevicesEnumerated(" |
+ << ", {label = " << label << "})"; |
+ |
+ StreamMap::iterator it = streams_.find(label); |
+ DCHECK(it != streams_.end()); |
+ StreamRequest request = it->second; |
+ streams_.erase(it); |
+ |
+ Send(new MediaStreamMsg_VideoDevicesEnumerated( |
+ request.render_view_id, request.page_request_id, devices)); |
+} |
+ |
+void MediaStreamDispatcherHost::VideoDevicesEnumerationFailed( |
+ const std::string& label) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ DVLOG(1) << "MediaStreamDispatcherHost::VideoDevicesEnumerationFailed(" |
+ << ", {label = " << label << "})"; |
+ |
+ StreamMap::iterator it = streams_.find(label); |
+ DCHECK(it != streams_.end()); |
+ StreamRequest request = it->second; |
+ streams_.erase(it); |
+ |
+ Send(new MediaStreamMsg_VideoDevicesEnumerationFailed( |
+ request.render_view_id, request.page_request_id)); |
+} |
+ |
+void MediaStreamDispatcherHost::VideoDeviceOpened( |
+ const std::string& label, |
+ const StreamDeviceInfo& video_device) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ DVLOG(1) << "MediaStreamDispatcherHost::VideoDeviceOpened(" |
+ << ", {label = " << label << "})"; |
+ |
+ StreamMap::iterator it = streams_.find(label); |
+ DCHECK(it != streams_.end()); |
+ StreamRequest request = it->second; |
+ |
+ Send(new MediaStreamMsg_VideoDeviceOpened( |
+ request.render_view_id, request.page_request_id, label, video_device)); |
+} |
+ |
+void MediaStreamDispatcherHost::VideoDeviceOpenFailed( |
+ const std::string& label) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ DVLOG(1) << "MediaStreamDispatcherHost::VideoDeviceOpenFailed(" |
+ << ", {label = " << label << "})"; |
+ |
+ StreamMap::iterator it = streams_.find(label); |
+ DCHECK(it != streams_.end()); |
+ StreamRequest request = it->second; |
+ streams_.erase(it); |
+ |
+ Send(new MediaStreamMsg_VideoDeviceOpenFailed(request.render_view_id, |
+ request.page_request_id)); |
+} |
+ |
} // namespace media_stream |