diff options
author | dmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-16 23:23:53 +0000 |
---|---|---|
committer | dmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-16 23:23:53 +0000 |
commit | eb5960da1e59be98182120c3c489d92094f3c5c9 (patch) | |
tree | 0baeb22b52e5c9d54d15f4fdc5a36dc7a976733a /ppapi/proxy/serialized_structs.h | |
parent | 97af43ea66f1a7a734cccbc0e4bf65b88c37c4a7 (diff) | |
download | chromium_src-eb5960da1e59be98182120c3c489d92094f3c5c9.zip chromium_src-eb5960da1e59be98182120c3c489d92094f3c5c9.tar.gz chromium_src-eb5960da1e59be98182120c3c489d92094f3c5c9.tar.bz2 |
PPAPI/NaCl: Move handle extraction code to ppapi/proxy
BUG=165201
TEST=
TBR=jln@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11894003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@177257 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/proxy/serialized_structs.h')
-rw-r--r-- | ppapi/proxy/serialized_structs.h | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/ppapi/proxy/serialized_structs.h b/ppapi/proxy/serialized_structs.h index 5c5dcab..dcb99817 100644 --- a/ppapi/proxy/serialized_structs.h +++ b/ppapi/proxy/serialized_structs.h @@ -11,7 +11,6 @@ #include "base/logging.h" #include "base/shared_memory.h" #include "build/build_config.h" -#include "ipc/ipc_platform_file.h" #include "ppapi/c/pp_bool.h" #include "ppapi/c/pp_instance.h" #include "ppapi/c/pp_point.h" @@ -87,119 +86,6 @@ struct PPBURLLoader_UpdateProgress_Params { int64_t total_bytes_to_be_received; }; -// We put all our handles in a unified structure to make it easy to translate -// them in NaClIPCAdapter for use in NaCl. -class PPAPI_PROXY_EXPORT SerializedHandle { - public: - enum Type { INVALID, SHARED_MEMORY, SOCKET, CHANNEL_HANDLE, FILE }; - struct Header { - Header() : type(INVALID), size(0) {} - Header(Type type_arg, uint32_t size_arg) - : type(type_arg), size(size_arg) { - } - Type type; - uint32_t size; - }; - - SerializedHandle(); - // Create an invalid handle of the given type. - explicit SerializedHandle(Type type); - - // Create a shared memory handle. - SerializedHandle(const base::SharedMemoryHandle& handle, uint32_t size); - - // Create a socket, channel or file handle. - SerializedHandle(const Type type, - const IPC::PlatformFileForTransit& descriptor); - - Type type() const { return type_; } - bool is_shmem() const { return type_ == SHARED_MEMORY; } - bool is_socket() const { return type_ == SOCKET; } - bool is_channel_handle() const { return type_ == CHANNEL_HANDLE; } - bool is_file() const { return type_ == FILE; } - const base::SharedMemoryHandle& shmem() const { - DCHECK(is_shmem()); - return shm_handle_; - } - uint32_t size() const { - DCHECK(is_shmem()); - return size_; - } - const IPC::PlatformFileForTransit& descriptor() const { - DCHECK(is_socket() || is_channel_handle() || is_file()); - return descriptor_; - } - void set_shmem(const base::SharedMemoryHandle& handle, uint32_t size) { - type_ = SHARED_MEMORY; - shm_handle_ = handle; - size_ = size; - - descriptor_ = IPC::InvalidPlatformFileForTransit(); - } - void set_socket(const IPC::PlatformFileForTransit& socket) { - type_ = SOCKET; - descriptor_ = socket; - - shm_handle_ = base::SharedMemory::NULLHandle(); - size_ = 0; - } - void set_channel_handle(const IPC::PlatformFileForTransit& descriptor) { - type_ = CHANNEL_HANDLE; - - descriptor_ = descriptor; - shm_handle_ = base::SharedMemory::NULLHandle(); - size_ = 0; - } - void set_file_handle(const IPC::PlatformFileForTransit& descriptor) { - type_ = FILE; - - descriptor_ = descriptor; - shm_handle_ = base::SharedMemory::NULLHandle(); - size_ = 0; - } - void set_null_shmem() { - set_shmem(base::SharedMemory::NULLHandle(), 0); - } - void set_null_socket() { - set_socket(IPC::InvalidPlatformFileForTransit()); - } - void set_null_channel_handle() { - set_channel_handle(IPC::InvalidPlatformFileForTransit()); - } - void set_null_file_handle() { - set_file_handle(IPC::InvalidPlatformFileForTransit()); - } - bool IsHandleValid() const; - - Header header() const { - return Header(type_, size_); - } - - // Closes the handle and sets it to invalid. - void Close(); - - // Write/Read a Header, which contains all the data except the handle. This - // allows us to write the handle in a platform-specific way, as is necessary - // in NaClIPCAdapter to share handles with NaCl from Windows. - static bool WriteHeader(const Header& hdr, Pickle* pickle); - static bool ReadHeader(PickleIterator* iter, Header* hdr); - - private: - // The kind of handle we're holding. - Type type_; - - // We hold more members than we really need; we can't easily use a union, - // because we hold non-POD types. But these types are pretty light-weight. If - // we add more complex things later, we should come up with a more memory- - // efficient strategy. - // These are valid if type == SHARED_MEMORY. - base::SharedMemoryHandle shm_handle_; - uint32_t size_; - - // This is valid if type == SOCKET || type == CHANNEL_HANDLE. - IPC::PlatformFileForTransit descriptor_; -}; - struct PPPDecryptor_Buffer { ppapi::HostResource resource; uint32_t size; |