Diff
Modified: trunk/Source/WebCore/ChangeLog (267501 => 267502)
--- trunk/Source/WebCore/ChangeLog 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebCore/ChangeLog 2020-09-23 22:14:15 UTC (rev 267502)
@@ -1,3 +1,20 @@
+2020-09-23 Carlos Garcia Campos <[email protected]>
+
+ [GTK][WPE] Move TLS errors API from WebKitContext to WebKitWebsiteDataManager
+ https://bugs.webkit.org/show_bug.cgi?id=216822
+
+ Reviewed by Alex Christensen.
+
+ Make ignoreTLSErrors a member of SoupNetworkSession, instead of being global.
+
+ * platform/network/soup/SoupNetworkSession.cpp:
+ (WebCore::SoupNetworkSession::setIgnoreTLSErrors):
+ (WebCore::SoupNetworkSession::checkTLSErrors):
+ (WebCore::SoupNetworkSession::setShouldIgnoreTLSErrors): Deleted.
+ * platform/network/soup/SoupNetworkSession.h:
+ * testing/InternalSettings.cpp:
+ (WebCore::InternalSettings::setAllowsAnySSLCertificate): Do not use SoupNetworkSession in the web process.
+
2020-09-23 Tim Horton <[email protected]>
Fix some typo'd wheel event listener logging
Modified: trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp (267501 => 267502)
--- trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -44,8 +44,6 @@
namespace WebCore {
-static bool gIgnoreTLSErrors;
-
static CString& initialAcceptLanguages()
{
static NeverDestroyed<CString> storage;
@@ -325,19 +323,16 @@
g_object_set(m_soupSession.get(), "accept-language", languages.data(), nullptr);
}
-void SoupNetworkSession::setShouldIgnoreTLSErrors(bool ignoreTLSErrors)
+void SoupNetworkSession::setIgnoreTLSErrors(bool ignoreTLSErrors)
{
- gIgnoreTLSErrors = ignoreTLSErrors;
+ m_ignoreTLSErrors = ignoreTLSErrors;
}
Optional<ResourceError> SoupNetworkSession::checkTLSErrors(const URL& requestURL, GTlsCertificate* certificate, GTlsCertificateFlags tlsErrors)
{
- if (gIgnoreTLSErrors)
+ if (m_ignoreTLSErrors || !tlsErrors)
return WTF::nullopt;
- if (!tlsErrors)
- return WTF::nullopt;
-
auto it = allowedCertificates().find(requestURL.host().toStringWithoutCopying());
if (it != allowedCertificates().end() && it->value.contains(certificate))
return WTF::nullopt;
Modified: trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.h (267501 => 267502)
--- trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.h 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.h 2020-09-23 22:14:15 UTC (rev 267502)
@@ -66,8 +66,8 @@
static void setInitialAcceptLanguages(const CString&);
void setAcceptLanguages(const CString&);
- WEBCORE_EXPORT static void setShouldIgnoreTLSErrors(bool);
- static Optional<ResourceError> checkTLSErrors(const URL&, GTlsCertificate*, GTlsCertificateFlags);
+ WEBCORE_EXPORT void setIgnoreTLSErrors(bool);
+ Optional<ResourceError> checkTLSErrors(const URL&, GTlsCertificate*, GTlsCertificateFlags);
static void allowSpecificHTTPSCertificateForHost(const CertificateInfo&, const String& host);
void getHostNamesWithHSTSCache(HashSet<String>&);
@@ -79,6 +79,7 @@
GRefPtr<SoupSession> m_soupSession;
PAL::SessionID m_sessionID;
+ bool m_ignoreTLSErrors { false };
};
} // namespace WebCore
Modified: trunk/Source/WebCore/testing/InternalSettings.cpp (267501 => 267502)
--- trunk/Source/WebCore/testing/InternalSettings.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebCore/testing/InternalSettings.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -47,10 +47,6 @@
#include "ColorChooser.h"
#endif
-#if USE(SOUP)
-#include "SoupNetworkSession.h"
-#endif
-
#if ENABLE(WEB_AUDIO)
#include "AudioContext.h"
#endif
@@ -898,9 +894,6 @@
void InternalSettings::setAllowsAnySSLCertificate(bool allowsAnyCertificate)
{
DeprecatedGlobalSettings::setAllowsAnySSLCertificate(allowsAnyCertificate);
-#if USE(SOUP)
- SoupNetworkSession::setShouldIgnoreTLSErrors(allowsAnyCertificate);
-#endif
}
ExceptionOr<bool> InternalSettings::deferredCSSParserEnabled()
Modified: trunk/Source/WebKit/ChangeLog (267501 => 267502)
--- trunk/Source/WebKit/ChangeLog 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/ChangeLog 2020-09-23 22:14:15 UTC (rev 267502)
@@ -1,3 +1,68 @@
+2020-09-23 Carlos Garcia Campos <[email protected]>
+
+ [GTK][WPE] Move TLS errors API from WebKitContext to WebKitWebsiteDataManager
+ https://bugs.webkit.org/show_bug.cgi?id=216822
+
+ Reviewed by Alex Christensen.
+
+ Make TLS errors policy per session instead of global to the network process. The web context API now simply
+ forwards the request to the website data manager. The website data manager created for an ephemeral web view
+ will inherit the network settings from the web context website data manager. This ensures backwards
+ compatibility, but it's also convenient, since it's the desired behavior in most of the cases. Apps can still
+ change the network settings of the web view by getting the website data manager.
+
+ * NetworkProcess/NetworkProcess.h:
+ * NetworkProcess/NetworkProcess.messages.in:
+ * NetworkProcess/NetworkProcessCreationParameters.cpp:
+ (WebKit::NetworkProcessCreationParameters::encode const):
+ (WebKit::NetworkProcessCreationParameters::decode):
+ * NetworkProcess/NetworkProcessCreationParameters.h:
+ * NetworkProcess/NetworkSessionCreationParameters.cpp:
+ (WebKit::NetworkSessionCreationParameters::encode const):
+ (WebKit::NetworkSessionCreationParameters::decode):
+ * NetworkProcess/NetworkSessionCreationParameters.h:
+ * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
+ (WebKit::NetworkDataTaskSoup::tlsConnectionAcceptCertificate):
+ * NetworkProcess/soup/NetworkProcessSoup.cpp:
+ (WebKit::NetworkProcess::platformInitializeNetworkProcess):
+ (WebKit::NetworkProcess::setIgnoreTLSErrors):
+ * NetworkProcess/soup/NetworkSessionSoup.cpp:
+ (WebKit::NetworkSessionSoup::NetworkSessionSoup):
+ (WebKit::webSocketAcceptCertificateCallback):
+ (WebKit::webSocketMessageNetworkEventCallback):
+ (WebKit::NetworkSessionSoup::createWebSocketTask):
+ (WebKit::NetworkSessionSoup::setIgnoreTLSErrors):
+ * NetworkProcess/soup/NetworkSessionSoup.h:
+ * UIProcess/API/glib/WebKitAutomationSession.cpp:
+ (webkitAutomationSessionCreate):
+ * UIProcess/API/glib/WebKitWebContext.cpp:
+ (webkitWebContextConstructed):
+ (webkit_web_context_set_tls_errors_policy):
+ (webkit_web_context_get_tls_errors_policy):
+ * UIProcess/API/glib/WebKitWebView.cpp:
+ (webkitWebViewConstructed):
+ (webkit_web_view_class_init):
+ (webkitWebViewLoadFailedWithTLSErrors):
+ * UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
+ (webkitWebsiteDataManagerConstructed):
+ (webkitWebsiteDataManagerGetDataStore):
+ (webkit_website_data_manager_set_tls_errors_policy):
+ (webkit_website_data_manager_get_tls_errors_policy):
+ * UIProcess/API/gtk/WebKitWebContext.h:
+ * UIProcess/API/gtk/WebKitWebsiteDataManager.h:
+ * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
+ * UIProcess/API/wpe/WebKitWebContext.h:
+ * UIProcess/API/wpe/WebKitWebsiteDataManager.h:
+ * UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
+ * UIProcess/WebProcessPool.h:
+ * UIProcess/WebsiteData/WebsiteDataStore.h:
+ (WebKit::WebsiteDataStore::ignoreTLSErrors const):
+ * UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp:
+ (WebKit::WebsiteDataStore::setIgnoreTLSErrors):
+ * UIProcess/soup/WebProcessPoolSoup.cpp:
+ (WebKit::WebProcessPool::platformInitializeNetworkProcess):
+ (WebKit::WebProcessPool::setIgnoreTLSErrors): Deleted.
+
2020-09-23 Per Arne Vollan <[email protected]>
[macOS] Issue sandbox extension for the diagnostic daemon
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (267501 => 267502)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2020-09-23 22:14:15 UTC (rev 267502)
@@ -445,7 +445,7 @@
void flushCookies(const PAL::SessionID&, CompletionHandler<void()>&&);
#if USE(SOUP)
- void setIgnoreTLSErrors(bool);
+ void setIgnoreTLSErrors(PAL::SessionID, bool);
void userPreferredLanguagesChanged(const Vector<String>&);
void setNetworkProxySettings(const WebCore::SoupNetworkProxySettings&);
void setPersistentCredentialStorageEnabled(PAL::SessionID, bool);
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (267501 => 267502)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2020-09-23 22:14:15 UTC (rev 267502)
@@ -28,7 +28,7 @@
CreateNetworkConnectionToWebProcess(WebCore::ProcessIdentifier processIdentifier, PAL::SessionID sessionID) -> (Optional<IPC::Attachment> connectionIdentifier, enum:uint8_t WebCore::HTTPCookieAcceptPolicy cookieAcceptPolicy) Async
#if USE(SOUP)
- SetIgnoreTLSErrors(bool ignoreTLSErrors)
+ SetIgnoreTLSErrors(PAL::SessionID sessionID, bool ignoreTLSErrors)
UserPreferredLanguagesChanged(Vector<String> languages)
SetNetworkProxySettings(struct WebCore::SoupNetworkProxySettings settings)
PrefetchDNS(String hostname)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (267501 => 267502)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -58,7 +58,6 @@
encoder << defaultDataStoreParameters;
#if USE(SOUP)
encoder << cookieAcceptPolicy;
- encoder << ignoreTLSErrors;
encoder << languages;
encoder << proxySettings;
#endif
@@ -125,8 +124,6 @@
#if USE(SOUP)
if (!decoder.decode(result.cookieAcceptPolicy))
return false;
- if (!decoder.decode(result.ignoreTLSErrors))
- return false;
if (!decoder.decode(result.languages))
return false;
if (!decoder.decode(result.proxySettings))
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (267501 => 267502)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h 2020-09-23 22:14:15 UTC (rev 267502)
@@ -75,7 +75,6 @@
#if USE(SOUP)
WebCore::HTTPCookieAcceptPolicy cookieAcceptPolicy { WebCore::HTTPCookieAcceptPolicy::AlwaysAccept };
- bool ignoreTLSErrors { false };
Vector<String> languages;
WebCore::SoupNetworkProxySettings proxySettings;
#endif
Modified: trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp (267501 => 267502)
--- trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -63,6 +63,7 @@
encoder << cookiePersistentStoragePath;
encoder << cookiePersistentStorageType;
encoder << persistentCredentialStorageEnabled;
+ encoder << ignoreTLSErrors;
#endif
#if USE(CURL)
encoder << cookiePersistentStorageFile;
@@ -181,6 +182,11 @@
decoder >> persistentCredentialStorageEnabled;
if (!persistentCredentialStorageEnabled)
return WTF::nullopt;
+
+ Optional<bool> ignoreTLSErrors;
+ decoder >> ignoreTLSErrors;
+ if (!ignoreTLSErrors)
+ return WTF::nullopt;
#endif
#if USE(CURL)
@@ -299,6 +305,7 @@
, WTFMove(*cookiePersistentStoragePath)
, WTFMove(*cookiePersistentStorageType)
, WTFMove(*persistentCredentialStorageEnabled)
+ , WTFMove(*ignoreTLSErrors)
#endif
#if USE(CURL)
, WTFMove(*cookiePersistentStorageFile)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h (267501 => 267502)
--- trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h 2020-09-23 22:14:15 UTC (rev 267502)
@@ -75,6 +75,7 @@
String cookiePersistentStoragePath;
SoupCookiePersistentStorageType cookiePersistentStorageType { SoupCookiePersistentStorageType::Text };
bool persistentCredentialStorageEnabled { true };
+ bool ignoreTLSErrors { false };
#endif
#if USE(CURL)
String cookiePersistentStorageFile;
Modified: trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp (267501 => 267502)
--- trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -444,7 +444,7 @@
{
ASSERT(m_soupRequest);
URL url = ""
- auto error = SoupNetworkSession::checkTLSErrors(url, certificate, tlsErrors);
+ auto error = static_cast<NetworkSessionSoup&>(*m_session).soupNetworkSession().checkTLSErrors(url, certificate, tlsErrors);
if (!error)
return true;
Modified: trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp (267501 => 267502)
--- trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -136,8 +136,6 @@
if (!parameters.languages.isEmpty())
userPreferredLanguagesChanged(parameters.languages);
-
- setIgnoreTLSErrors(parameters.ignoreTLSErrors);
}
std::unique_ptr<WebCore::NetworkStorageSession> NetworkProcess::platformCreateDefaultStorageSession() const
@@ -145,9 +143,10 @@
return makeUnique<WebCore::NetworkStorageSession>(PAL::SessionID::defaultSessionID());
}
-void NetworkProcess::setIgnoreTLSErrors(bool ignoreTLSErrors)
+void NetworkProcess::setIgnoreTLSErrors(PAL::SessionID sessionID, bool ignoreTLSErrors)
{
- SoupNetworkSession::setShouldIgnoreTLSErrors(ignoreTLSErrors);
+ if (auto* session = networkSession(sessionID))
+ static_cast<NetworkSessionSoup&>(*session).setIgnoreTLSErrors(ignoreTLSErrors);
}
void NetworkProcess::allowSpecificHTTPSCertificateForHost(const CertificateInfo& certificateInfo, const String& host)
Modified: trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp (267501 => 267502)
--- trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -47,6 +47,8 @@
auto* storageSession = networkStorageSession();
ASSERT(storageSession);
+ setIgnoreTLSErrors(parameters.ignoreTLSErrors);
+
if (!parameters.cookiePersistentStoragePath.isEmpty())
setCookiePersistentStorage(parameters.cookiePersistentStoragePath, parameters.cookiePersistentStorageType);
else
@@ -98,20 +100,22 @@
#endif
}
-static gboolean webSocketAcceptCertificateCallback(GTlsConnection*, GTlsCertificate* certificate, GTlsCertificateFlags errors, SoupMessage* soupMessage)
+static gboolean webSocketAcceptCertificateCallback(GTlsConnection* connection, GTlsCertificate* certificate, GTlsCertificateFlags errors, NetworkSessionSoup* session)
{
if (DeprecatedGlobalSettings::allowsAnySSLCertificate())
return TRUE;
- return !SoupNetworkSession::checkTLSErrors(soupURIToURL(soup_message_get_uri(soupMessage)), certificate, errors);
+ auto* soupMessage = static_cast<SoupMessage*>(g_object_get_data(G_OBJECT(connection), "wk-soup-message"));
+ return !session->soupNetworkSession().checkTLSErrors(soupURIToURL(soup_message_get_uri(soupMessage)), certificate, errors);
}
-static void webSocketMessageNetworkEventCallback(SoupMessage* soupMessage, GSocketClientEvent event, GIOStream* connection)
+static void webSocketMessageNetworkEventCallback(SoupMessage* soupMessage, GSocketClientEvent event, GIOStream* connection, NetworkSessionSoup* session)
{
if (event != G_SOCKET_CLIENT_TLS_HANDSHAKING)
return;
- g_signal_connect(connection, "accept-certificate", G_CALLBACK(webSocketAcceptCertificateCallback), soupMessage);
+ g_object_set_data(G_OBJECT(connection), "wk-soup-message", soupMessage);
+ g_signal_connect(connection, "accept-certificate", G_CALLBACK(webSocketAcceptCertificateCallback), session);
}
std::unique_ptr<WebSocketTask> NetworkSessionSoup::createWebSocketTask(NetworkSocketChannel& channel, const ResourceRequest& request, const String& protocol)
@@ -123,8 +127,13 @@
GRefPtr<SoupMessage> soupMessage = adoptGRef(soup_message_new_from_uri(SOUP_METHOD_GET, soupURI.get()));
request.updateSoupMessage(soupMessage.get(), blobRegistry());
if (request.url().protocolIs("wss"))
- g_signal_connect(soupMessage.get(), "network-event", G_CALLBACK(webSocketMessageNetworkEventCallback), nullptr);
+ g_signal_connect(soupMessage.get(), "network-event", G_CALLBACK(webSocketMessageNetworkEventCallback), this);
return makeUnique<WebSocketTask>(channel, soupSession(), soupMessage.get(), protocol);
}
+void NetworkSessionSoup::setIgnoreTLSErrors(bool ignoreTLSErrors)
+{
+ m_networkSession->setIgnoreTLSErrors(ignoreTLSErrors);
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.h (267501 => 267502)
--- trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.h 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.h 2020-09-23 22:14:15 UTC (rev 267502)
@@ -57,6 +57,8 @@
void setPersistentCredentialStorageEnabled(bool enabled) { m_persistentCredentialStorageEnabled = enabled; }
bool persistentCredentialStorageEnabled() const { return m_persistentCredentialStorageEnabled; }
+ void setIgnoreTLSErrors(bool);
+
private:
std::unique_ptr<WebSocketTask> createWebSocketTask(NetworkSocketChannel&, const WebCore::ResourceRequest&, const String& protocol) final;
void clearCredentials() final;
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -350,7 +350,8 @@
auto* session = WEBKIT_AUTOMATION_SESSION(g_object_new(WEBKIT_TYPE_AUTOMATION_SESSION, "id", sessionID, nullptr));
session->priv->webContext = webContext;
if (capabilities.acceptInsecureCertificates)
- webkit_web_context_set_tls_errors_policy(webContext, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
+ webkit_website_data_manager_set_tls_errors_policy(webkit_web_context_get_website_data_manager(webContext), WEBKIT_TLS_ERRORS_POLICY_IGNORE);
+
for (auto& certificate : capabilities.certificates) {
GRefPtr<GTlsCertificate> tlsCertificate = adoptGRef(g_tls_certificate_new_from_file(certificate.second.utf8().data(), nullptr));
if (tlsCertificate)
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -222,7 +222,6 @@
GRefPtr<WebKitWebsiteDataManager> websiteDataManager;
CString faviconDatabaseDirectory;
- WebKitTLSErrorsPolicy tlsErrorsPolicy;
WebKitProcessModel processModel;
HashMap<WebPageProxyIdentifier, WebKitWebView*> webViews;
@@ -414,9 +413,6 @@
webkitWebsiteDataManagerAddProcessPool(priv->websiteDataManager.get(), *priv->processPool);
- priv->tlsErrorsPolicy = WEBKIT_TLS_ERRORS_POLICY_FAIL;
- priv->processPool->setIgnoreTLSErrors(false);
-
priv->processModel = WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES;
#if ENABLE(MEMORY_SAMPLER)
@@ -1496,18 +1492,14 @@
* @policy: a #WebKitTLSErrorsPolicy
*
* Set the TLS errors policy of @context as @policy
+ *
+ * Deprecated: 2.32. Use webkit_website_data_manager_set_tls_errors_policy() instead.
*/
void webkit_web_context_set_tls_errors_policy(WebKitWebContext* context, WebKitTLSErrorsPolicy policy)
{
g_return_if_fail(WEBKIT_IS_WEB_CONTEXT(context));
- if (context->priv->tlsErrorsPolicy == policy)
- return;
-
- context->priv->tlsErrorsPolicy = policy;
- bool ignoreTLSErrors = policy == WEBKIT_TLS_ERRORS_POLICY_IGNORE;
- if (context->priv->processPool->ignoreTLSErrors() != ignoreTLSErrors)
- context->priv->processPool->setIgnoreTLSErrors(ignoreTLSErrors);
+ webkit_website_data_manager_set_tls_errors_policy(context->priv->websiteDataManager.get(), policy);
}
/**
@@ -1517,12 +1509,14 @@
* Get the TLS errors policy of @context
*
* Returns: a #WebKitTLSErrorsPolicy
+ *
+ * Deprecated: 2.32. Use webkit_website_data_manager_get_tls_errors_policy() instead.
*/
WebKitTLSErrorsPolicy webkit_web_context_get_tls_errors_policy(WebKitWebContext* context)
{
g_return_val_if_fail(WEBKIT_IS_WEB_CONTEXT(context), WEBKIT_TLS_ERRORS_POLICY_IGNORE);
- return context->priv->tlsErrorsPolicy;
+ return webkit_website_data_manager_get_tls_errors_policy(context->priv->websiteDataManager.get());
}
/**
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -755,6 +755,8 @@
if (priv->isEphemeral && !webkit_web_context_is_ephemeral(priv->context.get())) {
priv->websiteDataManager = adoptGRef(webkit_website_data_manager_new_ephemeral());
+ auto* contextDataManager = webkit_web_context_get_website_data_manager(priv->context.get());
+ webkit_website_data_manager_set_tls_errors_policy(priv->websiteDataManager.get(), webkit_website_data_manager_get_tls_errors_policy(contextDataManager));
webkitWebsiteDataManagerAddProcessPool(priv->websiteDataManager.get(), webkitWebContextGetProcessPool(priv->context.get()));
}
@@ -1192,9 +1194,14 @@
* Whether the #WebKitWebView is ephemeral. An ephemeral web view never writes
* website data to the client storage, no matter what #WebKitWebsiteDataManager
* its context is using. This is normally used to implement private browsing mode.
- * This is a %G_PARAM_CONSTRUCT_ONLY property, so you have to create a ephemeral
- * #WebKitWebView and it can't be changed. Note that all #WebKitWebView<!-- -->s
- * created with an ephemeral #WebKitWebContext will be ephemeral automatically.
+ * This is a %G_PARAM_CONSTRUCT_ONLY property, so you have to create an ephemeral
+ * #WebKitWebView and it can't be changed. The ephemeral #WebKitWebsiteDataManager
+ * created for the #WebKitWebView will inherit the network settings from the
+ * #WebKitWebContext<!-- -->'s #WebKitWebsiteDataManager. To use different settings
+ * you can get the #WebKitWebsiteDataManager with webkit_web_view_get_website_data_manager()
+ * and set the new ones.
+ * Note that all #WebKitWebView<!-- -->s created with an ephemeral #WebKitWebContext
+ * will be ephemeral automatically.
* See also webkit_web_context_new_ephemeral().
*
* Since: 2.16
@@ -2356,7 +2363,8 @@
{
webkitWebViewCompleteAuthenticationRequest(webView);
- WebKitTLSErrorsPolicy tlsErrorsPolicy = webkit_web_context_get_tls_errors_policy(webView->priv->context.get());
+ auto* websiteDataManager = webkit_web_view_get_website_data_manager(webView);
+ WebKitTLSErrorsPolicy tlsErrorsPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
if (tlsErrorsPolicy == WEBKIT_TLS_ERRORS_POLICY_FAIL) {
gboolean returnValue;
g_signal_emit(webView, signals[LOAD_FAILED_WITH_TLS_ERRORS], 0, failingURI, certificate, tlsErrors, &returnValue);
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -111,6 +111,7 @@
GUniquePtr<char> itpDirectory;
GUniquePtr<char> swRegistrationsDirectory;
GUniquePtr<char> domCacheDirectory;
+ WebKitTLSErrorsPolicy tlsErrorsPolicy;
GRefPtr<WebKitCookieManager> cookieManager;
Vector<WebProcessPool*> processPools;
@@ -241,6 +242,8 @@
if (!priv->domCacheDirectory)
priv->domCacheDirectory.reset(g_build_filename(priv->baseCacheDirectory.get(), "CacheStorage", nullptr));
}
+
+ priv->tlsErrorsPolicy = WEBKIT_TLS_ERRORS_POLICY_FAIL;
}
static void webkit_website_data_manager_class_init(WebKitWebsiteDataManagerClass* findClass)
@@ -489,6 +492,7 @@
if (priv->domCacheDirectory)
configuration->setCacheStorageDirectory(FileSystem::stringFromFileSystemRepresentation(priv->domCacheDirectory.get()));
priv->websiteDataStore = WebKit::WebsiteDataStore::create(WTFMove(configuration), PAL::SessionID::defaultSessionID());
+ priv->websiteDataStore->setIgnoreTLSErrors(priv->tlsErrorsPolicy == WEBKIT_TLS_ERRORS_POLICY_IGNORE);
}
return *priv->websiteDataStore;
@@ -909,6 +913,43 @@
return webkitWebsiteDataManagerGetDataStore(manager).persistentCredentialStorageEnabled();
}
+/**
+ * webkit_website_data_manager_set_tls_errors_policy:
+ * @manager: a #WebKitWebsiteDataManager
+ * @policy: a #WebKitTLSErrorsPolicy
+ *
+ * Set the TLS errors policy of @manager as @policy
+ *
+ * Since: 2.32
+ */
+void webkit_website_data_manager_set_tls_errors_policy(WebKitWebsiteDataManager* manager, WebKitTLSErrorsPolicy policy)
+{
+ g_return_if_fail(WEBKIT_IS_WEBSITE_DATA_MANAGER(manager));
+
+ if (manager->priv->tlsErrorsPolicy == policy)
+ return;
+
+ manager->priv->tlsErrorsPolicy = policy;
+ webkitWebsiteDataManagerGetDataStore(manager).setIgnoreTLSErrors(policy == WEBKIT_TLS_ERRORS_POLICY_IGNORE);
+}
+
+/**
+ * webkit_website_data_manager_get_tls_errors_policy:
+ * @manager: a #WebKitWebsiteDataManager
+ *
+ * Get the TLS errors policy of @manager
+ *
+ * Returns: a #WebKitTLSErrorsPolicy
+ *
+ * Since: 2.32
+ */
+WebKitTLSErrorsPolicy webkit_website_data_manager_get_tls_errors_policy(WebKitWebsiteDataManager* manager)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEBSITE_DATA_MANAGER(manager), WEBKIT_TLS_ERRORS_POLICY_FAIL);
+
+ return manager->priv->tlsErrorsPolicy;
+}
+
static OptionSet<WebsiteDataType> toWebsiteDataTypes(WebKitWebsiteDataTypes types)
{
OptionSet<WebsiteDataType> returnValue;
Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebContext.h (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebContext.h 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebContext.h 2020-09-23 22:14:15 UTC (rev 267502)
@@ -89,21 +89,6 @@
} WebKitProcessModel;
/**
- * WebKitTLSErrorsPolicy:
- * @WEBKIT_TLS_ERRORS_POLICY_IGNORE: Ignore TLS errors.
- * @WEBKIT_TLS_ERRORS_POLICY_FAIL: TLS errors will emit
- * #WebKitWebView::load-failed-with-tls-errors and, if the signal is handled,
- * finish the load. In case the signal is not handled,
- * #WebKitWebView::load-failed is emitted before the load finishes.
- *
- * Enum values used to denote the TLS errors policy.
- */
-typedef enum {
- WEBKIT_TLS_ERRORS_POLICY_IGNORE,
- WEBKIT_TLS_ERRORS_POLICY_FAIL
-} WebKitTLSErrorsPolicy;
-
-/**
* WebKitNetworkProxyMode:
* @WEBKIT_NETWORK_PROXY_MODE_DEFAULT: Use the default proxy of the system.
* @WEBKIT_NETWORK_PROXY_MODE_NO_PROXY: Do not use any proxy.
@@ -278,11 +263,11 @@
webkit_web_context_set_preferred_languages (WebKitWebContext *context,
const gchar * const *languages);
-WEBKIT_API void
+WEBKIT_DEPRECATED_FOR(webkit_website_data_manager_set_tls_errors_policy) void
webkit_web_context_set_tls_errors_policy (WebKitWebContext *context,
WebKitTLSErrorsPolicy policy);
-WEBKIT_API WebKitTLSErrorsPolicy
+WEBKIT_DEPRECATED_FOR(webkit_website_data_manager_get_tls_errors_policy) WebKitTLSErrorsPolicy
webkit_web_context_get_tls_errors_policy (WebKitWebContext *context);
WEBKIT_API void
Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebsiteDataManager.h (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebsiteDataManager.h 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebsiteDataManager.h 2020-09-23 22:14:15 UTC (rev 267502)
@@ -38,6 +38,21 @@
#define WEBKIT_IS_WEBSITE_DATA_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEBSITE_DATA_MANAGER))
#define WEBKIT_WEBSITE_DATA_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEBSITE_DATA_MANAGER, WebKitWebsiteDataManagerClass))
+/**
+ * WebKitTLSErrorsPolicy:
+ * @WEBKIT_TLS_ERRORS_POLICY_IGNORE: Ignore TLS errors.
+ * @WEBKIT_TLS_ERRORS_POLICY_FAIL: TLS errors will emit
+ * #WebKitWebView::load-failed-with-tls-errors and, if the signal is handled,
+ * finish the load. In case the signal is not handled,
+ * #WebKitWebView::load-failed is emitted before the load finishes.
+ *
+ * Enum values used to denote the TLS errors policy.
+ */
+typedef enum {
+ WEBKIT_TLS_ERRORS_POLICY_IGNORE,
+ WEBKIT_TLS_ERRORS_POLICY_FAIL
+} WebKitTLSErrorsPolicy;
+
typedef struct _WebKitWebsiteDataManager WebKitWebsiteDataManager;
typedef struct _WebKitWebsiteDataManagerClass WebKitWebsiteDataManagerClass;
typedef struct _WebKitWebsiteDataManagerPrivate WebKitWebsiteDataManagerPrivate;
@@ -120,6 +135,13 @@
webkit_website_data_manager_get_persistent_credential_storage_enabled (WebKitWebsiteDataManager *manager);
WEBKIT_API void
+webkit_website_data_manager_set_tls_errors_policy (WebKitWebsiteDataManager *manager,
+ WebKitTLSErrorsPolicy policy);
+
+WEBKIT_API WebKitTLSErrorsPolicy
+webkit_website_data_manager_get_tls_errors_policy (WebKitWebsiteDataManager *manager);
+
+WEBKIT_API void
webkit_website_data_manager_fetch (WebKitWebsiteDataManager *manager,
WebKitWebsiteDataTypes types,
GCancellable *cancellable,
Modified: trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt 2020-09-23 22:14:15 UTC (rev 267502)
@@ -26,7 +26,6 @@
WebKitWebContext
WebKitCacheModel
WebKitProcessModel
-WebKitTLSErrorsPolicy
WebKitNetworkProxyMode
webkit_web_context_get_default
webkit_web_context_new
@@ -1453,6 +1452,7 @@
<SECTION>
<FILE>WebKitWebsiteDataManager</FILE>
WebKitWebsiteDataManager
+WebKitTLSErrorsPolicy
webkit_website_data_manager_new
webkit_website_data_manager_new_ephemeral
webkit_website_data_manager_is_ephemeral
@@ -1472,6 +1472,8 @@
webkit_website_data_manager_get_itp_enabled
webkit_website_data_manager_set_persistent_credential_storage_enabled
webkit_website_data_manager_get_persistent_credential_storage_enabled
+webkit_website_data_manager_set_tls_errors_policy
+webkit_website_data_manager_get_tls_errors_policy
webkit_website_data_manager_fetch
webkit_website_data_manager_fetch_finish
webkit_website_data_manager_remove
Modified: trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebContext.h (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebContext.h 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebContext.h 2020-09-23 22:14:15 UTC (rev 267502)
@@ -89,21 +89,6 @@
} WebKitProcessModel;
/**
- * WebKitTLSErrorsPolicy:
- * @WEBKIT_TLS_ERRORS_POLICY_IGNORE: Ignore TLS errors.
- * @WEBKIT_TLS_ERRORS_POLICY_FAIL: TLS errors will emit
- * #WebKitWebView::load-failed-with-tls-errors and, if the signal is handled,
- * finish the load. In case the signal is not handled,
- * #WebKitWebView::load-failed is emitted before the load finishes.
- *
- * Enum values used to denote the TLS errors policy.
- */
-typedef enum {
- WEBKIT_TLS_ERRORS_POLICY_IGNORE,
- WEBKIT_TLS_ERRORS_POLICY_FAIL
-} WebKitTLSErrorsPolicy;
-
-/**
* WebKitNetworkProxyMode:
* @WEBKIT_NETWORK_PROXY_MODE_DEFAULT: Use the default proxy of the system.
* @WEBKIT_NETWORK_PROXY_MODE_NO_PROXY: Do not use any proxy.
@@ -278,11 +263,11 @@
webkit_web_context_set_preferred_languages (WebKitWebContext *context,
const gchar * const *languages);
-WEBKIT_API void
+WEBKIT_DEPRECATED_FOR(webkit_website_data_manager_set_tls_errors_policy) void
webkit_web_context_set_tls_errors_policy (WebKitWebContext *context,
WebKitTLSErrorsPolicy policy);
-WEBKIT_API WebKitTLSErrorsPolicy
+WEBKIT_DEPRECATED_FOR(webkit_website_data_manager_get_tls_errors_policy) WebKitTLSErrorsPolicy
webkit_web_context_get_tls_errors_policy (WebKitWebContext *context);
WEBKIT_API void
Modified: trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebsiteDataManager.h (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebsiteDataManager.h 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebsiteDataManager.h 2020-09-23 22:14:15 UTC (rev 267502)
@@ -38,6 +38,21 @@
#define WEBKIT_IS_WEBSITE_DATA_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEBSITE_DATA_MANAGER))
#define WEBKIT_WEBSITE_DATA_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEBSITE_DATA_MANAGER, WebKitWebsiteDataManagerClass))
+/**
+ * WebKitTLSErrorsPolicy:
+ * @WEBKIT_TLS_ERRORS_POLICY_IGNORE: Ignore TLS errors.
+ * @WEBKIT_TLS_ERRORS_POLICY_FAIL: TLS errors will emit
+ * #WebKitWebView::load-failed-with-tls-errors and, if the signal is handled,
+ * finish the load. In case the signal is not handled,
+ * #WebKitWebView::load-failed is emitted before the load finishes.
+ *
+ * Enum values used to denote the TLS errors policy.
+ */
+typedef enum {
+ WEBKIT_TLS_ERRORS_POLICY_IGNORE,
+ WEBKIT_TLS_ERRORS_POLICY_FAIL
+} WebKitTLSErrorsPolicy;
+
typedef struct _WebKitWebsiteDataManager WebKitWebsiteDataManager;
typedef struct _WebKitWebsiteDataManagerClass WebKitWebsiteDataManagerClass;
typedef struct _WebKitWebsiteDataManagerPrivate WebKitWebsiteDataManagerPrivate;
@@ -120,6 +135,13 @@
webkit_website_data_manager_get_persistent_credential_storage_enabled (WebKitWebsiteDataManager *manager);
WEBKIT_API void
+webkit_website_data_manager_set_tls_errors_policy (WebKitWebsiteDataManager *manager,
+ WebKitTLSErrorsPolicy policy);
+
+WEBKIT_API WebKitTLSErrorsPolicy
+webkit_website_data_manager_get_tls_errors_policy (WebKitWebsiteDataManager *manager);
+
+WEBKIT_API void
webkit_website_data_manager_fetch (WebKitWebsiteDataManager *manager,
WebKitWebsiteDataTypes types,
GCancellable *cancellable,
Modified: trunk/Source/WebKit/UIProcess/API/wpe/docs/wpe-1.0-sections.txt (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/API/wpe/docs/wpe-1.0-sections.txt 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/API/wpe/docs/wpe-1.0-sections.txt 2020-09-23 22:14:15 UTC (rev 267502)
@@ -4,7 +4,6 @@
WebKitWebContext
WebKitCacheModel
WebKitProcessModel
-WebKitTLSErrorsPolicy
WebKitNetworkProxyMode
webkit_web_context_get_default
webkit_web_context_new
@@ -1387,6 +1386,7 @@
<SECTION>
<FILE>WebKitWebsiteDataManager</FILE>
WebKitWebsiteDataManager
+WebKitTLSErrorsPolicy
webkit_website_data_manager_new
webkit_website_data_manager_new_ephemeral
webkit_website_data_manager_is_ephemeral
@@ -1406,6 +1406,8 @@
webkit_website_data_manager_get_itp_enabled
webkit_website_data_manager_set_persistent_credential_storage_enabled
webkit_website_data_manager_get_persistent_credential_storage_enabled
+webkit_website_data_manager_set_tls_errors_policy
+webkit_website_data_manager_get_tls_errors_policy
webkit_website_data_manager_fetch
webkit_website_data_manager_fetch_finish
webkit_website_data_manager_remove
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.h 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h 2020-09-23 22:14:15 UTC (rev 267502)
@@ -414,11 +414,6 @@
void windowServerConnectionStateChanged();
-#if USE(SOUP)
- void setIgnoreTLSErrors(bool);
- bool ignoreTLSErrors() const { return m_ignoreTLSErrors; }
-#endif
-
static void setInvalidMessageCallback(void (*)(WKStringRef));
static void didReceiveInvalidMessage(IPC::MessageName);
@@ -718,10 +713,6 @@
HashMap<uint64_t, RefPtr<DictionaryCallback>> m_dictionaryCallbacks;
-#if USE(SOUP)
- bool m_ignoreTLSErrors { true };
-#endif
-
bool m_memoryCacheDisabled { false };
bool m_javaScriptConfigurationFileEnabled { false };
String m_javaScriptConfigurationDirectory;
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h 2020-09-23 22:14:15 UTC (rev 267502)
@@ -259,6 +259,8 @@
#if USE(SOUP)
void setPersistentCredentialStorageEnabled(bool);
bool persistentCredentialStorageEnabled() const { return m_persistentCredentialStorageEnabled && isPersistent(); }
+ void setIgnoreTLSErrors(bool);
+ bool ignoreTLSErrors() const { return m_ignoreTLSErrors; }
#endif
static void allowWebsiteDataRecordsForAllOrigins();
@@ -395,6 +397,7 @@
#if USE(SOUP)
bool m_persistentCredentialStorageEnabled { true };
+ bool m_ignoreTLSErrors { true };
#endif
HashSet<WebCore::Cookie> m_pendingCookies;
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -56,4 +56,14 @@
processPool->sendToNetworkingProcess(Messages::NetworkProcess::SetPersistentCredentialStorageEnabled(m_sessionID, m_persistentCredentialStorageEnabled));
}
+void WebsiteDataStore::setIgnoreTLSErrors(bool ignoreTLSErrors)
+{
+ if (m_ignoreTLSErrors == ignoreTLSErrors)
+ return;
+
+ m_ignoreTLSErrors = ignoreTLSErrors;
+ for (auto& processPool : processPools())
+ processPool->sendToNetworkingProcess(Messages::NetworkProcess::SetIgnoreTLSErrors(m_sessionID, m_ignoreTLSErrors));
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/soup/WebProcessPoolSoup.cpp (267501 => 267502)
--- trunk/Source/WebKit/UIProcess/soup/WebProcessPoolSoup.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Source/WebKit/UIProcess/soup/WebProcessPoolSoup.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -39,23 +39,17 @@
{
NetworkSessionCreationParameters& defaultSessionParameters = parameters.defaultDataStoreParameters.networkSessionParameters;
supplement<WebCookieManagerProxy>()->getCookiePersistentStorage(defaultSessionParameters.sessionID, defaultSessionParameters.cookiePersistentStoragePath, defaultSessionParameters.cookiePersistentStorageType);
- if (m_websiteDataStore)
+ if (m_websiteDataStore) {
defaultSessionParameters.persistentCredentialStorageEnabled = m_websiteDataStore->persistentCredentialStorageEnabled();
+ defaultSessionParameters.ignoreTLSErrors = m_websiteDataStore->ignoreTLSErrors();
+ }
parameters.cookieAcceptPolicy = m_initialHTTPCookieAcceptPolicy;
- parameters.ignoreTLSErrors = m_ignoreTLSErrors;
parameters.languages = userPreferredLanguages();
parameters.proxySettings = m_networkProxySettings;
parameters.shouldEnableITPDatabase = true;
}
-void WebProcessPool::setIgnoreTLSErrors(bool ignoreTLSErrors)
-{
- m_ignoreTLSErrors = ignoreTLSErrors;
- if (networkProcess())
- networkProcess()->send(Messages::NetworkProcess::SetIgnoreTLSErrors(m_ignoreTLSErrors), 0);
-}
-
void WebProcessPool::setNetworkProxySettings(const WebCore::SoupNetworkProxySettings& settings)
{
m_networkProxySettings = settings;
Modified: trunk/Tools/ChangeLog (267501 => 267502)
--- trunk/Tools/ChangeLog 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Tools/ChangeLog 2020-09-23 22:14:15 UTC (rev 267502)
@@ -1,3 +1,23 @@
+2020-09-23 Carlos Garcia Campos <[email protected]>
+
+ [GTK][WPE] Move TLS errors API from WebKitContext to WebKitWebsiteDataManager
+ https://bugs.webkit.org/show_bug.cgi?id=216822
+
+ Reviewed by Alex Christensen.
+
+ Update tests to use the new API instead of the deprecated one. Also update the TLSErrorsPolicy test to also
+ check that ephemeral web views inherit the network settings from its web context.
+
+ * TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp:
+ (testSSL):
+ (testInsecureContent):
+ (testTLSErrorsPolicy):
+ (testTLSErrorsRedirect):
+ (testTLSErrorsHTTPAuth):
+ (testLoadFailedWithTLSErrors):
+ (testSubresourceLoadFailedWithTLSErrors):
+ (testWebSocketTLSErrors):
+
2020-09-23 Jonathan Bedard <[email protected]>
Force SYSTEM_VERSION_COMPAT=0 in Webkit scripts
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp (267501 => 267502)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp 2020-09-23 21:54:31 UTC (rev 267501)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp 2020-09-23 22:14:15 UTC (rev 267502)
@@ -66,9 +66,9 @@
static void testSSL(SSLTest* test, gconstpointer)
{
- WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
- WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
- webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
+ auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
+ WebKitTLSErrorsPolicy originalPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
test->loadURI(kHttpsServer->getURIForPath("/").data());
test->waitUntilLoadFinished();
@@ -85,7 +85,7 @@
g_assert_null(test->m_certificate);
g_assert_cmpuint(test->m_tlsErrors, ==, 0);
- webkit_web_context_set_tls_errors_policy(context, originalPolicy);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, originalPolicy);
}
class InsecureContentTest: public WebViewTest {
@@ -116,9 +116,9 @@
static void testInsecureContent(InsecureContentTest* test, gconstpointer)
{
- WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
- WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
- webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
+ auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
+ WebKitTLSErrorsPolicy originalPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
test->loadURI(kHttpsServer->getURIForPath("/insecure-content/").data());
test->waitUntilLoadFinished();
@@ -128,7 +128,7 @@
// https://bugs.webkit.org/show_bug.cgi?id=142469
g_assert_true(test->m_insecureContentDisplayed);
- webkit_web_context_set_tls_errors_policy(context, originalPolicy);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, originalPolicy);
}
static bool assertIfSSLRequestProcessed = false;
@@ -135,9 +135,9 @@
static void testTLSErrorsPolicy(SSLTest* test, gconstpointer)
{
- WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
+ auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
// TLS errors are treated as transport failures by default.
- g_assert_cmpint(webkit_web_context_get_tls_errors_policy(context), ==, WEBKIT_TLS_ERRORS_POLICY_FAIL);
+ g_assert_cmpint(webkit_website_data_manager_get_tls_errors_policy(websiteDataManager), ==, WEBKIT_TLS_ERRORS_POLICY_FAIL);
assertIfSSLRequestProcessed = true;
test->loadURI(kHttpsServer->getURIForPath("/").data());
@@ -147,8 +147,8 @@
g_assert_false(test->m_loadEvents.contains(LoadTrackingTest::LoadCommitted));
assertIfSSLRequestProcessed = false;
- webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
- g_assert_cmpint(webkit_web_context_get_tls_errors_policy(context), ==, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
+ g_assert_cmpint(webkit_website_data_manager_get_tls_errors_policy(websiteDataManager), ==, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
test->m_loadFailed = false;
test->loadURI(kHttpsServer->getURIForPath("/").data());
@@ -155,15 +155,29 @@
test->waitUntilLoadFinished();
g_assert_false(test->m_loadFailed);
- webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
- g_assert_cmpint(webkit_web_context_get_tls_errors_policy(context), ==, WEBKIT_TLS_ERRORS_POLICY_FAIL);
+ // An ephemeral web view should keep the same network settings by default.
+ auto webView = Test::adoptView(g_object_new(WEBKIT_TYPE_WEB_VIEW,
+#if PLATFORM(WPE)
+ "backend", Test::createWebViewBackend(),
+#endif
+ "web-context", test->m_webContext.get(),
+ "is-ephemeral", TRUE,
+ nullptr));
+ g_assert_true(webkit_web_view_is_ephemeral(webView.get()));
+ g_assert_false(webkit_web_context_is_ephemeral(test->m_webContext.get()));
+ auto* webViewDataManager = webkit_web_view_get_website_data_manager(webView.get());
+ g_assert_false(websiteDataManager == webViewDataManager);
+ g_assert_cmpint(webkit_website_data_manager_get_tls_errors_policy(websiteDataManager), ==, webkit_website_data_manager_get_tls_errors_policy(webViewDataManager));
+
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_FAIL);
+ g_assert_cmpint(webkit_website_data_manager_get_tls_errors_policy(websiteDataManager), ==, WEBKIT_TLS_ERRORS_POLICY_FAIL);
}
static void testTLSErrorsRedirect(SSLTest* test, gconstpointer)
{
- WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
- WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
- webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
+ auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
+ WebKitTLSErrorsPolicy originalPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_FAIL);
assertIfSSLRequestProcessed = true;
test->loadURI(kHttpsServer->getURIForPath("/redirect").data());
@@ -173,7 +187,7 @@
g_assert_false(test->m_loadEvents.contains(LoadTrackingTest::LoadCommitted));
assertIfSSLRequestProcessed = false;
- webkit_web_context_set_tls_errors_policy(context, originalPolicy);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, originalPolicy);
}
static gboolean webViewAuthenticationCallback(WebKitWebView*, WebKitAuthenticationRequest* request)
@@ -185,9 +199,9 @@
static void testTLSErrorsHTTPAuth(SSLTest* test, gconstpointer)
{
- WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
- WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
- webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
+ auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
+ WebKitTLSErrorsPolicy originalPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_FAIL);
assertIfSSLRequestProcessed = true;
g_signal_connect(test->m_webView, "authenticate", G_CALLBACK(webViewAuthenticationCallback), NULL);
@@ -198,7 +212,7 @@
g_assert_false(test->m_loadEvents.contains(LoadTrackingTest::LoadCommitted));
assertIfSSLRequestProcessed = false;
- webkit_web_context_set_tls_errors_policy(context, originalPolicy);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, originalPolicy);
}
class TLSErrorsTest: public SSLTest {
@@ -242,9 +256,9 @@
static void testLoadFailedWithTLSErrors(TLSErrorsTest* test, gconstpointer)
{
- WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
- WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
- webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
+ auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
+ WebKitTLSErrorsPolicy originalPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_FAIL);
assertIfSSLRequestProcessed = true;
// The load-failed-with-tls-errors signal should be emitted when there is a TLS failure.
@@ -259,7 +273,7 @@
assertIfSSLRequestProcessed = false;
// Test allowing an exception for this certificate on this host.
- webkit_web_context_allow_tls_certificate_for_host(context, test->certificate(), test->host());
+ webkit_web_context_allow_tls_certificate_for_host(test->m_webContext.get(), test->certificate(), test->host());
// The page should now load without errors.
test->loadURI(kHttpsServer->getURIForPath("/test-tls/").data());
test->waitUntilLoadFinished();
@@ -269,7 +283,7 @@
g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, TLSExpectedSuccessTitle);
- webkit_web_context_set_tls_errors_policy(context, originalPolicy);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, originalPolicy);
}
class TLSSubresourceTest : public WebViewTest {
@@ -328,8 +342,8 @@
static void testSubresourceLoadFailedWithTLSErrors(TLSSubresourceTest* 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);
+ auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_FAIL);
assertIfSSLRequestProcessed = true;
test->loadURI(kHttpServer->getURIForPath("/").data());
@@ -410,9 +424,9 @@
static void testWebSocketTLSErrors(WebSocketTest* test, gconstpointer)
{
- WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
- WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
- webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
+ auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
+ WebKitTLSErrorsPolicy originalPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_FAIL);
// First, check that insecure ws:// web sockets work fine.
unsigned events = test->connectToServerAndWaitForEvents(kHttpServer);
@@ -430,13 +444,13 @@
g_assert_true(events & WebSocketTest::EventFlags::DidClose);
// Now try wss:// again, this time ignoring TLS errors.
- webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
events = test->connectToServerAndWaitForEvents(kHttpsServer);
g_assert_true(events & WebSocketTest::EventFlags::DidServerCompleteHandshake);
g_assert_true(events & WebSocketTest::EventFlags::DidOpen);
g_assert_false(events & WebSocketTest::EventFlags::DidClose);
- webkit_web_context_set_tls_errors_policy(context, originalPolicy);
+ webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, originalPolicy);
}
static void httpsServerCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)