| Index: content/browser/renderer_host/media/media_stream_dispatcher_host.cc
|
| ===================================================================
|
| --- content/browser/renderer_host/media/media_stream_dispatcher_host.cc (revision 118766)
|
| +++ content/browser/renderer_host/media/media_stream_dispatcher_host.cc (working copy)
|
| @@ -44,6 +44,10 @@
|
| IPC_MESSAGE_HANDLER(MediaStreamHostMsg_GenerateStream, OnGenerateStream)
|
| IPC_MESSAGE_HANDLER(MediaStreamHostMsg_StopGeneratedStream,
|
| OnStopGeneratedStream)
|
| + IPC_MESSAGE_HANDLER(MediaStreamHostMsg_EnumerateDevices,
|
| + OnEnumerateDevices)
|
| + IPC_MESSAGE_HANDLER(MediaStreamHostMsg_OpenDevice,
|
| + OnOpenDevice)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP_EX()
|
| return handled;
|
| @@ -102,6 +106,44 @@
|
| streams_.erase(it);
|
| }
|
|
|
| +void MediaStreamDispatcherHost::OnEnumerateDevices(
|
| + int render_view_id,
|
| + int page_request_id,
|
| + media_stream::MediaStreamType type,
|
| + const std::string& security_origin) {
|
| + DVLOG(1) << "MediaStreamDispatcherHost::OnEnumerateDevices("
|
| + << render_view_id << ", "
|
| + << page_request_id << ", "
|
| + << type << ", "
|
| + << security_origin << ")";
|
| +
|
| + std::string label;
|
| + manager()->EnumerateDevices(this, render_process_id_, render_view_id,
|
| + type, security_origin, &label);
|
| + DCHECK(!label.empty());
|
| + streams_[label] = StreamRequest(render_view_id, page_request_id);
|
| +}
|
| +
|
| +void MediaStreamDispatcherHost::OnOpenDevice(
|
| + int render_view_id,
|
| + int page_request_id,
|
| + const std::string& device_id,
|
| + media_stream::MediaStreamType type,
|
| + const std::string& security_origin) {
|
| + DVLOG(1) << "MediaStreamDispatcherHost::OnOpenDevice("
|
| + << render_view_id << ", "
|
| + << page_request_id << ", device_id: "
|
| + << device_id.c_str() << ", type: "
|
| + << type << ", "
|
| + << security_origin << ")";
|
| +
|
| + std::string label;
|
| + manager()->OpenDevice(this, render_process_id_, render_view_id,
|
| + device_id, type, 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,
|
| @@ -162,4 +204,65 @@
|
| index));
|
| }
|
|
|
| +void MediaStreamDispatcherHost::DevicesEnumerated(
|
| + const std::string& label,
|
| + const StreamDeviceInfoArray& devices) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + DVLOG(1) << "MediaStreamDispatcherHost::DevicesEnumerated("
|
| + << ", {label = " << label << "})";
|
| +
|
| + StreamMap::iterator it = streams_.find(label);
|
| + DCHECK(it != streams_.end());
|
| + StreamRequest request = it->second;
|
| + streams_.erase(it);
|
| +
|
| + Send(new MediaStreamMsg_DevicesEnumerated(
|
| + request.render_view_id, request.page_request_id, devices));
|
| +}
|
| +
|
| +void MediaStreamDispatcherHost::DevicesEnumerationFailed(
|
| + const std::string& label) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + DVLOG(1) << "MediaStreamDispatcherHost::DevicesEnumerationFailed("
|
| + << ", {label = " << label << "})";
|
| +
|
| + StreamMap::iterator it = streams_.find(label);
|
| + DCHECK(it != streams_.end());
|
| + StreamRequest request = it->second;
|
| + streams_.erase(it);
|
| +
|
| + Send(new MediaStreamMsg_DevicesEnumerationFailed(
|
| + request.render_view_id, request.page_request_id));
|
| +}
|
| +
|
| +void MediaStreamDispatcherHost::DeviceOpened(
|
| + const std::string& label,
|
| + const StreamDeviceInfo& video_device) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + DVLOG(1) << "MediaStreamDispatcherHost::DeviceOpened("
|
| + << ", {label = " << label << "})";
|
| +
|
| + StreamMap::iterator it = streams_.find(label);
|
| + DCHECK(it != streams_.end());
|
| + StreamRequest request = it->second;
|
| +
|
| + Send(new MediaStreamMsg_DeviceOpened(
|
| + request.render_view_id, request.page_request_id, label, video_device));
|
| +}
|
| +
|
| +void MediaStreamDispatcherHost::DeviceOpenFailed(
|
| + const std::string& label) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + DVLOG(1) << "MediaStreamDispatcherHost::DeviceOpenFailed("
|
| + << ", {label = " << label << "})";
|
| +
|
| + StreamMap::iterator it = streams_.find(label);
|
| + DCHECK(it != streams_.end());
|
| + StreamRequest request = it->second;
|
| + streams_.erase(it);
|
| +
|
| + Send(new MediaStreamMsg_DeviceOpenFailed(request.render_view_id,
|
| + request.page_request_id));
|
| +}
|
| +
|
| } // namespace media_stream
|
|
|