| Index: base/memory/shared_memory_handle.h
|
| diff --git a/base/memory/shared_memory_handle.h b/base/memory/shared_memory_handle.h
|
| index 01a7f75273dd617e95c54a1484c8f24d64acaad6..493694d2aa7b51578502ae49528cd5905f19b684 100644
|
| --- a/base/memory/shared_memory_handle.h
|
| +++ b/base/memory/shared_memory_handle.h
|
| @@ -9,6 +9,7 @@
|
|
|
| #if defined(OS_WIN)
|
| #include <windows.h>
|
| +#include "base/process/process_handle.h"
|
| #elif defined(OS_MACOSX)
|
| #include <sys/types.h>
|
| #include "base/base_export.h"
|
| @@ -25,10 +26,50 @@ class Pickle;
|
|
|
| // SharedMemoryHandle is a platform specific type which represents
|
| // the underlying OS handle to a shared memory segment.
|
| -#if defined(OS_WIN)
|
| -typedef HANDLE SharedMemoryHandle;
|
| -#elif defined(OS_POSIX) && !defined(OS_MACOSX)
|
| +#if defined(OS_POSIX) && !defined(OS_MACOSX)
|
| typedef FileDescriptor SharedMemoryHandle;
|
| +#elif defined(OS_WIN)
|
| +class BASE_EXPORT SharedMemoryHandle {
|
| + public:
|
| + // The default constructor returns an invalid SharedMemoryHandle.
|
| + SharedMemoryHandle();
|
| + SharedMemoryHandle(HANDLE h, base::ProcessId pid);
|
| +
|
| + // Standard copy constructor. The new instance shares the underlying OS
|
| + // primitives.
|
| + SharedMemoryHandle(const SharedMemoryHandle& handle);
|
| +
|
| + // Standard assignment operator. The updated instance shares the underlying
|
| + // OS primitives.
|
| + SharedMemoryHandle& operator=(const SharedMemoryHandle& handle);
|
| +
|
| + // Comparison operators.
|
| + bool operator==(const SharedMemoryHandle& handle) const;
|
| + bool operator!=(const SharedMemoryHandle& handle) const;
|
| +
|
| + // Closes the underlying OS resources.
|
| + void Close() const;
|
| +
|
| + // Whether the underlying OS primitive is valid.
|
| + bool IsValid() const;
|
| +
|
| + // Whether |pid_| is the same as the current process's id.
|
| + bool BelongsToCurrentProcess() const;
|
| +
|
| + // Whether handle_ needs to be duplicated into the destination process when
|
| + // an instance of this class is passed over a Chrome IPC channel.
|
| + bool NeedsBrokering() const;
|
| +
|
| + HANDLE GetHandle() const;
|
| + base::ProcessId GetPID() const;
|
| +
|
| + private:
|
| + HANDLE handle_;
|
| +
|
| + // The process in which |handle_| is valid and can be used. If |handle_| is
|
| + // invalid, this will be kNullProcessId.
|
| + base::ProcessId pid_;
|
| +};
|
| #else
|
| class BASE_EXPORT SharedMemoryHandle {
|
| public:
|
|
|