Index: content/browser/renderer_host/media/audio_input_device_manager.cc |
diff --git a/content/browser/renderer_host/media/audio_input_device_manager.cc b/content/browser/renderer_host/media/audio_input_device_manager.cc |
index 1fc12feb67b7f314f028dec3c52887d9278074c4..8fa6ee3068c8a4a0d9dc4c592c433e7e8a60a83b 100644 |
--- a/content/browser/renderer_host/media/audio_input_device_manager.cc |
+++ b/content/browser/renderer_host/media/audio_input_device_manager.cc |
@@ -8,6 +8,8 @@ |
#include "base/memory/scoped_ptr.h" |
#include "content/browser/renderer_host/media/audio_input_device_manager_event_handler.h" |
#include "content/public/browser/browser_thread.h" |
+#include "content/public/common/media_stream_request.h" |
+#include "media/audio/audio_device_name.h" |
#include "media/audio/audio_input_ipc.h" |
#include "media/audio/audio_manager_base.h" |
@@ -104,9 +106,9 @@ void AudioInputDeviceManager::Start( |
// use the empty device_id to indicate that Start() failed. |
std::string device_id; |
if (event_handlers_.insert(std::make_pair(session_id, handler)).second) { |
- AudioInputDeviceMap::iterator it = devices_.find(session_id); |
+ StreamDeviceMap::const_iterator it = devices_.find(session_id); |
if (it != devices_.end()) |
- device_id = it->second.unique_id; |
+ device_id = it->second.device_id; |
} |
// Post a callback through the AudioInputRendererHost to notify the renderer |
@@ -132,10 +134,10 @@ void AudioInputDeviceManager::EnumerateOnDeviceThread() { |
for (media::AudioDeviceNames::iterator it = device_names.begin(); |
it != device_names.end(); |
++it) { |
- devices->push_back( |
- StreamDeviceInfo(content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE, |
- it->device_name, |
- it->unique_id, false)); |
+ // NOTE: Only support enumeration of the MEDIA_DEVICE_AUDIO_CAPTURE type. |
+ devices->push_back(StreamDeviceInfo( |
+ content::MEDIA_DEVICE_AUDIO_CAPTURE, it->device_name, |
+ it->unique_id, false)); |
} |
// Return the device list through the listener by posting a task on |
@@ -152,11 +154,10 @@ void AudioInputDeviceManager::OpenOnDeviceThread( |
int session_id, const StreamDeviceInfo& device) { |
DCHECK(IsOnDeviceThread()); |
- // Add the session_id and device to the list. |
- media::AudioDeviceName target_device(device.name, device.device_id); |
- if (!devices_.insert(std::make_pair(session_id, target_device)).second) { |
+ // Add the session_id and device to the map. |
+ if (!devices_.insert(std::make_pair(session_id, device)).second) { |
NOTREACHED(); |
- devices_[session_id] = target_device; |
+ devices_[session_id] = device; |
} |
// Return the |session_id| through the listener by posting a task on |
@@ -165,15 +166,17 @@ void AudioInputDeviceManager::OpenOnDeviceThread( |
FROM_HERE, |
base::Bind(&AudioInputDeviceManager::OpenedOnIOThread, |
this, |
- session_id)); |
+ device.stream_type, session_id)); |
} |
void AudioInputDeviceManager::CloseOnDeviceThread(int session_id) { |
DCHECK(IsOnDeviceThread()); |
- AudioInputDeviceMap::iterator it = devices_.find(session_id); |
- if (it != devices_.end()) |
- devices_.erase(it); |
+ StreamDeviceMap::iterator it = devices_.find(session_id); |
+ if (it == devices_.end()) |
+ return; |
+ const content::MediaStreamDeviceType stream_type = it->second.stream_type; |
+ devices_.erase(it); |
// Post a callback through the listener on IO thread since |
// MediaStreamManager handles the callback asynchronously. |
@@ -181,7 +184,7 @@ void AudioInputDeviceManager::CloseOnDeviceThread(int session_id) { |
FROM_HERE, |
base::Bind(&AudioInputDeviceManager::ClosedOnIOThread, |
this, |
- session_id)); |
+ stream_type, session_id)); |
} |
void AudioInputDeviceManager::DevicesEnumeratedOnIOThread( |
@@ -190,24 +193,24 @@ void AudioInputDeviceManager::DevicesEnumeratedOnIOThread( |
// Ensure that |devices| gets deleted on exit. |
scoped_ptr<StreamDeviceInfoArray> devices_array(devices); |
if (listener_) { |
- listener_->DevicesEnumerated( |
- content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE, |
- *devices_array); |
+ // NOTE: Only support enumeration of the MEDIA_DEVICE_AUDIO_CAPTURE type. |
+ listener_->DevicesEnumerated(content::MEDIA_DEVICE_AUDIO_CAPTURE, |
+ *devices_array); |
} |
} |
-void AudioInputDeviceManager::OpenedOnIOThread(int session_id) { |
+void AudioInputDeviceManager::OpenedOnIOThread( |
+ content::MediaStreamDeviceType stream_type, int session_id) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
if (listener_) |
- listener_->Opened(content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE, |
- session_id); |
+ listener_->Opened(stream_type, session_id); |
} |
-void AudioInputDeviceManager::ClosedOnIOThread(int session_id) { |
+void AudioInputDeviceManager::ClosedOnIOThread( |
+ content::MediaStreamDeviceType stream_type, int session_id) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
if (listener_) |
- listener_->Closed(content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE, |
- session_id); |
+ listener_->Closed(stream_type, session_id); |
} |
bool AudioInputDeviceManager::IsOnDeviceThread() const { |