summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/meta/speculation-rules
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/web-platform/meta/speculation-rules
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/meta/speculation-rules')
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/anonymous-client.https.html.ini3
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/cross-origin-cookies.https.html.ini3
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/different-initiators-2.https.html.ini3
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/different-initiators.sub.https.html.ini13
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/document-rules.https.html.ini78
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/duplicate-urls.https.html.ini5
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/initiators-a-element.sub.https.html.ini14
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/initiators-iframe-location-href.sub.https.html.ini8
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/initiators-window-open.sub.https.html.ini14
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/invalid-rules.https.html.ini5
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/multiple-url.https.html.ini5
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/navigation-timing-delivery-type.tentative.https.html.ini26
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/navigation-timing-requestStart-responseStart.https.html.ini12
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/navigation-timing-sizes.https.html.ini26
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html.ini123
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/no-vary-search/prefetch-single.https.html.ini155
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/out-of-document-rule-set.https.html.ini96
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/prefetch-single.https.html.ini26
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/prefetch-status.https.html.ini33
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/prefetch-traverse-reload.sub.html.ini9
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/redirect-url.https.html.ini5
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/referrer-policy-from-rules.https.html.ini62
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/referrer-policy-not-accepted.https.html.ini19
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/referrer-policy.https.html.ini46
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/same-origin-cookies.https.html.ini5
-rw-r--r--testing/web-platform/meta/speculation-rules/prefetch/user-pass.https.html.ini12
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/about-blank-iframes.html.ini2
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/accept-client-hint-cache.https.html.ini2
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/activation-start.html.ini2
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/cache-storage.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/clients-matchall.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/cookies.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/credentialed-prerender-not-opt-in.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/credentialed-prerender-opt-in.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/cross-origin-iframe.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/cross-origin-isolated.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.tentative.html.ini2
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/csp-script-src-inline-speculation-rules.tentative.html.ini2
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/csp-script-src-self.html.ini2
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/csp-script-src-strict-dynamic.html.ini2
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/csp-script-src-unsafe-inline.html.ini2
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/fetch-blob.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/fetch-intercepted-by-service-worker.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/iframe-added-post-activation.html.ini5
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/indexeddb.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/local-storage.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/main-frame-navigation.https.html.ini2
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/media-autoplay.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/navigation-intercepted-by-service-worker.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/navigator-plugins.tentative.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/navigator-subapp.https.tentative.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/prefetch.https.html.ini2
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/referrer-policy-from-rules.html.ini9
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/referrer-policy-mismatch.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/referrer-policy-no-referrer.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/referrer-policy-origin.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/referrer-policy-strict-origin.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/referrer.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/register-service-worker.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/remove-script-element.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/response-code-non-successful.html.ini32
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/response-code-successful.html.ini22
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-audio-setSinkId.https.tentative.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-background-fetch.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-background-sync.tentative.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-battery-status.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-bluetooth.tentative.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-broadcast-channel.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-dedicated-worker.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-encrypted-media-unsupported-config.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-encrypted-media.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-focus.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-idle-detection.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-local-file-system-access.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-media-auto-play-attribute.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-media-camera.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-media-device-info.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-media-microphone.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-media-play.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-message-boxes.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-midi-sysex.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-midi.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-notification.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-presentation-request.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-prompt-by-before-unload.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-push.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-request-picture-in-picture.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-screen-capture.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-screen-orientation-lock.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-accelerometer.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-ambient-light-sensor.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-gyroscope.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-magnetometer.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-service-worker-postmessage.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-service-worker-unregister.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-service-worker-update.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-speech-synthesis.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-storage-persist.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-wake-lock.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-web-hid.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-web-locks.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-web-nfc.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-web-serial.tentative.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-web-share.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-web-usb.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-web-xr-immersive-vr-session.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-web-xr-inline-session.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-window-move.html.ini5
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-window-open.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restriction-window-resize.html.ini5
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/restrictions.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/sandbox-iframe.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/script-supports-speculationrules.html.ini5
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/service-workers.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/session-history-activation.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/session-history-location.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/session-history-navigation.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/session-history-pushstate.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/session-history-subframe-navigation.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/session-history-subframe-reload.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/state-and-event.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/visibility-state.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/web-database.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/windowclient-navigate-to-cross-origin-url-on-iframe.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/windowclient-navigate-to-same-origin-url-on-iframe.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/windowclient-navigate.https.html.ini4
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/workers-in-cross-origin-iframe.html.ini2
-rw-r--r--testing/web-platform/meta/speculation-rules/prerender/workers.html.ini4
129 files changed, 1251 insertions, 0 deletions
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/anonymous-client.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/anonymous-client.https.html.ini
new file mode 100644
index 0000000000..34f5153742
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/anonymous-client.https.html.ini
@@ -0,0 +1,3 @@
+[anonymous-client.https.html]
+ [test anonymous-client url prefetch for cross origin pages]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/cross-origin-cookies.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/cross-origin-cookies.https.html.ini
new file mode 100644
index 0000000000..b8c8e768b9
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/cross-origin-cookies.https.html.ini
@@ -0,0 +1,3 @@
+[cross-origin-cookies.https.html]
+ [speculation rules based prefetch should not use cookies for cross origin urls.]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/different-initiators-2.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/different-initiators-2.https.html.ini
new file mode 100644
index 0000000000..be61020803
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/different-initiators-2.https.html.ini
@@ -0,0 +1,3 @@
+[different-initiators-2.https.html]
+ [Prefetches from different initiator Documents with same RenderFrameHost]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/different-initiators.sub.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/different-initiators.sub.https.html.ini
new file mode 100644
index 0000000000..0677a7369b
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/different-initiators.sub.https.html.ini
@@ -0,0 +1,13 @@
+[different-initiators.sub.https.html?cross-site-1]
+ [Cross-initiator prefetches using ServiceWorker tricks]
+ expected: FAIL
+
+
+[different-initiators.sub.https.html?same-site]
+ [Cross-initiator prefetches using ServiceWorker tricks]
+ expected: FAIL
+
+
+[different-initiators.sub.https.html?cross-site-2]
+ [Cross-initiator prefetches using ServiceWorker tricks]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/document-rules.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/document-rules.https.html.ini
new file mode 100644
index 0000000000..a5316801eb
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/document-rules.https.html.ini
@@ -0,0 +1,78 @@
+[document-rules.https.html?include=invalidPredicate]
+ [invalid predicate should not throw error or start prefetch]
+ expected: FAIL
+
+
+[document-rules.https.html?include=linkInShadowTree]
+ [test that matching link in a shadow tree is prefetched]
+ expected: FAIL
+
+
+[document-rules.https.html?include=defaultPredicate]
+ [test document rule with no predicate]
+ expected: FAIL
+
+
+[document-rules.https.html?include=hrefMatches]
+ [test href_matches document rule]
+ expected: FAIL
+
+
+[document-rules.https.html?include=not]
+ [test document rule with negation predicate]
+ expected: FAIL
+
+
+[document-rules.https.html?include=or]
+ [test document rule with disjunction predicate]
+ expected: FAIL
+
+
+[document-rules.https.html?include=and]
+ [test document rule with conjunction predicate]
+ expected: FAIL
+
+
+[document-rules.https.html?include=linkHrefChanged]
+ [test that changing the href of an invalid link to a matching value triggers a prefetch]
+ expected: FAIL
+
+
+[document-rules.https.html?include=newRuleSetAdded]
+ [test that adding a second rule set triggers prefetch]
+ expected: FAIL
+
+
+[document-rules.https.html?include=selectorMatchesDisplayLocked]
+ [test selector_matches with link inside display locked container]
+ expected: FAIL
+
+
+[document-rules.https.html?include=unslottedLink]
+ [test that unslotted link never matches document rule]
+ expected: FAIL
+
+
+[document-rules.https.html?include=selectorMatches]
+ [test selector_matches document rule]
+ expected: FAIL
+
+
+[document-rules.https.html?include=selectorMatchesDisplayNone]
+ [test selector_matches with link inside display:none container]
+ expected: FAIL
+
+
+[document-rules.https.html?include=selectorMatchesInShadowTree]
+ [test selector_matches with link inside shadow tree]
+ expected: FAIL
+
+
+[document-rules.https.html?include=selectorMatchesScopingRoot]
+ [test selector_matches with :root]
+ expected: FAIL
+
+
+[document-rules.https.html?include=immediateMutation]
+ [test that selector_matches predicates respect changes immediately]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/duplicate-urls.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/duplicate-urls.https.html.ini
new file mode 100644
index 0000000000..b5e424c5cc
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/duplicate-urls.https.html.ini
@@ -0,0 +1,5 @@
+[duplicate-urls.https.html]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [browser should remove duplicate urls from prefetch buffer.]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/initiators-a-element.sub.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/initiators-a-element.sub.https.html.ini
new file mode 100644
index 0000000000..547f776bd1
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/initiators-a-element.sub.https.html.ini
@@ -0,0 +1,14 @@
+[initiators-a-element.sub.https.html?same-site]
+ [<a>]
+ expected: FAIL
+
+ [<a target="blank">]
+ expected: FAIL
+
+
+[initiators-a-element.sub.https.html?cross-site]
+ [<a>]
+ expected: FAIL
+
+ [<a target="blank">]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/initiators-iframe-location-href.sub.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/initiators-iframe-location-href.sub.https.html.ini
new file mode 100644
index 0000000000..e182b10907
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/initiators-iframe-location-href.sub.https.html.ini
@@ -0,0 +1,8 @@
+[initiators-iframe-location-href.sub.https.html?cross-site]
+ [location.href across iframe]
+ expected: FAIL
+
+
+[initiators-iframe-location-href.sub.https.html?same-site]
+ [location.href across iframe]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/initiators-window-open.sub.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/initiators-window-open.sub.https.html.ini
new file mode 100644
index 0000000000..7fa1b48a6c
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/initiators-window-open.sub.https.html.ini
@@ -0,0 +1,14 @@
+[initiators-window-open.sub.https.html?same-site]
+ [window.open()]
+ expected: FAIL
+
+ [window.open(noopener)]
+ expected: FAIL
+
+
+[initiators-window-open.sub.https.html?cross-site]
+ [window.open()]
+ expected: FAIL
+
+ [window.open(noopener)]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/invalid-rules.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/invalid-rules.https.html.ini
new file mode 100644
index 0000000000..07a022b2bc
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/invalid-rules.https.html.ini
@@ -0,0 +1,5 @@
+[invalid-rules.https.html]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [an unrecognized key in a prefetch rule should prevent it from being fetched]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/multiple-url.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/multiple-url.https.html.ini
new file mode 100644
index 0000000000..04f65a30cf
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/multiple-url.https.html.ini
@@ -0,0 +1,5 @@
+[multiple-url.https.html]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, OK]
+ [browser should be able to prefetch multiple urls]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/navigation-timing-delivery-type.tentative.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/navigation-timing-delivery-type.tentative.https.html.ini
new file mode 100644
index 0000000000..59623fce43
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/navigation-timing-delivery-type.tentative.https.html.ini
@@ -0,0 +1,26 @@
+[navigation-timing-delivery-type.tentative.https.html?prefetch=false&bypass_cache=false]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [PerformanceNavigationTiming.deliveryType test, same origin prefetch.]
+ expected: FAIL
+
+
+[navigation-timing-delivery-type.tentative.https.html?prefetch=false&bypass_cache=true]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [PerformanceNavigationTiming.deliveryType test, same origin prefetch.]
+ expected: FAIL
+
+
+[navigation-timing-delivery-type.tentative.https.html?prefetch=true&bypass_cache=false]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [PerformanceNavigationTiming.deliveryType test, same origin prefetch.]
+ expected: FAIL
+
+
+[navigation-timing-delivery-type.tentative.https.html?prefetch=true&bypass_cache=true]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [PerformanceNavigationTiming.deliveryType test, same origin prefetch.]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/navigation-timing-requestStart-responseStart.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/navigation-timing-requestStart-responseStart.https.html.ini
new file mode 100644
index 0000000000..c8616d3f4d
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/navigation-timing-requestStart-responseStart.https.html.ini
@@ -0,0 +1,12 @@
+[navigation-timing-requestStart-responseStart.https.html?prefetch=true]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [PerformanceNavigationTiming.requestStart/responseStart test, same origin prefetch.]
+ expected: FAIL
+
+
+[navigation-timing-requestStart-responseStart.https.html]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [PerformanceNavigationTiming.requestStart/responseStart test, same origin prefetch.]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/navigation-timing-sizes.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/navigation-timing-sizes.https.html.ini
new file mode 100644
index 0000000000..227bdb3b9c
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/navigation-timing-sizes.https.html.ini
@@ -0,0 +1,26 @@
+[navigation-timing-sizes.https.html?bypass_cache=true]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [PerformanceNavigationTiming.transferSize/encodedBodySize/decodedBodySize test, same origin prefetch.]
+ expected: FAIL
+
+
+[navigation-timing-sizes.https.html?prefetch=true&bypass_cache=true]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [PerformanceNavigationTiming.transferSize/encodedBodySize/decodedBodySize test, same origin prefetch.]
+ expected: FAIL
+
+
+[navigation-timing-sizes.https.html]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [PerformanceNavigationTiming.transferSize/encodedBodySize/decodedBodySize test, same origin prefetch.]
+ expected: FAIL
+
+
+[navigation-timing-sizes.https.html?prefetch=true]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [PerformanceNavigationTiming.transferSize/encodedBodySize/decodedBodySize test, same origin prefetch.]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html.ini
new file mode 100644
index 0000000000..c9448724f0
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html.ini
@@ -0,0 +1,123 @@
+[prefetch-single-with-hint.https.html?14-14]
+ [Use in-flight prefetch as all query parameters except c can be ignored. Allow extension via parameters.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?1-1]
+ [Use in-flight prefetch as query parameter b has the same value.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?17-17]
+ [Use in-flight prefetch as the URLs do not vary on any query parameters. Allow extension via parameters.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?11-11]
+ [Don't use in-flight prefetch as even though all query parameters except c can be ignored, c has different value.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?6-6]
+ [Use in-flight prefetch as the URLs have the same values for all keys, only differing by order.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?18-18]
+ [Use in-flight prefetch as all query parameters except c can be ignored. Allow extension via parameters.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?20-20]
+ [Use the in-flight prefetch. Empty No-Vary-Search means default URL variance. The prefetched and the navigated URLs have to be the same.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?9-9]
+ [Use in-flight prefetch as all query parameters except c can be ignored.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?8-8]
+ [Don't use in-flight prefetch as key-order is set to false and the URLs are not identical.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?2-2]
+ [Don't use in-flight prefetch as there is no No-Vary-Search hint.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?22-22]
+ [Use the in-flight prefetch. Non-ASCII key - 2 UTF-8 code units. Don't vary the response on the non-ASCII key.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?3-3]
+ [Don't use in-flight prefetch as the prefetched URL has the extra "a" query parameter.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?24-24]
+ [Don't use the in-flight prefetch. Non-ASCII key - 2 UTF-8 code units. Vary the response on the non-ASCII key.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?10-10]
+ [Use in-flight prefetch as all query parameters except c can be ignored. Only the last except matters.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?15-15]
+ [Use in-flight prefetch as query parameter c can be ignored. Allow extension via parameters.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?19-19]
+ [Don't use the in-flight prefetched URL. Empty No-Vary-Search means default URL variance. The prefetched and the navigated URLs have to be the same.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?16-16]
+ [Use in-flight prefetch as the URLs have the values in different order for a. Allow extension via parameters.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?21-21]
+ [Use the in-flight prefetch. Empty No-Vary-Search means default URL variance. The prefetched and the navigated URLs have to be the same.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?12-12]
+ [Use in-flight prefetch as even though all query parameters except c and d can be ignored, c value matches and d value matches.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?5-5]
+ [Do not use in-flight prefetch as the navigation URL has a different value for the "b" query parameter.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?13-13]
+ [Use in-flight prefetch as even though all query parameters except c and d can be ignored, c value matches and d value matches. Some query parameters to be ignored appear multiple times in the query.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?23-23]
+ [Use the in-flight prefetch. Non-ASCII key - 2 UTF-8 code units. Don't vary the response on the non-ASCII key.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?4-4]
+ [Use in-flight prefetch as the URLs do not vary by a and b.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?25-last]
+ [Use the in-flight prefetch. Non-ASCII key - 2 UTF-8 code units. Vary the response on the non-ASCII key.]
+ expected: FAIL
+
+
+[prefetch-single-with-hint.https.html?7-7]
+ [Use in-flight prefetch as the URLs have the same values for all keys, only differing by order and using ?1 for specifying a true value.]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/no-vary-search/prefetch-single.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/no-vary-search/prefetch-single.https.html.ini
new file mode 100644
index 0000000000..f0cf12a3fa
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/no-vary-search/prefetch-single.https.html.ini
@@ -0,0 +1,155 @@
+[prefetch-single.https.html?19-19]
+ [Use prefetched response as all query parameters except c can be ignored. Allow extension via parameters.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?6-6]
+ [Don't use prefetched response as the URLs have different value for c.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?12-12]
+ [Use prefetched response as query parameter a can be ignored.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?5-5]
+ [Use prefetched response as the URLs do not vary on any query parameters.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?26-last]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [Use the prefetched URL. Empty No-Vary-Search means default URL variance. The prefetched and the navigated URLs have to be the same.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?2-2]
+ [Don't use prefetched response as query parameter b has different value.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?4-4]
+ [Use prefetched response as the URLs do not vary on any query parameters.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?14-14]
+ [Use prefetched response as all query parameters except c can be ignored.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?11-11]
+ [Use prefetched response as query parameter c can be ignored.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?8-8]
+ [Use prefetched response as the URLs have the same values for a.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?9-9]
+ [Use prefetched response as the URLs have the same values for a.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?10-10]
+ [Don't use prefetched response as key-order is set to false and the URLs are not identical.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?20-20]
+ [Use prefetched response as query parameter c can be ignored. Allow extension via parameters.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?3-3]
+ [Use prefetched response as the URLs do not vary by a and b.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?13-13]
+ [Use prefetched response as query parameter a can be ignored.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?7-7]
+ [Don't use prefetched response as the URLs have the values in different order for a.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?23-23]
+ [Use prefetched response as all query parameters except c can be ignored. Allow extension via parameters.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?22-22]
+ [Use prefetched response as the URLs do not vary on any query parameters. Allow extension via parameters.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?1-1]
+ [Use prefetched response as query parameter b has the same value.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?25-25]
+ [Use the prefetched URL. Empty No-Vary-Search means default URL variance. The prefetched and the navigated URLs have to be the same.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?18-18]
+ [Use prefetched response as even though all query parameters except c and d can be ignored, c value matches and d value matches. Some query parameters to be ignored appear multiple times in the query.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?17-17]
+ [Use prefetched response as even though all query parameters except c and d can be ignored, c value matches and d value matches.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?15-15]
+ [Use prefetched response as all query parameters except c can be ignored. Only the last except matters.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?21-21]
+ [Use prefetched response as the URLs have the values in different order for a. Allow extension via parameters.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?24-24]
+ [Don't use the prefetched URL. Empty No-Vary-Search means default URL variance. The prefetched and the navigated URLs have to be the same.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?16-16]
+ [Don't use prefetched response as even though all query parameters except c can be ignored, c has different value.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?26-26]
+ [Use the prefetched URL. Empty No-Vary-Search means default URL variance. The prefetched and the navigated URLs have to be the same.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?27-27]
+ [Use the prefetched URL. Non-ASCII key - 2 UTF-8 code units. Don't vary the response on the non-ASCII key.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?29-29]
+ [Don't use the prefetched URL. Non-ASCII key - 2 UTF-8 code units. Vary the response on the non-ASCII key.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?30-last]
+ [Use the prefetched URL. Non-ASCII key - 2 UTF-8 code units. Vary the response on the non-ASCII key.]
+ expected: FAIL
+
+
+[prefetch-single.https.html?28-28]
+ [Use the prefetched URL. Non-ASCII key - 2 UTF-8 code units. Don't vary the response on the non-ASCII key.]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/out-of-document-rule-set.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/out-of-document-rule-set.https.html.ini
new file mode 100644
index 0000000000..bcb5ab990c
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/out-of-document-rule-set.https.html.ini
@@ -0,0 +1,96 @@
+[out-of-document-rule-set.https.html?include=RelativeUrlForSpeculationRulesSet]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [It should fetch a speculation rules set using its relative URL.]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=RelativeUrlForCandidate]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [It should resolve the relative candidate URLs in the speculation rules set based on the speculation rules set's URL]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=FailCORS]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [It should reject the speculation rules set if CORS fails.]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=InvalidUrlForSpeculationRulesSet]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [It should reject the speculation rules set with invalid URL.]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=EmptyRuleSet]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [It should reject an empty speculation rules set.]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=StatusCode199]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [It should reject the speculation rules set with unsuccessful status code.]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=FailToParseRuleSet]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [It should reject the speculation rules set if it cannot parse it.]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=BaseCase]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [Base case.]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=StatusCode404]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [It should reject the speculation rules set with unsuccessful status code.]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=UseNonUTF8EncodingForSpeculationRulesSet]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [The speculation rules set should always be encoded using UTF-8.]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=InvalidMimeType]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [It should reject the speculation rules set with invalid MIME type.]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=FailToParseSpeculationRulesHeader]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [It should reject the speculation rules set if it fails to parse the SpeculationRules header.]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=FollowRedirect]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [It should follow redirects and fetch the speculation rules set.]
+ expected: FAIL
+
+
+[out-of-document-rule-set.https.html?include=InnerListInSpeculationRulesHeader]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [It should reject the speculation rules passed as inner list in the SpeculationRules header.]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/prefetch-single.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/prefetch-single.https.html.ini
new file mode 100644
index 0000000000..2dff4c0867
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/prefetch-single.https.html.ini
@@ -0,0 +1,26 @@
+[prefetch-single.https.html?from_protocol=https&to_protocol=https]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [test single https url prefetch from a https url]
+ expected: FAIL
+
+
+[prefetch-single.https.html?from_protocol=http&to_protocol=http]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [test single http url prefetch from a http url]
+ expected: FAIL
+
+
+[prefetch-single.https.html?from_protocol=http&to_protocol=https]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [test single https url prefetch from a http url]
+ expected: FAIL
+
+
+[prefetch-single.https.html?from_protocol=https&to_protocol=http]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [test single http url prefetch from a https url]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/prefetch-status.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/prefetch-status.https.html.ini
new file mode 100644
index 0000000000..82245e35a8
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/prefetch-status.https.html.ini
@@ -0,0 +1,33 @@
+[prefetch-status.https.html?status=500&should_prefetch=false]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [Check that only prefetched requests with status in 200-299 range are used.]
+ expected: FAIL
+
+
+[prefetch-status.https.html?status=400&should_prefetch=false]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [Check that only prefetched requests with status in 200-299 range are used.]
+ expected: FAIL
+
+
+[prefetch-status.https.html?status=299&should_prefetch=true]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [Check that only prefetched requests with status in 200-299 range are used.]
+ expected: FAIL
+
+
+[prefetch-status.https.html?status=250&should_prefetch=true]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [Check that only prefetched requests with status in 200-299 range are used.]
+ expected: FAIL
+
+
+[prefetch-status.https.html?status=200&should_prefetch=true]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [Check that only prefetched requests with status in 200-299 range are used.]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/prefetch-traverse-reload.sub.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/prefetch-traverse-reload.sub.html.ini
new file mode 100644
index 0000000000..22b64c4d37
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/prefetch-traverse-reload.sub.html.ini
@@ -0,0 +1,9 @@
+[prefetch-traverse-reload.sub.html]
+ [prefetches can be used for traversal navigations]
+ expected: FAIL
+
+ [prefetches can be used for reload navigations]
+ expected: FAIL
+
+ [History's Document is used for traversal navigations]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/redirect-url.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/redirect-url.https.html.ini
new file mode 100644
index 0000000000..fa59173f4d
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/redirect-url.https.html.ini
@@ -0,0 +1,5 @@
+[redirect-url.https.html]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [browser should be able to prefetch redirected urls]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/referrer-policy-from-rules.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/referrer-policy-from-rules.https.html.ini
new file mode 100644
index 0000000000..b92d00468c
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/referrer-policy-from-rules.https.html.ini
@@ -0,0 +1,62 @@
+[referrer-policy-from-rules.https.html?4-4]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [unrecognized policies invalidate the rule]
+ expected: FAIL
+
+
+[referrer-policy-from-rules.https.html?1-1]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "strict-origin" referrer policy in rule set overriding "strict-origin-when-cross-origin" of referring page]
+ expected: FAIL
+
+
+[referrer-policy-from-rules.https.html?3-3]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "no-referrer" referrer policy in rule set overriding "unsafe-url" of cross-site referring page]
+ expected: FAIL
+
+
+[referrer-policy-from-rules.https.html?2-2]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "strict-origin" referrer policy in rule set override "no-referrer" of link]
+ expected: FAIL
+
+
+[referrer-policy-from-rules.https.html?5-last]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "unsafe-url" referrer policy in rule set overriding "strict-origin" of referring page]
+ expected: FAIL
+
+ [with "unsafe-url" referrer policy in rule set overriding "strict-origin" of cross-site referring page]
+ expected: FAIL
+
+
+[referrer-policy-from-rules.https.html?6-last]
+ [with "unsafe-url" referrer policy in rule set overriding "strict-origin" of referring page]
+ expected: FAIL
+
+
+[referrer-policy-from-rules.https.html?5-5]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [treat legacy referrer policy values as invalid]
+ expected: FAIL
+
+
+[referrer-policy-from-rules.https.html?7-last]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with empty string referrer policy in rule set defaulting to "strict-origin" of referring page]
+ expected: FAIL
+
+
+[referrer-policy-from-rules.https.html?6-6]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "unsafe-url" referrer policy in rule set overriding "strict-origin" of cross-site referring page]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/referrer-policy-not-accepted.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/referrer-policy-not-accepted.https.html.ini
new file mode 100644
index 0000000000..57f2772a10
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/referrer-policy-not-accepted.https.html.ini
@@ -0,0 +1,19 @@
+[referrer-policy-not-accepted.https.html]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "unsafe-url" referrer policy]
+ expected: FAIL
+
+
+[referrer-policy-not-accepted.https.html?1-1]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "unsafe-url" referrer policy on same-site referring page]
+ expected: FAIL
+
+
+[referrer-policy-not-accepted.https.html?2-last]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "unsafe-url" referrer policy on cross-site referring page]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/referrer-policy.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/referrer-policy.https.html.ini
new file mode 100644
index 0000000000..2aff945445
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/referrer-policy.https.html.ini
@@ -0,0 +1,46 @@
+[referrer-policy.https.html]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "strict-origin-when-cross-origin" referrer policy]
+ expected: FAIL
+
+ [with "strict-origin" referrer policy]
+ expected: FAIL
+
+ [with "no-referrer" referrer policy]
+ expected: FAIL
+
+
+[referrer-policy.https.html?2-2]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "strict-origin" referrer policy]
+ expected: FAIL
+
+
+[referrer-policy.https.html?1-1]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "strict-origin-when-cross-origin" referrer policy]
+ expected: FAIL
+
+
+[referrer-policy.https.html?3-last]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "no-referrer" referrer policy]
+ expected: FAIL
+
+
+[referrer-policy.https.html?3-3]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "no-referrer" referrer policy]
+ expected: FAIL
+
+
+[referrer-policy.https.html?4-last]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [with "strict-origin" link referrer policy overriding "no-referrer" of referring page]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/same-origin-cookies.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/same-origin-cookies.https.html.ini
new file mode 100644
index 0000000000..48b913f035
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/same-origin-cookies.https.html.ini
@@ -0,0 +1,5 @@
+[same-origin-cookies.https.html]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [speculation rules based prefetch should use cookies for same origin urls.]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prefetch/user-pass.https.html.ini b/testing/web-platform/meta/speculation-rules/prefetch/user-pass.https.html.ini
new file mode 100644
index 0000000000..38f1bf30dd
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prefetch/user-pass.https.html.ini
@@ -0,0 +1,12 @@
+[user-pass.https.html?cross-origin=true]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [test www-authenticate basic does not forward credentials to cross-origin pages.]
+ expected: FAIL
+
+
+[user-pass.https.html?cross-origin=false]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [test www-authenticate basic does not forward credentials to cross-origin pages.]
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prerender/about-blank-iframes.html.ini b/testing/web-platform/meta/speculation-rules/prerender/about-blank-iframes.html.ini
new file mode 100644
index 0000000000..bab2f66026
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/about-blank-iframes.html.ini
@@ -0,0 +1,2 @@
+[about-blank-iframes.html]
+ expected: ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/accept-client-hint-cache.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/accept-client-hint-cache.https.html.ini
new file mode 100644
index 0000000000..8834b8a400
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/accept-client-hint-cache.https.html.ini
@@ -0,0 +1,2 @@
+[accept-client-hint-cache.https.html]
+ expected: ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/activation-start.html.ini b/testing/web-platform/meta/speculation-rules/prerender/activation-start.html.ini
new file mode 100644
index 0000000000..15beca96ab
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/activation-start.html.ini
@@ -0,0 +1,2 @@
+[activation-start.html]
+ expected: ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/cache-storage.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/cache-storage.https.html.ini
new file mode 100644
index 0000000000..9702de444f
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/cache-storage.https.html.ini
@@ -0,0 +1,4 @@
+[cache-storage.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/clients-matchall.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/clients-matchall.https.html.ini
new file mode 100644
index 0000000000..e5e869f339
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/clients-matchall.https.html.ini
@@ -0,0 +1,4 @@
+[clients-matchall.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/cookies.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/cookies.https.html.ini
new file mode 100644
index 0000000000..6d4e0468bf
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/cookies.https.html.ini
@@ -0,0 +1,4 @@
+[cookies.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/credentialed-prerender-not-opt-in.html.ini b/testing/web-platform/meta/speculation-rules/prerender/credentialed-prerender-not-opt-in.html.ini
new file mode 100644
index 0000000000..ef8ad2ca53
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/credentialed-prerender-not-opt-in.html.ini
@@ -0,0 +1,4 @@
+[credentialed-prerender-not-opt-in.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/credentialed-prerender-opt-in.html.ini b/testing/web-platform/meta/speculation-rules/prerender/credentialed-prerender-opt-in.html.ini
new file mode 100644
index 0000000000..01267886a2
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/credentialed-prerender-opt-in.html.ini
@@ -0,0 +1,4 @@
+[credentialed-prerender-opt-in.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/cross-origin-iframe.html.ini b/testing/web-platform/meta/speculation-rules/prerender/cross-origin-iframe.html.ini
new file mode 100644
index 0000000000..dbb11f515b
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/cross-origin-iframe.html.ini
@@ -0,0 +1,4 @@
+[cross-origin-iframe.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/cross-origin-isolated.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/cross-origin-isolated.https.html.ini
new file mode 100644
index 0000000000..2d9876f39a
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/cross-origin-isolated.https.html.ini
@@ -0,0 +1,4 @@
+[cross-origin-isolated.https.html]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.tentative.html.ini b/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.tentative.html.ini
new file mode 100644
index 0000000000..dd1da2249d
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.tentative.html.ini
@@ -0,0 +1,2 @@
+[csp-script-src-elem-inline-speculation-rules.tentative.html]
+ expected: ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-inline-speculation-rules.tentative.html.ini b/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-inline-speculation-rules.tentative.html.ini
new file mode 100644
index 0000000000..105ddb91ad
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-inline-speculation-rules.tentative.html.ini
@@ -0,0 +1,2 @@
+[csp-script-src-inline-speculation-rules.tentative.html]
+ expected: ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-self.html.ini b/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-self.html.ini
new file mode 100644
index 0000000000..c9fac4acb5
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-self.html.ini
@@ -0,0 +1,2 @@
+[csp-script-src-self.html]
+ expected: ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-strict-dynamic.html.ini b/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-strict-dynamic.html.ini
new file mode 100644
index 0000000000..1dcef7630a
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-strict-dynamic.html.ini
@@ -0,0 +1,2 @@
+[csp-script-src-strict-dynamic.html]
+ expected: ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-unsafe-inline.html.ini b/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-unsafe-inline.html.ini
new file mode 100644
index 0000000000..f26efb15d8
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/csp-script-src-unsafe-inline.html.ini
@@ -0,0 +1,2 @@
+[csp-script-src-unsafe-inline.html]
+ expected: ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/fetch-blob.html.ini b/testing/web-platform/meta/speculation-rules/prerender/fetch-blob.html.ini
new file mode 100644
index 0000000000..879f725259
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/fetch-blob.html.ini
@@ -0,0 +1,4 @@
+[fetch-blob.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/fetch-intercepted-by-service-worker.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/fetch-intercepted-by-service-worker.https.html.ini
new file mode 100644
index 0000000000..d0584220e0
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/fetch-intercepted-by-service-worker.https.html.ini
@@ -0,0 +1,4 @@
+[fetch-intercepted-by-service-worker.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/iframe-added-post-activation.html.ini b/testing/web-platform/meta/speculation-rules/prerender/iframe-added-post-activation.html.ini
new file mode 100644
index 0000000000..e9f2088db2
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/iframe-added-post-activation.html.ini
@@ -0,0 +1,5 @@
+[iframe-added-post-activation.html]
+ expected:
+ if (os == "linux") and not fission and not debug: [ERROR, CRASH]
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/indexeddb.html.ini b/testing/web-platform/meta/speculation-rules/prerender/indexeddb.html.ini
new file mode 100644
index 0000000000..dc2443926e
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/indexeddb.html.ini
@@ -0,0 +1,4 @@
+[indexeddb.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/local-storage.html.ini b/testing/web-platform/meta/speculation-rules/prerender/local-storage.html.ini
new file mode 100644
index 0000000000..50b3140463
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/local-storage.html.ini
@@ -0,0 +1,4 @@
+[local-storage.html]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/main-frame-navigation.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/main-frame-navigation.https.html.ini
new file mode 100644
index 0000000000..690b1ef762
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/main-frame-navigation.https.html.ini
@@ -0,0 +1,2 @@
+[main-frame-navigation.https.html]
+ expected: ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/media-autoplay.html.ini b/testing/web-platform/meta/speculation-rules/prerender/media-autoplay.html.ini
new file mode 100644
index 0000000000..54487bfcb5
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/media-autoplay.html.ini
@@ -0,0 +1,4 @@
+[media-autoplay.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/navigation-intercepted-by-service-worker.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/navigation-intercepted-by-service-worker.https.html.ini
new file mode 100644
index 0000000000..2ca2887647
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/navigation-intercepted-by-service-worker.https.html.ini
@@ -0,0 +1,4 @@
+[navigation-intercepted-by-service-worker.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/navigator-plugins.tentative.html.ini b/testing/web-platform/meta/speculation-rules/prerender/navigator-plugins.tentative.html.ini
new file mode 100644
index 0000000000..a9be45b2a3
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/navigator-plugins.tentative.html.ini
@@ -0,0 +1,4 @@
+[navigator-plugins.tentative.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/navigator-subapp.https.tentative.html.ini b/testing/web-platform/meta/speculation-rules/prerender/navigator-subapp.https.tentative.html.ini
new file mode 100644
index 0000000000..5dd0f15187
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/navigator-subapp.https.tentative.html.ini
@@ -0,0 +1,4 @@
+[navigator-subapp.https.tentative.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/prefetch.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/prefetch.https.html.ini
new file mode 100644
index 0000000000..bf1acbea33
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/prefetch.https.html.ini
@@ -0,0 +1,2 @@
+[prefetch.https.html]
+ expected: ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-from-rules.html.ini b/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-from-rules.html.ini
new file mode 100644
index 0000000000..aebde9854e
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-from-rules.html.ini
@@ -0,0 +1,9 @@
+[referrer-policy-from-rules.html?1-1]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
+
+[referrer-policy-from-rules.html?2-last]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-mismatch.html.ini b/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-mismatch.html.ini
new file mode 100644
index 0000000000..0ecad782de
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-mismatch.html.ini
@@ -0,0 +1,4 @@
+[referrer-policy-mismatch.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-no-referrer.html.ini b/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-no-referrer.html.ini
new file mode 100644
index 0000000000..c2fbccd8c2
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-no-referrer.html.ini
@@ -0,0 +1,4 @@
+[referrer-policy-no-referrer.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-origin.html.ini b/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-origin.html.ini
new file mode 100644
index 0000000000..fc4e7cf9a6
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-origin.html.ini
@@ -0,0 +1,4 @@
+[referrer-policy-origin.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-strict-origin.html.ini b/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-strict-origin.html.ini
new file mode 100644
index 0000000000..e4eb73bad6
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/referrer-policy-strict-origin.html.ini
@@ -0,0 +1,4 @@
+[referrer-policy-strict-origin.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/referrer.html.ini b/testing/web-platform/meta/speculation-rules/prerender/referrer.html.ini
new file mode 100644
index 0000000000..158802545b
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/referrer.html.ini
@@ -0,0 +1,4 @@
+[referrer.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/register-service-worker.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/register-service-worker.https.html.ini
new file mode 100644
index 0000000000..8e3afe2953
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/register-service-worker.https.html.ini
@@ -0,0 +1,4 @@
+[register-service-worker.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/remove-script-element.html.ini b/testing/web-platform/meta/speculation-rules/prerender/remove-script-element.html.ini
new file mode 100644
index 0000000000..3771418428
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/remove-script-element.html.ini
@@ -0,0 +1,4 @@
+[remove-script-element.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/response-code-non-successful.html.ini b/testing/web-platform/meta/speculation-rules/prerender/response-code-non-successful.html.ini
new file mode 100644
index 0000000000..fed8f95d82
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/response-code-non-successful.html.ini
@@ -0,0 +1,32 @@
+[response-code-non-successful.html]
+ expected: ERROR
+
+[response-code-non-successful.html?code=204]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
+
+[response-code-non-successful.html?code=500]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
+
+[response-code-non-successful.html?code=402]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
+
+[response-code-non-successful.html?code=205]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
+
+[response-code-non-successful.html?code=503]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
+
+[response-code-non-successful.html?code=404]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/response-code-successful.html.ini b/testing/web-platform/meta/speculation-rules/prerender/response-code-successful.html.ini
new file mode 100644
index 0000000000..7f9b0949b4
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/response-code-successful.html.ini
@@ -0,0 +1,22 @@
+[response-code-successful.html]
+ expected: ERROR
+
+[response-code-successful.html?code=201]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
+
+[response-code-successful.html?code=203]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
+
+[response-code-successful.html?code=200]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
+
+[response-code-successful.html?code=202]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.html.ini
new file mode 100644
index 0000000000..2497c23ddd
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.html.ini
@@ -0,0 +1,4 @@
+[restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-audio-setSinkId.https.tentative.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-audio-setSinkId.https.tentative.html.ini
new file mode 100644
index 0000000000..8297eb6920
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-audio-setSinkId.https.tentative.html.ini
@@ -0,0 +1,4 @@
+[restriction-audio-setSinkId.https.tentative.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-background-fetch.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-background-fetch.https.html.ini
new file mode 100644
index 0000000000..52661e28d0
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-background-fetch.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-background-fetch.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-background-sync.tentative.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-background-sync.tentative.https.html.ini
new file mode 100644
index 0000000000..f7e0e0a16a
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-background-sync.tentative.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-background-sync.tentative.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-battery-status.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-battery-status.https.html.ini
new file mode 100644
index 0000000000..71ae70ec35
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-battery-status.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-battery-status.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-bluetooth.tentative.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-bluetooth.tentative.https.html.ini
new file mode 100644
index 0000000000..e72096a1de
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-bluetooth.tentative.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-bluetooth.tentative.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-broadcast-channel.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-broadcast-channel.html.ini
new file mode 100644
index 0000000000..4f425c5a95
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-broadcast-channel.html.ini
@@ -0,0 +1,4 @@
+[restriction-broadcast-channel.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-dedicated-worker.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-dedicated-worker.https.html.ini
new file mode 100644
index 0000000000..579a531ebd
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-dedicated-worker.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-dedicated-worker.https.html]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-encrypted-media-unsupported-config.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-encrypted-media-unsupported-config.https.html.ini
new file mode 100644
index 0000000000..42358c37a2
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-encrypted-media-unsupported-config.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-encrypted-media-unsupported-config.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-encrypted-media.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-encrypted-media.https.html.ini
new file mode 100644
index 0000000000..b6da5cfdc9
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-encrypted-media.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-encrypted-media.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-focus.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-focus.html.ini
new file mode 100644
index 0000000000..ad5f36b3aa
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-focus.html.ini
@@ -0,0 +1,4 @@
+[restriction-focus.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-idle-detection.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-idle-detection.https.html.ini
new file mode 100644
index 0000000000..c418ca2341
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-idle-detection.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-idle-detection.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-local-file-system-access.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-local-file-system-access.https.html.ini
new file mode 100644
index 0000000000..5db924f3a7
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-local-file-system-access.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-local-file-system-access.https.html]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-media-auto-play-attribute.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-media-auto-play-attribute.html.ini
new file mode 100644
index 0000000000..74d9342270
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-media-auto-play-attribute.html.ini
@@ -0,0 +1,4 @@
+[restriction-media-auto-play-attribute.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-media-camera.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-media-camera.https.html.ini
new file mode 100644
index 0000000000..785a8b66ac
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-media-camera.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-media-camera.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-media-device-info.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-media-device-info.https.html.ini
new file mode 100644
index 0000000000..31e7257153
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-media-device-info.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-media-device-info.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-media-microphone.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-media-microphone.https.html.ini
new file mode 100644
index 0000000000..22b9a62277
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-media-microphone.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-media-microphone.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-media-play.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-media-play.html.ini
new file mode 100644
index 0000000000..50c5a4086c
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-media-play.html.ini
@@ -0,0 +1,4 @@
+[restriction-media-play.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-message-boxes.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-message-boxes.html.ini
new file mode 100644
index 0000000000..48384abd98
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-message-boxes.html.ini
@@ -0,0 +1,4 @@
+[restriction-message-boxes.html]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-midi-sysex.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-midi-sysex.https.html.ini
new file mode 100644
index 0000000000..f9bdb19bd1
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-midi-sysex.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-midi-sysex.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-midi.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-midi.https.html.ini
new file mode 100644
index 0000000000..a525fecae3
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-midi.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-midi.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-notification.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-notification.https.html.ini
new file mode 100644
index 0000000000..99fcfc49be
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-notification.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-notification.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-presentation-request.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-presentation-request.https.html.ini
new file mode 100644
index 0000000000..4213e7bf16
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-presentation-request.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-presentation-request.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-prompt-by-before-unload.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-prompt-by-before-unload.html.ini
new file mode 100644
index 0000000000..b97e809b14
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-prompt-by-before-unload.html.ini
@@ -0,0 +1,4 @@
+[restriction-prompt-by-before-unload.html]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-push.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-push.https.html.ini
new file mode 100644
index 0000000000..0afd8c371e
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-push.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-push.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-request-picture-in-picture.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-request-picture-in-picture.html.ini
new file mode 100644
index 0000000000..eae2172027
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-request-picture-in-picture.html.ini
@@ -0,0 +1,4 @@
+[restriction-request-picture-in-picture.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-screen-capture.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-screen-capture.https.html.ini
new file mode 100644
index 0000000000..6a32c2d57b
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-screen-capture.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-screen-capture.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-screen-orientation-lock.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-screen-orientation-lock.https.html.ini
new file mode 100644
index 0000000000..f9587de092
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-screen-orientation-lock.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-screen-orientation-lock.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-accelerometer.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-accelerometer.https.html.ini
new file mode 100644
index 0000000000..b71a00aba0
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-accelerometer.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-sensor-accelerometer.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-ambient-light-sensor.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-ambient-light-sensor.https.html.ini
new file mode 100644
index 0000000000..dbdb842224
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-ambient-light-sensor.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-sensor-ambient-light-sensor.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-gyroscope.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-gyroscope.https.html.ini
new file mode 100644
index 0000000000..89c7f18554
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-gyroscope.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-sensor-gyroscope.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-magnetometer.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-magnetometer.https.html.ini
new file mode 100644
index 0000000000..f7a4fdf590
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-sensor-magnetometer.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-sensor-magnetometer.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-service-worker-postmessage.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-service-worker-postmessage.https.html.ini
new file mode 100644
index 0000000000..35f77e4bd8
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-service-worker-postmessage.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-service-worker-postmessage.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-service-worker-unregister.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-service-worker-unregister.https.html.ini
new file mode 100644
index 0000000000..e85efc87d3
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-service-worker-unregister.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-service-worker-unregister.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-service-worker-update.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-service-worker-update.https.html.ini
new file mode 100644
index 0000000000..bf005b31d7
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-service-worker-update.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-service-worker-update.https.html]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-speech-synthesis.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-speech-synthesis.html.ini
new file mode 100644
index 0000000000..d51d971231
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-speech-synthesis.html.ini
@@ -0,0 +1,4 @@
+[restriction-speech-synthesis.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-storage-persist.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-storage-persist.https.html.ini
new file mode 100644
index 0000000000..6cc9d66d4a
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-storage-persist.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-storage-persist.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-wake-lock.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-wake-lock.https.html.ini
new file mode 100644
index 0000000000..913dada939
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-wake-lock.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-wake-lock.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-web-hid.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-hid.https.html.ini
new file mode 100644
index 0000000000..059b5f8b31
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-hid.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-web-hid.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-web-locks.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-locks.https.html.ini
new file mode 100644
index 0000000000..3a7ed451b0
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-locks.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-web-locks.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-web-nfc.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-nfc.https.html.ini
new file mode 100644
index 0000000000..546f5ac083
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-nfc.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-web-nfc.https.html]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-web-serial.tentative.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-serial.tentative.https.html.ini
new file mode 100644
index 0000000000..8adf62554e
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-serial.tentative.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-web-serial.tentative.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-web-share.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-share.https.html.ini
new file mode 100644
index 0000000000..744bc505ec
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-share.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-web-share.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-web-usb.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-usb.https.html.ini
new file mode 100644
index 0000000000..47068c3b1e
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-usb.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-web-usb.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-web-xr-immersive-vr-session.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-xr-immersive-vr-session.https.html.ini
new file mode 100644
index 0000000000..40cbaaf268
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-xr-immersive-vr-session.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-web-xr-immersive-vr-session.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-web-xr-inline-session.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-xr-inline-session.https.html.ini
new file mode 100644
index 0000000000..5c46ddc799
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-web-xr-inline-session.https.html.ini
@@ -0,0 +1,4 @@
+[restriction-web-xr-inline-session.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-window-move.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-window-move.html.ini
new file mode 100644
index 0000000000..ef8ee5cbde
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-window-move.html.ini
@@ -0,0 +1,5 @@
+[restriction-window-move.html]
+ max-asserts: 5
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-window-open.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-window-open.html.ini
new file mode 100644
index 0000000000..cefe787266
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-window-open.html.ini
@@ -0,0 +1,4 @@
+[restriction-window-open.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restriction-window-resize.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restriction-window-resize.html.ini
new file mode 100644
index 0000000000..cede529111
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restriction-window-resize.html.ini
@@ -0,0 +1,5 @@
+[restriction-window-resize.html]
+ max-asserts: 5
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/restrictions.html.ini b/testing/web-platform/meta/speculation-rules/prerender/restrictions.html.ini
new file mode 100644
index 0000000000..b76c2a0205
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/restrictions.html.ini
@@ -0,0 +1,4 @@
+[restrictions.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/sandbox-iframe.html.ini b/testing/web-platform/meta/speculation-rules/prerender/sandbox-iframe.html.ini
new file mode 100644
index 0000000000..e4f2132574
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/sandbox-iframe.html.ini
@@ -0,0 +1,4 @@
+[sandbox-iframe.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/script-supports-speculationrules.html.ini b/testing/web-platform/meta/speculation-rules/prerender/script-supports-speculationrules.html.ini
new file mode 100644
index 0000000000..112b1993e0
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/script-supports-speculationrules.html.ini
@@ -0,0 +1,5 @@
+[script-supports-speculationrules.html]
+ expected:
+ if (os == "android") and fission: [OK, TIMEOUT]
+ [HTMLScriptElement.supports returns true for 'speculationrules']
+ expected: FAIL
diff --git a/testing/web-platform/meta/speculation-rules/prerender/service-workers.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/service-workers.https.html.ini
new file mode 100644
index 0000000000..a6e987524a
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/service-workers.https.html.ini
@@ -0,0 +1,4 @@
+[service-workers.https.html]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/session-history-activation.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/session-history-activation.https.html.ini
new file mode 100644
index 0000000000..3e5ef328db
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/session-history-activation.https.html.ini
@@ -0,0 +1,4 @@
+[session-history-activation.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/session-history-location.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/session-history-location.https.html.ini
new file mode 100644
index 0000000000..e832e8344d
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/session-history-location.https.html.ini
@@ -0,0 +1,4 @@
+[session-history-location.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/session-history-navigation.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/session-history-navigation.https.html.ini
new file mode 100644
index 0000000000..09f56bf6d5
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/session-history-navigation.https.html.ini
@@ -0,0 +1,4 @@
+[session-history-navigation.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/session-history-pushstate.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/session-history-pushstate.https.html.ini
new file mode 100644
index 0000000000..97a4d92b15
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/session-history-pushstate.https.html.ini
@@ -0,0 +1,4 @@
+[session-history-pushstate.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/session-history-subframe-navigation.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/session-history-subframe-navigation.https.html.ini
new file mode 100644
index 0000000000..beceb50576
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/session-history-subframe-navigation.https.html.ini
@@ -0,0 +1,4 @@
+[session-history-subframe-navigation.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/session-history-subframe-reload.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/session-history-subframe-reload.https.html.ini
new file mode 100644
index 0000000000..0e07621e05
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/session-history-subframe-reload.https.html.ini
@@ -0,0 +1,4 @@
+[session-history-subframe-reload.https.html]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/state-and-event.html.ini b/testing/web-platform/meta/speculation-rules/prerender/state-and-event.html.ini
new file mode 100644
index 0000000000..87ad77ec3c
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/state-and-event.html.ini
@@ -0,0 +1,4 @@
+[state-and-event.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/visibility-state.html.ini b/testing/web-platform/meta/speculation-rules/prerender/visibility-state.html.ini
new file mode 100644
index 0000000000..4532abf398
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/visibility-state.html.ini
@@ -0,0 +1,4 @@
+[visibility-state.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/web-database.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/web-database.https.html.ini
new file mode 100644
index 0000000000..bbbb71d285
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/web-database.https.html.ini
@@ -0,0 +1,4 @@
+[web-database.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/windowclient-navigate-to-cross-origin-url-on-iframe.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/windowclient-navigate-to-cross-origin-url-on-iframe.https.html.ini
new file mode 100644
index 0000000000..cfc7564ce4
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/windowclient-navigate-to-cross-origin-url-on-iframe.https.html.ini
@@ -0,0 +1,4 @@
+[windowclient-navigate-to-cross-origin-url-on-iframe.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/windowclient-navigate-to-same-origin-url-on-iframe.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/windowclient-navigate-to-same-origin-url-on-iframe.https.html.ini
new file mode 100644
index 0000000000..eae69950d5
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/windowclient-navigate-to-same-origin-url-on-iframe.https.html.ini
@@ -0,0 +1,4 @@
+[windowclient-navigate-to-same-origin-url-on-iframe.https.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/windowclient-navigate.https.html.ini b/testing/web-platform/meta/speculation-rules/prerender/windowclient-navigate.https.html.ini
new file mode 100644
index 0000000000..98fb68e8f5
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/windowclient-navigate.https.html.ini
@@ -0,0 +1,4 @@
+[windowclient-navigate.https.html]
+ expected:
+ if (os == "android") and fission: [TIMEOUT, ERROR]
+ ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/workers-in-cross-origin-iframe.html.ini b/testing/web-platform/meta/speculation-rules/prerender/workers-in-cross-origin-iframe.html.ini
new file mode 100644
index 0000000000..bab5fc631f
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/workers-in-cross-origin-iframe.html.ini
@@ -0,0 +1,2 @@
+[workers-in-cross-origin-iframe.html]
+ expected: ERROR
diff --git a/testing/web-platform/meta/speculation-rules/prerender/workers.html.ini b/testing/web-platform/meta/speculation-rules/prerender/workers.html.ini
new file mode 100644
index 0000000000..ebc82b1899
--- /dev/null
+++ b/testing/web-platform/meta/speculation-rules/prerender/workers.html.ini
@@ -0,0 +1,4 @@
+[workers.html]
+ expected:
+ if (os == "android") and fission: [ERROR, TIMEOUT]
+ ERROR