Index: content/renderer/media/audio_message_filter.cc |
diff --git a/content/renderer/media/audio_message_filter.cc b/content/renderer/media/audio_message_filter.cc |
index 9e7322d128e65f0d5f9507a544c8cf01943e7d16..1da6b4fda18a212401994322e7f091467937a10d 100644 |
--- a/content/renderer/media/audio_message_filter.cc |
+++ b/content/renderer/media/audio_message_filter.cc |
@@ -58,6 +58,8 @@ AudioMessageFilter::AudioMessageFilter( |
AudioMessageFilter::~AudioMessageFilter() { |
DCHECK_EQ(g_filter, this); |
g_filter = NULL; |
+ |
+ LOG(ERROR) << "^AudioMessageFilter"; |
} |
// static |
@@ -82,6 +84,10 @@ std::unique_ptr<media::AudioOutputIPC> AudioMessageFilter::CreateAudioOutputIPC( |
new AudioOutputIPCImpl(this, render_frame_id)); |
} |
+void AudioMessageFilter::CloseStream(int stream_id) { |
+ Send(new AudioHostMsg_CloseStream(stream_id)); |
+} |
+ |
void AudioMessageFilter::AudioOutputIPCImpl::RequestDeviceAuthorization( |
media::AudioOutputIPCDelegate* delegate, |
int session_id, |
@@ -103,11 +109,18 @@ void AudioMessageFilter::AudioOutputIPCImpl::CreateStream( |
const media::AudioParameters& params) { |
DCHECK(filter_->io_task_runner_->BelongsToCurrentThread()); |
DCHECK(!stream_created_); |
+ auto client = filter_->audio_output_clients_.find(render_frame_id_); |
+ if (client == filter_->audio_output_clients_.end()) |
+ return; |
if (stream_id_ == kStreamIDNotSet) |
stream_id_ = filter_->delegates_.Add(delegate); |
+ // TODO(rchtara): This is temporary. In soon upcoming CLs AudioMessageFilter |
+ // and AudioMessageFilter::AudioOutputIPCImpl will be removed and replaced by |
+ // AudioOutputClient. |
- filter_->Send( |
- new AudioHostMsg_CreateStream(stream_id_, render_frame_id_, params)); |
+ client->second->CreateStream( |
+ stream_id_, params, |
+ base::Bind(&AudioOutputClient::CreateStreamCallback, client->second)); |
stream_created_ = true; |
} |
@@ -124,7 +137,13 @@ void AudioMessageFilter::AudioOutputIPCImpl::PauseStream() { |
void AudioMessageFilter::AudioOutputIPCImpl::CloseStream() { |
DCHECK(filter_->io_task_runner_->BelongsToCurrentThread()); |
DCHECK_NE(stream_id_, kStreamIDNotSet); |
- filter_->Send(new AudioHostMsg_CloseStream(stream_id_)); |
+ auto client = filter_->audio_output_clients_.find(render_frame_id_); |
+ if (client == filter_->audio_output_clients_.end()) |
+ return; |
+ // TODO(rchtara): This is temporary. In soon upcoming CLs AudioMessageFilter |
+ // and AudioMessageFilter::AudioOutputIPCImpl will be removed and replaced by |
+ // AudioOutputClient. |
+ client->second->CloseStream(stream_id_); |
filter_->delegates_.Remove(stream_id_); |
stream_id_ = kStreamIDNotSet; |
stream_created_ = false; |
@@ -149,7 +168,6 @@ bool AudioMessageFilter::OnMessageReceived(const IPC::Message& message) { |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP(AudioMessageFilter, message) |
IPC_MESSAGE_HANDLER(AudioMsg_NotifyDeviceAuthorized, OnDeviceAuthorized) |
- IPC_MESSAGE_HANDLER(AudioMsg_NotifyStreamCreated, OnStreamCreated) |
IPC_MESSAGE_HANDLER(AudioMsg_NotifyStreamStateChanged, OnStreamStateChanged) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
@@ -197,7 +215,7 @@ void AudioMessageFilter::OnDeviceAuthorized( |
delegate->OnDeviceAuthorized(device_status, output_params, matched_device_id); |
} |
-void AudioMessageFilter::OnStreamCreated( |
+void AudioMessageFilter::StreamCreated( |
int stream_id, |
base::SharedMemoryHandle handle, |
base::SyncSocket::TransitDescriptor socket_descriptor, |
@@ -213,7 +231,7 @@ void AudioMessageFilter::OnStreamCreated( |
media::AudioOutputIPCDelegate* delegate = delegates_.Lookup(stream_id); |
if (!delegate) { |
- DLOG(WARNING) << "Got OnStreamCreated() event for a non-existent or removed" |
+ DLOG(WARNING) << "Got StreamCreated() event for a non-existent or removed" |
<< " audio renderer. (stream_id=" << stream_id << ")."; |
base::SharedMemory::CloseHandle(handle); |
base::SyncSocket socket(socket_handle); |