/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "TransportSecurityInfoUtils.h" #include "ipc/IPCMessageUtils.h" #include "mozilla/psm/TransportSecurityInfo.h" namespace IPC { void ParamTraits::Write( Message* aMsg, nsITransportSecurityInfo* aParam) { bool nonNull = !!aParam; WriteParam(aMsg, nonNull); if (!nonNull) { return; } aParam->SerializeToIPC(aMsg); } bool ParamTraits::Read( const Message* aMsg, PickleIterator* aIter, RefPtr* aResult) { *aResult = nullptr; bool nonNull = false; if (!ReadParam(aMsg, aIter, &nonNull)) { return false; } if (!nonNull) { return true; } RefPtr info = new mozilla::psm::TransportSecurityInfo(); if (!info->DeserializeFromIPC(aMsg, aIter)) { return false; } *aResult = std::move(info); return true; } void ParamTraits::Write(Message* aMsg, nsIX509Cert* aParam) { bool nonNull = !!aParam; WriteParam(aMsg, nonNull); if (!nonNull) { return; } aParam->SerializeToIPC(aMsg); } bool ParamTraits::Read(const Message* aMsg, PickleIterator* aIter, RefPtr* aResult) { *aResult = nullptr; bool nonNull = false; if (!ReadParam(aMsg, aIter, &nonNull)) { return false; } if (!nonNull) { return true; } RefPtr cert = new nsNSSCertificate(); if (!cert->DeserializeFromIPC(aMsg, aIter)) { return false; } *aResult = std::move(cert); return true; } } // namespace IPC