| Index: media/audio/virtual_audio_output_stream.h | 
| diff --git a/media/audio/virtual_audio_output_stream.h b/media/audio/virtual_audio_output_stream.h | 
| index 0c2969da3cf6ad6db808a1846c9c90ef87db8dee..6f9c14d74a0118db0cf7f958a2da63f0e25a4dce 100644 | 
| --- a/media/audio/virtual_audio_output_stream.h | 
| +++ b/media/audio/virtual_audio_output_stream.h | 
| @@ -5,11 +5,15 @@ | 
| #ifndef MEDIA_AUDIO_VIRTUAL_AUDIO_OUTPUT_STREAM_H_ | 
| #define MEDIA_AUDIO_VIRTUAL_AUDIO_OUTPUT_STREAM_H_ | 
|  | 
| -#include "base/message_loop_proxy.h" | 
| +#include "base/callback.h" | 
| #include "media/audio/audio_io.h" | 
| #include "media/audio/audio_parameters.h" | 
| #include "media/base/audio_converter.h" | 
|  | 
| +namespace base { | 
| +class MessageLoopProxy; | 
| +} | 
| + | 
| namespace media { | 
|  | 
| class AudioManagerBase; | 
| @@ -24,11 +28,16 @@ class MEDIA_EXPORT VirtualAudioOutputStream | 
| : public AudioOutputStream, | 
| public AudioConverter::InputCallback { | 
| public: | 
| -  static VirtualAudioOutputStream* MakeStream( | 
| -      AudioManagerBase* manager, | 
| -      const AudioParameters& params, | 
| -      base::MessageLoopProxy* message_loop, | 
| -      VirtualAudioInputStream* target); | 
| +  // Callback invoked just after VirtualAudioOutputStream is closed. | 
| +  typedef base::Callback<void(VirtualAudioOutputStream* vaos)> | 
| +      AfterCloseCallback; | 
| + | 
| +  // Construct an audio loopback pathway to the given |target| (not owned). | 
| +  // |target| must outlive this instance. | 
| +  VirtualAudioOutputStream(const AudioParameters& params, | 
| +                           base::MessageLoopProxy* message_loop, | 
| +                           VirtualAudioInputStream* target, | 
| +                           const AfterCloseCallback& after_close_cb); | 
|  | 
| virtual ~VirtualAudioOutputStream(); | 
|  | 
| @@ -40,28 +49,22 @@ class MEDIA_EXPORT VirtualAudioOutputStream | 
| virtual void GetVolume(double* volume) OVERRIDE; | 
| virtual void Close() OVERRIDE; | 
|  | 
| - protected: | 
| -  VirtualAudioOutputStream(AudioManagerBase* manager, | 
| -                           const AudioParameters& params, | 
| -                           base::MessageLoopProxy* message_loop, | 
| -                           VirtualAudioInputStream* target); | 
| - | 
| private: | 
| // AudioConverter::InputCallback: | 
| virtual double ProvideInput(AudioBus* audio_bus, | 
| base::TimeDelta buffer_delay) OVERRIDE; | 
|  | 
| -  AudioManagerBase* audio_manager_; | 
| -  base::MessageLoopProxy* message_loop_; | 
| -  AudioSourceCallback* callback_; | 
| -  AudioParameters params_; | 
| - | 
| +  const AudioParameters params_; | 
| +  base::MessageLoopProxy* const message_loop_; | 
| // Pointer to the VirtualAudioInputStream to attach to when Start() is called. | 
| // This pointer should always be valid because VirtualAudioInputStream should | 
| // outlive this class. | 
| -  VirtualAudioInputStream* target_input_stream_; | 
| +  VirtualAudioInputStream* const target_input_stream_; | 
| + | 
| +  AfterCloseCallback after_close_cb_; | 
| + | 
| +  AudioSourceCallback* callback_; | 
| double volume_; | 
| -  bool attached_; | 
|  | 
| DISALLOW_COPY_AND_ASSIGN(VirtualAudioOutputStream); | 
| }; | 
|  |