1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROMEOS_DBUS_CRAS_AUDIO_CLIENT_STUB_IMPL_H_
6#define CHROMEOS_DBUS_CRAS_AUDIO_CLIENT_STUB_IMPL_H_
7
8#include "chromeos/chromeos_export.h"
9#include "chromeos/dbus/cras_audio_client.h"
10
11namespace chromeos {
12
13class CrasAudioHandlerTest;
14
15// The CrasAudioClient implementation used on Linux desktop.
16class CHROMEOS_EXPORT CrasAudioClientStubImpl : public CrasAudioClient {
17 public:
18  CrasAudioClientStubImpl();
19  virtual ~CrasAudioClientStubImpl();
20
21  // CrasAudioClient overrides:
22  virtual void Init(dbus::Bus* bus) OVERRIDE;
23  virtual void AddObserver(Observer* observer) OVERRIDE;
24  virtual void RemoveObserver(Observer* observer) OVERRIDE;
25  virtual bool HasObserver(Observer* observer) OVERRIDE;
26  virtual void GetVolumeState(const GetVolumeStateCallback& callback) OVERRIDE;
27  virtual void GetNodes(const GetNodesCallback& callback,
28                        const ErrorCallback& error_callback) OVERRIDE;
29  virtual void SetOutputNodeVolume(uint64 node_id, int32 volume) OVERRIDE;
30  virtual void SetOutputUserMute(bool mute_on) OVERRIDE;
31  virtual void SetInputNodeGain(uint64 node_id, int32 gain) OVERRIDE;
32  virtual void SetInputMute(bool mute_on) OVERRIDE;
33  virtual void SetActiveOutputNode(uint64 node_id) OVERRIDE;
34  virtual void SetActiveInputNode(uint64 node_id) OVERRIDE;
35  virtual void AddActiveInputNode(uint64 node_id) OVERRIDE;
36  virtual void RemoveActiveInputNode(uint64 node_id) OVERRIDE;
37  virtual void AddActiveOutputNode(uint64 node_id) OVERRIDE;
38  virtual void RemoveActiveOutputNode(uint64 node_id) OVERRIDE;
39
40  // Updates |node_list_| to contain |audio_nodes|.
41  void SetAudioNodesForTesting(const AudioNodeList& audio_nodes);
42
43  // Calls SetAudioNodesForTesting() and additionally notifies |observers_|.
44  void SetAudioNodesAndNotifyObserversForTesting(
45      const AudioNodeList& new_nodes);
46
47 private:
48  VolumeState volume_state_;
49  AudioNodeList node_list_;
50  uint64 active_input_node_id_;
51  uint64 active_output_node_id_;
52  ObserverList<Observer> observers_;
53
54  DISALLOW_COPY_AND_ASSIGN(CrasAudioClientStubImpl);
55};
56
57}  // namespace chromeos
58
59#endif  // CHROMEOS_DBUS_CRAS_AUDIO_CLIENT_STUB_IMPL_H_
60