summaryrefslogtreecommitdiffstats
path: root/chrome/plugin/plugin_channel.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/plugin/plugin_channel.h')
-rw-r--r--chrome/plugin/plugin_channel.h24
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.