Changeset 260475 in webkit


Ignore:
Timestamp:
Apr 21, 2020 5:14:03 PM (4 years ago)
Author:
Chris Dumez
Message:

REGRESSION(r260410) Frequent Network process crashes
https://bugs.webkit.org/show_bug.cgi?id=210825

Reviewed by Alex Christensen.

The webPageProxyID in the NetworkProcessProxy::DidNegotiateModernTLS() IPC was invalid because
NetworkProcessProxy::preconnectTo() was failing to initialize NetworkLoadParameters::webPageProxyID.
This patch addresses the issue.

No new tests, added new assertion that would be tripped by existing tests.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::preconnectTo):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::preconnectTo):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::preconnectTo):

Location:
trunk/Source/WebKit
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r260474 r260475  
     12020-04-21  Chris Dumez  <cdumez@apple.com>
     2
     3        REGRESSION(r260410) Frequent Network process crashes
     4        https://bugs.webkit.org/show_bug.cgi?id=210825
     5
     6        Reviewed by Alex Christensen.
     7
     8        The webPageProxyID in the NetworkProcessProxy::DidNegotiateModernTLS() IPC was invalid because
     9        NetworkProcessProxy::preconnectTo() was failing to initialize NetworkLoadParameters::webPageProxyID.
     10        This patch addresses the issue.
     11
     12        No new tests, added new assertion that would be tripped by existing tests.
     13
     14        * NetworkProcess/NetworkLoad.cpp:
     15        (WebKit::NetworkLoad::NetworkLoad):
     16        * NetworkProcess/NetworkProcess.cpp:
     17        (WebKit::NetworkProcess::preconnectTo):
     18        * NetworkProcess/NetworkProcess.h:
     19        * NetworkProcess/NetworkProcess.messages.in:
     20        * UIProcess/Network/NetworkProcessProxy.cpp:
     21        (WebKit::NetworkProcessProxy::preconnectTo):
     22        * UIProcess/Network/NetworkProcessProxy.h:
     23        * UIProcess/WebPageProxy.cpp:
     24        (WebKit::WebPageProxy::preconnectTo):
     25
    1262020-04-21  Jer Noble  <jer.noble@apple.com>
    227
  • trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp

    r260410 r260475  
    6464    , m_currentRequest(m_parameters.request)
    6565{
     66    ASSERT(m_parameters.webPageProxyID);
    6667    initialize(networkSession, blobRegistry);
    6768}
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r260303 r260475  
    13271327#endif // ENABLE(RESOURCE_LOAD_STATISTICS)
    13281328
    1329 void NetworkProcess::preconnectTo(PAL::SessionID sessionID, const URL& url, const String& userAgent, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, Optional<NavigatingToAppBoundDomain> isNavigatingToAppBoundDomain)
     1329void NetworkProcess::preconnectTo(WebPageProxyIdentifier webPageProxyID, PAL::SessionID sessionID, const URL& url, const String& userAgent, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, Optional<NavigatingToAppBoundDomain> isNavigatingToAppBoundDomain)
    13301330{
    13311331#if ENABLE(SERVER_PRECONNECT)
     
    13361336
    13371337    NetworkLoadParameters parameters;
     1338    parameters.webPageProxyID = webPageProxyID;
    13381339    parameters.request = ResourceRequest { url };
    13391340    parameters.isNavigatingToAppBoundDomain = isNavigatingToAppBoundDomain;
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r260303 r260475  
    275275    void cacheStorageRootPath(PAL::SessionID, CacheStorageRootPathCallback&&);
    276276
    277     void preconnectTo(PAL::SessionID, const URL&, const String&, WebCore::StoredCredentialsPolicy, Optional<NavigatingToAppBoundDomain>);
     277    void preconnectTo(WebPageProxyIdentifier, PAL::SessionID, const URL&, const String&, WebCore::StoredCredentialsPolicy, Optional<NavigatingToAppBoundDomain>);
    278278
    279279    void setSessionIsControlledByAutomation(PAL::SessionID, bool);
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in

    r260372 r260475  
    8080    ProcessDidResume()
    8181
    82     PreconnectTo(PAL::SessionID sessionID, URL url, String userAgent, enum:uint8_t WebCore::StoredCredentialsPolicy storedCredentialsPolicy, enum:bool Optional<WebKit::NavigatingToAppBoundDomain> isNavigatingToAppBoundDomain);
     82    PreconnectTo(WebKit::WebPageProxyIdentifier webPageProxyID, PAL::SessionID sessionID, URL url, String userAgent, enum:uint8_t WebCore::StoredCredentialsPolicy storedCredentialsPolicy, enum:bool Optional<WebKit::NavigatingToAppBoundDomain> isNavigatingToAppBoundDomain);
    8383
    8484#if ENABLE(RESOURCE_LOAD_STATISTICS)
  • trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp

    r260410 r260475  
    14211421}
    14221422
    1423 void NetworkProcessProxy::preconnectTo(PAL::SessionID sessionID, const URL& url, const String& userAgent, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, Optional<NavigatingToAppBoundDomain> isNavigatingToAppBoundDomain)
     1423void NetworkProcessProxy::preconnectTo(WebPageProxyIdentifier webPageProxyID, PAL::SessionID sessionID, const URL& url, const String& userAgent, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, Optional<NavigatingToAppBoundDomain> isNavigatingToAppBoundDomain)
    14241424{
    14251425    if (!url.isValid() || !url.protocolIsInHTTPFamily() || SecurityOrigin::isLocalHostOrLoopbackIPAddress(url.host()))
    14261426        return;
    1427     send(Messages::NetworkProcess::PreconnectTo(sessionID, url, userAgent, storedCredentialsPolicy, isNavigatingToAppBoundDomain), 0);
     1427    send(Messages::NetworkProcess::PreconnectTo(webPageProxyID, sessionID, url, userAgent, storedCredentialsPolicy, isNavigatingToAppBoundDomain), 0);
    14281428}
    14291429
  • trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h

    r260453 r260475  
    112112    void getLocalStorageDetails(PAL::SessionID, CompletionHandler<void(Vector<LocalStorageDatabaseTracker::OriginDetails>&&)>&&);
    113113
    114     void preconnectTo(PAL::SessionID, const URL&, const String&, WebCore::StoredCredentialsPolicy, Optional<NavigatingToAppBoundDomain>);
     114    void preconnectTo(WebPageProxyIdentifier, PAL::SessionID, const URL&, const String&, WebCore::StoredCredentialsPolicy, Optional<NavigatingToAppBoundDomain>);
    115115
    116116#if ENABLE(RESOURCE_LOAD_STATISTICS)
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r260446 r260475  
    43774377
    43784378    if (auto* networkProcess = m_process->processPool().networkProcess())
    4379         networkProcess->preconnectTo(sessionID(), url, userAgent(), WebCore::StoredCredentialsPolicy::Use, m_isNavigatingToAppBoundDomain);
     4379        networkProcess->preconnectTo(identifier(), sessionID(), url, userAgent(), WebCore::StoredCredentialsPolicy::Use, m_isNavigatingToAppBoundDomain);
    43804380}
    43814381
Note: See TracChangeset for help on using the changeset viewer.