Bug 1350637 - Part 4: Implement serialization for mozilla::OriginAttributesPattern, so we can use it on the receiver side of IPC without bouncing to the main thread. r=asuth, a=lizzard
authorJan Varga <jan.varga@gmail.com>
Tue, 08 Aug 2017 23:01:14 +0200
changeset 421297 d06e37723df2
parent 421296 b0bed209e7f7
child 421298 9c97e6d93100
push id7647
push userryanvm@gmail.com
push dateMon, 21 Aug 2017 19:15:39 +0000
treeherdermozilla-beta@6a2167880016 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersasuth, lizzard
bugs1350637
milestone56.0
Bug 1350637 - Part 4: Implement serialization for mozilla::OriginAttributesPattern, so we can use it on the receiver side of IPC without bouncing to the main thread. r=asuth, a=lizzard
dom/quota/SerializationHelpers.h
--- a/dom/quota/SerializationHelpers.h
+++ b/dom/quota/SerializationHelpers.h
@@ -5,22 +5,47 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_quota_SerializationHelpers_h
 #define mozilla_dom_quota_SerializationHelpers_h
 
 #include "ipc/IPCMessageUtils.h"
 
 #include "mozilla/dom/quota/PersistenceType.h"
+#include "mozilla/OriginAttributes.h"
 
 namespace IPC {
 
 template <>
 struct ParamTraits<mozilla::dom::quota::PersistenceType> :
   public ContiguousEnumSerializer<
                                mozilla::dom::quota::PersistenceType,
                                mozilla::dom::quota::PERSISTENCE_TYPE_PERSISTENT,
                                mozilla::dom::quota::PERSISTENCE_TYPE_INVALID>
 { };
 
+template <>
+struct ParamTraits<mozilla::OriginAttributesPattern>
+{
+  typedef mozilla::OriginAttributesPattern paramType;
+
+  static void Write(Message* aMsg, const paramType& aParam)
+  {
+    WriteParam(aMsg, aParam.mAppId);
+    WriteParam(aMsg, aParam.mFirstPartyDomain);
+    WriteParam(aMsg, aParam.mInIsolatedMozBrowser);
+    WriteParam(aMsg, aParam.mPrivateBrowsingId);
+    WriteParam(aMsg, aParam.mUserContextId);
+  }
+
+  static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
+  {
+    return ReadParam(aMsg, aIter, &aResult->mAppId) &&
+           ReadParam(aMsg, aIter, &aResult->mFirstPartyDomain) &&
+           ReadParam(aMsg, aIter, &aResult->mInIsolatedMozBrowser) &&
+           ReadParam(aMsg, aIter, &aResult->mPrivateBrowsingId) &&
+           ReadParam(aMsg, aIter, &aResult->mUserContextId);
+  }
+};
+
 } // namespace IPC
 
 #endif // mozilla_dom_quota_SerializationHelpers_h