Home | History | Annotate | Download | only in audio
      1 // Copyright (c) 2012 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 MEDIA_AUDIO_MOCK_AUDIO_MANAGER_H_
      6 #define MEDIA_AUDIO_MOCK_AUDIO_MANAGER_H_
      7 
      8 #include "media/audio/audio_manager.h"
      9 
     10 namespace media {
     11 
     12 // This class is a simple mock around AudioManager, used exclusively for tests,
     13 // which has the following purposes:
     14 // 1) Avoids to use the actual (system and platform dependent) AudioManager.
     15 //    Some bots does not have input devices, thus using the actual AudioManager
     16 //    would causing failures on classes which expect that.
     17 // 2) Allows the mock audio events to be dispatched on an arbitrary thread,
     18 //    rather than forcing them on the audio thread, easing their handling in
     19 //    browser tests (Note: sharing a thread can cause deadlocks on production
     20 //    classes if WaitableEvents or any other form of lock is used for
     21 //    synchronization purposes).
     22 class MockAudioManager : public media::AudioManager {
     23  public:
     24   explicit MockAudioManager(base::MessageLoopProxy* message_loop_proxy);
     25 
     26   virtual bool HasAudioOutputDevices() OVERRIDE;
     27 
     28   virtual bool HasAudioInputDevices() OVERRIDE;
     29 
     30   virtual base::string16 GetAudioInputDeviceModel() OVERRIDE;
     31 
     32   virtual void ShowAudioInputSettings() OVERRIDE;
     33 
     34   virtual void GetAudioInputDeviceNames(
     35       media::AudioDeviceNames* device_names) OVERRIDE;
     36 
     37   virtual void GetAudioOutputDeviceNames(
     38       media::AudioDeviceNames* device_names) OVERRIDE;
     39 
     40   virtual media::AudioOutputStream* MakeAudioOutputStream(
     41       const media::AudioParameters& params,
     42       const std::string& device_id,
     43       const std::string& input_device_id) OVERRIDE;
     44 
     45   virtual media::AudioOutputStream* MakeAudioOutputStreamProxy(
     46       const media::AudioParameters& params,
     47       const std::string& device_id,
     48       const std::string& input_device_id) OVERRIDE;
     49 
     50   virtual media::AudioInputStream* MakeAudioInputStream(
     51       const media::AudioParameters& params,
     52       const std::string& device_id) OVERRIDE;
     53 
     54   virtual scoped_refptr<base::MessageLoopProxy> GetMessageLoop() OVERRIDE;
     55   virtual scoped_refptr<base::MessageLoopProxy> GetWorkerLoop() OVERRIDE;
     56 
     57   virtual void AddOutputDeviceChangeListener(
     58       AudioDeviceListener* listener) OVERRIDE;
     59   virtual void RemoveOutputDeviceChangeListener(
     60       AudioDeviceListener* listener) OVERRIDE;
     61 
     62   virtual AudioParameters GetDefaultOutputStreamParameters() OVERRIDE;
     63   virtual AudioParameters GetOutputStreamParameters(
     64       const std::string& device_id) OVERRIDE;
     65   virtual AudioParameters GetInputStreamParameters(
     66       const std::string& device_id) OVERRIDE;
     67   virtual std::string GetAssociatedOutputDeviceID(
     68       const std::string& input_device_id) OVERRIDE;
     69 
     70   virtual scoped_ptr<AudioLog> CreateAudioLog(
     71       AudioLogFactory::AudioComponent component) OVERRIDE;
     72 
     73   virtual void FixWedgedAudio() OVERRIDE;
     74 
     75  protected:
     76   virtual ~MockAudioManager();
     77 
     78  private:
     79   scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
     80 
     81   DISALLOW_COPY_AND_ASSIGN(MockAudioManager);
     82 };
     83 
     84 }  // namespace media.
     85 
     86 #endif  // MEDIA_AUDIO_MOCK_AUDIO_MANAGER_H_
     87