void Coder<WebCore::CertificateInfo>::encode(Encoder& encoder, const WebCore::CertificateInfo& certificateInfo) { // FIXME: Cocoa CertificateInfo is a CF object tree. Generalize CF type coding so we don't need to use ArgumentCoder here. IPC::ArgumentEncoder argumentEncoder; argumentEncoder << certificateInfo; encoder << static_cast<uint64_t>(argumentEncoder.bufferSize()); encoder.encodeFixedLengthData(argumentEncoder.buffer(), argumentEncoder.bufferSize()); }
static void encodeCFData(Encoder& encoder, CFDataRef data) { uint64_t length = CFDataGetLength(data); const uint8_t* bytePtr = CFDataGetBytePtr(data); encoder << length; encoder.encodeFixedLengthData(bytePtr, length); }
void ArgumentCoder<String>::encode(Encoder& encoder, const String& string) { // Special case the null string. if (string.isNull()) { encoder << std::numeric_limits<uint32_t>::max(); return; } uint32_t length = string.length(); bool is8Bit = string.is8Bit(); encoder << length << is8Bit; if (is8Bit) encoder.encodeFixedLengthData(reinterpret_cast<const uint8_t*>(string.characters8()), length * sizeof(LChar), alignof(LChar)); else encoder.encodeFixedLengthData(reinterpret_cast<const uint8_t*>(string.characters16()), length * sizeof(UChar), alignof(UChar)); }
void ArgumentCoder<CString>::encode(Encoder& encoder, const CString& string) { // Special case the null string. if (string.isNull()) { encoder << std::numeric_limits<uint32_t>::max(); return; } uint32_t length = string.length(); encoder << length; encoder.encodeFixedLengthData(reinterpret_cast<const uint8_t*>(string.data()), length, 1); }
void Coder<WebCore::CertificateInfo>::encode(Encoder& encoder, const WebCore::CertificateInfo& certificateInfo) { if (!certificateInfo.certificate()) { encoder << false; return; } GByteArray* certificateData = 0; g_object_get(G_OBJECT(certificateInfo.certificate()), "certificate", &certificateData, NULL); if (!certificateData) { encoder << false; return; } encoder << true; GRefPtr<GByteArray> certificate = adoptGRef(certificateData); encoder << static_cast<uint64_t>(certificate->len); encoder.encodeFixedLengthData(certificate->data, certificate->len); encoder << static_cast<uint32_t>(certificateInfo.tlsErrors()); }
void Coder<SHA1::Digest>::encode(Encoder& encoder, const SHA1::Digest& digest) { encoder.encodeFixedLengthData(digest.data(), sizeof(digest)); }