Chromium Code Reviews| Index: content/renderer/media/media_stream_dispatcher.cc |
| =================================================================== |
| --- content/renderer/media/media_stream_dispatcher.cc (revision 111389) |
| +++ content/renderer/media/media_stream_dispatcher.cc (working copy) |
| @@ -65,6 +65,44 @@ |
| label_stream_map_.erase(it); |
| } |
| +void MediaStreamDispatcher::EnumerateDevices( |
| + int request_id, |
| + MediaStreamDispatcherEventHandler* event_handler, |
| + media_stream::MediaStreamType type, |
| + const std::string& security_origin) { |
| + DVLOG(1) << "MediaStreamDispatcher::EnumerateDevices(" |
| + << request_id << ")"; |
| + |
| + requests_.push_back(Request(event_handler, request_id, next_ipc_id_)); |
| + Send(new MediaStreamHostMsg_EnumerateDevices(routing_id(), |
| + next_ipc_id_++, |
| + type, |
| + security_origin)); |
| +} |
| + |
| +void MediaStreamDispatcher::OpenDevice( |
| + int request_id, |
| + MediaStreamDispatcherEventHandler* event_handler, |
| + const std::string& device_id, |
| + media_stream::MediaStreamType type, |
| + const std::string& security_origin) { |
| + DVLOG(1) << "MediaStreamDispatcher::OpenDevice(" << request_id << ")"; |
| + |
| + requests_.push_back(Request(event_handler, request_id, next_ipc_id_)); |
| + Send(new MediaStreamHostMsg_OpenDevice(routing_id(), |
| + next_ipc_id_++, |
| + device_id, |
| + type, |
| + security_origin)); |
| +} |
| + |
| +void MediaStreamDispatcher::CloseDevice(const std::string& label) { |
| + DVLOG(1) << "MediaStreamDispatcher::CloseDevice" |
| + << ", {label = " << label << "}"; |
|
mflodman_chromium_OOO
2011/12/02 18:44:02
nit: indentation.
wjia(left Chromium)
2012/01/24 00:59:46
Done.
|
| + |
| + StopStream(label); |
| +} |
| + |
| bool MediaStreamDispatcher::OnMessageReceived(const IPC::Message& message) { |
| bool handled = true; |
| IPC_BEGIN_MESSAGE_MAP(MediaStreamDispatcher, message) |
| @@ -76,6 +114,14 @@ |
| OnVideoDeviceFailed) |
| IPC_MESSAGE_HANDLER(MediaStreamHostMsg_AudioDeviceFailed, |
| OnAudioDeviceFailed) |
| + IPC_MESSAGE_HANDLER(MediaStreamMsg_DevicesEnumerated, |
| + OnDevicesEnumerated) |
| + IPC_MESSAGE_HANDLER(MediaStreamMsg_DevicesEnumerationFailed, |
| + OnDevicesEnumerationFailed) |
| + IPC_MESSAGE_HANDLER(MediaStreamMsg_DeviceOpened, |
| + OnDeviceOpened) |
| + IPC_MESSAGE_HANDLER(MediaStreamMsg_DeviceOpenFailed, |
| + OnDeviceOpenFailed) |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| IPC_END_MESSAGE_MAP() |
| return handled; |
| @@ -148,6 +194,73 @@ |
| it->second.handler->OnAudioDeviceFailed(label, index); |
| } |
| +void MediaStreamDispatcher::OnDevicesEnumerated( |
| + int request_id, |
| + const media_stream::StreamDeviceInfoArray& device_array) { |
| + |
| + for (RequestList::iterator it = requests_.begin(); |
| + it != requests_.end(); ++it) { |
| + Request& request = *it; |
| + if (request.ipc_request == request_id) { |
| + request.handler->OnDevicesEnumerated(request.request_id, device_array); |
| + DVLOG(1) << "MediaStreamDispatcher::OnDevicesEnumerated(" |
| + << request.request_id << ")"; |
| + requests_.erase(it); |
| + break; |
| + } |
| + } |
| +} |
| + |
| +void MediaStreamDispatcher::OnDevicesEnumerationFailed(int request_id) { |
| + for (RequestList::iterator it = requests_.begin(); |
| + it != requests_.end(); ++it) { |
| + Request& request = *it; |
| + if (request.ipc_request == request_id) { |
| + request.handler->OnStreamGenerationFailed(request.request_id); |
| + DVLOG(1) << "MediaStreamDispatcher::OnDevicesEnumerationFailed(" |
| + << request.request_id << ")\n"; |
| + requests_.erase(it); |
| + break; |
| + } |
| + } |
| +} |
| + |
| +void MediaStreamDispatcher::OnDeviceOpened( |
| + int request_id, |
| + const std::string& label, |
| + const media_stream::StreamDeviceInfo& device_info) { |
| + for (RequestList::iterator it = requests_.begin(); |
| + it != requests_.end(); ++it) { |
| + Request& request = *it; |
| + if (request.ipc_request == request_id) { |
| + Stream new_stream; |
| + new_stream.handler = request.handler; |
| + new_stream.video_array.push_back(device_info); |
| + label_stream_map_[label] = new_stream; |
| + request.handler->OnDeviceOpened(request.request_id, label, |
| + device_info); |
| + DVLOG(1) << "MediaStreamDispatcher::OnDeviceOpened(" |
| + << request.request_id << ", " << label << ")"; |
| + requests_.erase(it); |
| + break; |
| + } |
| + } |
| +} |
| + |
| +void MediaStreamDispatcher::OnDeviceOpenFailed(int request_id) { |
| + for (RequestList::iterator it = requests_.begin(); |
| + it != requests_.end(); ++it) { |
| + Request& request = *it; |
| + if (request.ipc_request == request_id) { |
| + request.handler->OnDeviceOpenFailed(request.request_id); |
| + DVLOG(1) << "MediaStreamDispatcher::OnDeviceOpenFailed(" |
| + << request.request_id << ")\n"; |
| + requests_.erase(it); |
| + break; |
| + } |
| + } |
| +} |
| + |
| int MediaStreamDispatcher::audio_session_id(const std::string& label, |
| int index) { |
| LabelStreamMap::iterator it = label_stream_map_.find(label); |