Skip to content

Implement speculation rules - same origin conservative prefetch#47377

Closed
yoavweiss wants to merge 1 commit into
WebKit:mainfrom
yoavweiss:specrules_tests
Closed

Implement speculation rules - same origin conservative prefetch#47377
yoavweiss wants to merge 1 commit into
WebKit:mainfrom
yoavweiss:specrules_tests

Conversation

@yoavweiss

@yoavweiss yoavweiss commented Jun 30, 2025

Copy link
Copy Markdown
Contributor

aa36ac4

Implement speculation rules - same origin conservative prefetch
https://bugs.webkit.org/show_bug.cgi?id=295193

Reviewed by NOBODY (OOPS!).

This implements an initial version of same-origin conservative prefetch
speculation rules.

* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=and-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=baseURLChangedByBaseElement-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=baseURLChangedBySameDocumentNavigation-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=defaultPredicate-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=hrefMatches-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=immediateMutation-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=invalidPredicate-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=linkHrefChanged-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=linkInShadowTree-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=linkToSelfFragment-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=newRuleSetAdded-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=not-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=or-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=selectorMatches-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=selectorMatchesDisplayLocked-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=selectorMatchesDisplayNone-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=selectorMatchesScopingRoot-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=unslottedLink-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-single.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-single.https_from_protocol=http&to_protocol=http-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-single.https_from_protocol=http&to_protocol=https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-single.https_from_protocol=https&to_protocol=http-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-single.https_from_protocol=https&to_protocol=https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/executor.sub.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/executor.sub.html.headers: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/prefetch.py: Added.
(main):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/utils.sub.js: Added.
(PrefetchAgent):
(PrefetchAgent.prototype.getExecutorURL):
(PrefetchAgent.prototype.async forceSinglePrefetch):
(PrefetchAgent.prototype.async forceSpeculationRules):
(PrefetchAgent.prototype.async navigate):
(PrefetchAgent.prototype.async getRequestHeaders):
(PrefetchAgent.prototype.async getResponseCookies):
(PrefetchAgent.prototype.async getRequestCookies):
(PrefetchAgent.prototype.async getRequestCredentials):
(PrefetchAgent.prototype.async setReferrerPolicy):
(PrefetchAgent.prototype.async getDeliveryType):
(getPrefetchUrl):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/resources/utils.js: Added.
(globalThis.assertSpeculationRulesIsSupported):
(globalThis.RemoteContextHelper.PreloadingRemoteContextWrapper.prototype.addPreload):
(globalThis.RemoteContextHelper.PreloadingRemoteContextWrapper):
* Source/JavaScriptCore/CMakeLists.txt:
* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
* Source/JavaScriptCore/Sources.txt:
* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::JSGlobalObject):
* Source/JavaScriptCore/runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::speculationRules const):
(JSC::JSGlobalObject::speculationRules):
* Source/JavaScriptCore/runtime/SpeculationRules.cpp: Added.
(JSC::parseStringOrStringList):
(JSC::parseDocumentPredicate):
(JSC::parseSingleRule):
(JSC::parseRules):
(JSC::SpeculationRules::parseSpeculationRules):
* Source/JavaScriptCore/runtime/SpeculationRules.h: Added.
(JSC::SpeculationRules::DocumentPredicate::DocumentPredicate):
(JSC::SpeculationRules::DocumentPredicate::value const):
(JSC::SpeculationRules::create):
(JSC::SpeculationRules::prefetchRules const):
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/bindings/js/ScriptController.cpp:
(WebCore::ScriptController::registerSpeculationRules):
* Source/WebCore/bindings/js/ScriptController.h:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::resolveStyle):
(WebCore::Document::updateBaseURL):
(WebCore::Document::considerSpeculationRules):
(WebCore::Document::prefetch):
* Source/WebCore/dom/Document.h:
* Source/WebCore/dom/ScriptElement.cpp:
(WebCore::ScriptElement::determineScriptType):
(WebCore::ScriptElement::prepareScript):
(WebCore::ScriptElement::registerSpeculationRules):
* Source/WebCore/dom/ScriptElement.h:
* Source/WebCore/dom/ScriptElementCachedScriptFetcher.h:
(WebCore::ScriptElementCachedScriptFetcher::isSpeculationRules const):
* Source/WebCore/dom/ScriptType.h:
* Source/WebCore/dom/SpeculationRulesMatcher.cpp: Copied from Source/WebCore/dom/ScriptElementCachedScriptFetcher.h.
(WebCore::matches):
(WebCore::SpeculationRulesMatcher::hasMatchingRule):
* Source/WebCore/dom/SpeculationRulesMatcher.h: Copied from Source/WebCore/dom/ScriptElementCachedScriptFetcher.h.
* Source/WebCore/dom/TextDecoderStreamDecoder.cpp:
* Source/WebCore/dom/TrustedTypePolicy.cpp:
* Source/WebCore/html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::defaultEventHandler):
(WebCore::HTMLAnchorElement::attributeChanged):
(WebCore::HTMLAnchorElement::insertedIntoAncestor):
(WebCore::HTMLAnchorElement::setFullURL):
(WebCore::HTMLAnchorElement::setShouldBePrefetched):
(WebCore::HTMLAnchorElement::checkForSpeculationRules):
* Source/WebCore/html/HTMLAnchorElement.h:
* Source/WebCore/html/HTMLScriptElement.h:
* Source/WebCore/loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::becomeMainResourceClient):
(WebCore::DocumentLoader::setPrefetchedMainResource):
* Source/WebCore/loader/DocumentLoader.h:
* Source/WebCore/loader/DocumentPrefetcher.cpp: Copied from Source/WebCore/dom/ScriptType.h.
(WebCore::DocumentPrefetcher::DocumentPrefetcher):
(WebCore::DocumentPrefetcher::~DocumentPrefetcher):
(WebCore::DocumentPrefetcher::prefetch):
(WebCore::DocumentPrefetcher::matchPrefetchedDocument):
(WebCore::DocumentPrefetcher::clear):
* Source/WebCore/loader/DocumentPrefetcher.h: Copied from Source/WebCore/dom/ScriptType.h.
(WebCore::DocumentPrefetcher::create):
* Source/WebCore/loader/FrameLoader.cpp:
(WebCore::FrameLoader::FrameLoader):
(WebCore::FrameLoader::commitProvisionalLoad):
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
(WebCore::FrameLoader::dispatchDidCommitLoad):
(WebCore::FrameLoader::prefetch):
* Source/WebCore/loader/FrameLoader.h:
* Source/WebCore/loader/LinkLoader.cpp:
* Source/WebCore/loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::allowedByContentSecurityPolicy const):
* Source/WebCore/platform/ReferrerPolicy.cpp:
(WebCore::parseReferrerPolicy):
* Source/WebCore/platform/ReferrerPolicy.h:
* Source/WebCore/platform/network/HTTPHeaderNames.in:
* Tools/Scripts/webkitpy/style/checkers/cpp.py:
(_check_parameter_name_against_text):

@yoavweiss yoavweiss self-assigned this Jun 30, 2025
@yoavweiss yoavweiss added the New Bugs Unclassified bugs are placed in this component until the correct component can be determined. label Jun 30, 2025
https://bugs.webkit.org/show_bug.cgi?id=295206

Reviewed by NOBODY (OOPS!).

This imports the Speculation Rules prefetch tests and sets (currently failing) expectations.

Upstream commit: web-platform-tests/wpt@cd7332b

* LayoutTests/imported/w3c/resources/import-expectations.json:
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/anonymous-client.https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/anonymous-client.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/clear-prefetch-cache-after-clear-site-data-cache.https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/clear-prefetch-cache-after-clear-site-data-cache.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/cookie-indices.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/cookie-indices.https_include=changed-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/cookie-indices.https_include=changedWithRedirect-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/cookie-indices.https_include=changedWithRedirect2-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/cookie-indices.https_include=changedWithRedirect3-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/cookie-indices.https_include=unchanged-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/cookie-indices.https_include=unchangedWithRedirect-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/cross-origin-cookies-anonymous-client-ip-duplicate.https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/cross-origin-cookies-anonymous-client-ip-duplicate.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/cross-origin-cookies.https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/cross-origin-cookies.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/different-initiators-2.https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/different-initiators-2.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/different-initiators.sub.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/different-initiators.sub.https_cross-site-1-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/different-initiators.sub.https_cross-site-2-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/different-initiators.sub.https_same-site-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=and-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=baseURLChangedByBaseElement-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=baseURLChangedBySameDocumentNavigation-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=defaultPredicate-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=hrefMatches-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=immediateMutation-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=invalidPredicate-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=linkHrefChanged-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=linkInShadowTree-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=linkToSelfFragment-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=newRuleSetAdded-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=not-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=or-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=selectorMatches-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=selectorMatchesDisplayLocked-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=selectorMatchesDisplayNone-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=selectorMatchesScopingRoot-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/document-rules.https_include=unslottedLink-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/duplicate-urls.https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/duplicate-urls.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/fragment.https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/fragment.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/implicit-source.https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/implicit-source.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/initiators-a-element.sub.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/initiators-a-element.sub.https_cross-site-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/initiators-a-element.sub.https_same-site-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/initiators-iframe-location-href.sub.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/initiators-iframe-location-href.sub.https_cross-site-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/initiators-iframe-location-href.sub.https_same-site-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/initiators-window-open.sub.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/initiators-window-open.sub.https_cross-site-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/initiators-window-open.sub.https_same-site-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/multiple-url.https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/multiple-url.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-delivery-type.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-delivery-type.https_prefetch=false&bypass_cache=false-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-delivery-type.https_prefetch=false&bypass_cache=true-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-delivery-type.https_prefetch=true&bypass_cache=false-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-delivery-type.https_prefetch=true&bypass_cache=true-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-requestStart-responseStart.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-requestStart-responseStart.https_include=afterResponse-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-requestStart-responseStart.https_include=noPrefetch-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-requestStart-responseStart.https_include=waitingForRedirect-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-requestStart-responseStart.https_include=waitingForResponse-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-sizes.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-sizes.https_bypass_cache=true-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-sizes.https_default-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-sizes.https_prefetch=true&bypass_cache=true-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/navigation-timing-sizes.https_prefetch=true-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-http-cache-interference.https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-http-cache-interference.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-prefetch-for-post.https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-prefetch-for-post.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/README.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/hint-test-inputs.js: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_1-1-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_10-10-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_11-11-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_12-12-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_13-13-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_14-14-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_15-15-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_16-16-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_17-17-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_18-18-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_19-19-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_2-2-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_20-20-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_21-21-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_22-22-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_23-23-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_24-24-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_25-25-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_26-26-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_27-27-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_28-last-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_3-3-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_4-4-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_5-5-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_6-6-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_7-7-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_8-8-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https_9-9-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_1-1-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_10-10-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_11-11-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_12-12-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_13-13-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_14-14-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_15-15-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_16-16-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_17-17-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_18-18-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_19-19-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_2-2-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_20-20-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_21-21-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_22-22-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_23-23-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_24-24-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_25-25-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_26-26-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_27-27-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_28-28-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_29-29-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_3-3-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_30-last-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_4-4-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_5-5-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_6-6-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_7-7-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_8-8-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/prefetch-single.https_9-9-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/test-inputs.js: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/test-utils.js: Added.
(addNoVarySearchHeaderUsingPipe):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/no-vary-search/w3c-import.log: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=BaseCase-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=CSPExemption-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=EmptyRuleSet-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=FailCORS-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=FailToParseRuleSet-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=FailToParseSpeculationRulesHeader-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=FollowRedirect-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=InnerListInSpeculationRulesHeader-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=InvalidMimeType-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=InvalidUrlForSpeculationRulesSet-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=RelativeUrlForCandidate-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=RelativeUrlForSpeculationRulesSet-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=StatusCode199-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=StatusCode404-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/out-of-document-rule-set.https_include=UseNonUTF8EncodingForSpeculationRulesSet-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-single.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-single.https_from_protocol=http&to_protocol=http-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-single.https_from_protocol=http&to_protocol=https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-single.https_from_protocol=https&to_protocol=http-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-single.https_from_protocol=https&to_protocol=https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-status.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-status.https_status=200&should_prefetch=true-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-status.https_status=250&should_prefetch=true-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-status.https_status=299&should_prefetch=true-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-status.https_status=400&should_prefetch=false-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-status.https_status=500&should_prefetch=false-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-traverse-reload.sub-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-traverse-reload.sub.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-uses-cache.sub.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-uses-cache.sub.https_cross-site-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/prefetch-uses-cache.sub.https_same-site-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/redirect-middle-of-prefetch.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/redirect-middle-of-prefetch.https_origin=cross-site-initial-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/redirect-middle-of-prefetch.https_origin=cross-site-redirect-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/redirect-middle-of-prefetch.https_origin=same-origin-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/redirect-to-prefetch-url.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/redirect-to-prefetch-url.https_origin=cross-site-initial-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/redirect-to-prefetch-url.https_origin=cross-site-redirect-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/redirect-to-prefetch-url.https_origin=same-origin-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/redirect-url.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/redirect-url.https_origin=cross-site-initial-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/redirect-url.https_origin=cross-site-redirect-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/redirect-url.https_origin=same-origin-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-from-rules.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-from-rules.https_1-1-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-from-rules.https_2-2-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-from-rules.https_3-3-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-from-rules.https_4-4-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-from-rules.https_5-5-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-from-rules.https_6-6-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-from-rules.https_7-7-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-from-rules.https_8-last-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-not-accepted.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-not-accepted.https_1-1-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-not-accepted.https_2-2-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy-not-accepted.https_3-last-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy.https_1-1-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy.https_2-2-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy.https_3-3-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/referrer-policy.https_4-last-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/authenticate.py: Added.
(main):
(main.fmt):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/basic-service-worker.js: Added.
(swOption.string_appeared_here.event.event.request.url.includes):
(swOption.string_appeared_here.event.event.request.headers.forEach):
(swOption.string_appeared_here.event.else):
(swOption.string_appeared_here.event.async else):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/conditional-status.py: Added.
(main):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/cookies.py: Added.
(main):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/counting-executor.py: Added.
(main):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/executor.sub.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/executor.sub.html.headers: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/post-navigation-handler.py: Added.
(main):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/prefetch.py: Added.
(main):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/prefetch_nvs_hint.py: Added.
(main):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/random_redirect.py: Added.
(main):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/redirect-helper.sub.js: Added.
(async prepare):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/ruleset.py: Added.
(main):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/slow-executor.py: Added.
(main):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/sw.js: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/util.py: Added.
(get_executor_html):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/utils.sub.js: Added.
(PrefetchAgent):
(PrefetchAgent.prototype.getExecutorURL):
(PrefetchAgent.prototype.async forceSinglePrefetch):
(PrefetchAgent.prototype.async forceSpeculationRules):
(PrefetchAgent.prototype.async navigate):
(PrefetchAgent.prototype.async getRequestHeaders):
(PrefetchAgent.prototype.async getResponseCookies):
(PrefetchAgent.prototype.async getRequestCookies):
(PrefetchAgent.prototype.async getRequestCredentials):
(PrefetchAgent.prototype.async setReferrerPolicy):
(PrefetchAgent.prototype.async getDeliveryType):
(getPrefetchUrl):
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/resources/w3c-import.log: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/same-origin-cookies.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/same-origin-cookies.https_1-1-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/same-origin-cookies.https_2-last-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/sec-fetch-headers.https-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/sec-fetch-headers.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/user-pass.https.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/user-pass.https_cross-origin=false-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/user-pass.https_cross-origin=true-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/prefetch/w3c-import.log: Added.
* LayoutTests/imported/w3c/web-platform-tests/speculation-rules/resources/utils.js: Added.
(globalThis.assertSpeculationRulesIsSupported):
(globalThis.RemoteContextHelper.PreloadingRemoteContextWrapper.prototype.addPreload):
(globalThis.RemoteContextHelper.PreloadingRemoteContextWrapper):
* LayoutTests/tests-options.json:
@yoavweiss yoavweiss changed the title Import speculation rules prefetch tests Implement speculation rules - same origin conservative prefetch Jul 1, 2025
@yoavweiss yoavweiss marked this pull request as draft July 8, 2025 11:25
@yoavweiss yoavweiss closed this Jul 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

New Bugs Unclassified bugs are placed in this component until the correct component can be determined.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants