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

Side by Side Diff: content/renderer/media/audio_message_filter.cc

Issue 10836025: Part 1: Plumb render view ID to render host (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address review comments Created 8 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/audio_message_filter.h" 5 #include "content/renderer/media/audio_message_filter.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "content/common/child_process.h" 10 #include "content/common/child_process.h"
11 #include "content/common/media/audio_messages.h" 11 #include "content/common/media/audio_messages.h"
12 #include "content/renderer/render_thread_impl.h" 12 #include "content/renderer/render_thread_impl.h"
13 #include "ipc/ipc_logging.h" 13 #include "ipc/ipc_logging.h"
14 14
15 AudioMessageFilter* AudioMessageFilter::filter_ = NULL; 15 AudioMessageFilter* AudioMessageFilter::filter_ = NULL;
16 16
17 // static 17 // static
18 AudioMessageFilter* AudioMessageFilter::Get() { 18 AudioMessageFilter* AudioMessageFilter::Get() {
19 return filter_; 19 return filter_;
20 } 20 }
21 21
22 AudioMessageFilter::AudioMessageFilter() 22 AudioMessageFilter::AudioMessageFilter()
23 : channel_(NULL) { 23 : channel_(NULL) {
24 DVLOG(1) << "AudioMessageFilter::AudioMessageFilter()"; 24 DVLOG(1) << "AudioMessageFilter::AudioMessageFilter()";
25 DCHECK(!filter_); 25 DCHECK(!filter_);
26 filter_ = this; 26 filter_ = this;
27 } 27 }
28 28
29 int AudioMessageFilter::AddDelegate(media::AudioOutputIPCDelegate* delegate) {
30 return delegates_.Add(delegate);
31 }
32
33 void AudioMessageFilter::RemoveDelegate(int id) {
34 delegates_.Remove(id);
35 }
36
37 void AudioMessageFilter::CreateStream(int stream_id,
38 const media::AudioParameters& params) {
39 Send(new AudioHostMsg_CreateStream(stream_id, params));
40 }
41
42 void AudioMessageFilter::PlayStream(int stream_id) {
43 Send(new AudioHostMsg_PlayStream(stream_id));
44 }
45
46 void AudioMessageFilter::PauseStream(int stream_id) {
47 Send(new AudioHostMsg_PauseStream(stream_id));
48 }
49
50 void AudioMessageFilter::FlushStream(int stream_id) {
51 Send(new AudioHostMsg_FlushStream(stream_id));
52 }
53
54 void AudioMessageFilter::CloseStream(int stream_id) {
55 Send(new AudioHostMsg_CloseStream(stream_id));
56 }
57
58 void AudioMessageFilter::SetVolume(int stream_id, double volume) {
59 Send(new AudioHostMsg_SetVolume(stream_id, volume));
60 }
61
62 bool AudioMessageFilter::Send(IPC::Message* message) { 29 bool AudioMessageFilter::Send(IPC::Message* message) {
63 if (!channel_) { 30 if (!channel_) {
64 delete message; 31 delete message;
65 return false; 32 return false;
66 } 33 }
67 34
68 if (MessageLoop::current() != ChildProcess::current()->io_message_loop()) { 35 if (MessageLoop::current() != ChildProcess::current()->io_message_loop()) {
69 // Can only access the IPC::Channel on the IPC thread since it's not thread 36 // Can only access the IPC::Channel on the IPC thread since it's not thread
70 // safe. 37 // safe.
71 ChildProcess::current()->io_message_loop()->PostTask( 38 ChildProcess::current()->io_message_loop()->PostTask(
72 FROM_HERE, 39 FROM_HERE,
73 base::Bind(base::IgnoreResult(&AudioMessageFilter::Send), this, 40 base::Bind(base::IgnoreResult(&AudioMessageFilter::Send), this,
74 message)); 41 message));
75 return true; 42 return true;
76 } 43 }
77 44
78 return channel_->Send(message); 45 return channel_->Send(message);
79 } 46 }
80 47
48 int AudioMessageFilter::AddDelegate(media::AudioOutputIPCDelegate* delegate) {
49 return delegates_.Add(delegate);
50 }
51
52 void AudioMessageFilter::RemoveDelegate(int id) {
53 delegates_.Remove(id);
54 }
55
81 bool AudioMessageFilter::OnMessageReceived(const IPC::Message& message) { 56 bool AudioMessageFilter::OnMessageReceived(const IPC::Message& message) {
82 bool handled = true; 57 bool handled = true;
83 IPC_BEGIN_MESSAGE_MAP(AudioMessageFilter, message) 58 IPC_BEGIN_MESSAGE_MAP(AudioMessageFilter, message)
84 IPC_MESSAGE_HANDLER(AudioMsg_NotifyStreamCreated, OnStreamCreated) 59 IPC_MESSAGE_HANDLER(AudioMsg_NotifyStreamCreated, OnStreamCreated)
85 IPC_MESSAGE_HANDLER(AudioMsg_NotifyStreamStateChanged, OnStreamStateChanged) 60 IPC_MESSAGE_HANDLER(AudioMsg_NotifyStreamStateChanged, OnStreamStateChanged)
86 IPC_MESSAGE_UNHANDLED(handled = false) 61 IPC_MESSAGE_UNHANDLED(handled = false)
87 IPC_END_MESSAGE_MAP() 62 IPC_END_MESSAGE_MAP()
88 return handled; 63 return handled;
89 } 64 }
90 65
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 115
141 void AudioMessageFilter::OnStreamStateChanged( 116 void AudioMessageFilter::OnStreamStateChanged(
142 int stream_id, media::AudioOutputIPCDelegate::State state) { 117 int stream_id, media::AudioOutputIPCDelegate::State state) {
143 media::AudioOutputIPCDelegate* delegate = delegates_.Lookup(stream_id); 118 media::AudioOutputIPCDelegate* delegate = delegates_.Lookup(stream_id);
144 if (!delegate) { 119 if (!delegate) {
145 DLOG(WARNING) << "No delegate found for state change. " << state; 120 DLOG(WARNING) << "No delegate found for state change. " << state;
146 return; 121 return;
147 } 122 }
148 delegate->OnStateChanged(state); 123 delegate->OnStateChanged(state);
149 } 124 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698