From 78a6328bab2cd7cee485a647e750fbdecc6e322c Mon Sep 17 00:00:00 2001 From: Kyle Huey Date: Fri, 24 Jun 2011 07:19:56 -0700 Subject: [PATCH] Bug 543061: Serialize nsID. r=cjones,bent --- ipc/glue/IPCMessageUtils.h | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/ipc/glue/IPCMessageUtils.h b/ipc/glue/IPCMessageUtils.h index a8d2d0263a31..046aaafb31dc 100644 --- a/ipc/glue/IPCMessageUtils.h +++ b/ipc/glue/IPCMessageUtils.h @@ -42,6 +42,8 @@ #include "chrome/common/ipc_message_utils.h" #include "prtypes.h" +#include "nsID.h" +#include "nsMemory.h" #include "nsStringGlue.h" #include "nsTArray.h" #include "gfx3DMatrix.h" @@ -687,6 +689,48 @@ struct ParamTraits } }; +template<> +struct ParamTraits +{ + typedef nsID paramType; + + static void Write(Message* aMsg, const paramType& aParam) + { + WriteParam(aMsg, aParam.m0); + WriteParam(aMsg, aParam.m1); + WriteParam(aMsg, aParam.m2); + for (unsigned int i = 0; i < NS_ARRAY_LENGTH(aParam.m3); i++) { + WriteParam(aMsg, aParam.m3[i]); + } + } + + static bool Read(const Message* aMsg, void** aIter, paramType* aResult) + { + if(!ReadParam(aMsg, aIter, &(aResult->m0)) || + !ReadParam(aMsg, aIter, &(aResult->m1)) || + !ReadParam(aMsg, aIter, &(aResult->m2))) + return false; + + for (unsigned int i = 0; i < NS_ARRAY_LENGTH(aResult->m3); i++) + if (!ReadParam(aMsg, aIter, &(aResult->m3[i]))) + return false; + + return true; + } + + static void Log(const paramType& aParam, std::wstring* aLog) + { + aLog->append(L"{"); + aLog->append(StringPrintf(L"%8.8X-%4.4X-%4.4X-", + aParam.m0, + aParam.m1, + aParam.m2)); + for (unsigned int i = 0; i < NS_ARRAY_LENGTH(aParam.m3); i++) + aLog->append(StringPrintf(L"%2.2X", aParam.m3[i])); + aLog->append(L"}"); + } +}; + } /* namespace IPC */ #endif /* __IPC_GLUE_IPCMESSAGEUTILS_H__ */