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