diff options
author | derat <derat@chromium.org> | 2014-08-29 09:10:43 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-08-29 16:14:58 +0000 |
commit | 3698adff97208879298ad45a0bb07ea13cc5f49c (patch) | |
tree | 7490391283611e66c95e706febbe4633f6a008ab /chromeos | |
parent | abbfd37ef6db3e3012a55634a5487b50c1526b74 (diff) | |
download | chromium_src-3698adff97208879298ad45a0bb07ea13cc5f49c.zip chromium_src-3698adff97208879298ad45a0bb07ea13cc5f49c.tar.gz chromium_src-3698adff97208879298ad45a0bb07ea13cc5f49c.tar.bz2 |
app_shell: Do simple audio initialization.
Add a ShellAudioController class that activates audio
devices for input and output and requests max volume.
Also move chromeos::NetworkHandler initialization into
ShellBrowserMainParts so that ShellNetworkController can get
tests at some point.
BUG=405968
Review URL: https://codereview.chromium.org/515573003
Cr-Commit-Position: refs/heads/master@{#292643}
Diffstat (limited to 'chromeos')
-rw-r--r-- | chromeos/audio/audio_device.cc | 74 | ||||
-rw-r--r-- | chromeos/audio/audio_device.h | 13 | ||||
-rw-r--r-- | chromeos/audio/cras_audio_handler_unittest.cc | 5 | ||||
-rw-r--r-- | chromeos/dbus/cras_audio_client.h | 1 | ||||
-rw-r--r-- | chromeos/dbus/cras_audio_client_stub_impl.cc | 17 | ||||
-rw-r--r-- | chromeos/dbus/cras_audio_client_stub_impl.h | 17 | ||||
-rw-r--r-- | chromeos/dbus/dbus_thread_manager.h | 5 |
7 files changed, 69 insertions, 63 deletions
diff --git a/chromeos/audio/audio_device.cc b/chromeos/audio/audio_device.cc index 1a9169a..a3abba0 100644 --- a/chromeos/audio/audio_device.cc +++ b/chromeos/audio/audio_device.cc @@ -9,81 +9,81 @@ #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" +namespace chromeos { + namespace { // Get the priority for a particular device type. The priority returned // will be between 0 to 3, the higher number meaning a higher priority. -uint8 GetDevicePriority(chromeos::AudioDeviceType type) { +uint8 GetDevicePriority(AudioDeviceType type) { switch (type) { - // Fall through. - case chromeos::AUDIO_TYPE_HEADPHONE: - case chromeos::AUDIO_TYPE_MIC: - case chromeos::AUDIO_TYPE_USB: - case chromeos::AUDIO_TYPE_BLUETOOTH: + case AUDIO_TYPE_HEADPHONE: + case AUDIO_TYPE_MIC: + case AUDIO_TYPE_USB: + case AUDIO_TYPE_BLUETOOTH: return 3; - case chromeos::AUDIO_TYPE_HDMI: + case AUDIO_TYPE_HDMI: return 2; - // Fall through. - case chromeos::AUDIO_TYPE_INTERNAL_SPEAKER: - case chromeos::AUDIO_TYPE_INTERNAL_MIC: + case AUDIO_TYPE_INTERNAL_SPEAKER: + case AUDIO_TYPE_INTERNAL_MIC: return 1; - // Fall through. - case chromeos::AUDIO_TYPE_KEYBOARD_MIC: - case chromeos::AUDIO_TYPE_OTHER: + case AUDIO_TYPE_KEYBOARD_MIC: + case AUDIO_TYPE_OTHER: default: return 0; } } -std::string GetTypeString(chromeos::AudioDeviceType type) { +} // namespace + +// static +std::string AudioDevice::GetTypeString(AudioDeviceType type) { switch (type) { - case chromeos::AUDIO_TYPE_HEADPHONE: + case AUDIO_TYPE_HEADPHONE: return "HEADPHONE"; - case chromeos::AUDIO_TYPE_MIC: + case AUDIO_TYPE_MIC: return "MIC"; - case chromeos::AUDIO_TYPE_USB: + case AUDIO_TYPE_USB: return "USB"; - case chromeos::AUDIO_TYPE_BLUETOOTH: + case AUDIO_TYPE_BLUETOOTH: return "BLUETOOTH"; - case chromeos::AUDIO_TYPE_HDMI: + case AUDIO_TYPE_HDMI: return "HDMI"; - case chromeos::AUDIO_TYPE_INTERNAL_SPEAKER: + case AUDIO_TYPE_INTERNAL_SPEAKER: return "INTERNAL_SPEAKER"; - case chromeos::AUDIO_TYPE_INTERNAL_MIC: + case AUDIO_TYPE_INTERNAL_MIC: return "INTERNAL_MIC"; - case chromeos::AUDIO_TYPE_KEYBOARD_MIC: + case AUDIO_TYPE_KEYBOARD_MIC: return "KEYBOARD_MIC"; - case chromeos::AUDIO_TYPE_OTHER: + case AUDIO_TYPE_OTHER: default: return "OTHER"; } } -chromeos::AudioDeviceType GetAudioType(const std::string& node_type) { +// static +AudioDeviceType AudioDevice::GetAudioType( + const std::string& node_type) { if (node_type.find("HEADPHONE") != std::string::npos) - return chromeos::AUDIO_TYPE_HEADPHONE; + return AUDIO_TYPE_HEADPHONE; else if (node_type.find("INTERNAL_MIC") != std::string::npos) - return chromeos::AUDIO_TYPE_INTERNAL_MIC; + return AUDIO_TYPE_INTERNAL_MIC; else if (node_type.find("KEYBOARD_MIC") != std::string::npos) - return chromeos::AUDIO_TYPE_KEYBOARD_MIC; + return AUDIO_TYPE_KEYBOARD_MIC; else if (node_type.find("MIC") != std::string::npos) - return chromeos::AUDIO_TYPE_MIC; + return AUDIO_TYPE_MIC; else if (node_type.find("USB") != std::string::npos) - return chromeos::AUDIO_TYPE_USB; + return AUDIO_TYPE_USB; else if (node_type.find("BLUETOOTH") != std::string::npos) - return chromeos::AUDIO_TYPE_BLUETOOTH; + return AUDIO_TYPE_BLUETOOTH; else if (node_type.find("HDMI") != std::string::npos) - return chromeos::AUDIO_TYPE_HDMI; + return AUDIO_TYPE_HDMI; else if (node_type.find("INTERNAL_SPEAKER") != std::string::npos) - return chromeos::AUDIO_TYPE_INTERNAL_SPEAKER; + return AUDIO_TYPE_INTERNAL_SPEAKER; else - return chromeos::AUDIO_TYPE_OTHER; + return AUDIO_TYPE_OTHER; } -} // namespace - -namespace chromeos { - AudioDevice::AudioDevice() : is_input(false), id(0), diff --git a/chromeos/audio/audio_device.h b/chromeos/audio/audio_device.h index 31e45fd..75ac089 100644 --- a/chromeos/audio/audio_device.h +++ b/chromeos/audio/audio_device.h @@ -29,6 +29,15 @@ enum AudioDeviceType { }; struct CHROMEOS_EXPORT AudioDevice { + AudioDevice(); + explicit AudioDevice(const AudioNode& node); + std::string ToString() const; + + // Converts between the string type sent via D-Bus and AudioDeviceType. + // Static so they can be used by tests. + static std::string GetTypeString(chromeos::AudioDeviceType type); + static chromeos::AudioDeviceType GetAudioType(const std::string& node_type); + bool is_input; uint64 id; std::string display_name; @@ -37,10 +46,6 @@ struct CHROMEOS_EXPORT AudioDevice { uint8 priority; bool active; uint64 plugged_time; - - AudioDevice(); - explicit AudioDevice(const AudioNode& node); - std::string ToString() const; }; typedef std::vector<AudioDevice> AudioDeviceList; diff --git a/chromeos/audio/cras_audio_handler_unittest.cc b/chromeos/audio/cras_audio_handler_unittest.cc index dec728e..c83c21b 100644 --- a/chromeos/audio/cras_audio_handler_unittest.cc +++ b/chromeos/audio/cras_audio_handler_unittest.cc @@ -255,7 +255,7 @@ class CrasAudioHandlerTest : public testing::Test { DBusThreadManager::Initialize(); cras_audio_client_stub_ = static_cast<CrasAudioClientStubImpl*>( DBusThreadManager::Get()->GetCrasAudioClient()); - cras_audio_client_stub_->SetAudioDevices(audio_nodes); + cras_audio_client_stub_->SetAudioNodesForTesting(audio_nodes); audio_pref_handler_ = new AudioDevicesPrefHandlerStub(); CrasAudioHandler::Initialize(audio_pref_handler_); cras_audio_handler_ = CrasAudioHandler::Get(); @@ -265,7 +265,8 @@ class CrasAudioHandlerTest : public testing::Test { } void ChangeAudioNodes(const AudioNodeList& audio_nodes) { - cras_audio_client_stub_->ChangeAudioNodes(audio_nodes); + cras_audio_client_stub_->SetAudioNodesAndNotifyObserversForTesting( + audio_nodes); message_loop_.RunUntilIdle(); } diff --git a/chromeos/dbus/cras_audio_client.h b/chromeos/dbus/cras_audio_client.h index 230b868..84ff7c8 100644 --- a/chromeos/dbus/cras_audio_client.h +++ b/chromeos/dbus/cras_audio_client.h @@ -123,7 +123,6 @@ class CHROMEOS_EXPORT CrasAudioClient : public DBusClient { CrasAudioClient(); private: - DISALLOW_COPY_AND_ASSIGN(CrasAudioClient); }; diff --git a/chromeos/dbus/cras_audio_client_stub_impl.cc b/chromeos/dbus/cras_audio_client_stub_impl.cc index 633db7b..e05b53f 100644 --- a/chromeos/dbus/cras_audio_client_stub_impl.cc +++ b/chromeos/dbus/cras_audio_client_stub_impl.cc @@ -11,6 +11,9 @@ CrasAudioClientStubImpl::CrasAudioClientStubImpl() active_output_node_id_(0) { } +CrasAudioClientStubImpl::~CrasAudioClientStubImpl() { +} + void CrasAudioClientStubImpl::Init(dbus::Bus* bus) { VLOG(1) << "CrasAudioClientStubImpl is created"; @@ -57,9 +60,6 @@ void CrasAudioClientStubImpl::Init(dbus::Bus* bus) { node_list_.push_back(node_5); } -CrasAudioClientStubImpl::~CrasAudioClientStubImpl() { -} - void CrasAudioClientStubImpl::AddObserver(Observer* observer) { observers_.AddObserver(observer); } @@ -164,15 +164,14 @@ void CrasAudioClientStubImpl::RemoveActiveOutputNode(uint64 node_id) { } } -void CrasAudioClientStubImpl::SetAudioDevices( +void CrasAudioClientStubImpl::SetAudioNodesForTesting( const AudioNodeList& audio_nodes) { - node_list_.clear(); - for (size_t i = 0; i < audio_nodes.size(); ++i) - node_list_.push_back(audio_nodes[i]); + node_list_ = audio_nodes; } -void CrasAudioClientStubImpl::ChangeAudioNodes(const AudioNodeList& new_nodes) { - SetAudioDevices(new_nodes); +void CrasAudioClientStubImpl::SetAudioNodesAndNotifyObserversForTesting( + const AudioNodeList& new_nodes) { + SetAudioNodesForTesting(new_nodes); FOR_EACH_OBSERVER(Observer, observers_, NodesChanged()); } diff --git a/chromeos/dbus/cras_audio_client_stub_impl.h b/chromeos/dbus/cras_audio_client_stub_impl.h index e363e93..0bf50ca 100644 --- a/chromeos/dbus/cras_audio_client_stub_impl.h +++ b/chromeos/dbus/cras_audio_client_stub_impl.h @@ -5,6 +5,7 @@ #ifndef CHROMEOS_DBUS_CRAS_AUDIO_CLIENT_STUB_IMPL_H_ #define CHROMEOS_DBUS_CRAS_AUDIO_CLIENT_STUB_IMPL_H_ +#include "chromeos/chromeos_export.h" #include "chromeos/dbus/cras_audio_client.h" namespace chromeos { @@ -12,12 +13,12 @@ namespace chromeos { class CrasAudioHandlerTest; // The CrasAudioClient implementation used on Linux desktop. -class CrasAudioClientStubImpl : public CrasAudioClient { +class CHROMEOS_EXPORT CrasAudioClientStubImpl : public CrasAudioClient { public: CrasAudioClientStubImpl(); virtual ~CrasAudioClientStubImpl(); - // CrasAudioClient overrides + // CrasAudioClient overrides: virtual void Init(dbus::Bus* bus) OVERRIDE; virtual void AddObserver(Observer* observer) OVERRIDE; virtual void RemoveObserver(Observer* observer) OVERRIDE; @@ -36,14 +37,14 @@ class CrasAudioClientStubImpl : public CrasAudioClient { virtual void AddActiveOutputNode(uint64 node_id) OVERRIDE; virtual void RemoveActiveOutputNode(uint64 node_id) OVERRIDE; - protected: - // Helper functions for testing - virtual void SetAudioDevices(const AudioNodeList& audio_nodes); - virtual void ChangeAudioNodes(const AudioNodeList& new_nodes); + // Updates |node_list_| to contain |audio_nodes|. + void SetAudioNodesForTesting(const AudioNodeList& audio_nodes); - private: - friend class CrasAudioHandlerTest; + // Calls SetAudioNodesForTesting() and additionally notifies |observers_|. + void SetAudioNodesAndNotifyObserversForTesting( + const AudioNodeList& new_nodes); + private: VolumeState volume_state_; AudioNodeList node_list_; uint64 active_input_node_id_; diff --git a/chromeos/dbus/dbus_thread_manager.h b/chromeos/dbus/dbus_thread_manager.h index f190f66..a66e904 100644 --- a/chromeos/dbus/dbus_thread_manager.h +++ b/chromeos/dbus/dbus_thread_manager.h @@ -88,8 +88,9 @@ class CHROMEOS_EXPORT DBusThreadManager { // making it a Singleton, to ensure clean startup and shutdown. static void Initialize(); - // Returns DBusThreadManagerSetter instance that allows tests to - // replace individual dbus clients with their own implementations. + // Returns a DBusThreadManagerSetter instance that allows tests to + // replace individual D-Bus clients with their own implementations. + // Also initializes the main DBusThreadManager for testing if necessary. static scoped_ptr<DBusThreadManagerSetter> GetSetterForTesting(); // Returns true if DBusThreadManager has been initialized. Call this to |