| Index: content/renderer/media/audio_input_message_filter.cc
|
| diff --git a/content/renderer/media/audio_input_message_filter.cc b/content/renderer/media/audio_input_message_filter.cc
|
| index 850cd1a0fa57c49bf06deb2a41c32a654df4f773..412edb3f4115b7e6dadf76aced759dab344d146d 100644
|
| --- a/content/renderer/media/audio_input_message_filter.cc
|
| +++ b/content/renderer/media/audio_input_message_filter.cc
|
| @@ -11,13 +11,9 @@
|
| #include "content/common/media/audio_messages.h"
|
| #include "ipc/ipc_logging.h"
|
|
|
| -AudioInputMessageFilter* AudioInputMessageFilter::filter_ = NULL;
|
| -
|
| AudioInputMessageFilter::AudioInputMessageFilter()
|
| : channel_(NULL) {
|
| DVLOG(1) << "AudioInputMessageFilter()";
|
| - DCHECK(!filter_);
|
| - filter_ = this;
|
| }
|
|
|
| AudioInputMessageFilter::~AudioInputMessageFilter() {
|
| @@ -26,14 +22,6 @@ AudioInputMessageFilter::~AudioInputMessageFilter() {
|
| // Just in case the message filter is deleted before the channel
|
| // is closed and there are still living audio devices.
|
| OnChannelClosing();
|
| -
|
| - DCHECK_EQ(filter_, this);
|
| - filter_ = NULL;
|
| -}
|
| -
|
| -// static.
|
| -AudioInputMessageFilter* AudioInputMessageFilter::Get() {
|
| - return filter_;
|
| }
|
|
|
| bool AudioInputMessageFilter::Send(IPC::Message* message) {
|
| @@ -148,35 +136,52 @@ void AudioInputMessageFilter::OnDeviceStarted(int stream_id,
|
| delegate->OnDeviceReady(device_id);
|
| }
|
|
|
| -int AudioInputMessageFilter::AddDelegate(
|
| - media::AudioInputIPCDelegate* delegate) {
|
| - return delegates_.Add(delegate);
|
| -}
|
| +class AudioInputMessageFilter::AudioInputIPCImpl
|
| + : public NON_EXPORTED_BASE(media::AudioInputIPC) {
|
| + public:
|
| + AudioInputIPCImpl(int render_view_id, AudioInputMessageFilter* filter)
|
| + : render_view_id_(render_view_id), filter_(filter) {}
|
| + virtual ~AudioInputIPCImpl() {}
|
|
|
| -void AudioInputMessageFilter::RemoveDelegate(int id) {
|
| - DVLOG(1) << "AudioInputMessageFilter::RemoveDelegate(id=" << id << ")";
|
| - delegates_.Remove(id);
|
| -}
|
| -
|
| -void AudioInputMessageFilter::CreateStream(int stream_id,
|
| - const media::AudioParameters& params, const std::string& device_id,
|
| - bool automatic_gain_control) {
|
| - Send(new AudioInputHostMsg_CreateStream(
|
| - stream_id, params, device_id, automatic_gain_control));
|
| -}
|
| + // media::AudioInputIPC implementation
|
| + virtual int AddDelegate(media::AudioInputIPCDelegate* delegate) OVERRIDE {
|
| + return filter_->delegates_.Add(delegate);
|
| + }
|
| + virtual void RemoveDelegate(int id) OVERRIDE {
|
| + filter_->delegates_.Remove(id);
|
| + }
|
| + virtual void CreateStream(int stream_id, const media::AudioParameters& params,
|
| + const std::string& device_id,
|
| + bool automatic_gain_control) OVERRIDE {
|
| + filter_->Send(new AudioInputHostMsg_CreateStream(
|
| + render_view_id_, stream_id, params, device_id,
|
| + automatic_gain_control));
|
| + }
|
| + virtual void StartDevice(int stream_id, int session_id) OVERRIDE {
|
| + filter_->Send(new AudioInputHostMsg_StartDevice(stream_id, session_id));
|
| + }
|
| + virtual void RecordStream(int stream_id) OVERRIDE {
|
| + filter_->Send(new AudioInputHostMsg_RecordStream(stream_id));
|
| + }
|
| + virtual void CloseStream(int stream_id) OVERRIDE {
|
| + filter_->Send(new AudioInputHostMsg_CloseStream(stream_id));
|
| + }
|
| + virtual void SetVolume(int stream_id, double volume) OVERRIDE {
|
| + filter_->Send(new AudioInputHostMsg_SetVolume(stream_id, volume));
|
| + }
|
|
|
| -void AudioInputMessageFilter::StartDevice(int stream_id, int session_id) {
|
| - Send(new AudioInputHostMsg_StartDevice(stream_id, session_id));
|
| -}
|
| + private:
|
| + const int render_view_id_;
|
|
|
| -void AudioInputMessageFilter::RecordStream(int stream_id) {
|
| - Send(new AudioInputHostMsg_RecordStream(stream_id));
|
| -}
|
| + // Holds a reference to the audio input message filter (lives on the main
|
| + // render thread) for the lifetime of this instance.
|
| + scoped_refptr<AudioInputMessageFilter> filter_;
|
|
|
| -void AudioInputMessageFilter::CloseStream(int stream_id) {
|
| - Send(new AudioInputHostMsg_CloseStream(stream_id));
|
| -}
|
| + DISALLOW_IMPLICIT_CONSTRUCTORS(AudioInputIPCImpl);
|
| +};
|
|
|
| -void AudioInputMessageFilter::SetVolume(int stream_id, double volume) {
|
| - Send(new AudioInputHostMsg_SetVolume(stream_id, volume));
|
| +scoped_ptr<media::AudioInputIPC> AudioInputMessageFilter::CreateAudioInputIPC(
|
| + int render_view_id) {
|
| + return scoped_ptr<media::AudioInputIPC>(
|
| + new AudioInputIPCImpl(render_view_id, this));
|
| }
|
|
|