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

Unified Diff: chrome/plugin/plugin_channel.h

Issue 149062: mac/linux: rework plugin channel file descriptor creation (Closed)
Patch Set: address review comments Created 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/common/plugin_messages_internal.h ('k') | chrome/plugin/plugin_channel.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/plugin/plugin_channel.h
diff --git a/chrome/plugin/plugin_channel.h b/chrome/plugin/plugin_channel.h
index 21373fb3e0361774518064fab64de5d3f967cf61..02b619e37a08c8b31a9ce302d85f090ea6372a25 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.
« no previous file with comments | « chrome/common/plugin_messages_internal.h ('k') | chrome/plugin/plugin_channel.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698