⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 267502 in webkit


Ignore:
Timestamp:
Sep 23, 2020, 3:14:15 PM (6 years ago)
Author:
commit-queue@webkit.org
Message:

[GTK][WPE] Move TLS errors API from WebKitContext to WebKitWebsiteDataManager
https://bugs.webkit.org/show_bug.cgi?id=216822

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-09-23
Reviewed by Alex Christensen.

Source/WebCore:

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.

Source/WebKit:

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.

Tools:

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):

Location:
trunk
Files:
31 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r267499 r267502  
     12020-09-23  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK][WPE] Move TLS errors API from WebKitContext to WebKitWebsiteDataManager
     4        https://bugs.webkit.org/show_bug.cgi?id=216822
     5
     6        Reviewed by Alex Christensen.
     7
     8        Make ignoreTLSErrors a member of SoupNetworkSession, instead of being global.
     9
     10        * platform/network/soup/SoupNetworkSession.cpp:
     11        (WebCore::SoupNetworkSession::setIgnoreTLSErrors):
     12        (WebCore::SoupNetworkSession::checkTLSErrors):
     13        (WebCore::SoupNetworkSession::setShouldIgnoreTLSErrors): Deleted.
     14        * platform/network/soup/SoupNetworkSession.h:
     15        * testing/InternalSettings.cpp:
     16        (WebCore::InternalSettings::setAllowsAnySSLCertificate): Do not use SoupNetworkSession in the web process.
     17
    1182020-09-23  Tim Horton  <timothy_horton@apple.com>
    219
  • trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp

    r266819 r267502  
    4545namespace WebCore {
    4646
    47 static bool gIgnoreTLSErrors;
    48 
    4947static CString& initialAcceptLanguages()
    5048{
     
    326324}
    327325
    328 void SoupNetworkSession::setShouldIgnoreTLSErrors(bool ignoreTLSErrors)
    329 {
    330     gIgnoreTLSErrors = ignoreTLSErrors;
     326void SoupNetworkSession::setIgnoreTLSErrors(bool ignoreTLSErrors)
     327{
     328    m_ignoreTLSErrors = ignoreTLSErrors;
    331329}
    332330
    333331Optional<ResourceError> SoupNetworkSession::checkTLSErrors(const URL& requestURL, GTlsCertificate* certificate, GTlsCertificateFlags tlsErrors)
    334332{
    335     if (gIgnoreTLSErrors)
    336         return WTF::nullopt;
    337 
    338     if (!tlsErrors)
     333    if (m_ignoreTLSErrors || !tlsErrors)
    339334        return WTF::nullopt;
    340335
  • trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.h

    r266112 r267502  
    6767    void setAcceptLanguages(const CString&);
    6868
    69     WEBCORE_EXPORT static void setShouldIgnoreTLSErrors(bool);
    70     static Optional<ResourceError> checkTLSErrors(const URL&, GTlsCertificate*, GTlsCertificateFlags);
     69    WEBCORE_EXPORT void setIgnoreTLSErrors(bool);
     70    Optional<ResourceError> checkTLSErrors(const URL&, GTlsCertificate*, GTlsCertificateFlags);
    7171    static void allowSpecificHTTPSCertificateForHost(const CertificateInfo&, const String& host);
    7272
     
    8080    GRefPtr<SoupSession> m_soupSession;
    8181    PAL::SessionID m_sessionID;
     82    bool m_ignoreTLSErrors { false };
    8283};
    8384
  • trunk/Source/WebCore/testing/InternalSettings.cpp

    r267188 r267502  
    4848#endif
    4949
    50 #if USE(SOUP)
    51 #include "SoupNetworkSession.h"
    52 #endif
    53 
    5450#if ENABLE(WEB_AUDIO)
    5551#include "AudioContext.h"
     
    899895{
    900896    DeprecatedGlobalSettings::setAllowsAnySSLCertificate(allowsAnyCertificate);
    901 #if USE(SOUP)
    902     SoupNetworkSession::setShouldIgnoreTLSErrors(allowsAnyCertificate);
    903 #endif
    904897}
    905898
  • trunk/Source/WebKit/ChangeLog

    r267498 r267502  
     12020-09-23  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK][WPE] Move TLS errors API from WebKitContext to WebKitWebsiteDataManager
     4        https://bugs.webkit.org/show_bug.cgi?id=216822
     5
     6        Reviewed by Alex Christensen.
     7
     8        Make TLS errors policy per session instead of global to the network process. The web context API now simply
     9        forwards the request to the website data manager. The website data manager created for an ephemeral web view
     10        will inherit the network settings from the web context website data manager. This ensures backwards
     11        compatibility, but it's also convenient, since it's the desired behavior in most of the cases. Apps can still
     12        change the network settings of the web view by getting the website data manager.
     13
     14        * NetworkProcess/NetworkProcess.h:
     15        * NetworkProcess/NetworkProcess.messages.in:
     16        * NetworkProcess/NetworkProcessCreationParameters.cpp:
     17        (WebKit::NetworkProcessCreationParameters::encode const):
     18        (WebKit::NetworkProcessCreationParameters::decode):
     19        * NetworkProcess/NetworkProcessCreationParameters.h:
     20        * NetworkProcess/NetworkSessionCreationParameters.cpp:
     21        (WebKit::NetworkSessionCreationParameters::encode const):
     22        (WebKit::NetworkSessionCreationParameters::decode):
     23        * NetworkProcess/NetworkSessionCreationParameters.h:
     24        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
     25        (WebKit::NetworkDataTaskSoup::tlsConnectionAcceptCertificate):
     26        * NetworkProcess/soup/NetworkProcessSoup.cpp:
     27        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
     28        (WebKit::NetworkProcess::setIgnoreTLSErrors):
     29        * NetworkProcess/soup/NetworkSessionSoup.cpp:
     30        (WebKit::NetworkSessionSoup::NetworkSessionSoup):
     31        (WebKit::webSocketAcceptCertificateCallback):
     32        (WebKit::webSocketMessageNetworkEventCallback):
     33        (WebKit::NetworkSessionSoup::createWebSocketTask):
     34        (WebKit::NetworkSessionSoup::setIgnoreTLSErrors):
     35        * NetworkProcess/soup/NetworkSessionSoup.h:
     36        * UIProcess/API/glib/WebKitAutomationSession.cpp:
     37        (webkitAutomationSessionCreate):
     38        * UIProcess/API/glib/WebKitWebContext.cpp:
     39        (webkitWebContextConstructed):
     40        (webkit_web_context_set_tls_errors_policy):
     41        (webkit_web_context_get_tls_errors_policy):
     42        * UIProcess/API/glib/WebKitWebView.cpp:
     43        (webkitWebViewConstructed):
     44        (webkit_web_view_class_init):
     45        (webkitWebViewLoadFailedWithTLSErrors):
     46        * UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
     47        (webkitWebsiteDataManagerConstructed):
     48        (webkitWebsiteDataManagerGetDataStore):
     49        (webkit_website_data_manager_set_tls_errors_policy):
     50        (webkit_website_data_manager_get_tls_errors_policy):
     51        * UIProcess/API/gtk/WebKitWebContext.h:
     52        * UIProcess/API/gtk/WebKitWebsiteDataManager.h:
     53        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
     54        * UIProcess/API/wpe/WebKitWebContext.h:
     55        * UIProcess/API/wpe/WebKitWebsiteDataManager.h:
     56        * UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
     57        * UIProcess/WebProcessPool.h:
     58        * UIProcess/WebsiteData/WebsiteDataStore.h:
     59        (WebKit::WebsiteDataStore::ignoreTLSErrors const):
     60        * UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp:
     61        (WebKit::WebsiteDataStore::setIgnoreTLSErrors):
     62        * UIProcess/soup/WebProcessPoolSoup.cpp:
     63        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
     64        (WebKit::WebProcessPool::setIgnoreTLSErrors): Deleted.
     65
    1662020-09-23  Per Arne Vollan  <pvollan@apple.com>
    267
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r267123 r267502  
    446446
    447447#if USE(SOUP)
    448     void setIgnoreTLSErrors(bool);
     448    void setIgnoreTLSErrors(PAL::SessionID, bool);
    449449    void userPreferredLanguagesChanged(const Vector<String>&);
    450450    void setNetworkProxySettings(const WebCore::SoupNetworkProxySettings&);
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in

    r267123 r267502  
    2929
    3030#if USE(SOUP)
    31     SetIgnoreTLSErrors(bool ignoreTLSErrors)
     31    SetIgnoreTLSErrors(PAL::SessionID sessionID, bool ignoreTLSErrors)
    3232    UserPreferredLanguagesChanged(Vector<String> languages)
    3333    SetNetworkProxySettings(struct WebCore::SoupNetworkProxySettings settings)
  • trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp

    r267090 r267502  
    5959#if USE(SOUP)
    6060    encoder << cookieAcceptPolicy;
    61     encoder << ignoreTLSErrors;
    6261    encoder << languages;
    6362    encoder << proxySettings;
     
    126125    if (!decoder.decode(result.cookieAcceptPolicy))
    127126        return false;
    128     if (!decoder.decode(result.ignoreTLSErrors))
    129         return false;
    130127    if (!decoder.decode(result.languages))
    131128        return false;
  • trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h

    r267090 r267502  
    7676#if USE(SOUP)
    7777    WebCore::HTTPCookieAcceptPolicy cookieAcceptPolicy { WebCore::HTTPCookieAcceptPolicy::AlwaysAccept };
    78     bool ignoreTLSErrors { false };
    7978    Vector<String> languages;
    8079    WebCore::SoupNetworkProxySettings proxySettings;
  • trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp

    r266086 r267502  
    6464    encoder << cookiePersistentStorageType;
    6565    encoder << persistentCredentialStorageEnabled;
     66    encoder << ignoreTLSErrors;
    6667#endif
    6768#if USE(CURL)
     
    182183    if (!persistentCredentialStorageEnabled)
    183184        return WTF::nullopt;
     185
     186    Optional<bool> ignoreTLSErrors;
     187    decoder >> ignoreTLSErrors;
     188    if (!ignoreTLSErrors)
     189        return WTF::nullopt;
    184190#endif
    185191
     
    300306        , WTFMove(*cookiePersistentStorageType)
    301307        , WTFMove(*persistentCredentialStorageEnabled)
     308        , WTFMove(*ignoreTLSErrors)
    302309#endif
    303310#if USE(CURL)
  • trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h

    r266086 r267502  
    7676    SoupCookiePersistentStorageType cookiePersistentStorageType { SoupCookiePersistentStorageType::Text };
    7777    bool persistentCredentialStorageEnabled { true };
     78    bool ignoreTLSErrors { false };
    7879#endif
    7980#if USE(CURL)
  • trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp

    r266576 r267502  
    445445    ASSERT(m_soupRequest);
    446446    URL url = soupURIToURL(soup_request_get_uri(m_soupRequest.get()));
    447     auto error = SoupNetworkSession::checkTLSErrors(url, certificate, tlsErrors);
     447    auto error = static_cast<NetworkSessionSoup&>(*m_session).soupNetworkSession().checkTLSErrors(url, certificate, tlsErrors);
    448448    if (!error)
    449449        return true;
  • trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp

    r266112 r267502  
    137137    if (!parameters.languages.isEmpty())
    138138        userPreferredLanguagesChanged(parameters.languages);
    139 
    140     setIgnoreTLSErrors(parameters.ignoreTLSErrors);
    141139}
    142140
     
    146144}
    147145
    148 void NetworkProcess::setIgnoreTLSErrors(bool ignoreTLSErrors)
     146void NetworkProcess::setIgnoreTLSErrors(PAL::SessionID sessionID, bool ignoreTLSErrors)
    149147{
    150     SoupNetworkSession::setShouldIgnoreTLSErrors(ignoreTLSErrors);
     148    if (auto* session = networkSession(sessionID))
     149        static_cast<NetworkSessionSoup&>(*session).setIgnoreTLSErrors(ignoreTLSErrors);
    151150}
    152151
  • trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp

    r266112 r267502  
    4747    auto* storageSession = networkStorageSession();
    4848    ASSERT(storageSession);
     49
     50    setIgnoreTLSErrors(parameters.ignoreTLSErrors);
    4951
    5052    if (!parameters.cookiePersistentStoragePath.isEmpty())
     
    99101}
    100102
    101 static gboolean webSocketAcceptCertificateCallback(GTlsConnection*, GTlsCertificate* certificate, GTlsCertificateFlags errors, SoupMessage* soupMessage)
     103static gboolean webSocketAcceptCertificateCallback(GTlsConnection* connection, GTlsCertificate* certificate, GTlsCertificateFlags errors, NetworkSessionSoup* session)
    102104{
    103105    if (DeprecatedGlobalSettings::allowsAnySSLCertificate())
    104106        return TRUE;
    105107
    106     return !SoupNetworkSession::checkTLSErrors(soupURIToURL(soup_message_get_uri(soupMessage)), certificate, errors);
     108    auto* soupMessage = static_cast<SoupMessage*>(g_object_get_data(G_OBJECT(connection), "wk-soup-message"));
     109    return !session->soupNetworkSession().checkTLSErrors(soupURIToURL(soup_message_get_uri(soupMessage)), certificate, errors);
    107110}
    108111
    109 static void webSocketMessageNetworkEventCallback(SoupMessage* soupMessage, GSocketClientEvent event, GIOStream* connection)
     112static void webSocketMessageNetworkEventCallback(SoupMessage* soupMessage, GSocketClientEvent event, GIOStream* connection, NetworkSessionSoup* session)
    110113{
    111114    if (event != G_SOCKET_CLIENT_TLS_HANDSHAKING)
    112115        return;
    113116
    114     g_signal_connect(connection, "accept-certificate", G_CALLBACK(webSocketAcceptCertificateCallback), soupMessage);
     117    g_object_set_data(G_OBJECT(connection), "wk-soup-message", soupMessage);
     118    g_signal_connect(connection, "accept-certificate", G_CALLBACK(webSocketAcceptCertificateCallback), session);
    115119}
    116120
     
    124128    request.updateSoupMessage(soupMessage.get(), blobRegistry());
    125129    if (request.url().protocolIs("wss"))
    126         g_signal_connect(soupMessage.get(), "network-event", G_CALLBACK(webSocketMessageNetworkEventCallback), nullptr);
     130        g_signal_connect(soupMessage.get(), "network-event", G_CALLBACK(webSocketMessageNetworkEventCallback), this);
    127131    return makeUnique<WebSocketTask>(channel, soupSession(), soupMessage.get(), protocol);
    128132}
    129133
     134void NetworkSessionSoup::setIgnoreTLSErrors(bool ignoreTLSErrors)
     135{
     136    m_networkSession->setIgnoreTLSErrors(ignoreTLSErrors);
     137}
     138
    130139} // namespace WebKit
  • trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.h

    r263444 r267502  
    5858    bool persistentCredentialStorageEnabled() const { return m_persistentCredentialStorageEnabled; }
    5959
     60    void setIgnoreTLSErrors(bool);
     61
    6062private:
    6163    std::unique_ptr<WebSocketTask> createWebSocketTask(NetworkSocketChannel&, const WebCore::ResourceRequest&, const String& protocol) final;
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp

    r252356 r267502  
    351351    session->priv->webContext = webContext;
    352352    if (capabilities.acceptInsecureCertificates)
    353         webkit_web_context_set_tls_errors_policy(webContext, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
     353        webkit_website_data_manager_set_tls_errors_policy(webkit_web_context_get_website_data_manager(webContext), WEBKIT_TLS_ERRORS_POLICY_IGNORE);
     354
    354355    for (auto& certificate : capabilities.certificates) {
    355356        GRefPtr<GTlsCertificate> tlsCertificate = adoptGRef(g_tls_certificate_new_from_file(certificate.second.utf8().data(), nullptr));
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp

    r267155 r267502  
    223223
    224224    CString faviconDatabaseDirectory;
    225     WebKitTLSErrorsPolicy tlsErrorsPolicy;
    226225    WebKitProcessModel processModel;
    227226
     
    414413
    415414    webkitWebsiteDataManagerAddProcessPool(priv->websiteDataManager.get(), *priv->processPool);
    416 
    417     priv->tlsErrorsPolicy = WEBKIT_TLS_ERRORS_POLICY_FAIL;
    418     priv->processPool->setIgnoreTLSErrors(false);
    419415
    420416    priv->processModel = WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES;
     
    14971493 *
    14981494 * Set the TLS errors policy of @context as @policy
     1495 *
     1496 * Deprecated: 2.32. Use webkit_website_data_manager_set_tls_errors_policy() instead.
    14991497 */
    15001498void webkit_web_context_set_tls_errors_policy(WebKitWebContext* context, WebKitTLSErrorsPolicy policy)
     
    15021500    g_return_if_fail(WEBKIT_IS_WEB_CONTEXT(context));
    15031501
    1504     if (context->priv->tlsErrorsPolicy == policy)
    1505         return;
    1506 
    1507     context->priv->tlsErrorsPolicy = policy;
    1508     bool ignoreTLSErrors = policy == WEBKIT_TLS_ERRORS_POLICY_IGNORE;
    1509     if (context->priv->processPool->ignoreTLSErrors() != ignoreTLSErrors)
    1510         context->priv->processPool->setIgnoreTLSErrors(ignoreTLSErrors);
     1502    webkit_website_data_manager_set_tls_errors_policy(context->priv->websiteDataManager.get(), policy);
    15111503}
    15121504
     
    15181510 *
    15191511 * Returns: a #WebKitTLSErrorsPolicy
     1512 *
     1513 * Deprecated: 2.32. Use webkit_website_data_manager_get_tls_errors_policy() instead.
    15201514 */
    15211515WebKitTLSErrorsPolicy webkit_web_context_get_tls_errors_policy(WebKitWebContext* context)
     
    15231517    g_return_val_if_fail(WEBKIT_IS_WEB_CONTEXT(context), WEBKIT_TLS_ERRORS_POLICY_IGNORE);
    15241518
    1525     return context->priv->tlsErrorsPolicy;
     1519    return webkit_website_data_manager_get_tls_errors_policy(context->priv->websiteDataManager.get());
    15261520}
    15271521
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp

    r265753 r267502  
    756756    if (priv->isEphemeral && !webkit_web_context_is_ephemeral(priv->context.get())) {
    757757        priv->websiteDataManager = adoptGRef(webkit_website_data_manager_new_ephemeral());
     758        auto* contextDataManager = webkit_web_context_get_website_data_manager(priv->context.get());
     759        webkit_website_data_manager_set_tls_errors_policy(priv->websiteDataManager.get(), webkit_website_data_manager_get_tls_errors_policy(contextDataManager));
    758760        webkitWebsiteDataManagerAddProcessPool(priv->websiteDataManager.get(), webkitWebContextGetProcessPool(priv->context.get()));
    759761    }
     
    11931195     * website data to the client storage, no matter what #WebKitWebsiteDataManager
    11941196     * its context is using. This is normally used to implement private browsing mode.
    1195      * This is a %G_PARAM_CONSTRUCT_ONLY property, so you have to create a ephemeral
    1196      * #WebKitWebView and it can't be changed. Note that all #WebKitWebView<!-- -->s
    1197      * created with an ephemeral #WebKitWebContext will be ephemeral automatically.
     1197     * This is a %G_PARAM_CONSTRUCT_ONLY property, so you have to create an ephemeral
     1198     * #WebKitWebView and it can't be changed. The ephemeral #WebKitWebsiteDataManager
     1199     * created for the #WebKitWebView will inherit the network settings from the
     1200     * #WebKitWebContext<!-- -->'s #WebKitWebsiteDataManager. To use different settings
     1201     * you can get the #WebKitWebsiteDataManager with webkit_web_view_get_website_data_manager()
     1202     * and set the new ones.
     1203     * Note that all #WebKitWebView<!-- -->s created with an ephemeral #WebKitWebContext
     1204     * will be ephemeral automatically.
    11981205     * See also webkit_web_context_new_ephemeral().
    11991206     *
     
    23572364    webkitWebViewCompleteAuthenticationRequest(webView);
    23582365
    2359     WebKitTLSErrorsPolicy tlsErrorsPolicy = webkit_web_context_get_tls_errors_policy(webView->priv->context.get());
     2366    auto* websiteDataManager = webkit_web_view_get_website_data_manager(webView);
     2367    WebKitTLSErrorsPolicy tlsErrorsPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
    23602368    if (tlsErrorsPolicy == WEBKIT_TLS_ERRORS_POLICY_FAIL) {
    23612369        gboolean returnValue;
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp

    r266990 r267502  
    112112    GUniquePtr<char> swRegistrationsDirectory;
    113113    GUniquePtr<char> domCacheDirectory;
     114    WebKitTLSErrorsPolicy tlsErrorsPolicy;
    114115
    115116    GRefPtr<WebKitCookieManager> cookieManager;
     
    242243            priv->domCacheDirectory.reset(g_build_filename(priv->baseCacheDirectory.get(), "CacheStorage", nullptr));
    243244    }
     245
     246    priv->tlsErrorsPolicy = WEBKIT_TLS_ERRORS_POLICY_FAIL;
    244247}
    245248
     
    490493            configuration->setCacheStorageDirectory(FileSystem::stringFromFileSystemRepresentation(priv->domCacheDirectory.get()));
    491494        priv->websiteDataStore = WebKit::WebsiteDataStore::create(WTFMove(configuration), PAL::SessionID::defaultSessionID());
     495        priv->websiteDataStore->setIgnoreTLSErrors(priv->tlsErrorsPolicy == WEBKIT_TLS_ERRORS_POLICY_IGNORE);
    492496    }
    493497
     
    908912
    909913    return webkitWebsiteDataManagerGetDataStore(manager).persistentCredentialStorageEnabled();
     914}
     915
     916/**
     917 * webkit_website_data_manager_set_tls_errors_policy:
     918 * @manager: a #WebKitWebsiteDataManager
     919 * @policy: a #WebKitTLSErrorsPolicy
     920 *
     921 * Set the TLS errors policy of @manager as @policy
     922 *
     923 * Since: 2.32
     924 */
     925void webkit_website_data_manager_set_tls_errors_policy(WebKitWebsiteDataManager* manager, WebKitTLSErrorsPolicy policy)
     926{
     927    g_return_if_fail(WEBKIT_IS_WEBSITE_DATA_MANAGER(manager));
     928
     929    if (manager->priv->tlsErrorsPolicy == policy)
     930        return;
     931
     932    manager->priv->tlsErrorsPolicy = policy;
     933    webkitWebsiteDataManagerGetDataStore(manager).setIgnoreTLSErrors(policy == WEBKIT_TLS_ERRORS_POLICY_IGNORE);
     934}
     935
     936/**
     937 * webkit_website_data_manager_get_tls_errors_policy:
     938 * @manager: a #WebKitWebsiteDataManager
     939 *
     940 * Get the TLS errors policy of @manager
     941 *
     942 * Returns: a #WebKitTLSErrorsPolicy
     943 *
     944 * Since: 2.32
     945 */
     946WebKitTLSErrorsPolicy webkit_website_data_manager_get_tls_errors_policy(WebKitWebsiteDataManager* manager)
     947{
     948    g_return_val_if_fail(WEBKIT_IS_WEBSITE_DATA_MANAGER(manager), WEBKIT_TLS_ERRORS_POLICY_FAIL);
     949
     950    return manager->priv->tlsErrorsPolicy;
    910951}
    911952
  • trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebContext.h

    r265753 r267502  
    9090
    9191/**
    92  * WebKitTLSErrorsPolicy:
    93  * @WEBKIT_TLS_ERRORS_POLICY_IGNORE: Ignore TLS errors.
    94  * @WEBKIT_TLS_ERRORS_POLICY_FAIL: TLS errors will emit
    95  *   #WebKitWebView::load-failed-with-tls-errors and, if the signal is handled,
    96  *   finish the load. In case the signal is not handled,
    97  *   #WebKitWebView::load-failed is emitted before the load finishes.
    98  *
    99  * Enum values used to denote the TLS errors policy.
    100  */
    101 typedef enum {
    102     WEBKIT_TLS_ERRORS_POLICY_IGNORE,
    103     WEBKIT_TLS_ERRORS_POLICY_FAIL
    104 } WebKitTLSErrorsPolicy;
    105 
    106 /**
    10792 * WebKitNetworkProxyMode:
    10893 * @WEBKIT_NETWORK_PROXY_MODE_DEFAULT: Use the default proxy of the system.
     
    279264                                                     const gchar * const           *languages);
    280265
    281 WEBKIT_API void
     266WEBKIT_DEPRECATED_FOR(webkit_website_data_manager_set_tls_errors_policy) void
    282267webkit_web_context_set_tls_errors_policy            (WebKitWebContext              *context,
    283268                                                     WebKitTLSErrorsPolicy          policy);
    284269
    285 WEBKIT_API WebKitTLSErrorsPolicy
     270WEBKIT_DEPRECATED_FOR(webkit_website_data_manager_get_tls_errors_policy) WebKitTLSErrorsPolicy
    286271webkit_web_context_get_tls_errors_policy            (WebKitWebContext              *context);
    287272
  • trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebsiteDataManager.h

    r264910 r267502  
    3939#define WEBKIT_WEBSITE_DATA_MANAGER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),  WEBKIT_TYPE_WEBSITE_DATA_MANAGER, WebKitWebsiteDataManagerClass))
    4040
     41/**
     42 * WebKitTLSErrorsPolicy:
     43 * @WEBKIT_TLS_ERRORS_POLICY_IGNORE: Ignore TLS errors.
     44 * @WEBKIT_TLS_ERRORS_POLICY_FAIL: TLS errors will emit
     45 *   #WebKitWebView::load-failed-with-tls-errors and, if the signal is handled,
     46 *   finish the load. In case the signal is not handled,
     47 *   #WebKitWebView::load-failed is emitted before the load finishes.
     48 *
     49 * Enum values used to denote the TLS errors policy.
     50 */
     51typedef enum {
     52    WEBKIT_TLS_ERRORS_POLICY_IGNORE,
     53    WEBKIT_TLS_ERRORS_POLICY_FAIL
     54} WebKitTLSErrorsPolicy;
     55
    4156typedef struct _WebKitWebsiteDataManager        WebKitWebsiteDataManager;
    4257typedef struct _WebKitWebsiteDataManagerClass   WebKitWebsiteDataManagerClass;
     
    119134WEBKIT_API gboolean
    120135webkit_website_data_manager_get_persistent_credential_storage_enabled (WebKitWebsiteDataManager *manager);
     136
     137WEBKIT_API void
     138webkit_website_data_manager_set_tls_errors_policy                     (WebKitWebsiteDataManager *manager,
     139                                                                       WebKitTLSErrorsPolicy     policy);
     140
     141WEBKIT_API WebKitTLSErrorsPolicy
     142webkit_website_data_manager_get_tls_errors_policy                     (WebKitWebsiteDataManager *manager);
    121143
    122144WEBKIT_API void
  • trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt

    r264910 r267502  
    2727WebKitCacheModel
    2828WebKitProcessModel
    29 WebKitTLSErrorsPolicy
    3029WebKitNetworkProxyMode
    3130webkit_web_context_get_default
     
    14541453<FILE>WebKitWebsiteDataManager</FILE>
    14551454WebKitWebsiteDataManager
     1455WebKitTLSErrorsPolicy
    14561456webkit_website_data_manager_new
    14571457webkit_website_data_manager_new_ephemeral
     
    14731473webkit_website_data_manager_set_persistent_credential_storage_enabled
    14741474webkit_website_data_manager_get_persistent_credential_storage_enabled
     1475webkit_website_data_manager_set_tls_errors_policy
     1476webkit_website_data_manager_get_tls_errors_policy
    14751477webkit_website_data_manager_fetch
    14761478webkit_website_data_manager_fetch_finish
  • trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebContext.h

    r265753 r267502  
    9090
    9191/**
    92  * WebKitTLSErrorsPolicy:
    93  * @WEBKIT_TLS_ERRORS_POLICY_IGNORE: Ignore TLS errors.
    94  * @WEBKIT_TLS_ERRORS_POLICY_FAIL: TLS errors will emit
    95  *   #WebKitWebView::load-failed-with-tls-errors and, if the signal is handled,
    96  *   finish the load. In case the signal is not handled,
    97  *   #WebKitWebView::load-failed is emitted before the load finishes.
    98  *
    99  * Enum values used to denote the TLS errors policy.
    100  */
    101 typedef enum {
    102     WEBKIT_TLS_ERRORS_POLICY_IGNORE,
    103     WEBKIT_TLS_ERRORS_POLICY_FAIL
    104 } WebKitTLSErrorsPolicy;
    105 
    106 /**
    10792 * WebKitNetworkProxyMode:
    10893 * @WEBKIT_NETWORK_PROXY_MODE_DEFAULT: Use the default proxy of the system.
     
    279264                                                     const gchar * const           *languages);
    280265
    281 WEBKIT_API void
     266WEBKIT_DEPRECATED_FOR(webkit_website_data_manager_set_tls_errors_policy) void
    282267webkit_web_context_set_tls_errors_policy            (WebKitWebContext              *context,
    283268                                                     WebKitTLSErrorsPolicy          policy);
    284269
    285 WEBKIT_API WebKitTLSErrorsPolicy
     270WEBKIT_DEPRECATED_FOR(webkit_website_data_manager_get_tls_errors_policy) WebKitTLSErrorsPolicy
    286271webkit_web_context_get_tls_errors_policy            (WebKitWebContext              *context);
    287272
  • trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebsiteDataManager.h

    r264910 r267502  
    3939#define WEBKIT_WEBSITE_DATA_MANAGER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),  WEBKIT_TYPE_WEBSITE_DATA_MANAGER, WebKitWebsiteDataManagerClass))
    4040
     41/**
     42 * WebKitTLSErrorsPolicy:
     43 * @WEBKIT_TLS_ERRORS_POLICY_IGNORE: Ignore TLS errors.
     44 * @WEBKIT_TLS_ERRORS_POLICY_FAIL: TLS errors will emit
     45 *   #WebKitWebView::load-failed-with-tls-errors and, if the signal is handled,
     46 *   finish the load. In case the signal is not handled,
     47 *   #WebKitWebView::load-failed is emitted before the load finishes.
     48 *
     49 * Enum values used to denote the TLS errors policy.
     50 */
     51typedef enum {
     52    WEBKIT_TLS_ERRORS_POLICY_IGNORE,
     53    WEBKIT_TLS_ERRORS_POLICY_FAIL
     54} WebKitTLSErrorsPolicy;
     55
    4156typedef struct _WebKitWebsiteDataManager        WebKitWebsiteDataManager;
    4257typedef struct _WebKitWebsiteDataManagerClass   WebKitWebsiteDataManagerClass;
     
    119134WEBKIT_API gboolean
    120135webkit_website_data_manager_get_persistent_credential_storage_enabled (WebKitWebsiteDataManager *manager);
     136
     137WEBKIT_API void
     138webkit_website_data_manager_set_tls_errors_policy                     (WebKitWebsiteDataManager *manager,
     139                                                                       WebKitTLSErrorsPolicy     policy);
     140
     141WEBKIT_API WebKitTLSErrorsPolicy
     142webkit_website_data_manager_get_tls_errors_policy                     (WebKitWebsiteDataManager *manager);
    121143
    122144WEBKIT_API void
  • trunk/Source/WebKit/UIProcess/API/wpe/docs/wpe-1.0-sections.txt

    r264910 r267502  
    55WebKitCacheModel
    66WebKitProcessModel
    7 WebKitTLSErrorsPolicy
    87WebKitNetworkProxyMode
    98webkit_web_context_get_default
     
    13881387<FILE>WebKitWebsiteDataManager</FILE>
    13891388WebKitWebsiteDataManager
     1389WebKitTLSErrorsPolicy
    13901390webkit_website_data_manager_new
    13911391webkit_website_data_manager_new_ephemeral
     
    14071407webkit_website_data_manager_set_persistent_credential_storage_enabled
    14081408webkit_website_data_manager_get_persistent_credential_storage_enabled
     1409webkit_website_data_manager_set_tls_errors_policy
     1410webkit_website_data_manager_get_tls_errors_policy
    14091411webkit_website_data_manager_fetch
    14101412webkit_website_data_manager_fetch_finish
  • trunk/Source/WebKit/UIProcess/WebProcessPool.h

    r267155 r267502  
    415415    void windowServerConnectionStateChanged();
    416416
    417 #if USE(SOUP)
    418     void setIgnoreTLSErrors(bool);
    419     bool ignoreTLSErrors() const { return m_ignoreTLSErrors; }
    420 #endif
    421 
    422417    static void setInvalidMessageCallback(void (*)(WKStringRef));
    423418    static void didReceiveInvalidMessage(IPC::MessageName);
     
    718713
    719714    HashMap<uint64_t, RefPtr<DictionaryCallback>> m_dictionaryCallbacks;
    720 
    721 #if USE(SOUP)
    722     bool m_ignoreTLSErrors { true };
    723 #endif
    724715
    725716    bool m_memoryCacheDisabled { false };
  • trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h

    r267344 r267502  
    260260    void setPersistentCredentialStorageEnabled(bool);
    261261    bool persistentCredentialStorageEnabled() const { return m_persistentCredentialStorageEnabled && isPersistent(); }
     262    void setIgnoreTLSErrors(bool);
     263    bool ignoreTLSErrors() const { return m_ignoreTLSErrors; }
    262264#endif
    263265
     
    396398#if USE(SOUP)
    397399    bool m_persistentCredentialStorageEnabled { true };
     400    bool m_ignoreTLSErrors { true };
    398401#endif
    399402
  • trunk/Source/WebKit/UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp

    r263444 r267502  
    5757}
    5858
     59void WebsiteDataStore::setIgnoreTLSErrors(bool ignoreTLSErrors)
     60{
     61    if (m_ignoreTLSErrors == ignoreTLSErrors)
     62        return;
     63
     64    m_ignoreTLSErrors = ignoreTLSErrors;
     65    for (auto& processPool : processPools())
     66        processPool->sendToNetworkingProcess(Messages::NetworkProcess::SetIgnoreTLSErrors(m_sessionID, m_ignoreTLSErrors));
     67}
     68
    5969} // namespace WebKit
  • trunk/Source/WebKit/UIProcess/soup/WebProcessPoolSoup.cpp

    r264694 r267502  
    4040    NetworkSessionCreationParameters& defaultSessionParameters = parameters.defaultDataStoreParameters.networkSessionParameters;
    4141    supplement<WebCookieManagerProxy>()->getCookiePersistentStorage(defaultSessionParameters.sessionID, defaultSessionParameters.cookiePersistentStoragePath, defaultSessionParameters.cookiePersistentStorageType);
    42     if (m_websiteDataStore)
     42    if (m_websiteDataStore) {
    4343        defaultSessionParameters.persistentCredentialStorageEnabled = m_websiteDataStore->persistentCredentialStorageEnabled();
     44        defaultSessionParameters.ignoreTLSErrors = m_websiteDataStore->ignoreTLSErrors();
     45    }
    4446
    4547    parameters.cookieAcceptPolicy = m_initialHTTPCookieAcceptPolicy;
    46     parameters.ignoreTLSErrors = m_ignoreTLSErrors;
    4748    parameters.languages = userPreferredLanguages();
    4849    parameters.proxySettings = m_networkProxySettings;
    4950    parameters.shouldEnableITPDatabase = true;
    50 }
    51 
    52 void WebProcessPool::setIgnoreTLSErrors(bool ignoreTLSErrors)
    53 {
    54     m_ignoreTLSErrors = ignoreTLSErrors;
    55     if (networkProcess())
    56         networkProcess()->send(Messages::NetworkProcess::SetIgnoreTLSErrors(m_ignoreTLSErrors), 0);
    5751}
    5852
  • trunk/Tools/ChangeLog

    r267501 r267502  
     12020-09-23  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK][WPE] Move TLS errors API from WebKitContext to WebKitWebsiteDataManager
     4        https://bugs.webkit.org/show_bug.cgi?id=216822
     5
     6        Reviewed by Alex Christensen.
     7
     8        Update tests to use the new API instead of the deprecated one. Also update the TLSErrorsPolicy test to also
     9        check that ephemeral web views inherit the network settings from its web context.
     10
     11        * TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp:
     12        (testSSL):
     13        (testInsecureContent):
     14        (testTLSErrorsPolicy):
     15        (testTLSErrorsRedirect):
     16        (testTLSErrorsHTTPAuth):
     17        (testLoadFailedWithTLSErrors):
     18        (testSubresourceLoadFailedWithTLSErrors):
     19        (testWebSocketTLSErrors):
     20
    1212020-09-23  Jonathan Bedard  <jbedard@apple.com>
    222
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp

    r246677 r267502  
    6767static void testSSL(SSLTest* test, gconstpointer)
    6868{
    69     WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
    70     WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
    71     webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
     69    auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
     70    WebKitTLSErrorsPolicy originalPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
     71    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
    7272
    7373    test->loadURI(kHttpsServer->getURIForPath("/").data());
     
    8686    g_assert_cmpuint(test->m_tlsErrors, ==, 0);
    8787
    88     webkit_web_context_set_tls_errors_policy(context, originalPolicy);
     88    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, originalPolicy);
    8989}
    9090
     
    117117static void testInsecureContent(InsecureContentTest* test, gconstpointer)
    118118{
    119     WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
    120     WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
    121     webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
     119    auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
     120    WebKitTLSErrorsPolicy originalPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
     121    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
    122122
    123123    test->loadURI(kHttpsServer->getURIForPath("/insecure-content/").data());
     
    129129    g_assert_true(test->m_insecureContentDisplayed);
    130130
    131     webkit_web_context_set_tls_errors_policy(context, originalPolicy);
     131    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, originalPolicy);
    132132}
    133133
     
    136136static void testTLSErrorsPolicy(SSLTest* test, gconstpointer)
    137137{
    138     WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
     138    auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
    139139    // TLS errors are treated as transport failures by default.
    140     g_assert_cmpint(webkit_web_context_get_tls_errors_policy(context), ==, WEBKIT_TLS_ERRORS_POLICY_FAIL);
     140    g_assert_cmpint(webkit_website_data_manager_get_tls_errors_policy(websiteDataManager), ==, WEBKIT_TLS_ERRORS_POLICY_FAIL);
    141141
    142142    assertIfSSLRequestProcessed = true;
     
    148148    assertIfSSLRequestProcessed = false;
    149149
    150     webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
    151     g_assert_cmpint(webkit_web_context_get_tls_errors_policy(context), ==, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
     150    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
     151    g_assert_cmpint(webkit_website_data_manager_get_tls_errors_policy(websiteDataManager), ==, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
    152152
    153153    test->m_loadFailed = false;
     
    156156    g_assert_false(test->m_loadFailed);
    157157
    158     webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
    159     g_assert_cmpint(webkit_web_context_get_tls_errors_policy(context), ==, WEBKIT_TLS_ERRORS_POLICY_FAIL);
     158    // An ephemeral web view should keep the same network settings by default.
     159    auto webView = Test::adoptView(g_object_new(WEBKIT_TYPE_WEB_VIEW,
     160#if PLATFORM(WPE)
     161        "backend", Test::createWebViewBackend(),
     162#endif
     163        "web-context", test->m_webContext.get(),
     164        "is-ephemeral", TRUE,
     165        nullptr));
     166    g_assert_true(webkit_web_view_is_ephemeral(webView.get()));
     167    g_assert_false(webkit_web_context_is_ephemeral(test->m_webContext.get()));
     168    auto* webViewDataManager = webkit_web_view_get_website_data_manager(webView.get());
     169    g_assert_false(websiteDataManager == webViewDataManager);
     170    g_assert_cmpint(webkit_website_data_manager_get_tls_errors_policy(websiteDataManager), ==, webkit_website_data_manager_get_tls_errors_policy(webViewDataManager));
     171
     172    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_FAIL);
     173    g_assert_cmpint(webkit_website_data_manager_get_tls_errors_policy(websiteDataManager), ==, WEBKIT_TLS_ERRORS_POLICY_FAIL);
    160174}
    161175
    162176static void testTLSErrorsRedirect(SSLTest* test, gconstpointer)
    163177{
    164     WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
    165     WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
    166     webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
     178    auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
     179    WebKitTLSErrorsPolicy originalPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
     180    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_FAIL);
    167181
    168182    assertIfSSLRequestProcessed = true;
     
    174188    assertIfSSLRequestProcessed = false;
    175189
    176     webkit_web_context_set_tls_errors_policy(context, originalPolicy);
     190    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, originalPolicy);
    177191}
    178192
     
    186200static void testTLSErrorsHTTPAuth(SSLTest* test, gconstpointer)
    187201{
    188     WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
    189     WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
    190     webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
     202    auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
     203    WebKitTLSErrorsPolicy originalPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
     204    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_FAIL);
    191205
    192206    assertIfSSLRequestProcessed = true;
     
    199213    assertIfSSLRequestProcessed = false;
    200214
    201     webkit_web_context_set_tls_errors_policy(context, originalPolicy);
     215    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, originalPolicy);
    202216}
    203217
     
    243257static void testLoadFailedWithTLSErrors(TLSErrorsTest* test, gconstpointer)
    244258{
    245     WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
    246     WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
    247     webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
     259    auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
     260    WebKitTLSErrorsPolicy originalPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
     261    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_FAIL);
    248262
    249263    assertIfSSLRequestProcessed = true;
     
    260274
    261275    // Test allowing an exception for this certificate on this host.
    262     webkit_web_context_allow_tls_certificate_for_host(context, test->certificate(), test->host());
     276    webkit_web_context_allow_tls_certificate_for_host(test->m_webContext.get(), test->certificate(), test->host());
    263277    // The page should now load without errors.
    264278    test->loadURI(kHttpsServer->getURIForPath("/test-tls/").data());
     
    270284    g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, TLSExpectedSuccessTitle);
    271285
    272     webkit_web_context_set_tls_errors_policy(context, originalPolicy);
     286    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, originalPolicy);
    273287}
    274288
     
    329343static void testSubresourceLoadFailedWithTLSErrors(TLSSubresourceTest* test, gconstpointer)
    330344{
    331     WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
    332     webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
     345    auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
     346    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_FAIL);
    333347
    334348    assertIfSSLRequestProcessed = true;
     
    411425static void testWebSocketTLSErrors(WebSocketTest* test, gconstpointer)
    412426{
    413     WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
    414     WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
    415     webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
     427    auto* websiteDataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
     428    WebKitTLSErrorsPolicy originalPolicy = webkit_website_data_manager_get_tls_errors_policy(websiteDataManager);
     429    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_FAIL);
    416430
    417431    // First, check that insecure ws:// web sockets work fine.
     
    431445
    432446    // Now try wss:// again, this time ignoring TLS errors.
    433     webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
     447    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
    434448    events = test->connectToServerAndWaitForEvents(kHttpsServer);
    435449    g_assert_true(events & WebSocketTest::EventFlags::DidServerCompleteHandshake);
     
    437451    g_assert_false(events & WebSocketTest::EventFlags::DidClose);
    438452
    439     webkit_web_context_set_tls_errors_policy(context, originalPolicy);
     453    webkit_website_data_manager_set_tls_errors_policy(websiteDataManager, originalPolicy);
    440454}
    441455
Note: See TracChangeset for help on using the changeset viewer.