Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: chromeos/audio/cras_audio_handler.cc

Issue 1186293003: Implement HasInputDevices in CrasAudioManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move audio_manager to be a regular member of CrasAudioManager. Fix InitializeForTesting Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromeos/audio/cras_audio_handler.cc
diff --git a/chromeos/audio/cras_audio_handler.cc b/chromeos/audio/cras_audio_handler.cc
index 3a86d8676ff483bb52be7955b979ba21ad5de1bf..db6f312236d2ce938be75aea122ee88fcffe9eb4 100644
--- a/chromeos/audio/cras_audio_handler.cc
+++ b/chromeos/audio/cras_audio_handler.cc
@@ -13,6 +13,7 @@
#include "chromeos/audio/audio_devices_pref_handler.h"
#include "chromeos/audio/audio_devices_pref_handler_stub.h"
#include "chromeos/dbus/dbus_thread_manager.h"
+#include "media/audio/audio_manager.h"
using std::max;
using std::min;
@@ -81,17 +82,41 @@ void CrasAudioHandler::AudioObserver::OnActiveOutputNodeChanged() {
void CrasAudioHandler::AudioObserver::OnActiveInputNodeChanged() {
}
+CrasAudioHandler::AudioManagerWrapper::AudioManagerWrapper() {
+}
+CrasAudioHandler::AudioManagerWrapper::~AudioManagerWrapper() {
+}
+
+CrasAudioHandler::AudioManagerWrapperImpl::AudioManagerWrapperImpl() {
+}
+CrasAudioHandler::AudioManagerWrapperImpl::~AudioManagerWrapperImpl() {
+}
+
+void CrasAudioHandler::AudioManagerWrapperImpl::SetHasInputDevices(
+ bool has_input_devices) {
+ media::AudioManager::Get()->SetHasInputDevices(has_input_devices);
+}
+
// static
void CrasAudioHandler::Initialize(
- scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler) {
+ scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler,
+ scoped_ptr<AudioManagerWrapper> audio_manager) {
CHECK(!g_cras_audio_handler);
- g_cras_audio_handler = new CrasAudioHandler(audio_pref_handler);
+ // Creates an AudioManagerWrapperImpl if audio_manager is not set by
+ // caller.
+ if (!audio_manager.get())
+ audio_manager.reset(new CrasAudioHandler::AudioManagerWrapperImpl());
+ g_cras_audio_handler =
+ new CrasAudioHandler(audio_pref_handler, audio_manager.Pass());
}
// static
void CrasAudioHandler::InitializeForTesting() {
CHECK(!g_cras_audio_handler);
- CrasAudioHandler::Initialize(new AudioDevicesPrefHandlerStub());
+ scoped_ptr<AudioManagerWrapper> audio_manager(
+ new CrasAudioHandler::AudioManagerWrapperImpl());
+ CrasAudioHandler::Initialize(new AudioDevicesPrefHandlerStub(),
+ audio_manager.Pass());
}
// static
@@ -433,7 +458,8 @@ void CrasAudioHandler::LogErrors() {
}
CrasAudioHandler::CrasAudioHandler(
- scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler)
+ scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler,
+ scoped_ptr<AudioManagerWrapper> audio_manager)
: audio_pref_handler_(audio_pref_handler),
output_mute_on_(false),
input_mute_on_(false),
@@ -448,6 +474,7 @@ CrasAudioHandler::CrasAudioHandler(
weak_ptr_factory_(this) {
if (!audio_pref_handler.get())
Daniel Erat 2015/06/24 13:37:45 this isn't part of your change, but it seems stran
cychiang 2015/06/25 05:45:24 This was added long time ago in https://chromiumco
return;
+ audio_manager_ = audio_manager.Pass();
// If the DBusThreadManager or the CrasAudioClient aren't available, there
// isn't much we can do. This should only happen when running tests.
if (!chromeos::DBusThreadManager::IsInitialized() ||
@@ -903,6 +930,18 @@ void CrasAudioHandler::UpdateDevicesAndSwitchActive(
}
}
+void CrasAudioHandler::UpdateAudioManagerHasInputDevices() {
+ AudioDeviceList devices;
+ GetAudioDevices(&devices);
+ for (size_t i = 0; i < devices.size(); ++i) {
+ if (devices[i].is_input && devices[i].is_for_simple_usage()) {
+ audio_manager_->SetHasInputDevices(true);
+ return;
+ }
+ }
+ audio_manager_->SetHasInputDevices(false);
+}
+
void CrasAudioHandler::HandleGetNodes(const chromeos::AudioNodeList& node_list,
bool success) {
if (!success) {
@@ -911,6 +950,7 @@ void CrasAudioHandler::HandleGetNodes(const chromeos::AudioNodeList& node_list,
}
UpdateDevicesAndSwitchActive(node_list);
+ UpdateAudioManagerHasInputDevices();
FOR_EACH_OBSERVER(AudioObserver, observers_, OnAudioNodesChanged());
}

Powered by Google App Engine
This is Rietveld 408576698