Index: base/memory/shared_memory_handle_mac.cc |
diff --git a/base/memory/shared_memory_handle_mac.cc b/base/memory/shared_memory_handle_mac.cc |
index 3f1d4d83748657a72366535c55aea37d077c3832..45e3754807430f293e30e43d7b8c57752a6b6f45 100644 |
--- a/base/memory/shared_memory_handle_mac.cc |
+++ b/base/memory/shared_memory_handle_mac.cc |
@@ -12,6 +12,7 @@ |
#include "base/mac/mac_util.h" |
#include "base/mac/mach_logging.h" |
#include "base/posix/eintr_wrapper.h" |
+#include "base/unguessable_token.h" |
namespace base { |
@@ -19,10 +20,12 @@ SharedMemoryHandle::SharedMemoryHandle() |
: type_(MACH), memory_object_(MACH_PORT_NULL) {} |
SharedMemoryHandle::SharedMemoryHandle( |
- const base::FileDescriptor& file_descriptor) |
- : type_(POSIX), file_descriptor_(file_descriptor) {} |
+ const base::FileDescriptor& file_descriptor, |
+ const base::UnguessableToken& guid) |
+ : type_(POSIX), file_descriptor_(file_descriptor), guid_(guid) {} |
-SharedMemoryHandle::SharedMemoryHandle(mach_vm_size_t size) { |
+SharedMemoryHandle::SharedMemoryHandle(mach_vm_size_t size, |
+ const base::UnguessableToken& guid) { |
type_ = MACH; |
mach_port_t named_right; |
kern_return_t kr = mach_make_memory_entry_64( |
@@ -40,28 +43,17 @@ SharedMemoryHandle::SharedMemoryHandle(mach_vm_size_t size) { |
memory_object_ = named_right; |
size_ = size; |
ownership_passes_to_ipc_ = false; |
+ guid_ = guid; |
} |
SharedMemoryHandle::SharedMemoryHandle(mach_port_t memory_object, |
- mach_vm_size_t size) |
+ mach_vm_size_t size, |
+ const base::UnguessableToken& guid) |
: type_(MACH), |
memory_object_(memory_object), |
size_(size), |
- ownership_passes_to_ipc_(false) {} |
- |
-SharedMemoryHandle::SharedMemoryHandle(const SharedMemoryHandle& handle) { |
- CopyRelevantData(handle); |
-} |
- |
-SharedMemoryHandle& SharedMemoryHandle::operator=( |
- const SharedMemoryHandle& handle) { |
- if (this == &handle) |
- return *this; |
- |
- type_ = handle.type_; |
- CopyRelevantData(handle); |
- return *this; |
-} |
+ ownership_passes_to_ipc_(false), |
+ guid_(guid) {} |
SharedMemoryHandle SharedMemoryHandle::Duplicate() const { |
switch (type_) { |
@@ -71,7 +63,7 @@ SharedMemoryHandle SharedMemoryHandle::Duplicate() const { |
int duped_fd = HANDLE_EINTR(dup(file_descriptor_.fd)); |
if (duped_fd < 0) |
return SharedMemoryHandle(); |
- return SharedMemoryHandle(FileDescriptor(duped_fd, true)); |
+ return SharedMemoryHandle(FileDescriptor(duped_fd, true), guid_); |
} |
case MACH: { |
if (!IsValid()) |
@@ -177,18 +169,4 @@ bool SharedMemoryHandle::OwnershipPassesToIPC() const { |
return ownership_passes_to_ipc_; |
} |
-void SharedMemoryHandle::CopyRelevantData(const SharedMemoryHandle& handle) { |
- type_ = handle.type_; |
- switch (type_) { |
- case POSIX: |
- file_descriptor_ = handle.file_descriptor_; |
- break; |
- case MACH: |
- memory_object_ = handle.memory_object_; |
- size_ = handle.size_; |
- ownership_passes_to_ipc_ = handle.ownership_passes_to_ipc_; |
- break; |
- } |
-} |
- |
} // namespace base |