diff options
Diffstat (limited to 'Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp')
-rw-r--r-- | Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp b/Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp index 9513e90..d659ac4 100644 --- a/Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp +++ b/Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp @@ -28,6 +28,8 @@ #if USE(CFNETWORK) #include "ArgumentCodersCF.h" +#include "PlatformCertificateInfo.h" +#include <WebCore/CertificateCFWin.h> #include <WebKitSystemInterface/WebKitSystemInterface.h> #endif @@ -117,4 +119,39 @@ bool decodeResourceResponse(ArgumentDecoder* decoder, WebCore::ResourceResponse& #endif } +void encodeResourceError(ArgumentEncoder* encoder, const WebCore::ResourceError& resourceError) +{ + encoder->encode(CoreIPC::In(resourceError.domain(), resourceError.errorCode(), resourceError.failingURL(), resourceError.localizedDescription())); + +#if USE(CFNETWORK) + encoder->encode(WebKit::PlatformCertificateInfo(resourceError.certificate())); +#endif +} + +bool decodeResourceError(ArgumentDecoder* decoder, WebCore::ResourceError& resourceError) +{ + String domain; + int errorCode; + String failingURL; + String localizedDescription; + if (!decoder->decode(CoreIPC::Out(domain, errorCode, failingURL, localizedDescription))) + return false; + +#if USE(CFNETWORK) + WebKit::PlatformCertificateInfo certificate; + if (!decoder->decode(certificate)) + return false; + + const Vector<PCCERT_CONTEXT> certificateChain = certificate.certificateChain(); + if (!certificateChain.isEmpty()) { + ASSERT(certificateChain.size() == 1); + resourceError = WebCore::ResourceError(domain, errorCode, failingURL, localizedDescription, WebCore::copyCertificateToData(certificateChain.first()).get()); + return true; + } +#endif + + resourceError = WebCore::ResourceError(domain, errorCode, failingURL, localizedDescription); + return true; +} + } // namespace CoreIPC |