Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f8352ee5402eeb2d84d156b368e5abf0f0659fc1
      
https://github.com/WebKit/WebKit/commit/f8352ee5402eeb2d84d156b368e5abf0f0659fc1
  Author: Yoav Weiss <[email protected]>
  Date:   2026-07-28 (Tue, 28 Jul 2026)

  Changed paths:
    A 
LayoutTests/imported/w3c/web-platform-tests/navigation-timing/response-start-after-coop-bcg-switch-no-tao.tentative.https-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/navigation-timing/response-start-after-coop-bcg-switch-no-tao.tentative.https.html
    M Source/WebCore/loader/DocumentLoader.cpp
    M Source/WebCore/loader/DocumentLoader.h
    M Source/WebCore/loader/FrameLoadRequest.h
    M Source/WebCore/loader/FrameLoader.cpp
    M Source/WebCore/loader/ResourceLoadTiming.h
    M Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h
    M 
Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in
    M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
    M Source/WebKit/Shared/LoadParameters.h
    M Source/WebKit/Shared/LoadParameters.serialization.in
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in
    M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
    M Source/WebKit/UIProcess/ProvisionalPageProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp

  Log Message:
  -----------
  Set timeOrigin to align with spec, even when BCG switches take place.
https://bugs.webkit.org/show_bug.cgi?id=316291

Reviewed by Alex Christensen.

Currently the timeOrigin is set when the final process starts the navigation 
request load.
But in the case of a BCG switch, that load ends up resuming/reusing a load that 
was already
started in the previous process.
This PR pipes the relevant information over, so that the `timeOrigin` will be 
properly set
in these cases.

This is fine from a w3c/navigation-timing#160 perspective, because as
against this by obfuscating more than just the redirect data for cross-origin 
redirects.

Test progression.

* Source/WebCore/loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::startLoadingMainResource): Set the original 
navigation time if provided.
* Source/WebCore/loader/DocumentLoader.h:
(WebCore::DocumentLoader::setOriginalNavigationStartTime): Setter.
* Source/WebCore/loader/FrameLoadRequest.h:
(WebCore::FrameLoadRequest::originalNavigationStartTime const): Getter.
(WebCore::FrameLoadRequest::setOriginalNavigationStartTime): Setter.
* Source/WebCore/loader/FrameLoader.cpp:
(WebCore::FrameLoader::load): Set the originalNavigationStartTime from the 
request.
* Source/WebCore/loader/ResourceLoadTiming.h:
(WebCore::ResourceLoadTiming::setStartTime): Setter.
* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h:
* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in:
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::sendDidReceiveResponsePotentiallyInNewBrowsingContextGroup):
 Add originalNavigationStartTime as parameter to the BCG switch.
(WebKit::NetworkResourceLoader::sendDidReceiveResponseWithPotentialProcessSwap):
* Source/WebKit/Shared/LoadParameters.h:
* Source/WebKit/Shared/LoadParameters.serialization.in:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::triggerBrowsingContextGroupSwitchForNavigation): 
Add originalNavigationStartTime as parameter to the BCG switch.
(WebKit::NetworkProcessProxy::considerProcessSwapForNavigationResponse):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:
* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::loadRequest): Add originalNavigationStartTime as 
parameter to the BCG switch.
* Source/WebKit/UIProcess/ProvisionalPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::loadRequestWithNavigationShared): Set the 
originalNavigationStartTime in parameters.
(WebKit::WebPageProxy::continueNavigationInNewProcess): Pass 
originalNavigationStartTime.
(WebKit::WebPageProxy::triggerBrowsingContextGroupSwitchForNavigation): Pass 
originalNavigationStartTime.
(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::receivedNavigationActionPolicyDecision):
(WebKit::WebPageProxy::performProcessSwapForNavigationResponse):
(WebKit::WebPageProxy::triggerProcessSwapForEnhancedSecurity):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): Set the 
originalNavigationStartTime from the documentLoader's startTime.
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::loadRequest): Set the originalNavigationStartTime from the 
load parameters.
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-timing/response-start-after-coop-bcg-switch-no-tao.tentative.https-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-timing/response-start-after-coop-bcg-switch-no-tao.tentative.https.html:
 Added.

Canonical link: https://commits.webkit.org/318057@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to