| 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
|
|
|