Index: chrome/common/ipc_channel_posix.cc |
diff --git a/chrome/common/ipc_channel_posix.cc b/chrome/common/ipc_channel_posix.cc |
index 52cad9d2f9c79e043cc3a593bad372e2ced56f83..babc16cbaee62d2d7908808dadcf4b5d96187ca5 100644 |
--- a/chrome/common/ipc_channel_posix.cc |
+++ b/chrome/common/ipc_channel_posix.cc |
@@ -17,15 +17,16 @@ |
#include "base/command_line.h" |
#include "base/eintr_wrapper.h" |
+#include "base/global_descriptors_posix.h" |
#include "base/lock.h" |
#include "base/logging.h" |
#include "base/process_util.h" |
-#include "base/reserved_file_descriptors.h" |
#include "base/scoped_ptr.h" |
#include "base/string_util.h" |
#include "base/singleton.h" |
#include "base/stats_counters.h" |
#include "chrome/common/chrome_counters.h" |
+#include "chrome/common/chrome_descriptors.h" |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/file_descriptor_set_posix.h" |
#include "chrome/common/ipc_logging.h" |
@@ -40,7 +41,7 @@ namespace IPC { |
// |
// When creating a child subprocess, the parent side of the fork |
// arranges it such that the initial control channel ends up on the |
-// magic file descriptor kClientChannelFd in the child. Future |
+// magic file descriptor kPrimaryIPCChannel in the child. Future |
// connections (file descriptors) can then be passed via that |
// connection via sendmsg(). |
@@ -50,7 +51,7 @@ namespace { |
// The PipeMap class works around this quirk related to unit tests: |
// |
// When running as a server, we install the client socket in a |
-// specific file descriptor number (@kClientChannelFd). However, we |
+// specific file descriptor number (@kPrimaryIPCChannel). However, we |
// also have to support the case where we are running unittests in the |
// same process. (We do not support forking without execing.) |
// |
@@ -58,7 +59,7 @@ namespace { |
// The IPC server object will install a mapping in PipeMap from the |
// name which it was given to the client pipe. When forking the client, the |
// GetClientFileDescriptorMapping will ensure that the socket is installed in |
-// the magic slot (@kClientChannelFd). The client will search for the |
+// the magic slot (@kPrimaryIPCChannel). The client will search for the |
// mapping, but it won't find any since we are in a new process. Thus the |
// magic fd number is returned. Once the client connects, the server will |
// close its copy of the client socket and remove the mapping. |
@@ -124,10 +125,7 @@ int ChannelNameToClientFD(const std::string& channel_id) { |
// If we don't find an entry, we assume that the correct value has been |
// inserted in the magic slot. |
- // kClientChannelFd is the file descriptor number that a client process |
- // expects to find its IPC socket; see reserved_file_descriptors.h. |
- |
- return kClientChannelFd; |
+ return Singleton<base::GlobalDescriptors>()->Get(kPrimaryIPCChannel); |
} |
//------------------------------------------------------------------------------ |
@@ -671,11 +669,8 @@ bool Channel::ChannelImpl::Send(Message* message) { |
return true; |
} |
-void Channel::ChannelImpl::GetClientFileDescriptorMapping(int *src_fd, |
- int *dest_fd) const { |
- DCHECK(mode_ == MODE_SERVER); |
- *src_fd = client_pipe_; |
- *dest_fd = kClientChannelFd; |
+int Channel::ChannelImpl::GetClientFileDescriptor() const { |
+ return client_pipe_; |
} |
// Called by libevent when we can read from th pipe without blocking. |
@@ -803,8 +798,8 @@ bool Channel::Send(Message* message) { |
return channel_impl_->Send(message); |
} |
-void Channel::GetClientFileDescriptorMapping(int *src_fd, int *dest_fd) const { |
- return channel_impl_->GetClientFileDescriptorMapping(src_fd, dest_fd); |
+int Channel::GetClientFileDescriptor() const { |
+ return channel_impl_->GetClientFileDescriptor(); |
} |
} // namespace IPC |