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

Side by Side Diff: chromeos/audio/cras_audio_handler.h

Issue 1186293003: Implement HasInputDevices in CrasAudioManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address the comments and add unittest 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_ 5 #ifndef CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_
6 #define CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_ 6 #define CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <queue> 9 #include <queue>
10 10
11 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
12 #include "base/memory/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
13 #include "base/observer_list.h" 13 #include "base/observer_list.h"
14 #include "chromeos/audio/audio_device.h" 14 #include "chromeos/audio/audio_device.h"
15 #include "chromeos/audio/audio_pref_observer.h" 15 #include "chromeos/audio/audio_pref_observer.h"
16 #include "chromeos/dbus/audio_node.h" 16 #include "chromeos/dbus/audio_node.h"
17 #include "chromeos/dbus/cras_audio_client.h" 17 #include "chromeos/dbus/cras_audio_client.h"
18 #include "chromeos/dbus/session_manager_client.h" 18 #include "chromeos/dbus/session_manager_client.h"
19 #include "chromeos/dbus/volume_state.h" 19 #include "chromeos/dbus/volume_state.h"
20 20
21 class PrefRegistrySimple; 21 class PrefRegistrySimple;
22 class PrefService; 22 class PrefService;
23 23
24 namespace media {
25
Daniel Erat 2015/06/23 14:15:49 nit: delete extra blank line here
cychiang 2015/06/24 08:11:29 Done.
26 class AudioManager;
27 }
28
24 namespace chromeos { 29 namespace chromeos {
25 30
26 class AudioDevicesPrefHandler; 31 class AudioDevicesPrefHandler;
27 32
28 class CHROMEOS_EXPORT CrasAudioHandler : public CrasAudioClient::Observer, 33 class CHROMEOS_EXPORT CrasAudioHandler : public CrasAudioClient::Observer,
29 public AudioPrefObserver, 34 public AudioPrefObserver,
30 public SessionManagerClient::Observer { 35 public SessionManagerClient::Observer {
31 public: 36 public:
32 typedef std::priority_queue<AudioDevice, 37 typedef std::priority_queue<AudioDevice,
33 std::vector<AudioDevice>, 38 std::vector<AudioDevice>,
(...skipping 22 matching lines...) Expand all
56 61
57 // Called when active audio input node changed. 62 // Called when active audio input node changed.
58 virtual void OnActiveInputNodeChanged(); 63 virtual void OnActiveInputNodeChanged();
59 64
60 protected: 65 protected:
61 AudioObserver(); 66 AudioObserver();
62 virtual ~AudioObserver(); 67 virtual ~AudioObserver();
63 DISALLOW_COPY_AND_ASSIGN(AudioObserver); 68 DISALLOW_COPY_AND_ASSIGN(AudioObserver);
64 }; 69 };
65 70
71 // The wrapper for audio manager methods to be called from this class.
72 // The detail of AudioManager is hidden from CrasAudioHandler.
73 class AudioManagerWrapper {
74 public:
75 virtual ~AudioManagerWrapper();
76 virtual void SetHasInputDevices(bool has_input_devices) = 0;
77
78 protected:
79 AudioManagerWrapper();
80
81 private:
82 DISALLOW_COPY_AND_ASSIGN(AudioManagerWrapper);
83 };
84
85 // Set audio manager wrapper for test. Must be called before Initialize
86 // for testing. CrasAudioHandler will delete this pointer at Shutdown.
87 static void SetUpAudioManagerWrapperForTesting(
88 CrasAudioHandler::AudioManagerWrapper* test_wrapper);
Daniel Erat 2015/06/23 14:15:49 pass scoped_ptr<CrasAudioHandler::AudioManagerWrap
89
66 // Sets the global instance. Must be called before any calls to Get(). 90 // Sets the global instance. Must be called before any calls to Get().
67 static void Initialize( 91 static void Initialize(
68 scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler); 92 scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler);
69 93
70 // Sets the global instance for testing. 94 // Sets the global instance for testing.
71 static void InitializeForTesting(); 95 static void InitializeForTesting();
72 96
73 // Destroys the global instance. 97 // Destroys the global instance.
74 static void Shutdown(); 98 static void Shutdown();
75 99
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 virtual void LogErrors(); 213 virtual void LogErrors();
190 214
191 protected: 215 protected:
192 explicit CrasAudioHandler( 216 explicit CrasAudioHandler(
193 scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler); 217 scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler);
194 ~CrasAudioHandler() override; 218 ~CrasAudioHandler() override;
195 219
196 private: 220 private:
197 friend class CrasAudioHandlerTest; 221 friend class CrasAudioHandlerTest;
198 222
223 class AudioManagerWrapperImpl : public AudioManagerWrapper {
224 public:
225 AudioManagerWrapperImpl();
226 ~AudioManagerWrapperImpl() override;
227 void SetHasInputDevices(bool has_input_devices) override;
228
229 private:
230 DISALLOW_COPY_AND_ASSIGN(AudioManagerWrapperImpl);
231 };
232
199 // CrasAudioClient::Observer overrides. 233 // CrasAudioClient::Observer overrides.
200 void AudioClientRestarted() override; 234 void AudioClientRestarted() override;
201 void NodesChanged() override; 235 void NodesChanged() override;
202 void ActiveOutputNodeChanged(uint64_t node_id) override; 236 void ActiveOutputNodeChanged(uint64_t node_id) override;
203 void ActiveInputNodeChanged(uint64_t node_id) override; 237 void ActiveInputNodeChanged(uint64_t node_id) override;
204 238
205 // AudioPrefObserver overrides. 239 // AudioPrefObserver overrides.
206 void OnAudioPolicyPrefChanged() override; 240 void OnAudioPolicyPrefChanged() override;
207 241
208 // SessionManagerClient::Observer overrides. 242 // SessionManagerClient::Observer overrides.
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 bool is_input, 308 bool is_input,
275 AudioNodeList* new_discovered); 309 AudioNodeList* new_discovered);
276 310
277 // Handles dbus callback for GetNodes. 311 // Handles dbus callback for GetNodes.
278 void HandleGetNodes(const chromeos::AudioNodeList& node_list, bool success); 312 void HandleGetNodes(const chromeos::AudioNodeList& node_list, bool success);
279 313
280 // Handles the dbus error callback. 314 // Handles the dbus error callback.
281 void HandleGetNodesError(const std::string& error_name, 315 void HandleGetNodesError(const std::string& error_name,
282 const std::string& error_msg); 316 const std::string& error_msg);
283 317
318 // Sets HasInputDevice in AudioManager based on the updated device list.
319 void UpdateAudioManagerHasInputDevices();
320
321 // Sets HasInputDevice in AudioManager to true or false.
322 void SetAudioManagerHasInputDevices(bool has_input_devices);
323
284 // Adds an active node. 324 // Adds an active node.
285 // If there is no active node, |node_id| will be switched to become the 325 // If there is no active node, |node_id| will be switched to become the
286 // primary active node. Otherwise, it will be added as an additional active 326 // primary active node. Otherwise, it will be added as an additional active
287 // node. 327 // node.
288 void AddActiveNode(uint64_t node_id, bool notify); 328 void AddActiveNode(uint64_t node_id, bool notify);
289 329
290 // Adds |node_id| into additional active nodes. 330 // Adds |node_id| into additional active nodes.
291 void AddAdditionalActiveNode(uint64_t node_id, bool notify); 331 void AddAdditionalActiveNode(uint64_t node_id, bool notify);
292 332
293 // Removes |node_id| from additional active nodes. 333 // Removes |node_id| from additional active nodes.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 bool log_errors_; 369 bool log_errors_;
330 370
331 base::WeakPtrFactory<CrasAudioHandler> weak_ptr_factory_; 371 base::WeakPtrFactory<CrasAudioHandler> weak_ptr_factory_;
332 372
333 DISALLOW_COPY_AND_ASSIGN(CrasAudioHandler); 373 DISALLOW_COPY_AND_ASSIGN(CrasAudioHandler);
334 }; 374 };
335 375
336 } // namespace chromeos 376 } // namespace chromeos
337 377
338 #endif // CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_ 378 #endif // CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698