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 952f20f9cc5bea6fd5cef4e8361dc4fe8e0f008d..e360eb0eef26a15bad462b3352580dd02510d945 100644 |
--- a/content/browser/renderer_host/media/audio_input_device_manager.cc |
+++ b/content/browser/renderer_host/media/audio_input_device_manager.cc |
@@ -14,6 +14,10 @@ |
#include "media/base/channel_layout.h" |
#include "media/base/scoped_histogram_timer.h" |
+#if defined(OS_CHROMEOS) |
+#include "chromeos/audio/cras_audio_handler.h" |
+#endif |
+ |
namespace content { |
const int AudioInputDeviceManager::kFakeOpenSessionId = 1; |
@@ -28,6 +32,9 @@ AudioInputDeviceManager::AudioInputDeviceManager( |
: listener_(NULL), |
next_capture_session_id_(kFirstSessionId), |
use_fake_device_(false), |
+#if defined(OS_CHROMEOS) |
+ keyboard_mic_streams_count_(0), |
+#endif |
audio_manager_(audio_manager) { |
} |
@@ -109,6 +116,43 @@ bool AudioInputDeviceManager::ShouldUseFakeDevice() const { |
return use_fake_device_; |
} |
+#if defined(OS_CHROMEOS) |
+void AudioInputDeviceManager::RegisterKeyboardMicStream( |
+ const base::Closure& callback) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
+ |
+ ++keyboard_mic_streams_count_; |
+ if (keyboard_mic_streams_count_ == 1) { |
+ BrowserThread::PostTaskAndReply( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind( |
+ &AudioInputDeviceManager::SetKeyboardMicStreamActiveOnUIThread, |
+ this, |
+ true), |
+ callback); |
+ } else { |
+ callback.Run(); |
+ } |
+} |
+ |
+void AudioInputDeviceManager::UnregisterKeyboardMicStream() { |
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
+ |
+ --keyboard_mic_streams_count_; |
+ DCHECK_GE(keyboard_mic_streams_count_, 0); |
+ if (keyboard_mic_streams_count_ == 0) { |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind( |
+ &AudioInputDeviceManager::SetKeyboardMicStreamActiveOnUIThread, |
+ this, |
+ false)); |
+ } |
+} |
+#endif |
+ |
void AudioInputDeviceManager::EnumerateOnDeviceThread( |
MediaStreamType stream_type) { |
SCOPED_UMA_HISTOGRAM_TIMER( |
@@ -250,4 +294,13 @@ void AudioInputDeviceManager::GetFakeDeviceNames( |
kFakeDeviceId2)); |
} |
+#if defined(OS_CHROMEOS) |
+void AudioInputDeviceManager::SetKeyboardMicStreamActiveOnUIThread( |
+ bool active) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ chromeos::CrasAudioHandler::Get()->SetKeyboardMicActive(active); |
+} |
+#endif |
+ |
+ |
} // namespace content |