diff options
Diffstat (limited to 'chrome/plugin/plugin_channel.h')
-rw-r--r-- | chrome/plugin/plugin_channel.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/chrome/plugin/plugin_channel.h b/chrome/plugin/plugin_channel.h index 21373fb..02b619e 100644 --- a/chrome/plugin/plugin_channel.h +++ b/chrome/plugin/plugin_channel.h @@ -19,8 +19,7 @@ class PluginChannel : public PluginChannelBase { // POSIX only: If |channel_fd| > 0, use that file descriptor for the // channel socket. static PluginChannel* GetPluginChannel(int process_id, - MessageLoop* ipc_message_loop, - int channel_fd); + MessageLoop* ipc_message_loop); ~PluginChannel(); @@ -30,6 +29,18 @@ class PluginChannel : public PluginChannelBase { base::ProcessHandle renderer_handle() const { return renderer_handle_; } int GenerateRouteID(); +#if defined(OS_POSIX) + // When first created, the PluginChannel gets assigned the file descriptor + // for the renderer. + // After the first time we pass it through the IPC, we don't need it anymore, + // and we close it. At that time, we reset renderer_fd_ to -1. + int DisownRendererFd() { + int value = renderer_fd_; + renderer_fd_ = -1; + return value; + } +#endif + bool in_send() { return in_send_ != 0; } bool off_the_record() { return off_the_record_; } @@ -42,6 +53,9 @@ class PluginChannel : public PluginChannelBase { virtual void CleanUp(); + // Overrides PluginChannelBase::Init. + virtual bool Init(MessageLoop* ipc_message_loop, bool create_pipe_now); + private: // Called on the plugin thread PluginChannel(); @@ -59,6 +73,12 @@ class PluginChannel : public PluginChannelBase { // Handle to the renderer process who is on the other side of the channel. base::ProcessHandle renderer_handle_; +#if defined(OS_POSIX) + // FD for the renderer end of the pipe. It is stored until we send it over + // IPC after which it is cleared. It will be closed by the IPC mechanism. + int renderer_fd_; +#endif + int in_send_; // Tracks if we're in a Send call. bool log_messages_; // True if we should log sent and received messages. bool off_the_record_; // True if the renderer is in off the record mode. |