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 373543 e3e1b4922005
parent 373542 d91109b3ea08
child 373544 a781f14e975b
push id32304
push usercbook@mozilla.com
push dateWed, 09 Aug 2017 09:37:21 +0000
treeherdermozilla-central@4c5fbf493763 [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