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

Unified Diff: ipc/ipc_message_utils.cc

Issue 1897623002: Remove POSIX shared memory. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase against https://codereview.chromium.org/1890043002/. Created 4 years, 8 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
Index: ipc/ipc_message_utils.cc
diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc
index 9edc3bbd4cd513eb92783ff8d12738c3c49aedf1..59057eeed0bfa5af78a33132fe023b3292cc73d7 100644
--- a/ipc/ipc_message_utils.cc
+++ b/ipc/ipc_message_utils.cc
@@ -690,90 +690,40 @@ void ParamTraits<base::FileDescriptor>::Log(const param_type& p,
#if defined(OS_MACOSX) && !defined(OS_IOS)
void ParamTraits<base::SharedMemoryHandle>::Write(base::Pickle* m,
const param_type& p) {
- m->WriteInt(p.GetType());
+ MachPortMac mach_port_mac(p.GetMemoryObject());
+ ParamTraits<MachPortMac>::Write(m, mach_port_mac);
+ size_t size = 0;
+ bool result = p.GetSize(&size);
+ DCHECK(result);
+ ParamTraits<uint32_t>::Write(m, static_cast<uint32_t>(size));
- switch (p.GetType()) {
- case base::SharedMemoryHandle::POSIX:
- ParamTraits<base::FileDescriptor>::Write(m, p.GetFileDescriptor());
- break;
- case base::SharedMemoryHandle::MACH:
- MachPortMac mach_port_mac(p.GetMemoryObject());
- ParamTraits<MachPortMac>::Write(m, mach_port_mac);
- size_t size = 0;
- bool result = p.GetSize(&size);
- DCHECK(result);
- ParamTraits<uint32_t>::Write(m, static_cast<uint32_t>(size));
-
- // If the caller intended to pass ownership to the IPC stack, release a
- // reference.
- if (p.OwnershipPassesToIPC())
- p.Close();
-
- break;
- }
+ // If the caller intended to pass ownership to the IPC stack, release a
+ // reference.
+ if (p.OwnershipPassesToIPC())
+ p.Close();
}
bool ParamTraits<base::SharedMemoryHandle>::Read(const base::Pickle* m,
base::PickleIterator* iter,
param_type* r) {
- base::SharedMemoryHandle::TypeWireFormat type;
- if (!iter->ReadInt(&type))
+ MachPortMac mach_port_mac;
+ if (!ParamTraits<MachPortMac>::Read(m, iter, &mach_port_mac))
return false;
- base::SharedMemoryHandle::Type shm_type = base::SharedMemoryHandle::POSIX;
- switch (type) {
- case base::SharedMemoryHandle::POSIX:
- case base::SharedMemoryHandle::MACH: {
- shm_type = static_cast<base::SharedMemoryHandle::Type>(type);
- break;
- }
- default: {
- return false;
- }
- }
-
- switch (shm_type) {
- case base::SharedMemoryHandle::POSIX: {
- base::FileDescriptor file_descriptor;
-
- bool success =
- ParamTraits<base::FileDescriptor>::Read(m, iter, &file_descriptor);
- if (!success)
- return false;
-
- *r = base::SharedMemoryHandle(file_descriptor.fd,
- file_descriptor.auto_close);
- return true;
- }
- case base::SharedMemoryHandle::MACH: {
- MachPortMac mach_port_mac;
- if (!ParamTraits<MachPortMac>::Read(m, iter, &mach_port_mac))
- return false;
-
- uint32_t size;
- if (!ParamTraits<uint32_t>::Read(m, iter, &size))
- return false;
+ uint32_t size;
+ if (!ParamTraits<uint32_t>::Read(m, iter, &size))
+ return false;
- *r = base::SharedMemoryHandle(mach_port_mac.get_mach_port(),
- static_cast<size_t>(size),
- base::GetCurrentProcId());
- return true;
- }
- }
+ *r = base::SharedMemoryHandle(mach_port_mac.get_mach_port(),
+ static_cast<size_t>(size),
+ base::GetCurrentProcId());
+ return true;
}
void ParamTraits<base::SharedMemoryHandle>::Log(const param_type& p,
std::string* l) {
- switch (p.GetType()) {
- case base::SharedMemoryHandle::POSIX:
- l->append("POSIX Fd: ");
- ParamTraits<base::FileDescriptor>::Log(p.GetFileDescriptor(), l);
- break;
- case base::SharedMemoryHandle::MACH:
- l->append("Mach port: ");
- LogParam(p.GetMemoryObject(), l);
- break;
- }
+ l->append("Mach port: ");
+ LogParam(p.GetMemoryObject(), l);
}
#elif defined(OS_WIN)

Powered by Google App Engine
This is Rietveld 408576698