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
authorJan Varga <jan.varga@gmail.com>
Tue, 08 Aug 2017 23:01:14 +0200
changeset 373413 e3e1b4922005e00d6067c2b6920d3bc70a801c14
parent 373412 d91109b3ea0819029981440207f7d409516d4658
child 373414 a781f14e975bb4e58c38dc5e86a216647f3a61d7
push id93520
push userjvarga@mozilla.com
push dateTue, 08 Aug 2017 21:35:35 +0000
treeherdermozilla-inbound@042120b49ceb [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersasuth
bugs1350637
milestone57.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
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
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