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

Changeset 284730 in webkit


Ignore:
Timestamp:
Oct 22, 2021, 5:19:28 PM (5 years ago)
Author:
Chris Dumez
Message:

Preconnect to link's target on click
https://bugs.webkit.org/show_bug.cgi?id=232147

Reviewed by Alex Christensen.

Preconnect to link's target on click, for reduced page load time. This is a confirmed
progression on some of our page load time benchmarks.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

Location:
trunk/Source
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r284728 r284730  
     12021-10-22  Chris Dumez  <cdumez@apple.com>
     2
     3        Preconnect to link's target on click
     4        https://bugs.webkit.org/show_bug.cgi?id=232147
     5
     6        Reviewed by Alex Christensen.
     7
     8        Preconnect to link's target on click, for reduced page load time. This is a confirmed
     9        progression on some of our page load time benchmarks.
     10
     11        * html/HTMLAnchorElement.cpp:
     12        (WebCore::HTMLAnchorElement::handleClick):
     13
    1142021-10-22  Commit Queue  <commit-queue@webkit.org>
    215
  • trunk/Source/WebCore/html/HTMLAnchorElement.cpp

    r284093 r284730  
    4141#include "HTMLPictureElement.h"
    4242#include "KeyboardEvent.h"
     43#include "LoaderStrategy.h"
    4344#include "MouseEvent.h"
    4445#include "PingLoader.h"
    4546#include "PlatformMouseEvent.h"
     47#include "PlatformStrategies.h"
    4648#include "PrivateClickMeasurement.h"
    4749#include "RegistrableDomain.h"
     
    538540
    539541    sendPings(completedURL);
     542
     543    // Preconnect to the link's target for improved page load time.
     544    if (completedURL.protocolIsInHTTPFamily()) {
     545        auto storageCredentialsPolicy = frame->page() && frame->page()->canUseCredentialStorage() ? StoredCredentialsPolicy::Use : StoredCredentialsPolicy::DoNotUse;
     546        platformStrategies()->loaderStrategy()->preconnectTo(frame->loader(), completedURL, storageCredentialsPolicy, nullptr);
     547    }
    540548}
    541549
  • trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp

    r283179 r284730  
    769769void WebLoaderStrategy::preconnectTo(FrameLoader& frameLoader, const URL& url, StoredCredentialsPolicy storedCredentialsPolicy, PreconnectCompletionHandler&& completionHandler)
    770770{
    771     ASSERT(completionHandler);
    772771    auto* webFrameLoaderClient = toWebFrameLoaderClient(frameLoader.client());
    773772    if (!webFrameLoaderClient) {
    774         completionHandler(internalError(url));
     773        if (completionHandler)
     774            completionHandler(internalError(url));
    775775        return;
    776776    }
     
    778778    auto* webPage = webFrame.page();
    779779    if (!webPage) {
    780         completionHandler(internalError(url));
     780        if (completionHandler)
     781            completionHandler(internalError(url));
    781782        return;
    782783    }
Note: See TracChangeset for help on using the changeset viewer.