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

Unified Diff: content/renderer/media/audio_input_message_filter.cc

Issue 11166002: Plumb render view ID from audio-related code in renderer through IPCs to AudioRendererHost in brows… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 8 years, 2 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 side-by-side diff with in-line comments
Download patch
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));
}

Powered by Google App Engine
This is Rietveld 408576698