| // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chromeos/dbus/cras_audio_client_stub_impl.h" |
| |
| namespace chromeos { |
| |
| CrasAudioClientStubImpl::CrasAudioClientStubImpl() |
| : active_input_node_id_(0), |
| active_output_node_id_(0) { |
| } |
| |
| void CrasAudioClientStubImpl::Init(dbus::Bus* bus) { |
| VLOG(1) << "CrasAudioClientStubImpl is created"; |
| |
| // Fake audio output nodes. |
| AudioNode node_1; |
| node_1.is_input = false; |
| node_1.id = 10001; |
| node_1.device_name = "Fake Speaker"; |
| node_1.type = "INTERNAL_SPEAKER"; |
| node_1.name = "Speaker"; |
| node_list_.push_back(node_1); |
| |
| AudioNode node_2; |
| node_2.is_input = false; |
| node_2.id = 10002; |
| node_2.device_name = "Fake Headphone"; |
| node_2.type = "HEADPHONE"; |
| node_2.name = "Headphone"; |
| node_list_.push_back(node_2); |
| |
| AudioNode node_3; |
| node_3.is_input = false; |
| node_3.id = 10003; |
| node_3.device_name = "Fake Bluetooth Headphone"; |
| node_3.type = "BLUETOOTH"; |
| node_3.name = "Headphone"; |
| node_list_.push_back(node_3); |
| |
| // Fake audio input ndoes |
| AudioNode node_4; |
| node_4.is_input = true; |
| node_4.id = 10004; |
| node_4.device_name = "Fake Internal Mic"; |
| node_4.type = "INTERNAL_MIC"; |
| node_4.name = "Internal Mic"; |
| node_list_.push_back(node_4); |
| |
| AudioNode node_5; |
| node_5.is_input = true; |
| node_5.id = 10005; |
| node_5.device_name = "Fake USB Mic"; |
| node_5.type = "USB"; |
| node_5.name = "Mic"; |
| node_list_.push_back(node_5); |
| } |
| |
| CrasAudioClientStubImpl::~CrasAudioClientStubImpl() { |
| } |
| |
| void CrasAudioClientStubImpl::AddObserver(Observer* observer) { |
| observers_.AddObserver(observer); |
| } |
| |
| void CrasAudioClientStubImpl::RemoveObserver(Observer* observer) { |
| observers_.RemoveObserver(observer); |
| } |
| |
| bool CrasAudioClientStubImpl::HasObserver(Observer* observer) { |
| return observers_.HasObserver(observer); |
| } |
| |
| void CrasAudioClientStubImpl::GetVolumeState( |
| const GetVolumeStateCallback& callback) { |
| callback.Run(volume_state_, true); |
| } |
| |
| void CrasAudioClientStubImpl::GetNodes(const GetNodesCallback& callback, |
| const ErrorCallback& error_callback) { |
| callback.Run(node_list_, true); |
| } |
| |
| void CrasAudioClientStubImpl::SetOutputNodeVolume(uint64 node_id, |
| int32 volume) { |
| } |
| |
| void CrasAudioClientStubImpl::SetOutputUserMute(bool mute_on) { |
| volume_state_.output_user_mute = mute_on; |
| FOR_EACH_OBSERVER(Observer, |
| observers_, |
| OutputMuteChanged(volume_state_.output_user_mute)); |
| } |
| |
| void CrasAudioClientStubImpl::SetInputNodeGain(uint64 node_id, |
| int32 input_gain) { |
| } |
| |
| void CrasAudioClientStubImpl::SetInputMute(bool mute_on) { |
| volume_state_.input_mute = mute_on; |
| FOR_EACH_OBSERVER(Observer, |
| observers_, |
| InputMuteChanged(volume_state_.input_mute)); |
| } |
| |
| void CrasAudioClientStubImpl::SetActiveOutputNode(uint64 node_id) { |
| if (active_output_node_id_ == node_id) |
| return; |
| |
| for (size_t i = 0; i < node_list_.size(); ++i) { |
| if (node_list_[i].id == active_output_node_id_) |
| node_list_[i].active = false; |
| else if (node_list_[i].id == node_id) |
| node_list_[i].active = true; |
| } |
| active_output_node_id_ = node_id; |
| FOR_EACH_OBSERVER(Observer, |
| observers_, |
| ActiveOutputNodeChanged(node_id)); |
| } |
| |
| void CrasAudioClientStubImpl::SetActiveInputNode(uint64 node_id) { |
| if (active_input_node_id_ == node_id) |
| return; |
| |
| for (size_t i = 0; i < node_list_.size(); ++i) { |
| if (node_list_[i].id == active_input_node_id_) |
| node_list_[i].active = false; |
| else if (node_list_[i].id == node_id) |
| node_list_[i].active = true; |
| } |
| active_input_node_id_ = node_id; |
| FOR_EACH_OBSERVER(Observer, |
| observers_, |
| ActiveInputNodeChanged(node_id)); |
| } |
| |
| void CrasAudioClientStubImpl::SetAudioDevices( |
| const AudioNodeList& audio_nodes) { |
| node_list_.clear(); |
| for (size_t i = 0; i < audio_nodes.size(); ++i) |
| node_list_.push_back(audio_nodes[i]); |
| } |
| |
| void CrasAudioClientStubImpl::ChangeAudioNodes(const AudioNodeList& new_nodes) { |
| SetAudioDevices(new_nodes); |
| FOR_EACH_OBSERVER(Observer, observers_, NodesChanged()); |
| } |
| |
| } // namespace chromeos |