diff options
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/plugin/plugin_channel.cc | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/chrome/plugin/plugin_channel.cc b/chrome/plugin/plugin_channel.cc index 7f6f7d6..7234e16 100644 --- a/chrome/plugin/plugin_channel.cc +++ b/chrome/plugin/plugin_channel.cc @@ -17,6 +17,16 @@ #include "ipc/ipc_channel_posix.h" #endif +class PluginReleaseTask : public Task { + public: + void Run() { + ChildProcess::current()->ReleaseProcess(); + } +}; + +// How long we wait before releasing the plugin process. +static const int kPluginReleaseTimeMS = 10000; + PluginChannel* PluginChannel::GetPluginChannel( int process_id, MessageLoop* ipc_message_loop) { // map renderer's process id to a (single) channel to that process @@ -54,7 +64,8 @@ PluginChannel::~PluginChannel() { close(renderer_fd_); } #endif - ChildProcess::current()->ReleaseProcess(); + MessageLoop::current()->PostDelayedTask(FROM_HERE, new PluginReleaseTask(), + kPluginReleaseTimeMS); } bool PluginChannel::Send(IPC::Message* msg) { |