Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d7e8f73dd5abdd8b94c014847a5fb75c61de85f6
      
https://github.com/WebKit/WebKit/commit/d7e8f73dd5abdd8b94c014847a5fb75c61de85f6
  Author: Yoav Weiss <[email protected]>
  Date:   2025-10-06 (Mon, 06 Oct 2025)

  Changed paths:
    M 
LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https.html
    M 
LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=BaseCase-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=CSPExemption-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=FollowRedirect-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=RelativeUrlForSpeculationRulesSet-expected.txt
    M Source/WebCore/Headers.cmake
    M Source/WebCore/Modules/fetch/FetchRequestDestination.idl
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/bindings/js/ScriptController.cpp
    M Source/WebCore/bindings/js/ScriptController.h
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Document.h
    A Source/WebCore/dom/LoadableSpeculationRules.cpp
    A Source/WebCore/dom/LoadableSpeculationRules.h
    M Source/WebCore/dom/ScriptElement.cpp
    M Source/WebCore/dom/TaskSource.h
    M Source/WebCore/loader/FetchOptions.h
    M Source/WebCore/loader/FetchOptionsDestination.h
    M Source/WebCore/loader/FrameLoader.cpp
    M Source/WebCore/loader/LinkLoader.cpp
    M Source/WebCore/loader/SpeculationRules.cpp
    M Source/WebCore/loader/SpeculationRules.h
    M Source/WebCore/platform/network/HTTPHeaderNames.in
    M Source/WebCore/platform/network/RFC8941.cpp
    M Source/WebCore/platform/network/RFC8941.h
    M Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp
    M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in

  Log Message:
  -----------
  Add support for the Speculation-Rules HTTP header
https://bugs.webkit.org/show_bug.cgi?id=300110

Reviewed by Alex Christensen.

This PR adds support for the Speculation-Rules header, which allows
servers to add speculation rules into pages without modifying their HTML.

* 
LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https.html:
 Fix up cross-origin host.
* 
LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=BaseCase-expected.txt:
 Progression.
* 
LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=CSPExemption-expected.txt:
 Progression.
* 
LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=FollowRedirect-expected.txt:
 Progression.
* 
LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=RelativeUrlForSpeculationRulesSet-expected.txt:
 Progression.
* Source/WebCore/Headers.cmake: Add LoadableSpeculationRules.h
* Source/WebCore/Modules/fetch/FetchRequestDestination.idl: Add a 
speculationrules destination.
* Source/WebCore/Sources.txt: Add LoadableSpeculationRules.cpp
* Source/WebCore/WebCore.xcodeproj/project.pbxproj: Add new files.
* Source/WebCore/bindings/js/ScriptController.cpp:
(WebCore::ScriptController::registerSpeculationRules): Return false when 
speculation rules parsing fails.
* Source/WebCore/bindings/js/ScriptController.h:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::processSpeculationRulesHeader): Implement header processing.
* Source/WebCore/dom/Document.h:
* Source/WebCore/dom/LoadableSpeculationRules.cpp: Added.
(WebCore::LoadableSpeculationRules::create):
(WebCore::LoadableSpeculationRules::LoadableSpeculationRules):
(WebCore::LoadableSpeculationRules::~LoadableSpeculationRules):
(WebCore::LoadableSpeculationRules::requestSpeculationRules):
(WebCore::LoadableSpeculationRules::load): Load the speculation rules ruleset.
(WebCore::LoadableSpeculationRules::notifyFinished): Process the ruleset.
* Source/WebCore/dom/LoadableSpeculationRules.h: Copied from 
Source/WebCore/loader/FetchOptionsDestination.h.
* Source/WebCore/dom/ScriptElement.cpp:
(WebCore::ScriptElement::registerSpeculationRules): Only consider rules when 
parsing was successful.
* Source/WebCore/dom/TaskSource.h: Add speculationrules.
* Source/WebCore/loader/FetchOptions.h: Add speculationrules.
* Source/WebCore/loader/FetchOptionsDestination.h: Add speculationrules.
* Source/WebCore/loader/FrameLoader.cpp:
(WebCore::FrameLoader::receivedFirstData): Call the Speculation-Rules header 
processing when the response first data is received.
* Source/WebCore/loader/LinkLoader.cpp:
(WebCore::LinkLoader::resourceTypeFromAsAttribute): Handle speculationrules 
destination.
* Source/WebCore/loader/SpeculationRules.cpp:
(WebCore::SpeculationRules::parseSpeculationRules): Return false on parsing 
failure.
* Source/WebCore/loader/SpeculationRules.h:
* Source/WebCore/platform/network/HTTPHeaderNames.in: Add Speculation-Rules.
* Source/WebCore/platform/network/RFC8941.cpp:
(RFC8941::parseList): List parsing implementation.
(RFC8941::parseListStructuredFieldValue): Parse a structured field list.
* Source/WebCore/platform/network/RFC8941.h:
* Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::isAllowedByContentSecurityPolicy): Handle 
speculationrules destination.
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::resourceLoadInfo): Handle speculationrules 
destination.
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in: Add 
speculationrules destination.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to