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

Side by Side Diff: webkit/glue/plugins/plugin_instance.cc

Issue 338050: Ensure that all NPN_PluginThreadAsyncCall callbacks are invoked before NPP_De... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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
« no previous file with comments | « chrome/test/ui/npapi_uitest.cc ('k') | webkit/glue/plugins/test/plugin_client.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #include "webkit/glue/plugins/plugin_instance.h" 7 #include "webkit/glue/plugins/plugin_instance.h"
8 8
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 } 358 }
359 359
360 void PluginInstance::PluginThreadAsyncCall(void (*func)(void *), 360 void PluginInstance::PluginThreadAsyncCall(void (*func)(void *),
361 void *user_data) { 361 void *user_data) {
362 message_loop_->PostTask(FROM_HERE, NewRunnableMethod( 362 message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
363 this, &PluginInstance::OnPluginThreadAsyncCall, func, user_data)); 363 this, &PluginInstance::OnPluginThreadAsyncCall, func, user_data));
364 } 364 }
365 365
366 void PluginInstance::OnPluginThreadAsyncCall(void (*func)(void *), 366 void PluginInstance::OnPluginThreadAsyncCall(void (*func)(void *),
367 void *user_data) { 367 void *user_data) {
368 func(user_data); 368 // Do not invoke the callback if NPP_Destroy has already been invoked.
369 if (webplugin_)
370 func(user_data);
369 } 371 }
370 372
371 uint32 PluginInstance::ScheduleTimer(uint32 interval, 373 uint32 PluginInstance::ScheduleTimer(uint32 interval,
372 NPBool repeat, 374 NPBool repeat,
373 void (*func)(NPP id, uint32 timer_id)) { 375 void (*func)(NPP id, uint32 timer_id)) {
374 // Use next timer id. 376 // Use next timer id.
375 uint32 timer_id; 377 uint32 timer_id;
376 timer_id = next_timer_id_; 378 timer_id = next_timer_id_;
377 ++next_timer_id_; 379 ++next_timer_id_;
378 DCHECK(next_timer_id_ != 0); 380 DCHECK(next_timer_id_ != 0);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 stream->url, range_info.c_str(), 484 stream->url, range_info.c_str(),
483 reinterpret_cast<intptr_t>(plugin_stream), 485 reinterpret_cast<intptr_t>(plugin_stream),
484 plugin_stream->notify_needed(), 486 plugin_stream->notify_needed(),
485 reinterpret_cast<intptr_t>(plugin_stream->notify_data())); 487 reinterpret_cast<intptr_t>(plugin_stream->notify_data()));
486 break; 488 break;
487 } 489 }
488 } 490 }
489 } 491 }
490 492
491 } // namespace NPAPI 493 } // namespace NPAPI
OLDNEW
« no previous file with comments | « chrome/test/ui/npapi_uitest.cc ('k') | webkit/glue/plugins/test/plugin_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698