summaryrefslogtreecommitdiffstats
path: root/Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp')
-rw-r--r--Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp37
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