Index: content/browser/renderer_host/media/media_stream_dispatcher_host.cc |
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 e235d806df09e6f82b658b68389df90f2deba761..366ca3bd7977b9f3587a1c7734efa15da8598d0f 100644 |
--- a/content/browser/renderer_host/media/media_stream_dispatcher_host.cc |
+++ b/content/browser/renderer_host/media/media_stream_dispatcher_host.cc |
@@ -95,6 +95,8 @@ bool MediaStreamDispatcherHost::OnMessageReceived( |
OnStopStreamDevice) |
IPC_MESSAGE_HANDLER(MediaStreamHostMsg_EnumerateDevices, |
OnEnumerateDevices) |
+ IPC_MESSAGE_HANDLER(MediaStreamHostMsg_CancelEnumerateDevices, |
+ OnCancelEnumerateDevices) |
IPC_MESSAGE_HANDLER(MediaStreamHostMsg_OpenDevice, |
OnOpenDevice) |
IPC_MESSAGE_HANDLER(MediaStreamHostMsg_CloseDevice, |
@@ -192,6 +194,11 @@ void MediaStreamDispatcherHost::OnCancelEnumerateDevices( |
<< render_view_id << ", " |
<< label << ")"; |
+ if (streams_.find(label) == streams_.end()) { |
+ // According to the comments in MediaStreamDispatcher::OnDevicesEnumerated, |
+ // OnCancelEnumerateDevices can be called several times with the same label. |
tommi (sloooow) - chröme
2013/11/18 10:01:50
is this worth a DVLOG(1)?
|
+ return; |
+ } |
media_stream_manager_->CancelRequest(label); |
PopRequest(label); |
} |