Index: ppapi/proxy/resource_message_params.cc |
diff --git a/ppapi/proxy/resource_message_params.cc b/ppapi/proxy/resource_message_params.cc |
index 5c70e49d98ea9799f6e3ba2cb80d601b841e9075..6d3fa02f465236e903b54445ca1c8700cce15aa2 100644 |
--- a/ppapi/proxy/resource_message_params.cc |
+++ b/ppapi/proxy/resource_message_params.cc |
@@ -27,12 +27,51 @@ ResourceMessageParams::~ResourceMessageParams() { |
void ResourceMessageParams::Serialize(IPC::Message* msg) const { |
IPC::ParamTraits<PP_Resource>::Write(msg, pp_resource_); |
IPC::ParamTraits<int32_t>::Write(msg, sequence_); |
+ IPC::ParamTraits<std::vector<SerializedHandle> >::Write(msg, handles_); |
} |
bool ResourceMessageParams::Deserialize(const IPC::Message* msg, |
PickleIterator* iter) { |
return IPC::ParamTraits<PP_Resource>::Read(msg, iter, &pp_resource_) && |
- IPC::ParamTraits<int32_t>::Read(msg, iter, &sequence_); |
+ IPC::ParamTraits<int32_t>::Read(msg, iter, &sequence_) && |
+ IPC::ParamTraits<std::vector<SerializedHandle> >::Read( |
+ msg, iter, &handles_); |
+} |
+ |
+const SerializedHandle* ResourceMessageParams::GetHandleOfTypeAtIndex( |
+ size_t index, |
+ SerializedHandle::Type type) const { |
+ if (handles_.size() <= index) |
+ return NULL; |
+ if (handles_[index].type() != type) |
+ return NULL; |
+ return &handles_[index]; |
+} |
+ |
+bool ResourceMessageParams::GetSharedMemoryHandleAtIndex( |
+ size_t index, |
+ base::SharedMemoryHandle* handle) const { |
+ const SerializedHandle* serialized = GetHandleOfTypeAtIndex( |
+ index, SerializedHandle::SHARED_MEMORY); |
+ if (!serialized) |
+ return false; |
+ *handle = serialized->shmem(); |
+ return true; |
+} |
+ |
+bool ResourceMessageParams::GetSocketHandleAtIndex( |
+ size_t index, |
+ IPC::PlatformFileForTransit* handle) const { |
+ const SerializedHandle* serialized = GetHandleOfTypeAtIndex( |
+ index, SerializedHandle::SOCKET); |
+ if (!serialized) |
+ return false; |
+ *handle = serialized->descriptor(); |
+ return true; |
+} |
+ |
+void ResourceMessageParams::AppendHandle(const SerializedHandle& handle) { |
+ handles_.push_back(handle); |
} |
ResourceMessageCallParams::ResourceMessageCallParams() |