WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Rebased patch
bug-120160-20131015143138.patch (text/plain), 43.41 KB, created by
Brian Holt
on 2013-10-15 06:31:31 PDT
(
hide
)
Description:
Rebased patch
Filename:
MIME Type:
Creator:
Brian Holt
Created:
2013-10-15 06:31:31 PDT
Size:
43.41 KB
patch
obsolete
>Subversion Revision: 157448 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 21d29830128f440db2ff333a17df38c3b6109b7b..07f9b43c06131da9e30ee7287bd0055fe93ed2ac 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,17 @@ >+2013-10-15 Brian Holt <brian.holt@samsung.com> >+ >+ [GTK] Add WebKit2 API for TLS errors >+ https://bugs.webkit.org/show_bug.cgi?id=120160 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Added a new constructor for CertificateInfo under Soup. >+ >+ * platform/network/CertificateInfo.h: >+ * platform/network/soup/CertificateInfoSoup.cpp: >+ (WebCore::CertificateInfo::CertificateInfo): New constructor using >+ GTlsCertificateFlags and GTlsCertificate. >+ > 2013-10-15 Andreas Kling <akling@apple.com> > > RenderText should cache RenderStyle in locals more. >diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog >index a94c32354890cc65f74f87ee9acb19fbf1c0943d..e6225e971856025c95ed9237e46f1df0f63d40a8 100644 >--- a/Source/WebKit2/ChangeLog >+++ b/Source/WebKit2/ChangeLog >@@ -1,3 +1,55 @@ >+2013-10-15 Brian Holt <brian.holt@samsung.com> >+ >+ [GTK] Add WebKit2 API for TLS errors >+ https://bugs.webkit.org/show_bug.cgi?id=120160 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add a new signal load-failed-with-tls-errors that is emitted with >+ a WebKitCertificateInfo boxed type to allow users to deal with TLS >+ errors. A new API is exposed in WebKitWebContext to allow >+ exceptions for TLS errors on a given host. >+ >+ * GNUmakefile.list.am: >+ * PlatformGTK.cmake: >+ * UIProcess/API/gtk/WebKitCertificateInfo.cpp: Added. >+ (webkitCertificateInfoGetCertificateInfo): >+ (webkit_certificate_info_copy): >+ (webkit_certificate_info_free): >+ (webkit_certificate_info_get_tls_certificate): >+ (webkit_certificate_info_get_tls_errors): >+ * UIProcess/API/gtk/WebKitCertificateInfo.h: Added. >+ * UIProcess/API/gtk/WebKitCertificateInfoPrivate.h: Added. >+ (_WebKitCertificateInfo::_WebKitCertificateInfo): >+ * UIProcess/API/gtk/WebKitWebContext.cpp: >+ (webkit_web_context_allow_tls_certificate_for_host): Support TLS >+ exceptions for a given host. >+ * UIProcess/API/gtk/WebKitWebContext.h: >+ * UIProcess/API/gtk/WebKitWebView.cpp: >+ (webkit_web_view_class_init): Added new signal. >+ (webkitWebViewLoadFailedWithTLSErrors): Emit new signal with >+ WebKitCertificateInfo and host. >+ * UIProcess/API/gtk/WebKitWebView.h: >+ * UIProcess/API/gtk/WebKitWebViewPrivate.h: >+ * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: >+ * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: >+ * UIProcess/API/gtk/docs/webkit2gtk.types: >+ * UIProcess/API/gtk/tests/TestSSL.cpp: >+ (testLoadFailedWithTLSErrors): >+ (httpsServerCallback): >+ (beforeAll): Added new test. >+ * UIProcess/API/gtk/webkit2.h: >+ * UIProcess/API/gtk/webkit2marshal.list: >+ * UIProcess/WebContext.cpp: >+ (WebKit::WebContext::allowSpecificHTTPSCertificateForHost): Send >+ message to WebProcess to allow a certificate and host pair. >+ * WebProcess/WebProcess.h: >+ * WebProcess/WebProcess.messages.in: New message to tell >+ WebProcess to allow a specific TLS certificate for a given host. >+ * WebProcess/soup/WebProcessSoup.cpp: >+ (WebKit::WebProcess::allowSpecificHTTPSCertificateForHost): Allow >+ certificate and host pair. >+ > 2013-10-15 Csaba Osztrogonác <ossy@webkit.org> > > [Soup] Unreviewed buildfix after r157445 for ENABLE(NETWORK_PROCESS) builds. >diff --git a/Source/WebCore/platform/network/CertificateInfo.h b/Source/WebCore/platform/network/CertificateInfo.h >index ec9930e8761db91b1945803041b7f2250a353622..c2b40d75bd6e044a8b6e3e5322f9ceda455af9d4 100644 >--- a/Source/WebCore/platform/network/CertificateInfo.h >+++ b/Source/WebCore/platform/network/CertificateInfo.h >@@ -43,6 +43,8 @@ public: > > #if PLATFORM(MAC) > explicit CertificateInfo(CFArrayRef certificateChain); >+#elif USE(SOUP) >+ explicit CertificateInfo(GTlsCertificateFlags, GTlsCertificate*); > #endif > > ~CertificateInfo(); >diff --git a/Source/WebCore/platform/network/soup/CertificateInfoSoup.cpp b/Source/WebCore/platform/network/soup/CertificateInfoSoup.cpp >index 162a7781ad1f7c044516e8f8f05b61662cde529d..92bcfa7ae96229e311a20dac4d50523ac1bfd565 100644 >--- a/Source/WebCore/platform/network/soup/CertificateInfoSoup.cpp >+++ b/Source/WebCore/platform/network/soup/CertificateInfoSoup.cpp >@@ -34,6 +34,12 @@ CertificateInfo::CertificateInfo() > { > } > >+CertificateInfo::CertificateInfo(GTlsCertificateFlags tlsErrors, GTlsCertificate* certificate) >+ : m_certificate(certificate) >+ , m_tlsErrors(tlsErrors) >+{ >+} >+ > CertificateInfo::~CertificateInfo() > { > } >diff --git a/Source/WebKit2/GNUmakefile.list.am b/Source/WebKit2/GNUmakefile.list.am >index 706fe990ea1d4e9576c761c2872a08616c636764..ccf0437cc960c5cc804da2af94e9d8eab89f5cdc 100644 >--- a/Source/WebKit2/GNUmakefile.list.am >+++ b/Source/WebKit2/GNUmakefile.list.am >@@ -100,6 +100,7 @@ webkit2gtk_h_api += \ > $(WebKit2)/UIProcess/API/gtk/WebKitAuthenticationRequest.h \ > $(WebKit2)/UIProcess/API/gtk/WebKitBackForwardList.h \ > $(WebKit2)/UIProcess/API/gtk/WebKitBackForwardListItem.h \ >+ $(WebKit2)/UIProcess/API/gtk/WebKitCertificateInfo.h \ > $(WebKit2)/UIProcess/API/gtk/WebKitContextMenu.h \ > $(WebKit2)/UIProcess/API/gtk/WebKitContextMenuActions.h \ > $(WebKit2)/UIProcess/API/gtk/WebKitContextMenuItem.h \ >@@ -673,6 +674,9 @@ webkit2_sources += \ > Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.h \ > Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.cpp \ > Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListPrivate.h \ >+ Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp \ >+ Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.h \ >+ Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfoPrivate.h \ > Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp \ > Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.h \ > Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuPrivate.h \ >diff --git a/Source/WebKit2/PlatformGTK.cmake b/Source/WebKit2/PlatformGTK.cmake >index 41e5971f7ef018e0c9693fba34928661306a4abf..a2eb057549a9e2917a9623dd0830509c76b17ca8 100644 >--- a/Source/WebKit2/PlatformGTK.cmake >+++ b/Source/WebKit2/PlatformGTK.cmake >@@ -86,6 +86,9 @@ list(APPEND WebKit2_SOURCES > UIProcess/API/gtk/WebKitBackForwardListItem.cpp > UIProcess/API/gtk/WebKitBackForwardListItem.h > UIProcess/API/gtk/WebKitBackForwardListPrivate.h >+ UIProcess/API/gtk/WebKitCertificateInfo.cpp >+ UIProcess/API/gtk/WebKitCertificateInfo.h >+ UIProcess/API/gtk/WebKitCertificateInfoPrivate.h > UIProcess/API/gtk/WebKitContextMenu.cpp > UIProcess/API/gtk/WebKitContextMenu.h > UIProcess/API/gtk/WebKitContextMenuActions.cpp >@@ -285,6 +288,7 @@ list(APPEND WebKit2_SOURCES > set(WebKit2_INSTALLED_HEADERS > ${WEBKIT2_DIR}/UIProcess/API/gtk/WebKitBackForwardList.h > ${WEBKIT2_DIR}/UIProcess/API/gtk/WebKitBackForwardListItem.h >+ ${WEBKIT2_DIR}/UIProcess/API/gtk/WebKitCertificateInfo.h > ${WEBKIT2_DIR}/UIProcess/API/gtk/WebKitContextMenu.h > ${WEBKIT2_DIR}/UIProcess/API/gtk/WebKitContextMenuActions.h > ${WEBKIT2_DIR}/UIProcess/API/gtk/WebKitContextMenuItem.h >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..12df1aaca802579fb85a63d0f01a5f69015f0b87 >--- /dev/null >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp >@@ -0,0 +1,120 @@ >+/* >+ * Copyright (C) 2013 Samsung Electronics Inc. All rights reserved. >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+ * License as published by the Free Software Foundation; either >+ * version 2 of the License, or (at your option) any later version. >+ * >+ * This library is distributed in the hope that it will be useful, >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ * Library General Public License for more details. >+ * >+ * You should have received a copy of the GNU Library General Public License >+ * along with this library; see the file COPYING.LIB. If not, write to >+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, >+ * Boston, MA 02110-1301, USA. >+ */ >+ >+#include "config.h" >+#include "WebKitCertificateInfo.h" >+ >+#include "WebKitCertificateInfoPrivate.h" >+#include <wtf/text/CString.h> >+ >+using namespace WebKit; >+using namespace WebCore; >+ >+/** >+ * SECTION: WebKitCertificateInfo >+ * @Short_description: Boxed type to encapsulate TLS certificate information >+ * @Title: WebKitCertificateInfo >+ * @See_also: #WebKitWebView, #WebKitWebContext >+ * >+ * When a client loads a page over HTTPS where there is an underlying TLS error >+ * WebKit will fire a #WebKitWebView::load-failed-with-tls-errors signal with a >+ * #WebKitCertificateInfo and the host of the failing URI. >+ * >+ * To handle this signal asynchronously you should make a copy of the >+ * #WebKitCertificateInfo with webkit_certificate_info_copy(). >+ */ >+ >+G_DEFINE_BOXED_TYPE(WebKitCertificateInfo, webkit_certificate_info, webkit_certificate_info_copy, webkit_certificate_info_free) >+ >+const CertificateInfo& webkitCertificateInfoGetCertificateInfo(WebKitCertificateInfo* info) >+{ >+ ASSERT(info); >+ return info->certificateInfo; >+} >+ >+/** >+ * webkit_certificate_info_copy: >+ * @info: a #WebKitCertificateInfo >+ * >+ * Make a copy of the #WebKitCertificateInfo. >+ * >+ * Returns: (transfer full): A copy of passed in #WebKitCertificateInfo. >+ * >+ * Since: 2.4 >+ */ >+WebKitCertificateInfo* webkit_certificate_info_copy(WebKitCertificateInfo* info) >+{ >+ g_return_val_if_fail(info, 0); >+ >+ WebKitCertificateInfo* copy = g_slice_new0(WebKitCertificateInfo); >+ new (copy) WebKitCertificateInfo(info); >+ return copy; >+} >+ >+/** >+ * webkit_certificate_info_free: >+ * @info: a #WebKitCertificateInfo >+ * >+ * Free the #WebKitCertificateInfo. >+ * >+ * Since: 2.4 >+ */ >+void webkit_certificate_info_free(WebKitCertificateInfo* info) >+{ >+ g_return_if_fail(info); >+ >+ info->~WebKitCertificateInfo(); >+ g_slice_free(WebKitCertificateInfo, info); >+} >+ >+/** >+ * webkit_certificate_info_get_tls_certificate: >+ * @info: a #WebKitCertificateInfo >+ * >+ * Get the #GTlsCertificate associated with this >+ * #WebKitCertificateInfo. >+ * >+ * Returns: (transfer none): The certificate of @info. >+ * >+ * Since: 2.4 >+ */ >+GTlsCertificate* webkit_certificate_info_get_tls_certificate(WebKitCertificateInfo *info) >+{ >+ g_return_val_if_fail(info, 0); >+ >+ return info->certificateInfo.certificate(); >+} >+ >+/** >+ * webkit_certificate_info_get_tls_errors: >+ * @info: a #WebKitCertificateInfo >+ * >+ * Get the #GTlsCertificateFlags verification status associated with this >+ * #WebKitCertificateInfo. >+ * >+ * Returns: The verification status of @info. >+ * >+ * Since: 2.4 >+ */ >+GTlsCertificateFlags webkit_certificate_info_get_tls_errors(WebKitCertificateInfo *info) >+{ >+ g_return_val_if_fail(info, static_cast<GTlsCertificateFlags>(0)); >+ >+ return info->certificateInfo.tlsErrors(); >+} >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.h b/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.h >new file mode 100644 >index 0000000000000000000000000000000000000000..eef16405e83cf612b3abe03fa66a61d5acb38fe3 >--- /dev/null >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.h >@@ -0,0 +1,54 @@ >+/* >+ * Copyright (C) 2013 Samsung Electronics Inc. All rights reserved. >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+ * License as published by the Free Software Foundation; either >+ * version 2 of the License, or (at your option) any later version. >+ * >+ * This library is distributed in the hope that it will be useful, >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ * Library General Public License for more details. >+ * >+ * You should have received a copy of the GNU Library General Public License >+ * along with this library; see the file COPYING.LIB. If not, write to >+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, >+ * Boston, MA 02110-1301, USA. >+ */ >+ >+#if !defined(__WEBKIT2_H_INSIDE__) && !defined(WEBKIT2_COMPILATION) >+#error "Only <webkit2/webkit2.h> can be included directly." >+#endif >+ >+#ifndef WebKitCertificateInfo_h >+#define WebKitCertificateInfo_h >+ >+#include <gio/gio.h> >+#include <glib-object.h> >+#include <webkit2/WebKitDefines.h> >+ >+G_BEGIN_DECLS >+ >+#define WEBKIT_TYPE_CERTIFICATE_INFO (webkit_certificate_info_get_type()) >+ >+typedef struct _WebKitCertificateInfo WebKitCertificateInfo; >+ >+WEBKIT_API GType >+webkit_certificate_info_get_type (void); >+ >+WEBKIT_API WebKitCertificateInfo * >+webkit_certificate_info_copy (WebKitCertificateInfo *info); >+ >+WEBKIT_API void >+webkit_certificate_info_free (WebKitCertificateInfo *info); >+ >+WEBKIT_API GTlsCertificate * >+webkit_certificate_info_get_tls_certificate (WebKitCertificateInfo *info); >+ >+WEBKIT_API GTlsCertificateFlags >+webkit_certificate_info_get_tls_errors (WebKitCertificateInfo *info); >+ >+G_END_DECLS >+ >+#endif >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfoPrivate.h b/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfoPrivate.h >new file mode 100644 >index 0000000000000000000000000000000000000000..96a01a82e6ff4e4f2228e7dfb197e29a18e9e823 >--- /dev/null >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfoPrivate.h >@@ -0,0 +1,43 @@ >+/* >+ * Copyright (C) 2013 Samsung Electronics Inc. All rights reserved. >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+ * License as published by the Free Software Foundation; either >+ * version 2 of the License, or (at your option) any later version. >+ * >+ * This library is distributed in the hope that it will be useful, >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ * Library General Public License for more details. >+ * >+ * You should have received a copy of the GNU Library General Public License >+ * along with this library; see the file COPYING.LIB. If not, write to >+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, >+ * Boston, MA 02110-1301, USA. >+ */ >+ >+#ifndef WebKitCertificateInfoPrivate_h >+#define WebKitCertificateInfoPrivate_h >+ >+#include "CertificateInfo.h" >+#include "WebKitCertificateInfo.h" >+#include "WebKitPrivate.h" >+ >+struct _WebKitCertificateInfo { >+ _WebKitCertificateInfo(GTlsCertificateFlags tlsErrors, GTlsCertificate* certificate) >+ : certificateInfo(tlsErrors, certificate) >+ { >+ } >+ >+ _WebKitCertificateInfo(WebKitCertificateInfo* info) >+ : certificateInfo(info->certificateInfo) >+ { >+ } >+ >+ WebCore::CertificateInfo certificateInfo; >+}; >+ >+const WebCore::CertificateInfo& webkitCertificateInfoGetCertificateInfo(WebKitCertificateInfo*); >+ >+#endif // WebKitCertificateInfoPrivate_h >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp >index d2c8bbdf9b544ceb45218f03e936e72540cf7d5e..22f4e5490aaf3eee48e214c1b8d3b430656d00aa 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp >@@ -20,8 +20,10 @@ > #include "config.h" > #include "WebKitWebContext.h" > >+#include "WebCertificateInfo.h" > #include "WebCookieManagerProxy.h" > #include "WebGeolocationManagerProxy.h" >+#include "WebKitCertificateInfoPrivate.h" > #include "WebKitCookieManagerPrivate.h" > #include "WebKitDownloadClient.h" > #include "WebKitDownloadPrivate.h" >@@ -807,6 +809,24 @@ void webkit_web_context_prefetch_dns(WebKitWebContext* context, const char* host > context->priv->context->postMessageToInjectedBundle(String::fromUTF8("PrefetchDNS"), ImmutableDictionary::adopt(message).get()); > } > >+/** >+ * webkit_web_context_allow_tls_certificate_for_host: >+ * @context: a #WebKitWebContext >+ * @info: a #WebKitCertificateInfo >+ * @host: the host for which a certificate is to be allowed >+ * >+ * Ignore further TLS errors on the @host for the certificate present in @info. >+ */ >+void webkit_web_context_allow_tls_certificate_for_host(WebKitWebContext* context, WebKitCertificateInfo* info, const gchar* host) >+{ >+ g_return_if_fail(WEBKIT_IS_WEB_CONTEXT(context)); >+ g_return_if_fail(info); >+ g_return_if_fail(host); >+ >+ RefPtr<WebCertificateInfo> webCertificateInfo = WebCertificateInfo::create(webkitCertificateInfoGetCertificateInfo(info)); >+ context->priv->context->allowSpecificHTTPSCertificateForHost(webCertificateInfo.get(), String::fromUTF8(host)); >+} >+ > WebKitDownload* webkitWebContextGetOrCreateDownload(DownloadProxy* downloadProxy) > { > GRefPtr<WebKitDownload> download = downloadsMap().get(downloadProxy); >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h >index dd38c1d375be9650b94b853fd31128aa2737a6af..1379fc3a3622791baf844c96dbca7837adb33510 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h >@@ -25,6 +25,7 @@ > #define WebKitWebContext_h > > #include <glib-object.h> >+#include <webkit2/WebKitCertificateInfo.h> > #include <webkit2/WebKitCookieManager.h> > #include <webkit2/WebKitDefines.h> > #include <webkit2/WebKitDownload.h> >@@ -64,7 +65,7 @@ typedef enum { > /** > * WebKitTLSErrorsPolicy: > * @WEBKIT_TLS_ERRORS_POLICY_IGNORE: Ignore TLS errors. >- * @WEBKIT_TLS_ERRORS_POLICY_FAIL: TLS errors make the load to finish with an error. >+ * @WEBKIT_TLS_ERRORS_POLICY_FAIL: TLS errors make the load finish with an error and a notification signal. > * > * Enum values used to denote the TLS errors policy. > */ >@@ -199,6 +200,11 @@ WEBKIT_API void > webkit_web_context_set_disk_cache_directory (WebKitWebContext *context, > const gchar *directory); > >+WEBKIT_API void >+webkit_web_context_allow_tls_certificate_for_host (WebKitWebContext *context, >+ WebKitCertificateInfo *info, >+ const gchar *host); >+ > G_END_DECLS > > #endif >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp >index 902012fd21c1670c0019919ddc02f382ac2225b6..8d9342fede76f42a9ff47d2b9f13b4ba98ba3524 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp >@@ -29,6 +29,7 @@ > #include "WebKitAuthenticationDialog.h" > #include "WebKitAuthenticationRequestPrivate.h" > #include "WebKitBackForwardListPrivate.h" >+#include "WebKitCertificateInfoPrivate.h" > #include "WebKitContextMenuClient.h" > #include "WebKitContextMenuItemPrivate.h" > #include "WebKitContextMenuPrivate.h" >@@ -89,6 +90,7 @@ using namespace WebCore; > enum { > LOAD_CHANGED, > LOAD_FAILED, >+ LOAD_FAILED_WITH_TLS_ERRORS, > > CREATE, > READY_TO_SHOW, >@@ -847,6 +849,36 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) > G_TYPE_POINTER); > > /** >+ * WebKitWebView::load-failed-with-tls-errors: >+ * @web_view: the #WebKitWebView on which the signal is emitted >+ * @info: a #WebKitCertificateInfo >+ * @host: the host on which the error occurred >+ * >+ * Emitted when a TLS error occurs during a load operation. The @info >+ * object contains information about the error such as the #GTlsCertificate >+ * and the #GTlsCertificateFlags. To allow an exception for this certificate >+ * and this host use webkit_web_context_allow_tls_certificate_for_host(). >+ * >+ * To handle this signal asynchronously you should copy the #WebKitCertificateInfo >+ * with webkit_certificate_info_copy() and return %TRUE. >+ * >+ * Returns: %TRUE to stop other handlers from being invoked for the event. >+ * %FALSE to propagate the event further. >+ * >+ * Since: 2.4 >+ */ >+ signals[LOAD_FAILED_WITH_TLS_ERRORS] = >+ g_signal_new("load-failed-with-tls-errors", >+ G_TYPE_FROM_CLASS(webViewClass), >+ G_SIGNAL_RUN_LAST, >+ G_STRUCT_OFFSET(WebKitWebViewClass, load_failed_with_tls_errors), >+ g_signal_accumulator_true_handled, 0 /* accumulator data */, >+ webkit_marshal_BOOLEAN__BOXED_STRING, >+ G_TYPE_BOOLEAN, 2, /* number of parameters */ >+ WEBKIT_TYPE_CERTIFICATE_INFO | G_SIGNAL_TYPE_STATIC_SCOPE, >+ G_TYPE_STRING); >+ >+ /** > * WebKitWebView::create: > * @web_view: the #WebKitWebView on which the signal is emitted > * >@@ -1509,15 +1541,19 @@ void webkitWebViewLoadFailed(WebKitWebView* webView, WebKitLoadEvent loadEvent, > g_signal_emit(webView, signals[LOAD_CHANGED], 0, WEBKIT_LOAD_FINISHED); > } > >-void webkitWebViewLoadFailedWithTLSErrors(WebKitWebView* webView, const char* failingURI, GError *error, GTlsCertificateFlags tlsErrors, GTlsCertificate* certificate) >+void webkitWebViewLoadFailedWithTLSErrors(WebKitWebView* webView, const char* failingURI, GError* error, GTlsCertificateFlags tlsErrors, GTlsCertificate* certificate) > { > webkitWebViewSetIsLoading(webView, false); > webkitWebViewCancelAuthenticationRequest(webView); > > WebKitTLSErrorsPolicy tlsErrorsPolicy = webkit_web_context_get_tls_errors_policy(webView->priv->context); > if (tlsErrorsPolicy == WEBKIT_TLS_ERRORS_POLICY_FAIL) { >- webkitWebViewLoadFailed(webView, WEBKIT_LOAD_STARTED, failingURI, error); >- return; >+ GOwnPtr<SoupURI> soupURI(soup_uri_new(failingURI)); >+ WebKitCertificateInfo info(tlsErrors, certificate); >+ gboolean returnValue; >+ g_signal_emit(webView, signals[LOAD_FAILED_WITH_TLS_ERRORS], 0, &info, soupURI->host, &returnValue); >+ if (!returnValue) >+ g_signal_emit(webView, signals[LOAD_FAILED], 0, WEBKIT_LOAD_STARTED, failingURI, error, &returnValue); > } > > g_signal_emit(webView, signals[LOAD_CHANGED], 0, WEBKIT_LOAD_FINISHED); >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h >index a4d6e439eca726e90637613216a51477eb7ae97d..6e434b5f4b1af2c778b826e29b762f9bebdc6bd0 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h >@@ -200,58 +200,60 @@ struct _WebKitWebView { > struct _WebKitWebViewClass { > WebKitWebViewBaseClass parent; > >- void (* load_changed) (WebKitWebView *web_view, >- WebKitLoadEvent load_event); >- gboolean (* load_failed) (WebKitWebView *web_view, >- WebKitLoadEvent load_event, >- const gchar *failing_uri, >- GError *error); >- >- GtkWidget *(* create) (WebKitWebView *web_view); >- void (* ready_to_show) (WebKitWebView *web_view); >- void (* run_as_modal) (WebKitWebView *web_view); >- void (* close) (WebKitWebView *web_view); >- >- gboolean (* script_dialog) (WebKitWebView *web_view, >- WebKitScriptDialog *dialog) ; >- >- gboolean (* decide_policy) (WebKitWebView *web_view, >- WebKitPolicyDecision *decision, >- WebKitPolicyDecisionType type); >- gboolean (* permission_request) (WebKitWebView *web_view, >- WebKitPermissionRequest *permission_request); >- void (* mouse_target_changed) (WebKitWebView *web_view, >- WebKitHitTestResult *hit_test_result, >- guint modifiers); >- gboolean (* print) (WebKitWebView *web_view, >- WebKitPrintOperation *print_operation); >- void (* resource_load_started) (WebKitWebView *web_view, >- WebKitWebResource *resource, >- WebKitURIRequest *request); >- gboolean (* enter_fullscreen) (WebKitWebView *web_view); >- gboolean (* leave_fullscreen) (WebKitWebView *web_view); >- gboolean (* run_file_chooser) (WebKitWebView *web_view, >- WebKitFileChooserRequest *request); >- gboolean (* context_menu) (WebKitWebView *web_view, >- WebKitContextMenu *context_menu, >- GdkEvent *event, >- WebKitHitTestResult *hit_test_result); >- void (* context_menu_dismissed) (WebKitWebView *web_view); >- void (* submit_form) (WebKitWebView *web_view, >- WebKitFormSubmissionRequest *request); >- void (* insecure_content_detected) (WebKitWebView *web_view, >- WebKitInsecureContentEvent event); >- gboolean (* web_process_crashed) (WebKitWebView *web_view); >- >- gboolean (* authenticate) (WebKitWebView *web_view, >- WebKitAuthenticationRequest *request); >+ void (* load_changed) (WebKitWebView *web_view, >+ WebKitLoadEvent load_event); >+ gboolean (* load_failed) (WebKitWebView *web_view, >+ WebKitLoadEvent load_event, >+ const gchar *failing_uri, >+ GError *error); >+ >+ GtkWidget *(* create) (WebKitWebView *web_view); >+ void (* ready_to_show) (WebKitWebView *web_view); >+ void (* run_as_modal) (WebKitWebView *web_view); >+ void (* close) (WebKitWebView *web_view); >+ >+ gboolean (* script_dialog) (WebKitWebView *web_view, >+ WebKitScriptDialog *dialog) ; >+ >+ gboolean (* decide_policy) (WebKitWebView *web_view, >+ WebKitPolicyDecision *decision, >+ WebKitPolicyDecisionType type); >+ gboolean (* permission_request) (WebKitWebView *web_view, >+ WebKitPermissionRequest *permission_request); >+ void (* mouse_target_changed) (WebKitWebView *web_view, >+ WebKitHitTestResult *hit_test_result, >+ guint modifiers); >+ gboolean (* print) (WebKitWebView *web_view, >+ WebKitPrintOperation *print_operation); >+ void (* resource_load_started) (WebKitWebView *web_view, >+ WebKitWebResource *resource, >+ WebKitURIRequest *request); >+ gboolean (* enter_fullscreen) (WebKitWebView *web_view); >+ gboolean (* leave_fullscreen) (WebKitWebView *web_view); >+ gboolean (* run_file_chooser) (WebKitWebView *web_view, >+ WebKitFileChooserRequest *request); >+ gboolean (* context_menu) (WebKitWebView *web_view, >+ WebKitContextMenu *context_menu, >+ GdkEvent *event, >+ WebKitHitTestResult *hit_test_result); >+ void (* context_menu_dismissed) (WebKitWebView *web_view); >+ void (* submit_form) (WebKitWebView *web_view, >+ WebKitFormSubmissionRequest *request); >+ void (* insecure_content_detected) (WebKitWebView *web_view, >+ WebKitInsecureContentEvent event); >+ gboolean (* web_process_crashed) (WebKitWebView *web_view); >+ >+ gboolean (* authenticate) (WebKitWebView *web_view, >+ WebKitAuthenticationRequest *request); >+ gboolean (* load_failed_with_tls_errors) (WebKitWebView *web_view, >+ WebKitCertificateInfo *info, >+ const gchar *host); > void (*_webkit_reserved0) (void); > void (*_webkit_reserved1) (void); > void (*_webkit_reserved2) (void); > void (*_webkit_reserved3) (void); > void (*_webkit_reserved4) (void); > void (*_webkit_reserved5) (void); >- void (*_webkit_reserved6) (void); > }; > > WEBKIT_API GType >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h >index eb1f27db298cae38781b5db4248a3d6b87da4ba1..fd0aed210a47caa1972d1c3621dad6c76ffa37a9 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h >@@ -33,7 +33,7 @@ > > void webkitWebViewLoadChanged(WebKitWebView*, WebKitLoadEvent); > void webkitWebViewLoadFailed(WebKitWebView*, WebKitLoadEvent, const char* failingURI, GError*); >-void webkitWebViewLoadFailedWithTLSErrors(WebKitWebView*, const char* failingURI, GError *, GTlsCertificateFlags, GTlsCertificate*); >+void webkitWebViewLoadFailedWithTLSErrors(WebKitWebView*, const char* failingURI, GError*, GTlsCertificateFlags, GTlsCertificate*); > void webkitWebViewSetEstimatedLoadProgress(WebKitWebView*, double estimatedLoadProgress); > void webkitWebViewSetTitle(WebKitWebView*, const CString&); > void webkitWebViewUpdateURI(WebKitWebView*); >diff --git a/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml b/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml >index 76d010412682e87f4f7c9319acf34cd502ee1364..e3cf9a68c6b39d179ada559caa48dafc11af5c21 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml >+++ b/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml >@@ -43,6 +43,7 @@ > <xi:include href="xml/WebKitFormSubmissionRequest.xml"/> > <xi:include href="xml/WebKitSecurityManager.xml"/> > <xi:include href="xml/WebKitWebViewGroup.xml"/> >+ <xi:include href="xml/WebKitCertificateInfo.xml"/> > </chapter> > > <chapter> >@@ -61,6 +62,11 @@ > <title>Index of new symbols in 2.2</title> > <xi:include href="xml/api-index-2.2.xml"><xi:fallback /></xi:include> > </index> >- >+ >+ <index id="api-index-2-4" role="2.4"> >+ <title>Index of new symbols in 2.4</title> >+ <xi:include href="xml/api-index-2.4.xml"><xi:fallback /></xi:include> >+ </index> >+ > <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include> > </book> >diff --git a/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt b/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt >index e8be61fe4e3a4f2126277ff322e3999783cdbe38..805763b1f2438244dd32b2f0e847f6939755609a 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt >+++ b/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt >@@ -48,6 +48,7 @@ webkit_web_context_get_tls_errors_policy > webkit_web_context_set_web_extensions_directory > webkit_web_context_prefetch_dns > webkit_web_context_set_disk_cache_directory >+webkit_web_context_allow_tls_certificate_for_host > > <SUBSECTION URI Scheme> > WebKitURISchemeRequestCallback >@@ -1097,3 +1098,18 @@ WEBKIT_SCRIPT_WORLD_GET_CLASS > WebKitScriptWorldPrivate > webkit_script_world_get_type > </SECTION> >+ >+<SECTION> >+<FILE>WebKitCertificateInfo</FILE> >+WebKitCertificateInfo >+webkit_certificate_info_copy >+webkit_certificate_info_free >+webkit_certificate_info_get_tls_certificate >+webkit_certificate_info_get_tls_errors >+ >+<SUBSECTION Standard> >+WEBKIT_TYPE_CERTIFICATE_INFO >+ >+<SUBSECTION Private> >+webkit_certificate_info_get_type >+</SECTION> >diff --git a/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk.types b/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk.types >index 5b1ea3c1fde46d3f167cf701323f8fc00840f29e..4b583bad9b0a7a6ba102f7322e4c707af65c9c61 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk.types >+++ b/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk.types >@@ -27,3 +27,4 @@ webkit_web_page_get_type > webkit_authentication_request_get_type > webkit_credential_get_type > webkit_frame_get_type >+webkit_certificate_info_get_type >diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp >index db6ccc8522d151cb9c495d9d43f3e96f65252a6e..e3180c5bc8c92487bc134a164bbd4df2b82b7a42 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp >+++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp >@@ -28,6 +28,8 @@ static WebKitTestServer* kHttpServer; > > static const char* indexHTML = "<html><body>Testing WebKit2GTK+ SSL</body></htmll>"; > static const char* insecureContentHTML = "<html><script src=\"%s\"></script><body><p>Text + image <img src=\"%s\" align=\"right\"/></p></body></html>"; >+static const char TLSExpectedSuccessTitle[] = "WebKit2Gtk+ TLS permission test"; >+static const char TLSSuccessHTMLString[] = "<html><head><title>WebKit2Gtk+ TLS permission test</title></head><body></body></html>"; > > class SSLTest: public LoadTrackingTest { > public: >@@ -132,6 +134,85 @@ static void testTLSErrorsPolicy(SSLTest* test, gconstpointer) > g_assert(!test->m_loadEvents.contains(LoadTrackingTest::LoadCommitted)); > } > >+class TLSErrorsTest: public SSLTest { >+public: >+ MAKE_GLIB_TEST_FIXTURE(TLSErrorsTest); >+ >+ TLSErrorsTest() >+ { >+ g_signal_connect(m_webView, "load-failed-with-tls-errors", G_CALLBACK(runLoadFailedWithTLSErrorsCallback), this); >+ } >+ >+ ~TLSErrorsTest() >+ { >+ g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this); >+ if (m_certificateInfo) >+ webkit_certificate_info_free(m_certificateInfo); >+ } >+ >+ static gboolean runLoadFailedWithTLSErrorsCallback(WebKitWebView*, WebKitCertificateInfo* info, const char* host, TLSErrorsTest* test) >+ { >+ test->runLoadFailedWithTLSErrors(info, host); >+ return TRUE; >+ } >+ >+ void runLoadFailedWithTLSErrors(WebKitCertificateInfo* info, const char* host) >+ { >+ if (m_certificateInfo) >+ webkit_certificate_info_free(m_certificateInfo); >+ m_certificateInfo = webkit_certificate_info_copy(info); >+ m_host.set(g_strdup(host)); >+ g_main_loop_quit(m_mainLoop); >+ } >+ >+ void waitUntilLoadFailedWithTLSErrors() >+ { >+ g_main_loop_run(m_mainLoop); >+ } >+ >+ WebKitCertificateInfo* certificateInfo() >+ { >+ return m_certificateInfo; >+ } >+ >+ const char* host() >+ { >+ return m_host.get(); >+ } >+ >+private: >+ WebKitCertificateInfo* m_certificateInfo; >+ GOwnPtr<char> m_host; >+}; >+ >+static void testLoadFailedWithTLSErrors(TLSErrorsTest* test, gconstpointer) >+{ >+ WebKitWebContext* context = webkit_web_view_get_context(test->m_webView); >+ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL); >+ >+ // The load-failed-with-tls-errors signal should be emitted when there is a TLS failure. >+ test->loadURI(kHttpsServer->getURIForPath("/test-tls/").data()); >+ test->waitUntilLoadFailedWithTLSErrors(); >+ // Test the WebKitCertificateInfo API. >+ g_assert(G_IS_TLS_CERTIFICATE(webkit_certificate_info_get_tls_certificate(test->certificateInfo()))); >+ g_assert_cmpuint(webkit_certificate_info_get_tls_errors(test->certificateInfo()), ==, G_TLS_CERTIFICATE_UNKNOWN_CA); >+ g_assert_cmpstr(test->host(), ==, soup_uri_get_host(kHttpsServer->baseURI())); >+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted); >+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadFinished); >+ >+ // Test allowing an exception for this certificate on this host. >+ webkit_web_context_allow_tls_certificate_for_host(context, test->certificateInfo(), test->host()); >+ // The page should now load without errors. >+ test->loadURI(kHttpsServer->getURIForPath("/test-tls/").data()); >+ test->waitUntilLoadFinished(); >+ >+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted); >+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadCommitted); >+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished); >+ g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, TLSExpectedSuccessTitle); >+} >+ >+ > static void httpsServerCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer) > { > if (message->method != SOUP_METHOD_GET) { >@@ -148,6 +229,10 @@ static void httpsServerCallback(SoupServer* server, SoupMessage* message, const > soup_message_body_append(message->response_body, SOUP_MEMORY_COPY, responseHTML.get(), strlen(responseHTML.get())); > soup_message_set_status(message, SOUP_STATUS_OK); > soup_message_body_complete(message->response_body); >+ } else if (g_str_equal(path, "/test-tls/")) { >+ soup_message_set_status(message, SOUP_STATUS_OK); >+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, TLSSuccessHTMLString, strlen(TLSSuccessHTMLString)); >+ soup_message_body_complete(message->response_body); > } else > soup_message_set_status(message, SOUP_STATUS_NOT_FOUND); > } >@@ -191,7 +276,11 @@ void beforeAll() > > SSLTest::add("WebKitWebView", "ssl", testSSL); > InsecureContentTest::add("WebKitWebView", "insecure-content", testInsecureContent); >- SSLTest::add("WebKitWebContext", "tls-errors-policy", testTLSErrorsPolicy); >+ // In this case the order of the tests does matter because tls-errors-policy tests the default policy, >+ // and expects that no exception will have been added for this certificate and host pair as is >+ // done in the tls-permission-request test. >+ SSLTest::add("WebKitWebView", "tls-errors-policy", testTLSErrorsPolicy); >+ TLSErrorsTest::add("WebKitWebView", "load-failed-with-tls-errors", testLoadFailedWithTLSErrors); > } > > void afterAll() >diff --git a/Source/WebKit2/UIProcess/API/gtk/webkit2.h b/Source/WebKit2/UIProcess/API/gtk/webkit2.h >index 70e3b4330593ef6d0fd788ba2e9331f420f89786..8d8219903998d95f3e599e816d09cc486067565c 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/webkit2.h >+++ b/Source/WebKit2/UIProcess/API/gtk/webkit2.h >@@ -26,6 +26,7 @@ > #include <webkit2/WebKitAuthenticationRequest.h> > #include <webkit2/WebKitBackForwardList.h> > #include <webkit2/WebKitBackForwardListItem.h> >+#include <webkit2/WebKitCertificateInfo.h> > #include <webkit2/WebKitContextMenu.h> > #include <webkit2/WebKitContextMenuActions.h> > #include <webkit2/WebKitContextMenuItem.h> >diff --git a/Source/WebKit2/UIProcess/API/gtk/webkit2marshal.list b/Source/WebKit2/UIProcess/API/gtk/webkit2marshal.list >index 420766ea7f15323aa2bde71d67416f84aa4b40db..e1cfe07216d39b0e98d604771be062965d2687f2 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/webkit2marshal.list >+++ b/Source/WebKit2/UIProcess/API/gtk/webkit2marshal.list >@@ -1,4 +1,5 @@ > BOOLEAN:BOXED >+BOOLEAN:BOXED,STRING > BOOLEAN:ENUM,STRING,POINTER > BOOLEAN:OBJECT > BOOLEAN:OBJECT,BOXED,OBJECT >diff --git a/Source/WebKit2/UIProcess/WebContext.cpp b/Source/WebKit2/UIProcess/WebContext.cpp >index 95d3bc7e8c2e3c2b2b4ff93aea897fc565d21fa2..d07a5c1587c8b6ead45c15eb4246af74703102f9 100644 >--- a/Source/WebKit2/UIProcess/WebContext.cpp >+++ b/Source/WebKit2/UIProcess/WebContext.cpp >@@ -1071,10 +1071,15 @@ void WebContext::allowSpecificHTTPSCertificateForHost(const WebCertificateInfo* > return; > } > #else >+#if USE(SOUP) >+ m_processes[0]->send(Messages::WebProcess::AllowSpecificHTTPSCertificateForHost(certificate->certificateInfo(), host), 0); >+ return; >+#else > UNUSED_PARAM(certificate); > UNUSED_PARAM(host); > #endif >- // FIXME: It's unclear whether we want this SPI to be exposed and used for clients that don't use the NetworkProcess. >+#endif >+ > ASSERT_NOT_REACHED(); > } > >diff --git a/Source/WebKit2/WebProcess/WebProcess.h b/Source/WebKit2/WebProcess/WebProcess.h >index 4165ab18e9fcd07fe32c4c2d6ed27c4b188db7c5..0ccbe6e6eda8b4c68d371eb312313a00afaa7bd4 100644 >--- a/Source/WebKit2/WebProcess/WebProcess.h >+++ b/Source/WebKit2/WebProcess/WebProcess.h >@@ -27,6 +27,7 @@ > #define WebProcess_h > > #include "CacheModel.h" >+#include "CertificateInfo.h" > #include "ChildProcess.h" > #include "DownloadManager.h" > #include "PluginProcessConnectionManager.h" >@@ -160,6 +161,10 @@ public: > > void updateActivePages(); > >+#if !ENABLE(NETWORK_PROCESS) && USE(SOUP) >+ void allowSpecificHTTPSCertificateForHost(const WebCore::CertificateInfo&, const String& host); >+#endif >+ > private: > WebProcess(); > >diff --git a/Source/WebKit2/WebProcess/WebProcess.messages.in b/Source/WebKit2/WebProcess/WebProcess.messages.in >index 59bce6362680c6b2611c0e3e67a4995bbcd47b8c..718d8fa778e901ae85d13e213dffad72119dc6cb 100644 >--- a/Source/WebKit2/WebProcess/WebProcess.messages.in >+++ b/Source/WebKit2/WebProcess/WebProcess.messages.in >@@ -82,4 +82,8 @@ messages -> WebProcess LegacyReceiver { > #if PLATFORM(MAC) > SetProcessSuppressionEnabled(bool flag); > #endif >+ >+#if !ENABLE(NETWORK_PROCESS) && USE(SOUP) >+ AllowSpecificHTTPSCertificateForHost(WebCore::CertificateInfo certificate, WTF::String host) >+#endif > } >diff --git a/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp b/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp >index c7bea92864f1c28a7600c653f019f865ace7e29d..d6be58a2407f5e695b1a1e9f4d9b07e16fd8a84d 100644 >--- a/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp >+++ b/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp >@@ -208,4 +208,10 @@ void WebProcess::setIgnoreTLSErrors(bool ignoreTLSErrors) > WebCore::ResourceHandle::setIgnoreSSLErrors(ignoreTLSErrors); > } > >+#if !ENABLE(NETWORK_PROCESS) >+void WebProcess::allowSpecificHTTPSCertificateForHost(const WebCore::CertificateInfo& certificateInfo, const String& host) >+{ >+ WebCore::ResourceHandle::setClientCertificate(host, certificateInfo.certificate()); >+} >+#endif > } // namespace WebKit
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 120160
:
212175
|
213171
|
213272
|
213695
|
213777
|
213877
|
213881
|
214254
|
214258
|
214557
|
214720
|
214939