WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
New Patch
bug-120160-20131008180457.patch (text/plain), 43.34 KB, created by
Brian Holt
on 2013-10-08 10:04:54 PDT
(
hide
)
Description:
New Patch
Filename:
MIME Type:
Creator:
Brian Holt
Created:
2013-10-08 10:04:54 PDT
Size:
43.34 KB
patch
obsolete
>Subversion Revision: 157099 >diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog >index 648d101c4743b2059a926df9c0511766b8f3cad7..3f027a6a49ae2bca138e405530694b32bf62982f 100644 >--- a/Source/WebKit2/ChangeLog >+++ b/Source/WebKit2/ChangeLog >@@ -1,3 +1,53 @@ >+2013-10-08 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. >+ (_WebKitCertificateInfo::_WebKitCertificateInfo): >+ (webkitCertificateInfoCreate): >+ (webkitCertificateInfoGetPlatformCertificateInfo): >+ (webkit_certificate_info_new): >+ (webkit_certificate_info_copy): >+ (webkit_certificate_info_free): >+ (webkit_certificate_info_get_certificate): >+ (webkit_certificate_info_get_tls_errors): >+ (webkit_certificate_info_get_host): >+ * UIProcess/API/gtk/WebKitCertificateInfo.h: Added. >+ * UIProcess/API/gtk/WebKitCertificateInfoPrivate.h: Added. >+ * UIProcess/API/gtk/WebKitWebContext.cpp: >+ (webkit_web_context_allow_specific_tls_certificate): >+ * UIProcess/API/gtk/WebKitWebContext.h: >+ * UIProcess/API/gtk/WebKitWebView.cpp: >+ (webkitWebViewLoadFailedWithTLSErrorsDefaultHandler): >+ (webkit_web_view_class_init): >+ (webkitWebViewLoadFailedWithTLSErrors): >+ * 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): >+ * UIProcess/API/gtk/webkit2.h: >+ * UIProcess/WebContext.cpp: >+ (WebKit::WebContext::allowSpecificHTTPSCertificateForHost): >+ * WebProcess/WebProcess.h: >+ * WebProcess/WebProcess.messages.in: >+ * WebProcess/soup/WebProcessSoup.cpp: >+ (WebKit::WebProcess::allowSpecificHTTPSCertificateForHost): >+ > 2013-10-08 Darin Adler <darin@apple.com> > > Remove use of deleteAllValues in NPRemoteObjectMap::pluginDestroyed >diff --git a/Source/WebKit2/GNUmakefile.list.am b/Source/WebKit2/GNUmakefile.list.am >index 19fd594258b278303057ae0e70d1b6a8872bc2ce..d50e220acba544af72c2e3628fd2d2b01ebbbed3 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 c0bd0fa44f14997b135887147d4f491de7509135..11c6d4e6b4fad7c67a4c9ce8842d6aafbb6dde19 100644 >--- a/Source/WebKit2/PlatformGTK.cmake >+++ b/Source/WebKit2/PlatformGTK.cmake >@@ -87,6 +87,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 >@@ -286,6 +289,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/Shared/soup/PlatformCertificateInfo.h b/Source/WebKit2/Shared/soup/PlatformCertificateInfo.h >index 8c231f36db32f8d8b40267b6db45c147f61c0550..c9759a0bb7926248132f2508f0e4fffcd31b6da5 100644 >--- a/Source/WebKit2/Shared/soup/PlatformCertificateInfo.h >+++ b/Source/WebKit2/Shared/soup/PlatformCertificateInfo.h >@@ -49,6 +49,9 @@ public: > explicit PlatformCertificateInfo(const WebCore::ResourceError&); > ~PlatformCertificateInfo(); > >+ void setCertificate(GTlsCertificate* certificate) {m_certificate = certificate; } >+ void setTLSErrors(GTlsCertificateFlags tlsErrors) {m_tlsErrors = tlsErrors; } >+ > GTlsCertificate* certificate() const { return m_certificate.get(); } > GTlsCertificateFlags tlsErrors() const { return m_tlsErrors; } > >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..3ffde09f1498d42d2c1e859fc93afe4e2143b634 >--- /dev/null >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp >@@ -0,0 +1,163 @@ >+/* >+ * 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 "PlatformCertificateInfo.h" >+#include "WebKitCertificateInfoPrivate.h" >+#include <wtf/text/CString.h> >+ >+using namespace WebKit; >+ >+struct _WebKitCertificateInfo { >+ _WebKitCertificateInfo(const PlatformCertificateInfo& certificateInfo, const gchar* host) >+ : certificateInfo(certificateInfo) >+ , host(host) >+ { >+ } >+ >+ PlatformCertificateInfo certificateInfo; >+ CString host; >+}; >+ >+G_DEFINE_BOXED_TYPE(WebKitCertificateInfo, webkit_certificate_info, webkit_certificate_info_copy, webkit_certificate_info_free) >+ >+WebKitCertificateInfo* webkitCertificateInfoCreate(const PlatformCertificateInfo& certificateInfo, const gchar* host) >+{ >+ WebKitCertificateInfo* info = g_slice_new(WebKitCertificateInfo); >+ new (info) WebKitCertificateInfo(certificateInfo, host); >+ return info; >+} >+ >+const PlatformCertificateInfo& webkitCertificateInfoGetPlatformCertificateInfo(WebKitCertificateInfo* info) >+{ >+ ASSERT(info); >+ return info->certificateInfo; >+} >+ >+/** >+ * webkit_certificate_info_new: >+ * @tlsErrors: The tls errors for the new certificate info >+ * @certificate: The certificate for the new certificate info >+ * @host: The host of the new certificate info >+ * >+ * Create a new certificate info from the provided tls errors, certificate and host. >+ * >+ * Returns: (transfer full): A #WebKitCertificateInfo. >+ * >+ * Since: 2.4 >+ */ >+WebKitCertificateInfo* webkit_certificate_info_new(GTlsCertificateFlags tlsErrors, GTlsCertificate *certificate, const gchar *host) >+{ >+ g_return_val_if_fail(certificate, 0); >+ g_return_val_if_fail(host, 0); >+ >+ PlatformCertificateInfo certificateInfo; >+ certificateInfo.setCertificate(certificate); >+ certificateInfo.setTLSErrors(tlsErrors); >+ return webkitCertificateInfoCreate(certificateInfo, host); >+} >+ >+/** >+ * 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); >+ >+ return webkitCertificateInfoCreate(info->certificateInfo, info->host.data()); >+} >+ >+/** >+ * 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_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_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(); >+} >+ >+/** >+ * webkit_certificate_info_get_host: >+ * @info: a #WebKitCertificateInfo >+ * >+ * Get the host associated with this #WebKitCertificateInfo. >+ * >+ * Returns: The host of @info. >+ * >+ * Since: 2.4 >+ */ >+const gchar* webkit_certificate_info_get_host(WebKitCertificateInfo *info) >+{ >+ g_return_val_if_fail(info, 0); >+ >+ return info->host.data(); >+} >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.h b/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.h >new file mode 100644 >index 0000000000000000000000000000000000000000..681218178534bbad665793668f88d8169c6d5ffa >--- /dev/null >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.h >@@ -0,0 +1,62 @@ >+/* >+ * 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 <glib-object.h> >+#include <gio/gio.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_new (GTlsCertificateFlags tlsErrors, >+ GTlsCertificate *certificate, >+ const gchar *host); >+ >+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_certificate (WebKitCertificateInfo *info); >+ >+WEBKIT_API GTlsCertificateFlags >+webkit_certificate_info_get_tls_errors (WebKitCertificateInfo *info); >+ >+WEBKIT_API const gchar * >+webkit_certificate_info_get_host (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..89e6b56757462abedaac66766b8db7e15a73b1cc >--- /dev/null >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfoPrivate.h >@@ -0,0 +1,30 @@ >+/* >+ * 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 "PlatformCertificateInfo.h" >+#include "WebKitCertificateInfo.h" >+#include "WebKitPrivate.h" >+ >+WebKitCertificateInfo* webkitCertificateInfoCreate(const WebKit::PlatformCertificateInfo&, const gchar*); >+const WebKit::PlatformCertificateInfo& webkitCertificateInfoGetPlatformCertificateInfo(WebKitCertificateInfo*); >+ >+#endif // WebKitCertificateInfoPrivate_h >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp >index d2c8bbdf9b544ceb45218f03e936e72540cf7d5e..5373bda2bcad758fb069e8f172f5029b88182913 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,22 @@ 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_specific_tls_certificate: >+ * @context: a #WebKitWebContext >+ * @info: #WebKitCertificateInfo >+ * >+ * Ignore further TLS errors on the host and certificate present in @info. >+ */ >+void webkit_web_context_allow_specific_tls_certificate(WebKitWebContext* context, WebKitCertificateInfo* info) >+{ >+ g_return_if_fail(WEBKIT_IS_WEB_CONTEXT(context)); >+ g_return_if_fail(info); >+ >+ RefPtr<WebCertificateInfo> webCertificateInfo = WebCertificateInfo::create(webkitCertificateInfoGetPlatformCertificateInfo(info)); >+ context->priv->context->allowSpecificHTTPSCertificateForHost(webCertificateInfo.get(), String::fromUTF8(webkit_certificate_info_get_host(info))); >+} >+ > 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..b92af72784763faaef2babb73d39cbde7d738db2 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> >@@ -65,12 +66,14 @@ 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_ASK: Ask for permission to load the page on a TLS error. Since 2.4 > * > * Enum values used to denote the TLS errors policy. > */ > typedef enum { > WEBKIT_TLS_ERRORS_POLICY_IGNORE, >- WEBKIT_TLS_ERRORS_POLICY_FAIL >+ WEBKIT_TLS_ERRORS_POLICY_FAIL, >+ WEBKIT_TLS_ERRORS_POLICY_ASK > } WebKitTLSErrorsPolicy; > > /** >@@ -199,6 +202,10 @@ WEBKIT_API void > webkit_web_context_set_disk_cache_directory (WebKitWebContext *context, > const gchar *directory); > >+WEBKIT_API void >+webkit_web_context_allow_specific_tls_certificate (WebKitWebContext *context, >+ WebKitCertificateInfo *info); >+ > G_END_DECLS > > #endif >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp >index 44629ecffda62536d88af1cf5831619567ad9515..f84eb301d81c165bad0f082c92e7a1e27fb30613 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp >@@ -22,7 +22,6 @@ > #include "WebKitWebView.h" > > #include "ImageOptions.h" >-#include "PlatformCertificateInfo.h" > #include "WebCertificateInfo.h" > #include "WebContextMenuItem.h" > #include "WebContextMenuItemData.h" >@@ -30,6 +29,7 @@ > #include "WebKitAuthenticationDialog.h" > #include "WebKitAuthenticationRequestPrivate.h" > #include "WebKitBackForwardListPrivate.h" >+#include "WebKitCertificateInfoPrivate.h" > #include "WebKitContextMenuClient.h" > #include "WebKitContextMenuItemPrivate.h" > #include "WebKitContextMenuPrivate.h" >@@ -122,6 +122,8 @@ enum { > > AUTHENTICATE, > >+ LOAD_FAILED_WITH_TLS_ERRORS, >+ > LAST_SIGNAL > }; > >@@ -443,6 +445,12 @@ static gboolean webkitWebViewAuthenticate(WebKitWebView* webView, WebKitAuthenti > return TRUE; > } > >+static gboolean webkitWebViewLoadFailedWithTLSErrorsDefaultHandler(WebKitWebView* webView, WebKitCertificateInfo* info) >+{ >+ webkit_certificate_info_free(info); >+ return TRUE; >+} >+ > static void fileChooserDialogResponseCallback(GtkDialog* dialog, gint responseID, WebKitFileChooserRequest* request) > { > GRefPtr<WebKitFileChooserRequest> adoptedRequest = adoptGRef(request); >@@ -620,6 +628,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) > webViewClass->permission_request = webkitWebViewPermissionRequest; > webViewClass->run_file_chooser = webkitWebViewRunFileChooser; > webViewClass->authenticate = webkitWebViewAuthenticate; >+ webViewClass->load_failed_with_tls_errors = webkitWebViewLoadFailedWithTLSErrorsDefaultHandler; > > /** > * WebKitWebView:web-context: >@@ -1414,6 +1423,35 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) > webkit_marshal_BOOLEAN__OBJECT, > G_TYPE_BOOLEAN, 1, /* number of parameters */ > WEBKIT_TYPE_AUTHENTICATION_REQUEST); >+ >+ /** >+ * WebKitWebView::load_failed_with_tls_errors: >+ * @web_view: the #WebKitWebView on which the signal is emitted >+ * @info: a #WebKitCertificateInfo >+ * >+ * Emitted when a tls error occurs during a load operation and the tls >+ * policy is WEBKIT_TLS_ERRORS_POLICY_ASK. The @info object contains >+ * information about the error such as the #GTlsCertificate, the >+ * GTlsCertificateFlags and the host. To allow an exception for this >+ * certificate and this host use >+ * #WebKitWebContext::webkit_web_context_allow_specific_tls_certificate. >+ * >+ * The default signal handler frees the WebKitCertificateInfo object. >+ * >+ * 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, >+ G_TYPE_BOOLEAN, 1, /* number of parameters */ >+ WEBKIT_TYPE_CERTIFICATE_INFO | G_SIGNAL_TYPE_STATIC_SCOPE); > } > > static void webkitWebViewSetIsLoading(WebKitWebView* webView, bool isLoading) >@@ -1509,7 +1547,7 @@ 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); >@@ -1518,6 +1556,11 @@ void webkitWebViewLoadFailedWithTLSErrors(WebKitWebView* webView, const char* fa > if (tlsErrorsPolicy == WEBKIT_TLS_ERRORS_POLICY_FAIL) { > webkitWebViewLoadFailed(webView, WEBKIT_LOAD_STARTED, failingURI, error); > return; >+ } else if (tlsErrorsPolicy == WEBKIT_TLS_ERRORS_POLICY_ASK) { >+ GOwnPtr<SoupURI> soupURI(soup_uri_new(failingURI)); >+ WebKitCertificateInfo* info = webkit_certificate_info_new(tlsErrors, certificate, soupURI->host); >+ gboolean returnValue; >+ g_signal_emit(webView, signals[LOAD_FAILED_WITH_TLS_ERRORS], 0, info, &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..4f72ffd2ff0a52d534c8c7113a1657f8b1801d9d 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h >@@ -200,58 +200,59 @@ 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); > 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..a6b3500dea5350651890da15bbc068738c093ebb 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_specific_tls_certificate > > <SUBSECTION URI Scheme> > WebKitURISchemeRequestCallback >@@ -1097,3 +1098,20 @@ WEBKIT_SCRIPT_WORLD_GET_CLASS > WebKitScriptWorldPrivate > webkit_script_world_get_type > </SECTION> >+ >+<SECTION> >+<FILE>WebKitCertificateInfo</FILE> >+WebKitCertificateInfo >+webkit_certificate_info_new >+webkit_certificate_info_copy >+webkit_certificate_info_free >+webkit_certificate_info_get_certificate >+webkit_certificate_info_get_tls_errors >+webkit_certificate_info_get_host >+ >+<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..3ac2f3de2e0e356ed356b4a05231bf7ddc8673c1 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp >+++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp >@@ -28,6 +28,11 @@ 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 +137,70 @@ 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); >+ } >+ >+ static gboolean runLoadFailedWithTlsErrorsCallback(WebKitWebView*, WebKitCertificateInfo* info, TLSErrorsTest* test) >+ { >+ test->runLoadFailedWithTlsErrors(info); >+ return TRUE; >+ } >+ >+ void runLoadFailedWithTlsErrors(WebKitCertificateInfo* info) >+ { >+ m_certificateInfo = info; >+ g_main_loop_quit(m_mainLoop); >+ } >+ >+ WebKitCertificateInfo* waitForLoadFailedWithTlsErrors() >+ { >+ g_main_loop_run(m_mainLoop); >+ return m_certificateInfo; >+ } >+ >+private: >+ WebKitCertificateInfo* m_certificateInfo; >+}; >+ >+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_ASK); >+ >+ // Test the WebKitTLSPermissionRequest API >+ test->loadURI(kHttpsServer->getURIForPath("/test-tls/").data()); >+ WebKitCertificateInfo* info = test->waitForLoadFailedWithTlsErrors(); >+ g_assert(webkit_certificate_info_get_certificate(info)); >+ g_assert_cmpuint(webkit_certificate_info_get_tls_errors(info), ==, G_TLS_CERTIFICATE_UNKNOWN_CA); >+ g_assert_cmpstr(webkit_certificate_info_get_host(info), ==, 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_specific_tls_certificate(context, info); >+ webkit_certificate_info_free(info); >+ // 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 +217,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 +264,12 @@ 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/WebContext.cpp b/Source/WebKit2/UIProcess/WebContext.cpp >index c681b903e425e449618910e2f38a2954c97d428b..e3233583a0ce277f92a37aaea8b5a55f0d590938 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->platformCertificateInfo(), 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 bd882012189e13feb2d3ec9091a9004bb9d96d4f..679f3d88bfb61e0ff443fc6b281098b96b1f91f0 100644 >--- a/Source/WebKit2/WebProcess/WebProcess.h >+++ b/Source/WebKit2/WebProcess/WebProcess.h >@@ -29,6 +29,7 @@ > #include "CacheModel.h" > #include "ChildProcess.h" > #include "DownloadManager.h" >+#include "PlatformCertificateInfo.h" > #include "PluginProcessConnectionManager.h" > #include "ResourceCachesToClear.h" > #include "SandboxExtension.h" >@@ -160,6 +161,12 @@ public: > > void updateActivePages(); > >+#if !ENABLE(NETWORK_PROCESS) >+#if USE(SOUP) >+ void allowSpecificHTTPSCertificateForHost(const PlatformCertificateInfo&, const String& host); >+#endif >+#endif >+ > private: > WebProcess(); > >diff --git a/Source/WebKit2/WebProcess/WebProcess.messages.in b/Source/WebKit2/WebProcess/WebProcess.messages.in >index 59bce6362680c6b2611c0e3e67a4995bbcd47b8c..4005f91508ffc57e8f8c22ea646e62cf1ce5ac3b 100644 >--- a/Source/WebKit2/WebProcess/WebProcess.messages.in >+++ b/Source/WebKit2/WebProcess/WebProcess.messages.in >@@ -82,4 +82,10 @@ messages -> WebProcess LegacyReceiver { > #if PLATFORM(MAC) > SetProcessSuppressionEnabled(bool flag); > #endif >+ >+#if !ENABLE(NETWORK_PROCESS) >+#if USE(SOUP) >+ AllowSpecificHTTPSCertificateForHost(WebKit::PlatformCertificateInfo certificate, WTF::String host) >+#endif >+#endif > } >diff --git a/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp b/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp >index c7bea92864f1c28a7600c653f019f865ace7e29d..4045cdedd89bc85a4f0c327a5bd9d4d8891b8464 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 PlatformCertificateInfo& 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