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

Side by Side Diff: content/renderer/pepper_plugin_delegate_impl.cc

Issue 7157001: Implements AudioMessageFilter as member in RenderThread (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Added TODO() comment in failing unit test Created 9 years, 6 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/pepper_plugin_delegate_impl.h" 5 #include "content/renderer/pepper_plugin_delegate_impl.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <queue> 8 #include <queue>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 152
153 DISALLOW_COPY_AND_ASSIGN(PlatformImage2DImpl); 153 DISALLOW_COPY_AND_ASSIGN(PlatformImage2DImpl);
154 }; 154 };
155 155
156 156
157 class PlatformAudioImpl 157 class PlatformAudioImpl
158 : public webkit::ppapi::PluginDelegate::PlatformAudio, 158 : public webkit::ppapi::PluginDelegate::PlatformAudio,
159 public AudioMessageFilter::Delegate, 159 public AudioMessageFilter::Delegate,
160 public base::RefCountedThreadSafe<PlatformAudioImpl> { 160 public base::RefCountedThreadSafe<PlatformAudioImpl> {
161 public: 161 public:
162 explicit PlatformAudioImpl(scoped_refptr<AudioMessageFilter> filter) 162 explicit PlatformAudioImpl()
163 : client_(NULL), filter_(filter), stream_id_(0), 163 : client_(NULL), stream_id_(0),
164 main_message_loop_(MessageLoop::current()) { 164 main_message_loop_(MessageLoop::current()) {
165 DCHECK(RenderThread::current());
jam 2011/06/23 18:59:55 nit: we usually avoid dchecks against a pointer be
henrika_dont_use 2011/06/27 15:05:44 Done.
166 filter_ = RenderThread::current()->audio_message_filter();
165 DCHECK(filter_); 167 DCHECK(filter_);
166 } 168 }
167 169
168 virtual ~PlatformAudioImpl() { 170 virtual ~PlatformAudioImpl() {
169 // Make sure we have been shut down. Warning: this will usually happen on 171 // Make sure we have been shut down. Warning: this will usually happen on
170 // the I/O thread! 172 // the I/O thread!
171 DCHECK_EQ(0, stream_id_); 173 DCHECK_EQ(0, stream_id_);
172 DCHECK(!client_); 174 DCHECK(!client_);
173 } 175 }
174 176
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 void PlatformAudioImpl::ShutDown() { 268 void PlatformAudioImpl::ShutDown() {
267 // Called on the main thread to stop all audio callbacks. We must only change 269 // Called on the main thread to stop all audio callbacks. We must only change
268 // the client on the main thread, and the delegates from the I/O thread. 270 // the client on the main thread, and the delegates from the I/O thread.
269 client_ = NULL; 271 client_ = NULL;
270 filter_->message_loop()->PostTask(FROM_HERE, 272 filter_->message_loop()->PostTask(FROM_HERE,
271 NewRunnableMethod(this, &PlatformAudioImpl::ShutDownOnIOThread)); 273 NewRunnableMethod(this, &PlatformAudioImpl::ShutDownOnIOThread));
272 } 274 }
273 275
274 void PlatformAudioImpl::InitializeOnIOThread(const AudioParameters& params) { 276 void PlatformAudioImpl::InitializeOnIOThread(const AudioParameters& params) {
275 stream_id_ = filter_->AddDelegate(this); 277 stream_id_ = filter_->AddDelegate(this);
276 filter_->Send(new AudioHostMsg_CreateStream(0, stream_id_, params, true)); 278 filter_->Send(new AudioHostMsg_CreateStream(stream_id_, params, true));
277 } 279 }
278 280
279 void PlatformAudioImpl::StartPlaybackOnIOThread() { 281 void PlatformAudioImpl::StartPlaybackOnIOThread() {
280 if (stream_id_) 282 if (stream_id_)
281 filter_->Send(new AudioHostMsg_PlayStream(0, stream_id_)); 283 filter_->Send(new AudioHostMsg_PlayStream(stream_id_));
282 } 284 }
283 285
284 void PlatformAudioImpl::StopPlaybackOnIOThread() { 286 void PlatformAudioImpl::StopPlaybackOnIOThread() {
285 if (stream_id_) 287 if (stream_id_)
286 filter_->Send(new AudioHostMsg_PauseStream(0, stream_id_)); 288 filter_->Send(new AudioHostMsg_PauseStream(stream_id_));
287 } 289 }
288 290
289 void PlatformAudioImpl::ShutDownOnIOThread() { 291 void PlatformAudioImpl::ShutDownOnIOThread() {
290 // Make sure we don't call shutdown more than once. 292 // Make sure we don't call shutdown more than once.
291 if (!stream_id_) 293 if (!stream_id_)
292 return; 294 return;
293 295
294 filter_->Send(new AudioHostMsg_CloseStream(0, stream_id_)); 296 filter_->Send(new AudioHostMsg_CloseStream(stream_id_));
295 filter_->RemoveDelegate(stream_id_); 297 filter_->RemoveDelegate(stream_id_);
296 stream_id_ = 0; 298 stream_id_ = 0;
297 299
298 Release(); // Release for the delegate, balances out the reference taken in 300 Release(); // Release for the delegate, balances out the reference taken in
299 // PepperPluginDelegateImpl::CreateAudio. 301 // PepperPluginDelegateImpl::CreateAudio.
300 } 302 }
301 303
302 void PlatformAudioImpl::OnLowLatencyCreated( 304 void PlatformAudioImpl::OnLowLatencyCreated(
303 base::SharedMemoryHandle handle, base::SyncSocket::Handle socket_handle, 305 base::SharedMemoryHandle handle, base::SyncSocket::Handle socket_handle,
304 uint32 length) { 306 uint32 length) {
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 void PepperPluginDelegateImpl::SelectedFindResultChanged(int identifier, 844 void PepperPluginDelegateImpl::SelectedFindResultChanged(int identifier,
843 int index) { 845 int index) {
844 render_view_->reportFindInPageSelection( 846 render_view_->reportFindInPageSelection(
845 identifier, index + 1, WebKit::WebRect()); 847 identifier, index + 1, WebKit::WebRect());
846 } 848 }
847 849
848 webkit::ppapi::PluginDelegate::PlatformAudio* 850 webkit::ppapi::PluginDelegate::PlatformAudio*
849 PepperPluginDelegateImpl::CreateAudio( 851 PepperPluginDelegateImpl::CreateAudio(
850 uint32_t sample_rate, uint32_t sample_count, 852 uint32_t sample_rate, uint32_t sample_count,
851 webkit::ppapi::PluginDelegate::PlatformAudio::Client* client) { 853 webkit::ppapi::PluginDelegate::PlatformAudio::Client* client) {
852 scoped_refptr<PlatformAudioImpl> audio( 854 scoped_refptr<PlatformAudioImpl> audio(new PlatformAudioImpl());
853 new PlatformAudioImpl(render_view_->audio_message_filter()));
854 if (audio->Initialize(sample_rate, sample_count, client)) { 855 if (audio->Initialize(sample_rate, sample_count, client)) {
855 // Balanced by Release invoked in PlatformAudioImpl::ShutDownOnIOThread(). 856 // Balanced by Release invoked in PlatformAudioImpl::ShutDownOnIOThread().
856 return audio.release(); 857 return audio.release();
857 } else { 858 } else {
858 return NULL; 859 return NULL;
859 } 860 }
860 } 861 }
861 862
862 // If a broker has not already been created for this plugin, creates one. 863 // If a broker has not already been created for this plugin, creates one.
863 webkit::ppapi::PluginDelegate::PpapiBroker* 864 webkit::ppapi::PluginDelegate::PpapiBroker*
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
982 } 983 }
983 984
984 bool PepperPluginDelegateImpl::ReadDirectory( 985 bool PepperPluginDelegateImpl::ReadDirectory(
985 const GURL& directory_path, 986 const GURL& directory_path,
986 fileapi::FileSystemCallbackDispatcher* dispatcher) { 987 fileapi::FileSystemCallbackDispatcher* dispatcher) {
987 FileSystemDispatcher* file_system_dispatcher = 988 FileSystemDispatcher* file_system_dispatcher =
988 ChildThread::current()->file_system_dispatcher(); 989 ChildThread::current()->file_system_dispatcher();
989 return file_system_dispatcher->ReadDirectory(directory_path, dispatcher); 990 return file_system_dispatcher->ReadDirectory(directory_path, dispatcher);
990 } 991 }
991 992
992 class AsyncOpenFileSystemURLCallbackTranslator : 993 class AsyncOpenFileSystemURLCallbackTranslator
993 public fileapi::FileSystemCallbackDispatcher { 994 : public fileapi::FileSystemCallbackDispatcher {
994 public: 995 public:
995 AsyncOpenFileSystemURLCallbackTranslator( 996 AsyncOpenFileSystemURLCallbackTranslator(
996 webkit::ppapi::PluginDelegate::AsyncOpenFileCallback* callback) 997 webkit::ppapi::PluginDelegate::AsyncOpenFileCallback* callback)
997 : callback_(callback) { 998 : callback_(callback) {
998 } 999 }
999 1000
1000 virtual ~AsyncOpenFileSystemURLCallbackTranslator() {} 1001 virtual ~AsyncOpenFileSystemURLCallbackTranslator() {}
1001 1002
1002 virtual void DidSucceed() { 1003 virtual void DidSucceed() {
1003 NOTREACHED(); 1004 NOTREACHED();
1004 } 1005 }
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
1328 if (!base::SharedMemory::IsHandleValid(handle)) { 1329 if (!base::SharedMemory::IsHandleValid(handle)) {
1329 DLOG(WARNING) << "Browser failed to allocate shared memory"; 1330 DLOG(WARNING) << "Browser failed to allocate shared memory";
1330 return NULL; 1331 return NULL;
1331 } 1332 }
1332 return new base::SharedMemory(handle, false); 1333 return new base::SharedMemory(handle, false);
1333 } 1334 }
1334 1335
1335 ppapi::Preferences PepperPluginDelegateImpl::GetPreferences() { 1336 ppapi::Preferences PepperPluginDelegateImpl::GetPreferences() {
1336 return ppapi::Preferences(render_view_->webkit_preferences()); 1337 return ppapi::Preferences(render_view_->webkit_preferences());
1337 } 1338 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698