summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorperkj@chromium.org <perkj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-18 12:07:06 +0000
committerperkj@chromium.org <perkj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-18 12:07:06 +0000
commit8aceb51986bc0b2d1bb6a37503d6b76891da72c6 (patch)
treeb7caac3266cb3a09e2ba2fe23c505776993bd2c7 /content
parent5e2b4c166199f3c8dfbfa3e4e959fcfdd2a97f83 (diff)
downloadchromium_src-8aceb51986bc0b2d1bb6a37503d6b76891da72c6.zip
chromium_src-8aceb51986bc0b2d1bb6a37503d6b76891da72c6.tar.gz
chromium_src-8aceb51986bc0b2d1bb6a37503d6b76891da72c6.tar.bz2
Fix cancelling of device enumeration requests.
TEST= Log using --vmodule=media_stream_manager*=3,media_stream_dispatcher*=3 and make sure the log print out media_stream_manager.cc(316)]CancelRequest( after MediaStreamDispatcher::StopEnumerateDevices() while using the webcam on youtube.com/my_webcam?privacy=public BUG=317534,320421 R=tommi@chromium.org Review URL: https://codereview.chromium.org/63673006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@235720 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/renderer_host/media/media_stream_dispatcher_host.cc9
1 files changed, 9 insertions, 0 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 e235d80..80565ca 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,13 @@ 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.
+ DVLOG(1) << "Enumeration request with label " << label
+ << "does not exist.";
+ return;
+ }
media_stream_manager_->CancelRequest(label);
PopRequest(label);
}