aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/MANIFEST.json6420
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js.ini5
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini3
-rw-r--r--tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini5
-rw-r--r--tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-text/line-breaking/segment-break-transformation-unremovable-2.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-012.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transitions/dynamic-root-element.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini300
-rw-r--r--tests/wpt/metadata/css/css-values/calc-infinity-nan-serialize-time.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini12
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-subpixel.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini3
-rw-r--r--tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini6
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/fetch-from-treat-as-public.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/fetch-from-treat-as-public.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/fetch.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/fetch.https.window.js.ini)18
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/fetch.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/fetch.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/iframe.tentative.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/iframe.tentative.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/iframe.tentative.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/iframe.tentative.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/mixed-content-fetch.tentative.https.window.js.ini135
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/nested-worker.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/nested-worker.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/nested-worker.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/nested-worker.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/preflight-cache.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/preflight-cache.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/redirect.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/redirect.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/service-worker-background-fetch.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/service-worker-fetch.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/service-worker-fetch.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/service-worker-update.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/service-worker-update.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/service-worker.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/service-worker.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/shared-worker-blob-fetch.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/shared-worker-blob-fetch.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/shared-worker-blob-fetch.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/shared-worker-blob-fetch.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/shared-worker-fetch.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/shared-worker-fetch.https.window.js.ini)12
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/shared-worker-fetch.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/shared-worker-fetch.window.js.ini)10
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/shared-worker.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/shared-worker.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/shared-worker.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/shared-worker.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/websocket.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/websocket.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/worker-blob-fetch.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/worker-blob-fetch.window.js.ini)21
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/worker-fetch.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/worker-fetch.https.window.js.ini)3
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/worker-fetch.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/worker-fetch.window.js.ini)6
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/worker.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/worker.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/worker.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/worker.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/xhr-from-treat-as-public.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/xhr-from-treat-as-public.https.window.js.ini)0
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/xhr.https.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/xhr.https.window.js.ini)14
-rw-r--r--tests/wpt/metadata/fetch/local-network-access/xhr.window.js.ini (renamed from tests/wpt/metadata/fetch/private-network-access/xhr.window.js.ini)6
-rw-r--r--tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js.ini135
-rw-r--r--tests/wpt/metadata/html/anonymous-iframe/worker-cookies.tentative.https.window.js.ini21
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini2
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini1
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini5
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html.ini4
-rw-r--r--tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini2
-rw-r--r--tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.scale.large.html.ini4
-rw-r--r--tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html.ini4
-rw-r--r--tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini1
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini6
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini9
-rw-r--r--tests/wpt/metadata/html/semantics/popovers/popover-types.html.ini1
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini3
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini3
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini3
-rw-r--r--tests/wpt/metadata/resource-timing/content-type-parsing.html.ini4
-rw-r--r--tests/wpt/metadata/resource-timing/response-status-code.html.ini4
-rw-r--r--tests/wpt/metadata/wasm/jsapi/functions/entry.html.ini3
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/017.html.ini4
-rw-r--r--tests/wpt/metadata/webmessaging/without-ports/018.html.ini4
-rw-r--r--tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini4
-rw-r--r--tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini3
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js3
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js7
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv_fixtures.js210
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_96_iv_fixtures.js209
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js210
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa_vectors.js88
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js9
-rw-r--r--tests/wpt/web-platform-tests/accessibility/crashtests/aria-owns-presentation.html3
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-change.https.html8
-rw-r--r--tests/wpt/web-platform-tests/client-hints/critical-ch/iframe.https.window.js7
-rw-r--r--tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched-count.https.window.js1
-rw-r--r--tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched.https.window.js1
-rw-r--r--tests/wpt/web-platform-tests/client-hints/critical-ch/navigation.multiple.https.window.js3
-rw-r--r--tests/wpt/web-platform-tests/client-hints/critical-ch/non-secure.http.window.js1
-rw-r--r--tests/wpt/web-platform-tests/client-hints/critical-ch/request-count.multiple.https.window.js4
-rw-r--r--tests/wpt/web-platform-tests/client-hints/critical-ch/resources/echo-critical-hint.py13
-rw-r--r--tests/wpt/web-platform-tests/client-hints/critical-ch/subresource.https.window.js10
-rw-r--r--tests/wpt/web-platform-tests/client-hints/critical-ch/unsafe-method.https.window.js24
-rw-r--r--tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html10
-rw-r--r--tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html.headers5
-rw-r--r--tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html10
-rw-r--r--tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html.headers3
-rw-r--r--tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_alert-manual.html (renamed from tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_alert.html)0
-rw-r--r--tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_banner-manual.html (renamed from tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_banner.html)0
-rw-r--r--tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_dialog-manual.html (renamed from tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_dialog.html)0
-rw-r--r--tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_feed-manual.html (renamed from tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_feed.html)0
-rw-r--r--tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_form-manual.html (renamed from tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_form.html)0
-rw-r--r--tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_group-manual.html (renamed from tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_group.html)0
-rw-r--r--tests/wpt/web-platform-tests/core-aam/generic_roledescription_prohibited-manual.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/reference/background-clip-padding-box-with-border-radius-ref.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color-ref.html12
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/flexbox/flex-item-content-overflow-003.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/grid/grid-item-overflow-001.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition-ref.html6
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition-ref.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-line-clamp-001-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-001.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/dynamic-root-element.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/zero-duration-multiple-transition.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-serialize-time.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order-with-entry.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-shared-element.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/document-element-detatched-crash.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/far-away-capture.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html7
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unrelated-element.html7
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/japanese-tag.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match-ref.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-clip-path.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-different-size.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-opacity.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-positioned-spans.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-container-writing-modes.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-element-writing-modes.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-intrinsic-aspect-ratio.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-empty-div.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-inline.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-fill.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-none.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path-reference.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow-clipped.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-scaling.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow-zoomed.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/new-element-on-start.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-clip-path.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-different-size.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-opacity.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-container-writing-modes.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-element-writing-modes.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-intrinsic-aspect-ratio.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-empty-div.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-fill.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-none.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-overflow.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow-zoomed.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/root-style-change-during-animation.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/set-universal-specificity.html2
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-001-print-ref.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-001-print-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-001-print.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-001-print.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-002-print-ref.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-002-print-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-002-print.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-002-print.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-003-print-ref.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-003-print-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-003-print.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-003-print.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-004-print-ref.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-004-print-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-004-print.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-004-print.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-005-print-ref.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-005-print-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-005-print.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-005-print.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-006-print-ref.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-006-print-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-006-print.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-006-print.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-007-print-ref.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-007-print-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-007-print.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-007-print.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-008-print-ref.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-008-print-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-008-print.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-008-print.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-with-abspos-with-link-print-ref.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-with-abspos-with-link-print-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-with-abspos-with-link-print.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-with-abspos-with-link-print.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-with-iframe-print-ref.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-with-iframe-print-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-with-iframe-print.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-with-iframe-print.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-with-link-with-inline-child-print-ref.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/fixedpos-with-link-with-inline-child-print.html (renamed from tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/page-name-001-print-ref.html (renamed from tests/wpt/web-platform-tests/css/css-break/page-name-001-print-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/printing/page-name-001-print.html (renamed from tests/wpt/web-platform-tests/css/css-break/page-name-001-print.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/invalidation/nth-child-in-shadow-root.html1
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/invalidation/nth-last-child-in-shadow-root.html1
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/visited-part-crash.html8
-rw-r--r--tests/wpt/web-platform-tests/custom-elements/reactions/HTMLElement.html3
-rw-r--r--tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md2
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/META.yml (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/META.yml)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/README.md10
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/fetch-from-treat-as-public.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/fetch-from-treat-as-public.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/fetch.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/fetch.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/fetch.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/fetch.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/iframe.tentative.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/iframe.tentative.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/mixed-content-fetch.tentative.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js)92
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/nested-worker.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/nested-worker.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/preflight-cache.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/preflight-cache.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/redirect.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/redirect.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/executor.html (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/executor.html)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/fetcher.html (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/fetcher.html)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/fetcher.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/fetcher.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/iframed.html (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframed.html)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/iframer.html (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframer.html)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/preflight.py (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/service-worker-bridge.html (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker-bridge.html)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/service-worker.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-fetcher.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-fetcher.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-worker-blob-fetcher.html (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-worker-blob-fetcher.html)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-worker-fetcher.html (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-worker-fetcher.html)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/socket-opener.html (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/socket-opener.html)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/support.sub.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/support.sub.js)24
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-blob-fetcher.html (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-blob-fetcher.html)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-fetcher.html (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-fetcher.html)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-fetcher.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-fetcher.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/resources/xhr-sender.html (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/resources/xhr-sender.html)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-background-fetch.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-background-fetch.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-fetch.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-fetch.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-update.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-update.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/service-worker.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/service-worker.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-blob-fetch.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-blob-fetch.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-blob-fetch.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-blob-fetch.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-fetch.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-fetch.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/websocket.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/websocket.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/websocket.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/websocket.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/worker-blob-fetch.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/worker-blob-fetch.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/worker-fetch.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/worker-fetch.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/worker.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/worker.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/worker.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/worker.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/xhr-from-treat-as-public.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/xhr-from-treat-as-public.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/xhr.https.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/xhr.https.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/local-network-access/xhr.window.js (renamed from tests/wpt/web-platform-tests/fetch/private-network-access/xhr.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/private-network-access/README.md10
-rw-r--r--tests/wpt/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js6
-rw-r--r--tests/wpt/web-platform-tests/html/anonymous-iframe/worker-cookies.tentative.https.window.js69
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html2
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html7
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js3
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html6
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js2
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html7
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js3
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html7
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js3
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html6
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js2
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html7
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js3
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html7
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js3
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html5
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html7
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js3
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/transformations.yaml (renamed from tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml)2
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/transformations.yaml320
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-elements.tentative.html25
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/popovers/popover-attribute-basic.html2
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/popovers/popover-types.html54
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-utils.js2
-rw-r--r--tests/wpt/web-platform-tests/images/cicp.pngbin0 -> 143 bytes
-rw-r--r--tests/wpt/web-platform-tests/images/trns.pngbin0 -> 205 bytes
-rw-r--r--tests/wpt/web-platform-tests/inert/inert-computed-style.html10
-rw-r--r--tests/wpt/web-platform-tests/inert/inert-iframe-hittest.html1
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/assumptions/non-local-ports.sub.window.js6
-rw-r--r--tests/wpt/web-platform-tests/lint.ignore4
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-basic.html3
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-desired-exec-time.html119
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-event-listener.html33
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-idle.html36
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-iframe-popup.html10
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-promise.html52
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-block.html47
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-window-attribution.html62
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-supportedEntryTypes.html22
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-user-callback.html52
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-window-only.worker.js11
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/busy.js4
-rw-r--r--tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/utils.js67
-rw-r--r--tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html82
-rw-r--r--tests/wpt/web-platform-tests/longtask-timing/resources/utils.js14
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html9
-rw-r--r--tests/wpt/web-platform-tests/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html10
-rw-r--r--tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document-before-navigate-event.html32
-rw-r--r--tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-same-document-before-navigate-event.html31
-rw-r--r--tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-parent.html1
-rw-r--r--tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-sibling.html1
-rw-r--r--tests/wpt/web-platform-tests/png/META.yml4
-rw-r--r--tests/wpt/web-platform-tests/png/cicp-chunk.html40
-rw-r--r--tests/wpt/web-platform-tests/png/trns-chunk.html37
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault-passive.html84
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/crashtests/invalid-animation-range.html13
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/css/animation-shorthand.html49
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-named-scroll-progress-timeline.tentative.html21
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/import-scripts-data-url.https.html18
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-data-url-worker.js1
-rw-r--r--tests/wpt/web-platform-tests/storage-access-api/helpers.js10
-rw-r--r--tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js4
-rw-r--r--tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js4
-rwxr-xr-xtests/wpt/web-platform-tests/tools/third_party/tooltool/tooltool.py1206
-rw-r--r--tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/error.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py40
-rw-r--r--tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py7
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py12
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_testloader.py50
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py8
-rw-r--r--tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js24
-rw-r--r--tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccess-integration-iframe.https.html15
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/README.md (renamed from tests/wpt/web-platform-tests/wai-aria/README.md)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/alertdialog_modal_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/alertdialog_modal_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/application_activedescendant-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/application_activedescendant-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/application_activedescendant_value_changes-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/application_activedescendant_value_changes-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/aria-current_not_declared-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/aria-current_not_declared-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_changes-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_changes-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_date-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_date-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_location-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_location-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_page-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_page-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_step-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_step-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_time-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_time-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/aria-details_pointing_to_details_element-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/aria-details_pointing_to_details_element-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/aria-details_pointing_to_div_element-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/aria-details_pointing_to_div_element-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/article_in_feed_posinset_and_setsize-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/article_in_feed_posinset_and_setsize-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/article_in_feed_setsize_-1-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/article_in_feed_setsize_-1-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/article_not_in_feed_posinset_and_setsize-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/article_not_in_feed_posinset_and_setsize-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_dialog-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_haspopup_dialog-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_emptystring-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_haspopup_emptystring-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_haspopup_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_foo-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_haspopup_foo-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_grid-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_haspopup_grid-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_listbox-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_haspopup_listbox-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_menu-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_haspopup_menu-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_tree-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_haspopup_tree-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_haspopup_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_haspopup_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_empty-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_roledescription_empty-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_valid-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_roledescription_valid-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_whitespace_only-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/button_roledescription_whitespace_only-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/cell-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/cell-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_div-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_div-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_div-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_div-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/cell_colindex_4-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/cell_colindex_4-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/cell_rowindex_4-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/cell_rowindex_4-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_div-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_div-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_div-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_div-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/columnheader_colindex_4-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/columnheader_colindex_4-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/columnheader_rowindex_4-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/columnheader_rowindex_4-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/columnheader_selected_false_not_automatically_propagated-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/columnheader_selected_false_not_automatically_propagated-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/columnheader_selected_true_not_automatically_propagated-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/columnheader_selected_true_not_automatically_propagated-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_controls_an_invalid_id-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_controls_an_invalid_id-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_dialog-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_dialog-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_grid-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_grid-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_listbox-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_listbox-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_menu-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_menu-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_tree-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_tree-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_horizontal-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_orientation_horizontal-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_orientation_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_vertical-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_orientation_vertical-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_readonly_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_readonly_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/combobox_readonly_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/dialog_modal_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/dialog_modal_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/dialog_modal_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/div_element_without_role_roledescription_valid-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/div_element_without_role_roledescription_valid-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/errormessage_object_in_invalid_state-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/errormessage_object_in_invalid_state-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/errormessage_object_in_valid_state-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/errormessage_object_in_valid_state-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/feed-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/feed-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/figure-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/figure-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_aria-readonly_false_automatically_propagated-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_aria-readonly_false_automatically_propagated-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_aria-readonly_true_automatically_propagated-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_aria-readonly_true_automatically_propagated-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_busy_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_busy_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_value_changes-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_busy_value_changes-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_colcount_8-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_colcount_8-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_rowcount_3-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_rowcount_3-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/gridcell_aria-colspan_2_on_div-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/gridcell_aria-colspan_2_on_div-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/gridcell_aria-rowspan_2_on_div-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/gridcell_aria-rowspan_2_on_div-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/gridcell_colindex_4-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/gridcell_colindex_4-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/gridcell_rowindex_4-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/gridcell_rowindex_4-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/group_hidden_undefined_element_not_rendered-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/group_hidden_undefined_element_not_rendered-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/group_hidden_undefined_element_rendered-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/group_hidden_undefined_element_rendered-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/heading_level_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/heading_level_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/keyshortcuts_multiple_shortcuts-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/keyshortcuts_multiple_shortcuts-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/keyshortcuts_one_shortcut-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/keyshortcuts_one_shortcut-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/listbox_busy_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/listbox_busy_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/listbox_busy_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/listbox_busy_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_horizontal-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/listbox_orientation_horizontal-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/listbox_orientation_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_vertical-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/listbox_orientation_vertical-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/listbox_readonly_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/listbox_readonly_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/listbox_readonly_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/listitem_setsize_-1-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/listitem_setsize_-1-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_horizontal-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menu_orientation_horizontal-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menu_orientation_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_vertical-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menu_orientation_vertical-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menubar_busy_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menubar_busy_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menubar_busy_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menubar_busy_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_horizontal-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menubar_orientation_horizontal-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menubar_orientation_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_vertical-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menubar_orientation_vertical-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitem_expanded_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitem_expanded_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitem_posinset_and_setsize-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitem_posinset_and_setsize-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_expanded_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_expanded_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_posinset_and_setsize-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_posinset_and_setsize-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_expanded_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_expanded_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_posinset_and_setsize-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitemradio_posinset_and_setsize-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/none-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/none-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/option_selected_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/option_selected_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/option_selected_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/option_selected_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/option_selected_undefined-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/option_selected_undefined-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/option_selected_value_changes-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/option_selected_value_changes-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_horizontal-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_horizontal-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_vertical-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_vertical-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/region_with_name-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/region_with_name-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/region_without_name-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/region_without_name-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/row_colindex_4-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/row_colindex_4-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/row_rowindex_4-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/row_rowindex_4-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/rowheader_aria-colspan_2_on_div-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/rowheader_aria-colspan_2_on_div-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/rowheader_aria-rowspan_2_on_div-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/rowheader_aria-rowspan_2_on_div-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/rowheader_colindex_4-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/rowheader_colindex_4-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/rowheader_rowindex_4-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/rowheader_rowindex_4-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/rowheader_selected_false_not_automatically_propagated-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/rowheader_selected_false_not_automatically_propagated-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/rowheader_selected_true_not_automatically_propagated-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/rowheader_selected_true_not_automatically_propagated-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_all_values_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/scrollbar_all_values_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_only_valuenow_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/scrollbar_only_valuenow_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_orientation_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/scrollbar_orientation_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_activedescendant-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_activedescendant-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_activedescendant_value_changes-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_activedescendant_value_changes-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_both-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_both-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_inline-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_inline-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_list-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_list-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_none-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_none-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_placeholder-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_placeholder-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_required_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_required_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/searchbox_required_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_all_values_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/separator_focusable_all_values_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_only_valuenow_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/separator_focusable_only_valuenow_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_valuetext-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/separator_focusable_valuetext-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/separator_orientation_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/separator_orientation_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/separator_unfocusable_all_values_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/separator_unfocusable_all_values_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/separator_unfocusable_valuetext-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/separator_unfocusable_valuetext-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/slider_all_values_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/slider_all_values_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/slider_only_valuenow_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/slider_only_valuenow_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/slider_orientation_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/slider_orientation_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/slider_readonly_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/slider_readonly_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/slider_readonly_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_all_values_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/spinbutton_all_values_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_only_aria-valuenow_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/spinbutton_only_aria-valuenow_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/switch_checked_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_mixed-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/switch_checked_mixed-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/switch_checked_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_undefined-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/switch_checked_undefined-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_value_changes-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/switch_checked_value_changes-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/switch_readonly_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/switch_readonly_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/switch_readonly_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/tab_posinset_and_setsize-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/tab_posinset_and_setsize-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/table_colcount_-1-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/table_colcount_-1-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/table_colcount_8-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/table_colcount_8-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/table_rowcount_-1-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/table_rowcount_-1-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/table_rowcount_3-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/table_rowcount_3-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_horizontal-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/tablist_orientation_horizontal-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/tablist_orientation_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_vertical-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/tablist_orientation_vertical-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/term_role-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/term_role-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/textbox_placeholder-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/textbox_placeholder-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_horizontal-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_horizontal-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_vertical-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_vertical-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_horizontal-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/tree_orientation_horizontal-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/tree_orientation_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_vertical-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/tree_orientation_vertical-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/treegrid_colcount_8-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/treegrid_colcount_8-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_horizontal-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_horizontal-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_unspecified-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_unspecified-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_vertical-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_vertical-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/treegrid_rowcount_3-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/treegrid_rowcount_3-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_false-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/treeitem_selected_false-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_true-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/treeitem_selected_true-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_undefined-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/treeitem_selected_undefined-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_value_changes-manual.html (renamed from tests/wpt/web-platform-tests/wai-aria/treeitem_selected_value_changes-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/webauthn/getcredential-prf.https.html20
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/__init__.py6
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/context.py26
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/invalid.py197
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/page_ranges.py140
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/arguments.py366
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/invalid.py56
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/result_node.py173
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/sandbox.py41
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/__init__.py0
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/node_shared_id.py72
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/__init__.py1
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/result_node.py171
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/sandbox.py17
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py6
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py6
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py6
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/print/__init__.py21
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/print/printcmd.py5
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py112
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_bidi.py30
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py90
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py2
-rw-r--r--tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html8
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html8
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.https.html4
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getStats.https.html4
-rw-r--r--tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm1
630 files changed, 8273 insertions, 4955 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 45ef9dee917..c4006a71035 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -56,13 +56,6 @@
{}
]
],
- "aria-owns-presentation.html": [
- "138625a1534faca65cb00ff3d615dc4fb3fc080b",
- [
- null,
- {}
- ]
- ],
"aria-owns-reparent.html": [
"2eaceb66f6957b0240a4f02b0c23b74e8ca4921a",
[
@@ -3842,6 +3835,13 @@
}
},
"css-view-transitions": {
+ "document-element-detatched-crash.html": [
+ "3c5419a8102c2160ac82e69bf046408b2c542e41",
+ [
+ null,
+ {}
+ ]
+ ],
"get-computed-style-crash.html": [
"38cd5af7f83d60976f9712e446a55d11fe07160e",
[
@@ -4081,6 +4081,13 @@
null,
{}
]
+ ],
+ "visited-part-crash.html": [
+ "f4cb28995b181c330d3605a96546c1ffb33c4fb1",
+ [
+ null,
+ {}
+ ]
]
}
},
@@ -6116,6 +6123,15 @@
]
},
"scroll-animations": {
+ "crashtests": {
+ "invalid-animation-range.html": [
+ "43b23c93b607ac943d0c996f1baffed82dc5fbfe",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"scroll-timelines": {
"animation-with-delay-crash.html": [
"9d821f9e20f58eef9ff5aa0706fa528f3250935f",
@@ -8704,6 +8720,48 @@
{}
]
],
+ "aria-expanded_not_supported_on_alert-manual.html": [
+ "1317cc658f76a8e19a4dc862cc638e17a859d0fe",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-expanded_not_supported_on_banner-manual.html": [
+ "e1bf9cc7f45a9342d244c262186bbb1636cb2b1b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-expanded_not_supported_on_dialog-manual.html": [
+ "c7feeddf2bbb35e82211055c8dcc5c8e689b815f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-expanded_not_supported_on_feed-manual.html": [
+ "e81f3e49494c499ab2411cbcc7c82d41e5b3d816",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-expanded_not_supported_on_form-manual.html": [
+ "6b533da6f7205bad6e14e8cddf525e7adb1e521b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-expanded_not_supported_on_group-manual.html": [
+ "8deb17c2b24a07c1801d214db6990e30cd883d54",
+ [
+ null,
+ {}
+ ]
+ ],
"aria-expanded_true-manual.html": [
"30f0c6a0f5d9eedcb7dfd5875b9b91458434efa1",
[
@@ -9475,7 +9533,7 @@
]
],
"generic_roledescription_prohibited-manual.html": [
- "7c54dff15495bf6793c88c6fdf2d974af1a47be3",
+ "07f32ccc5cdd5375bb16b174ce48d4062ba4dbc7",
[
null,
{}
@@ -26023,1637 +26081,1639 @@
]
},
"wai-aria": {
- "alertdialog_modal_false-manual.html": [
- "ee64c9dbf0d285707f59a4f2f11674f79822967a",
- [
- null,
- {}
- ]
- ],
- "alertdialog_modal_true-manual.html": [
- "4affe2fd5e61d718aa89f967d02a79f91570f1af",
- [
- null,
- {}
- ]
- ],
- "application_activedescendant-manual.html": [
- "a6ef85ac3dd1a00ca10a24b47c6a0da4d548d179",
- [
- null,
- {}
- ]
- ],
- "application_activedescendant_value_changes-manual.html": [
- "d923c84dea717c384387f32d0d36d2e4de657e8e",
- [
- null,
- {}
- ]
- ],
- "aria-current_not_declared-manual.html": [
- "ecf95bb64fc1fcd7fcad5565d34ca8d964eb413f",
- [
- null,
- {}
- ]
- ],
- "aria-current_with_value_changes-manual.html": [
- "d3f1eae0052126b77d9ea73be413cf443f8cd836",
- [
- null,
- {}
- ]
- ],
- "aria-current_with_value_date-manual.html": [
- "b15f5ec13adc85014a86101d0c13a36e0efd0c8c",
- [
- null,
- {}
- ]
- ],
- "aria-current_with_value_location-manual.html": [
- "e8cf762c0e7af162dd01e438732e13fbb4fca121",
- [
- null,
- {}
- ]
- ],
- "aria-current_with_value_page-manual.html": [
- "ba48b738cc0686edc97b471cbe5af931a038c824",
- [
- null,
- {}
- ]
- ],
- "aria-current_with_value_step-manual.html": [
- "6f4d5986c610a1ddcabff58afa9c62f991d5f094",
- [
- null,
- {}
- ]
- ],
- "aria-current_with_value_time-manual.html": [
- "046fb817695d4aa25f004c6294f8e269fdb6bd89",
- [
- null,
- {}
- ]
- ],
- "aria-current_with_value_true-manual.html": [
- "3ce799f8b2cfedb906854599b79fc9e11a847f92",
- [
- null,
- {}
- ]
- ],
- "aria-current_with_value_unspecified-manual.html": [
- "c017a000a114d087a493d738003c88cb26d81b8a",
- [
- null,
- {}
- ]
- ],
- "aria-details_pointing_to_details_element-manual.html": [
- "6a0d9d776a6f9308dd26b14f2e7a43df4ee1efce",
- [
- null,
- {}
- ]
- ],
- "aria-details_pointing_to_div_element-manual.html": [
- "8a46e78d9711a887bb91780cd296033151b5bebe",
- [
- null,
- {}
- ]
- ],
- "article_in_feed_posinset_and_setsize-manual.html": [
- "9c89dc3fa993f06d5539ee5ebac5365b8b0609ce",
- [
- null,
- {}
- ]
- ],
- "article_in_feed_setsize_-1-manual.html": [
- "0552f926e942c424650f8fe3c1ab15d4769bd9b8",
- [
- null,
- {}
- ]
- ],
- "article_not_in_feed_posinset_and_setsize-manual.html": [
- "91cb0e0eb4877a6ab8e963d60654159ed7f7c8d9",
- [
- null,
- {}
- ]
- ],
- "button_haspopup_dialog-manual.html": [
- "8ba0a22a8d4d7319f5b8318088993fb2603885f7",
- [
- null,
- {}
- ]
- ],
- "button_haspopup_emptystring-manual.html": [
- "e9091489068aec3746912f34e91e996486b69777",
- [
- null,
- {}
- ]
- ],
- "button_haspopup_false-manual.html": [
- "97188995e526378196d31e558b09de2640bc4867",
- [
- null,
- {}
- ]
- ],
- "button_haspopup_foo-manual.html": [
- "a09d21c07416ccc41cfcf7e235f8553baf0c46fc",
- [
- null,
- {}
- ]
- ],
- "button_haspopup_grid-manual.html": [
- "57c8efbde24d1be47bd91e3343874ccc2240c985",
- [
- null,
- {}
- ]
- ],
- "button_haspopup_listbox-manual.html": [
- "4191fc40a3c8c3dfcacd57ebcedd81228643bebc",
- [
- null,
- {}
- ]
- ],
- "button_haspopup_menu-manual.html": [
- "9378993f55817876d17ba1f5d60da47abc7e8190",
- [
- null,
- {}
- ]
- ],
- "button_haspopup_tree-manual.html": [
- "e62b87f59d64c5eee03583937868dacc9d3ffd85",
- [
- null,
- {}
- ]
- ],
- "button_haspopup_true-manual.html": [
- "a6d94658d272d2f9f52506aab61cebd7696d66aa",
- [
- null,
- {}
- ]
- ],
- "button_haspopup_unspecified-manual.html": [
- "96d7095d4ded71226c7105e68c0ba2218bc05de4",
- [
- null,
- {}
- ]
- ],
- "button_roledescription_empty-manual.html": [
- "d9eb0fe7cc82e534107d0aac34b89497cb321dbf",
- [
- null,
- {}
- ]
- ],
- "button_roledescription_valid-manual.html": [
- "cdcf6071e619c30e8a884242a85b78d783ff53dc",
- [
- null,
- {}
- ]
- ],
- "button_roledescription_whitespace_only-manual.html": [
- "59e463778a12adcbe324118ecf75aad3b1e9c59c",
- [
- null,
- {}
- ]
- ],
- "cell-manual.html": [
- "d9f0eafbe076c9ab9ad8bbf2f6c9ceb5a77ff101",
- [
- null,
- {}
- ]
- ],
- "cell_aria-colspan_2_on_div-manual.html": [
- "fa120dc5e43d8c23b2e4b86f85025ad6b0287fec",
- [
- null,
- {}
- ]
- ],
- "cell_aria-colspan_2_on_td_html_colspan_3-manual.html": [
- "a7c65fed3d49b269c61f719edf22ea02a9ff720b",
- [
- null,
- {}
- ]
- ],
- "cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html": [
- "057918c6b0cd85af3c2e25bfc253ef28cba7ded8",
- [
- null,
- {}
- ]
- ],
- "cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html": [
- "2c05e6ea71f99948bbeec975069b923e422b34d0",
- [
- null,
- {}
- ]
- ],
- "cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html": [
- "06212078b74d09a305fa5755c98594adc9bee882",
- [
- null,
- {}
- ]
- ],
- "cell_aria-rowspan_2_on_div-manual.html": [
- "e94303848dac70e70a99e28b292f68051c3c2eed",
- [
- null,
- {}
- ]
- ],
- "cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html": [
- "86ea1a4aec1ebcf94f6a2bfa86857aa450e5cc98",
- [
- null,
- {}
- ]
- ],
- "cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html": [
- "f1572046f29e7fbf7d0ecff0c9b551971bfec216",
- [
- null,
- {}
- ]
- ],
- "cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html": [
- "0978186febafcfaf39d1db30e9af32dad3ff9182",
- [
- null,
- {}
- ]
- ],
- "cell_colindex_4-manual.html": [
- "02003065e09b85dc966105d98f38837dc1d57c2e",
- [
- null,
- {}
- ]
- ],
- "cell_rowindex_4-manual.html": [
- "ea2937efcbfa0484d7eb9557979fea96c647a566",
- [
- null,
- {}
- ]
- ],
- "checkbox_readonly_false-manual.html": [
- "558dc8e3912daed372f14acf926e56600e526ab2",
- [
- null,
- {}
- ]
- ],
- "checkbox_readonly_true-manual.html": [
- "f3c879038f75f4c56ef21fee2f6ec098eecf201d",
- [
- null,
- {}
- ]
- ],
- "checkbox_readonly_unspecified-manual.html": [
- "583985f0009588e52180249342e5de131d963cb0",
- [
- null,
- {}
- ]
- ],
- "columnheader_aria-colspan_2_on_div-manual.html": [
- "4789ced84d260d67bd937cf130a63528de1ac878",
- [
- null,
- {}
- ]
- ],
- "columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html": [
- "2ad8cb4bed9d9be89fc2222688d61517d2ede446",
- [
- null,
- {}
- ]
- ],
- "columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html": [
- "3ac8701f5d7b6c23baad9b561932ad0cba383c8e",
- [
- null,
- {}
- ]
- ],
- "columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html": [
- "82c75991885f9c57d8a93ea9fb29fb58bf7b1fa2",
- [
- null,
- {}
- ]
- ],
- "columnheader_aria-rowspan_2_on_div-manual.html": [
- "00c00683924fe2919b8e21a15d11de1146c4e2b3",
- [
- null,
- {}
- ]
- ],
- "columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html": [
- "256a3d73bde1954ffae5243d0a5d91293b97ca1b",
- [
- null,
- {}
- ]
- ],
- "columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html": [
- "6327e5fb4ec86649ff515a3725bd5f7ba85c8ccd",
- [
- null,
- {}
- ]
- ],
- "columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html": [
- "425eb5b15e0ce070ed124165d043eb23d95ebafc",
- [
- null,
- {}
- ]
- ],
- "columnheader_colindex_4-manual.html": [
- "f44e8343fb05523a71065fe0f8f7d3b088954232",
- [
- null,
- {}
- ]
- ],
- "columnheader_rowindex_4-manual.html": [
- "7ab7e9c8d0f1f89d4a45b541407c39279ad19429",
- [
- null,
- {}
- ]
- ],
- "columnheader_selected_false_not_automatically_propagated-manual.html": [
- "7624f2a3b80b6e04afd8a2b499fe4cc25de9c717",
- [
- null,
- {}
- ]
- ],
- "columnheader_selected_true_not_automatically_propagated-manual.html": [
- "1bc364cb884c3d930e6757631afc5d76ec532a7d",
- [
- null,
- {}
- ]
- ],
- "combobox_controls_an_invalid_id-manual.html": [
- "91188d8e3ca5c0438ea470e0683b2ef4929a501c",
- [
- null,
- {}
- ]
- ],
- "combobox_haspopup_dialog-manual.html": [
- "d9cf618d9b55c841c06d962e62301d9b31e923ad",
- [
- null,
- {}
- ]
- ],
- "combobox_haspopup_false-manual.html": [
- "2b0ca94745a059293749b8165917bfcb5da96ea5",
- [
- null,
- {}
- ]
- ],
- "combobox_haspopup_grid-manual.html": [
- "a3929cf79e73a99addcaf0a7160535373186143e",
- [
- null,
- {}
- ]
- ],
- "combobox_haspopup_listbox-manual.html": [
- "e1c9084fd540851d620e4888bc6c882a36db6193",
- [
- null,
- {}
- ]
- ],
- "combobox_haspopup_menu-manual.html": [
- "a9439ed496ac8fe7cb4db2d65a71507156460fb0",
- [
- null,
- {}
- ]
- ],
- "combobox_haspopup_tree-manual.html": [
- "a0602b520f7207ddad1655a42edc4ded9d2883a7",
- [
- null,
- {}
- ]
- ],
- "combobox_haspopup_true-manual.html": [
- "c7548ce5cd3b93755fbd602c350333d6d28c57f6",
- [
- null,
- {}
- ]
- ],
- "combobox_haspopup_unspecified-manual.html": [
- "cd61076fb4e3ae797d34d26163849543b7064446",
- [
- null,
- {}
- ]
- ],
- "combobox_orientation_horizontal-manual.html": [
- "a5bcc700eca6edf06edfe7d4cef627f902f30d68",
- [
- null,
- {}
- ]
- ],
- "combobox_orientation_unspecified-manual.html": [
- "20bd53d8d118e5d8b1ec9d26aa5e16155215ea0c",
- [
- null,
- {}
- ]
- ],
- "combobox_orientation_vertical-manual.html": [
- "189345c4151bbdd7e3159270cf0fb01acd29aba9",
- [
- null,
- {}
- ]
- ],
- "combobox_readonly_false-manual.html": [
- "978ab1194842938c95393e81a38fbd25936c3678",
- [
- null,
- {}
- ]
- ],
- "combobox_readonly_true-manual.html": [
- "26a4302c24b8643e25c6b83c8f55006de7c328ad",
- [
- null,
- {}
- ]
- ],
- "combobox_readonly_unspecified-manual.html": [
- "4ad87b2c0a91d27b316773a3bd022a4596ba738e",
- [
- null,
- {}
- ]
- ],
- "dialog_modal_false-manual.html": [
- "6c906d320f15821444bb5de99d0dc6d77e3b4694",
- [
- null,
- {}
- ]
- ],
- "dialog_modal_true-manual.html": [
- "02cbfb5fe897acda12e58642f30fc34c9af435cd",
- [
- null,
- {}
- ]
- ],
- "dialog_modal_unspecified-manual.html": [
- "edd4605dad83935bb4566ef299065d250f9dcbf2",
- [
- null,
- {}
- ]
- ],
- "div_element_without_role_roledescription_valid-manual.html": [
- "68b6cc51c728b339b1686c684c26e172489e8570",
- [
- null,
- {}
- ]
- ],
- "errormessage_object_in_invalid_state-manual.html": [
- "999656826281546f33fa73232fc08429c34bdfdb",
- [
- null,
- {}
- ]
- ],
- "errormessage_object_in_valid_state-manual.html": [
- "7c194c6d0ace9ece9b12cd7f04b55d69530096af",
- [
- null,
- {}
- ]
- ],
- "feed-manual.html": [
- "91fc6778dbfec8480ed578812db3f8a4ca5cc5dc",
- [
- null,
- {}
- ]
- ],
- "figure-manual.html": [
- "d60973527a9c4fd7270d4262483679efcd521efd",
- [
- null,
- {}
- ]
- ],
- "grid_aria-readonly_false_automatically_propagated-manual.html": [
- "d373a3023efa1f9bce448970dca89306f6da0caf",
- [
- null,
- {}
- ]
- ],
- "grid_aria-readonly_true_automatically_propagated-manual.html": [
- "7b6a22e2921a93034ae017f340b8c9a497cbc9da",
- [
- null,
- {}
- ]
- ],
- "grid_busy_false-manual.html": [
- "48edba5bf765a19d50741d59e9ed4c7f4758eaea",
- [
- null,
- {}
- ]
- ],
- "grid_busy_true-manual.html": [
- "ddcdf0198f897df038a72de9f891f8034e486db3",
- [
- null,
- {}
- ]
- ],
- "grid_busy_value_changes-manual.html": [
- "4891198882acf72d50f73c05a2075186100cf870",
- [
- null,
- {}
- ]
- ],
- "grid_colcount_8-manual.html": [
- "0f03b12605df254eae653094b9714beba4ca88ab",
- [
- null,
- {}
- ]
- ],
- "grid_columnheader_readonly_false-manual.html": [
- "bb8dd34a92f84074df85226effa0543dc95df0f5",
- [
- null,
- {}
- ]
- ],
- "grid_columnheader_readonly_true-manual.html": [
- "a81e4cbdced1de0640f1f32ca6286f415a5acda7",
- [
- null,
- {}
- ]
- ],
- "grid_columnheader_readonly_unspecified-manual.html": [
- "d45d3b9ca71a0b1c8e8978c8635cb2b362a0b4c7",
- [
- null,
- {}
- ]
- ],
- "grid_columnheader_required_false-manual.html": [
- "b8f7ae332ca6e6b7bb344f842e60d6fe8dc83455",
- [
- null,
- {}
- ]
- ],
- "grid_columnheader_required_true-manual.html": [
- "76155ab905d682b5c95450c3a7a159fe5ce15047",
- [
- null,
- {}
- ]
- ],
- "grid_columnheader_required_unspecified-manual.html": [
- "491cbed6f2ffe8ee82274651fede675e569fda0e",
- [
- null,
- {}
- ]
- ],
- "grid_rowcount_3-manual.html": [
- "3079b59b4de72f52eea82350d3c7877e3900cd28",
- [
- null,
- {}
- ]
- ],
- "grid_rowheader_readonly_false-manual.html": [
- "883918fd043f8d63aa62497f71c7d3e9ce72f40e",
- [
- null,
- {}
- ]
- ],
- "grid_rowheader_readonly_true-manual.html": [
- "5d53c3624c6233c6040265624730627adde4dc14",
- [
- null,
- {}
- ]
- ],
- "grid_rowheader_readonly_unspecified-manual.html": [
- "f9321cac1021bd9c4e4677d5962d20ce88d74669",
- [
- null,
- {}
- ]
- ],
- "grid_rowheader_required_false-manual.html": [
- "4fafba50a983f726443f6aedcc4081f34a36b1a9",
- [
- null,
- {}
- ]
- ],
- "grid_rowheader_required_true-manual.html": [
- "0f14d2dea8bd44077820dc3b3331c448385b062d",
- [
- null,
- {}
- ]
- ],
- "grid_rowheader_required_unspecified-manual.html": [
- "208f0c5e56d7d6aa3ae5ee5459b3162cc2317062",
- [
- null,
- {}
- ]
- ],
- "gridcell_aria-colspan_2_on_div-manual.html": [
- "c151087767e3b1c50093ca5010664581868eef05",
- [
- null,
- {}
- ]
- ],
- "gridcell_aria-rowspan_2_on_div-manual.html": [
- "318709b360908482be27f99ebc1c060cc5f1db53",
- [
- null,
- {}
- ]
- ],
- "gridcell_colindex_4-manual.html": [
- "6ef4fb3a166944114e3be9e9950f10c24c082863",
- [
- null,
- {}
- ]
- ],
- "gridcell_rowindex_4-manual.html": [
- "8b9daaa7030e3fa77072e816c851800f828875f9",
- [
- null,
- {}
- ]
- ],
- "group_hidden_undefined_element_not_rendered-manual.html": [
- "ef947859dba1906a2aa7d4be256beb0763a4ccc5",
- [
- null,
- {}
- ]
- ],
- "group_hidden_undefined_element_rendered-manual.html": [
- "92c067c2160a849320fc08306f18d31e9bb49864",
- [
- null,
- {}
- ]
- ],
- "heading_level_unspecified-manual.html": [
- "819bc7b60c6d42df7fb94b46f1249f9591359e23",
- [
- null,
- {}
- ]
- ],
- "keyshortcuts_multiple_shortcuts-manual.html": [
- "ce4074a4f2cdefb01a6686fea3c9a4c2cf5861e5",
- [
- null,
- {}
- ]
- ],
- "keyshortcuts_one_shortcut-manual.html": [
- "d0238dbf20e7f22220adb0d1b64e8a6069a5f48a",
- [
- null,
- {}
- ]
- ],
- "listbox_busy_false-manual.html": [
- "9f6b8b36a88ae9074aabaf8c53d8b3cbaa1156a4",
- [
- null,
- {}
- ]
- ],
- "listbox_busy_true-manual.html": [
- "c8388f7addfd240b40a5407170e996ccbd303795",
- [
- null,
- {}
- ]
- ],
- "listbox_orientation_horizontal-manual.html": [
- "c718a54eafb837bb70523239e39653e747c97416",
- [
- null,
- {}
- ]
- ],
- "listbox_orientation_unspecified-manual.html": [
- "7dd2762d6db08c22408a4beb5e56c88268f28493",
- [
- null,
- {}
- ]
- ],
- "listbox_orientation_vertical-manual.html": [
- "8bcca037d3072dd359054b7fee7692ab21462867",
- [
- null,
- {}
- ]
- ],
- "listbox_readonly_false-manual.html": [
- "b3bde923a406ecdc3b6c1dead4a2ddf21540ec34",
- [
- null,
- {}
- ]
- ],
- "listbox_readonly_true-manual.html": [
- "30213919e48879474f68fb20caf53f53e0716583",
- [
- null,
- {}
- ]
- ],
- "listbox_readonly_unspecified-manual.html": [
- "9283ad24046e27f9d9e91f8853d090d852c6fe68",
- [
- null,
- {}
- ]
- ],
- "listitem_setsize_-1-manual.html": [
- "7537a4bcd72b3b0fd52dfb85b80f3c55dbdb95e4",
- [
- null,
- {}
- ]
- ],
- "menu_orientation_horizontal-manual.html": [
- "184c42052e4fe19f03905b63c6694a083595a934",
- [
- null,
- {}
- ]
- ],
- "menu_orientation_unspecified-manual.html": [
- "07e8e691b9432b539f63dad6e8ee9ed25430a55b",
- [
- null,
- {}
- ]
- ],
- "menu_orientation_vertical-manual.html": [
- "10a65e997d5a3d3a7b4a55c01e12d98d32c07fe3",
- [
- null,
- {}
- ]
- ],
- "menubar_busy_false-manual.html": [
- "8224d79b87625eb4407ec2fb62b785638012ec83",
- [
- null,
- {}
- ]
- ],
- "menubar_busy_true-manual.html": [
- "b1695dcef4caf0dc9e387680da7085e8f0992dce",
- [
- null,
- {}
- ]
- ],
- "menubar_orientation_horizontal-manual.html": [
- "e47a68e81af133f97684d2c09102f7a83f2b66ab",
- [
- null,
- {}
- ]
- ],
- "menubar_orientation_unspecified-manual.html": [
- "0e945ae26f24fad7bcf842e165193de35dd81ac4",
- [
- null,
- {}
- ]
- ],
- "menubar_orientation_vertical-manual.html": [
- "c0830abc7fe84562dbfda4a008055c713f087447",
- [
- null,
- {}
- ]
- ],
- "menuitem_expanded_false-manual.html": [
- "7e5ca5485bac03490a7f6486ec62f449500fa64d",
- [
- null,
- {}
- ]
- ],
- "menuitem_expanded_true-manual.html": [
- "a9d9b5df359c8c8e30238cf53bd08c7c04d61765",
- [
- null,
- {}
- ]
- ],
- "menuitem_posinset_and_setsize-manual.html": [
- "ac0ec8871d5599b57dc99d8f4352f2a3bb7dd0dd",
- [
- null,
- {}
- ]
- ],
- "menuitemcheckbox_expanded_false-manual.html": [
- "e05ea1af711be9603fe44a6830d89a0abceccb1c",
- [
- null,
- {}
- ]
- ],
- "menuitemcheckbox_expanded_true-manual.html": [
- "b2ac5db68f32becde41dfe29ec757cb618775fc0",
- [
- null,
- {}
- ]
- ],
- "menuitemcheckbox_posinset_and_setsize-manual.html": [
- "cf867c1cf927fd475bda19ab08c6b942044429e4",
- [
- null,
- {}
- ]
- ],
- "menuitemcheckbox_readonly_false-manual.html": [
- "59f12ed0fc992ea1cad913c93ec4729a9b9c01d1",
- [
- null,
- {}
- ]
- ],
- "menuitemcheckbox_readonly_true-manual.html": [
- "faa9703fda36a390de76458c76090785bc52b2f6",
- [
- null,
- {}
- ]
- ],
- "menuitemcheckbox_readonly_unspecified-manual.html": [
- "d9b5dc2980724bf363302d50278c3b3efb218754",
- [
- null,
- {}
- ]
- ],
- "menuitemradio_expanded_false-manual.html": [
- "52c599d90ef0cf6dd60fed9be34b6b00de54a440",
- [
- null,
- {}
- ]
- ],
- "menuitemradio_expanded_true-manual.html": [
- "601879885fe3afdb531557fc1ac64b0da132a1cb",
- [
- null,
- {}
- ]
- ],
- "menuitemradio_posinset_and_setsize-manual.html": [
- "d512e95dddbdf02e34648e3415c657aa33f2a96a",
- [
- null,
- {}
- ]
- ],
- "menuitemradio_readonly_false-manual.html": [
- "164bde7ae177ada9c1dfffca22eef4d0beda519f",
- [
- null,
- {}
- ]
- ],
- "menuitemradio_readonly_true-manual.html": [
- "70690f372c07a8d4aa97b23ad6e5a3d773848db7",
- [
- null,
- {}
- ]
- ],
- "menuitemradio_readonly_unspecified-manual.html": [
- "a4257c439f800d0d410a1c45517d010a4e820f2e",
- [
- null,
- {}
- ]
- ],
- "none-manual.html": [
- "ded346faa6d68864345740772c9b8a51af9ca4a5",
- [
- null,
- {}
- ]
- ],
- "option_selected_false-manual.html": [
- "02b1ec8293db444645369ee34bf2f093a0dfdbf5",
- [
- null,
- {}
- ]
- ],
- "option_selected_true-manual.html": [
- "8bb7dd7ef54bb402d098f918bdff28b8f0798f35",
- [
- null,
- {}
- ]
- ],
- "option_selected_undefined-manual.html": [
- "5930de9a48250300d2c122eea10f93dde265a2b2",
- [
- null,
- {}
- ]
- ],
- "option_selected_value_changes-manual.html": [
- "2c02a8707d3e128ae74c4b1757397b75ee559d99",
- [
- null,
- {}
- ]
- ],
- "radiogroup_orientation_horizontal-manual.html": [
- "4943335cf26448995fac6ec2a85b3b928dc3013a",
- [
- null,
- {}
- ]
- ],
- "radiogroup_orientation_unspecified-manual.html": [
- "40ceab71ca8e10ff54095dac86ec7c90eff775d2",
- [
- null,
- {}
- ]
- ],
- "radiogroup_orientation_vertical-manual.html": [
- "def4543652a0b1ec6ae83ca221347b6bdeb2bbb3",
- [
- null,
- {}
- ]
- ],
- "radiogroup_readonly_false-manual.html": [
- "102f51757baf7456dfbc72fb555564d44b03327d",
- [
- null,
- {}
- ]
- ],
- "radiogroup_readonly_true-manual.html": [
- "0c97e24a8bf0a76d24bcac20f92afcaec8e2ccd4",
- [
- null,
- {}
- ]
- ],
- "radiogroup_readonly_unspecified-manual.html": [
- "6e8c641ac7b595cd5fc2ace06b168575a51d8c58",
- [
- null,
- {}
- ]
- ],
- "region_with_name-manual.html": [
- "ba868a77b2e481787208ded2e07e12c16273c508",
- [
- null,
- {}
- ]
- ],
- "region_without_name-manual.html": [
- "84ea6658e70505466602c856635dbdabb75b4c84",
- [
- null,
- {}
- ]
- ],
- "row_colindex_4-manual.html": [
- "82ee257d9e51f1dd81ffe3a94a029936e1fcb16f",
- [
- null,
- {}
- ]
- ],
- "row_rowindex_4-manual.html": [
- "1333219e0486c685ab1a29f91801556e8c58bcd9",
- [
- null,
- {}
- ]
- ],
- "rowheader_aria-colspan_2_on_div-manual.html": [
- "3d8288895974c786dc21e7e3188da1672ca16dc1",
- [
- null,
- {}
- ]
- ],
- "rowheader_aria-rowspan_2_on_div-manual.html": [
- "4ddf4f5c9acfbe6b4a46f8e2d74f7e46809e343e",
- [
- null,
- {}
- ]
- ],
- "rowheader_colindex_4-manual.html": [
- "8b1eb477e47e07371b3fb2f0924ca8a74e746205",
- [
- null,
- {}
- ]
- ],
- "rowheader_rowindex_4-manual.html": [
- "716403cfeb6101c9bec4839bb8812a7f07e133de",
- [
- null,
- {}
- ]
- ],
- "rowheader_selected_false_not_automatically_propagated-manual.html": [
- "7cd9a559900769094c42c4986aebb5fb5da0807a",
- [
- null,
- {}
- ]
- ],
- "rowheader_selected_true_not_automatically_propagated-manual.html": [
- "51b2b68fee31b0241eaa12bdaa12f4fb9fd75596",
- [
- null,
- {}
- ]
- ],
- "scrollbar_all_values_unspecified-manual.html": [
- "910fe2b11812a8e6ec08ba67fc23a5ffc1acb9a3",
- [
- null,
- {}
- ]
- ],
- "scrollbar_only_valuenow_unspecified-manual.html": [
- "73e315817635fe552fe7abdcd83b2c926b41a134",
- [
- null,
- {}
- ]
- ],
- "scrollbar_orientation_unspecified-manual.html": [
- "32791ae1d8df74fd3045cd22a194e032aa8866cd",
- [
- null,
- {}
- ]
- ],
- "searchbox-manual.html": [
- "979bd0fad45a6ddab51e9c284f72e864393f698c",
- [
- null,
- {}
- ]
- ],
- "searchbox_activedescendant-manual.html": [
- "a72cf9326364bc44b4cb96f29a94b174016cb04b",
- [
- null,
- {}
- ]
- ],
- "searchbox_activedescendant_value_changes-manual.html": [
- "956f931ae863ad643821c91783952502e6247a40",
- [
- null,
- {}
- ]
- ],
- "searchbox_autocomplete_both-manual.html": [
- "ea8b69867946322bda7261e3b9bc8571516b8ddb",
- [
- null,
- {}
- ]
- ],
- "searchbox_autocomplete_inline-manual.html": [
- "77e707666c563c42d781139244476c317bb76998",
- [
- null,
- {}
- ]
- ],
- "searchbox_autocomplete_list-manual.html": [
- "0ce8068ea94cf9f34b442837d1da4cd9a2091d2f",
- [
- null,
- {}
- ]
- ],
- "searchbox_autocomplete_none-manual.html": [
- "341d75c5320116135551df3f8d7b4e750b215a30",
- [
- null,
- {}
- ]
- ],
- "searchbox_autocomplete_unspecified-manual.html": [
- "59becae655e94f39d9773df4a4eba1086e058929",
- [
- null,
- {}
- ]
- ],
- "searchbox_multiline_false-manual.html": [
- "8f49eb61e93a4b3de4a0d19ed9f970fc7e75ba77",
- [
- null,
- {}
- ]
- ],
- "searchbox_multiline_true-manual.html": [
- "47e6c3aaa97011ed2053d0ffa08b4c4ea6bcbda3",
- [
- null,
- {}
- ]
- ],
- "searchbox_multiline_unspecified-manual.html": [
- "5c1d7f5185aa67b3fdc589b03d0c43401aff5f54",
- [
- null,
- {}
- ]
- ],
- "searchbox_placeholder-manual.html": [
- "da513456d2de45ee7fd1d371ffb443674201f7d9",
- [
- null,
- {}
- ]
- ],
- "searchbox_readonly_false-manual.html": [
- "574666a0177b890e1b27e6d60aa2c251e05ffa91",
- [
- null,
- {}
- ]
- ],
- "searchbox_readonly_true-manual.html": [
- "833f1bc4288c1dba08b0e72573fa691696fdd5b1",
- [
- null,
- {}
- ]
- ],
- "searchbox_readonly_unspecified-manual.html": [
- "51b9893595d4d0dc14b7c71cbf7c35d7231b226a",
- [
- null,
- {}
- ]
- ],
- "searchbox_required_false-manual.html": [
- "1bfc8953564d28e199b52abc903aea537f2ce541",
- [
- null,
- {}
- ]
- ],
- "searchbox_required_true-manual.html": [
- "7e26e5ab03ab4bc45d855b34ebc87ac99b0c7734",
- [
- null,
- {}
- ]
- ],
- "searchbox_required_unspecified-manual.html": [
- "13489ad13a0ca80b9cda0eb911013ad561ed30fd",
- [
- null,
- {}
- ]
- ],
- "separator_focusable_all_values_unspecified-manual.html": [
- "fb8e852bb17c196d33cac5475145bdd092fb3e0e",
- [
- null,
- {}
- ]
- ],
- "separator_focusable_only_valuenow_unspecified-manual.html": [
- "680c2a3605a10fca3bef753b2e6dd08d32c80052",
- [
- null,
- {}
- ]
- ],
- "separator_focusable_valuetext-manual.html": [
- "5992f15aeb0077ace637e577d1615ee006ce6354",
- [
- null,
- {}
- ]
- ],
- "separator_orientation_unspecified-manual.html": [
- "3a3901b4244040b42fb2f6b3f63af949bbadc87f",
- [
- null,
- {}
- ]
- ],
- "separator_unfocusable_all_values_unspecified-manual.html": [
- "171370f422bcbbc357e2b68c405cdac64786c4c3",
- [
- null,
- {}
- ]
- ],
- "separator_unfocusable_valuetext-manual.html": [
- "db8ee6322dd1356eca5e546c8cc1c20cdfe9849a",
- [
- null,
- {}
- ]
- ],
- "slider_all_values_unspecified-manual.html": [
- "0dea62e620f7a3a1d8ce21db5a31e4136557e3f1",
- [
- null,
- {}
- ]
- ],
- "slider_only_valuenow_unspecified-manual.html": [
- "ffcbc783734e3708b33ebe5884d65b2f92cdee62",
- [
- null,
- {}
- ]
- ],
- "slider_orientation_unspecified-manual.html": [
- "295b0a61960b92c5691c14b66e46ecaad485b8b7",
- [
- null,
- {}
- ]
- ],
- "slider_readonly_false-manual.html": [
- "f5a70984d51d74c649ca3b1a308c9942efe30a6f",
- [
- null,
- {}
- ]
- ],
- "slider_readonly_true-manual.html": [
- "2588079d784cfd659df39504032d2494dc481995",
- [
- null,
- {}
- ]
- ],
- "slider_readonly_unspecified-manual.html": [
- "271325a47d39f3b2d2cb95a0a6b8c49a741d2aea",
- [
- null,
- {}
- ]
- ],
- "spinbutton_all_values_unspecified-manual.html": [
- "8da69af36d6e8e7ac6028de683ba576d7262ec5d",
- [
- null,
- {}
- ]
- ],
- "spinbutton_only_aria-valuenow_unspecified-manual.html": [
- "bbb94702fe333831ae34a10cf15aaa796efaf0b5",
- [
- null,
- {}
- ]
- ],
- "spinbutton_readonly_false-manual.html": [
- "5e9429ca28a46413e56896794a4341813c75e2d4",
- [
- null,
- {}
- ]
- ],
- "spinbutton_readonly_true-manual.html": [
- "a7a3abe632797531f82b09ca861e87d70f5d259a",
- [
- null,
- {}
- ]
- ],
- "spinbutton_readonly_unspecified-manual.html": [
- "0976b0737c7acd5e34cd9aa719d2a9141de8f4e1",
- [
- null,
- {}
- ]
- ],
- "switch_checked_false-manual.html": [
- "ac61802bdfb39a197e14e607c25cc48d895d1f35",
- [
- null,
- {}
- ]
- ],
- "switch_checked_mixed-manual.html": [
- "a674c7d7bcf6dcbe4134e2fbff97d35395c19832",
- [
- null,
- {}
- ]
- ],
- "switch_checked_true-manual.html": [
- "e23e7235616334f41fa0c29780e5b42051125659",
- [
- null,
- {}
- ]
- ],
- "switch_checked_undefined-manual.html": [
- "4f5399e88ceb23d91a4c00d1bd1f4ac562725d18",
- [
- null,
- {}
- ]
- ],
- "switch_checked_value_changes-manual.html": [
- "b58e52fefb039216c64c48a9701bd9c50f86b4c6",
- [
- null,
- {}
- ]
- ],
- "switch_readonly_false-manual.html": [
- "e68b6bb0d27aef4cbfad98217151a544fa5231ba",
- [
- null,
- {}
- ]
- ],
- "switch_readonly_true-manual.html": [
- "605d2d0d9afdf867c1a23c1759b9e10c05fde336",
- [
- null,
- {}
- ]
- ],
- "switch_readonly_unspecified-manual.html": [
- "0fd582c0e9bace1a25474c05f55d9e8492100335",
- [
- null,
- {}
- ]
- ],
- "tab_posinset_and_setsize-manual.html": [
- "f27f485ac97bf2423a72507925016f2a2cc227e2",
- [
- null,
- {}
- ]
- ],
- "table_colcount_-1-manual.html": [
- "2135f6ed8d0d760ddace412faf1e490902fbf8ed",
- [
- null,
- {}
- ]
- ],
- "table_colcount_8-manual.html": [
- "1b8e0affdd5dd5ff2728fc32fabca877d8a117fc",
- [
- null,
- {}
- ]
- ],
- "table_rowcount_-1-manual.html": [
- "5e7b5b8bf49aa121b50e6ddacfd768026e025115",
- [
- null,
- {}
- ]
- ],
- "table_rowcount_3-manual.html": [
- "5bfad69b240d6c6fd57f5a8dc554069771a9f9d4",
- [
- null,
- {}
- ]
- ],
- "tablist_orientation_horizontal-manual.html": [
- "104668cbb95e044d2055f7a35f69da6adfa93b04",
- [
- null,
- {}
- ]
- ],
- "tablist_orientation_unspecified-manual.html": [
- "001c2ee77b31778169f377e2be4013912e164910",
- [
- null,
- {}
- ]
- ],
- "tablist_orientation_vertical-manual.html": [
- "f6fe16e8955cd5914167a943675db0bd7e399ea9",
- [
- null,
- {}
- ]
- ],
- "term_role-manual.html": [
- "ac5030df950334c912f57821c9ae978c47d49efd",
- [
- null,
- {}
- ]
- ],
- "textbox_placeholder-manual.html": [
- "fdf0635be67baf7d71e22a43d59cfa551b17d018",
- [
- null,
- {}
- ]
- ],
- "toolbar_orientation_horizontal-manual.html": [
- "1b8fda8dd60bbab169349ce227574a9737cfbf14",
- [
- null,
- {}
- ]
- ],
- "toolbar_orientation_unspecified-manual.html": [
- "4607511874bd8b16b47789b20c7a727ffc8ffd88",
- [
- null,
- {}
- ]
- ],
- "toolbar_orientation_vertical-manual.html": [
- "792952d323d178819a83f237c1f25b8d02274712",
- [
- null,
- {}
- ]
- ],
- "tree_orientation_horizontal-manual.html": [
- "15813f5f039a7c93581c0132e2913580dac72ea8",
- [
- null,
- {}
- ]
- ],
- "tree_orientation_unspecified-manual.html": [
- "dfc1bdcc587e104444691895a2840388f1e242f7",
- [
- null,
- {}
- ]
- ],
- "tree_orientation_vertical-manual.html": [
- "b9afa33ff44cd4e4c3a4646b2398e10e55069bcc",
- [
- null,
- {}
- ]
- ],
- "treegrid_colcount_8-manual.html": [
- "a3e9ea14963ca5da01235724200d3df4a7f79ad1",
- [
- null,
- {}
- ]
- ],
- "treegrid_orientation_horizontal-manual.html": [
- "756153abf3bc68e62e68840393645b823f320741",
- [
- null,
- {}
- ]
- ],
- "treegrid_orientation_unspecified-manual.html": [
- "d536e9afbed7c6d83185c4416cbe424a4bf27941",
- [
- null,
- {}
- ]
- ],
- "treegrid_orientation_vertical-manual.html": [
- "62a19d09046691bbcccd81922d29efbe5b92c4bd",
- [
- null,
- {}
- ]
- ],
- "treegrid_rowcount_3-manual.html": [
- "9d9b8acf44700de3166430c34e3b751ce6d8f177",
- [
- null,
- {}
- ]
- ],
- "treeitem_selected_false-manual.html": [
- "684fda69b6d157bef02d1ef60a9ce9cc602d0f82",
- [
- null,
- {}
- ]
- ],
- "treeitem_selected_true-manual.html": [
- "b951c54dec674ac8d7e9a537cf8a064f6b4d0d97",
- [
- null,
- {}
- ]
- ],
- "treeitem_selected_undefined-manual.html": [
- "dddfd3826f094c6557f939734819ea437497aaa0",
- [
- null,
- {}
- ]
- ],
- "treeitem_selected_value_changes-manual.html": [
- "69734c82ddaa1455b7473c84b27fac49c8cf1c82",
- [
- null,
- {}
+ "manual": {
+ "alertdialog_modal_false-manual.html": [
+ "ee64c9dbf0d285707f59a4f2f11674f79822967a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "alertdialog_modal_true-manual.html": [
+ "4affe2fd5e61d718aa89f967d02a79f91570f1af",
+ [
+ null,
+ {}
+ ]
+ ],
+ "application_activedescendant-manual.html": [
+ "a6ef85ac3dd1a00ca10a24b47c6a0da4d548d179",
+ [
+ null,
+ {}
+ ]
+ ],
+ "application_activedescendant_value_changes-manual.html": [
+ "d923c84dea717c384387f32d0d36d2e4de657e8e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-current_not_declared-manual.html": [
+ "ecf95bb64fc1fcd7fcad5565d34ca8d964eb413f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-current_with_value_changes-manual.html": [
+ "d3f1eae0052126b77d9ea73be413cf443f8cd836",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-current_with_value_date-manual.html": [
+ "b15f5ec13adc85014a86101d0c13a36e0efd0c8c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-current_with_value_location-manual.html": [
+ "e8cf762c0e7af162dd01e438732e13fbb4fca121",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-current_with_value_page-manual.html": [
+ "ba48b738cc0686edc97b471cbe5af931a038c824",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-current_with_value_step-manual.html": [
+ "6f4d5986c610a1ddcabff58afa9c62f991d5f094",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-current_with_value_time-manual.html": [
+ "046fb817695d4aa25f004c6294f8e269fdb6bd89",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-current_with_value_true-manual.html": [
+ "3ce799f8b2cfedb906854599b79fc9e11a847f92",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-current_with_value_unspecified-manual.html": [
+ "c017a000a114d087a493d738003c88cb26d81b8a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-details_pointing_to_details_element-manual.html": [
+ "6a0d9d776a6f9308dd26b14f2e7a43df4ee1efce",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-details_pointing_to_div_element-manual.html": [
+ "8a46e78d9711a887bb91780cd296033151b5bebe",
+ [
+ null,
+ {}
+ ]
+ ],
+ "article_in_feed_posinset_and_setsize-manual.html": [
+ "9c89dc3fa993f06d5539ee5ebac5365b8b0609ce",
+ [
+ null,
+ {}
+ ]
+ ],
+ "article_in_feed_setsize_-1-manual.html": [
+ "0552f926e942c424650f8fe3c1ab15d4769bd9b8",
+ [
+ null,
+ {}
+ ]
+ ],
+ "article_not_in_feed_posinset_and_setsize-manual.html": [
+ "91cb0e0eb4877a6ab8e963d60654159ed7f7c8d9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_haspopup_dialog-manual.html": [
+ "8ba0a22a8d4d7319f5b8318088993fb2603885f7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_haspopup_emptystring-manual.html": [
+ "e9091489068aec3746912f34e91e996486b69777",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_haspopup_false-manual.html": [
+ "97188995e526378196d31e558b09de2640bc4867",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_haspopup_foo-manual.html": [
+ "a09d21c07416ccc41cfcf7e235f8553baf0c46fc",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_haspopup_grid-manual.html": [
+ "57c8efbde24d1be47bd91e3343874ccc2240c985",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_haspopup_listbox-manual.html": [
+ "4191fc40a3c8c3dfcacd57ebcedd81228643bebc",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_haspopup_menu-manual.html": [
+ "9378993f55817876d17ba1f5d60da47abc7e8190",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_haspopup_tree-manual.html": [
+ "e62b87f59d64c5eee03583937868dacc9d3ffd85",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_haspopup_true-manual.html": [
+ "a6d94658d272d2f9f52506aab61cebd7696d66aa",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_haspopup_unspecified-manual.html": [
+ "96d7095d4ded71226c7105e68c0ba2218bc05de4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_roledescription_empty-manual.html": [
+ "d9eb0fe7cc82e534107d0aac34b89497cb321dbf",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_roledescription_valid-manual.html": [
+ "cdcf6071e619c30e8a884242a85b78d783ff53dc",
+ [
+ null,
+ {}
+ ]
+ ],
+ "button_roledescription_whitespace_only-manual.html": [
+ "59e463778a12adcbe324118ecf75aad3b1e9c59c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cell-manual.html": [
+ "d9f0eafbe076c9ab9ad8bbf2f6c9ceb5a77ff101",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cell_aria-colspan_2_on_div-manual.html": [
+ "fa120dc5e43d8c23b2e4b86f85025ad6b0287fec",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cell_aria-colspan_2_on_td_html_colspan_3-manual.html": [
+ "a7c65fed3d49b269c61f719edf22ea02a9ff720b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html": [
+ "057918c6b0cd85af3c2e25bfc253ef28cba7ded8",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html": [
+ "2c05e6ea71f99948bbeec975069b923e422b34d0",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html": [
+ "06212078b74d09a305fa5755c98594adc9bee882",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cell_aria-rowspan_2_on_div-manual.html": [
+ "e94303848dac70e70a99e28b292f68051c3c2eed",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html": [
+ "86ea1a4aec1ebcf94f6a2bfa86857aa450e5cc98",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html": [
+ "f1572046f29e7fbf7d0ecff0c9b551971bfec216",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html": [
+ "0978186febafcfaf39d1db30e9af32dad3ff9182",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cell_colindex_4-manual.html": [
+ "02003065e09b85dc966105d98f38837dc1d57c2e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cell_rowindex_4-manual.html": [
+ "ea2937efcbfa0484d7eb9557979fea96c647a566",
+ [
+ null,
+ {}
+ ]
+ ],
+ "checkbox_readonly_false-manual.html": [
+ "558dc8e3912daed372f14acf926e56600e526ab2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "checkbox_readonly_true-manual.html": [
+ "f3c879038f75f4c56ef21fee2f6ec098eecf201d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "checkbox_readonly_unspecified-manual.html": [
+ "583985f0009588e52180249342e5de131d963cb0",
+ [
+ null,
+ {}
+ ]
+ ],
+ "columnheader_aria-colspan_2_on_div-manual.html": [
+ "4789ced84d260d67bd937cf130a63528de1ac878",
+ [
+ null,
+ {}
+ ]
+ ],
+ "columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html": [
+ "2ad8cb4bed9d9be89fc2222688d61517d2ede446",
+ [
+ null,
+ {}
+ ]
+ ],
+ "columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html": [
+ "3ac8701f5d7b6c23baad9b561932ad0cba383c8e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html": [
+ "82c75991885f9c57d8a93ea9fb29fb58bf7b1fa2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "columnheader_aria-rowspan_2_on_div-manual.html": [
+ "00c00683924fe2919b8e21a15d11de1146c4e2b3",
+ [
+ null,
+ {}
+ ]
+ ],
+ "columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html": [
+ "256a3d73bde1954ffae5243d0a5d91293b97ca1b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html": [
+ "6327e5fb4ec86649ff515a3725bd5f7ba85c8ccd",
+ [
+ null,
+ {}
+ ]
+ ],
+ "columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html": [
+ "425eb5b15e0ce070ed124165d043eb23d95ebafc",
+ [
+ null,
+ {}
+ ]
+ ],
+ "columnheader_colindex_4-manual.html": [
+ "f44e8343fb05523a71065fe0f8f7d3b088954232",
+ [
+ null,
+ {}
+ ]
+ ],
+ "columnheader_rowindex_4-manual.html": [
+ "7ab7e9c8d0f1f89d4a45b541407c39279ad19429",
+ [
+ null,
+ {}
+ ]
+ ],
+ "columnheader_selected_false_not_automatically_propagated-manual.html": [
+ "7624f2a3b80b6e04afd8a2b499fe4cc25de9c717",
+ [
+ null,
+ {}
+ ]
+ ],
+ "columnheader_selected_true_not_automatically_propagated-manual.html": [
+ "1bc364cb884c3d930e6757631afc5d76ec532a7d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_controls_an_invalid_id-manual.html": [
+ "91188d8e3ca5c0438ea470e0683b2ef4929a501c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_haspopup_dialog-manual.html": [
+ "d9cf618d9b55c841c06d962e62301d9b31e923ad",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_haspopup_false-manual.html": [
+ "2b0ca94745a059293749b8165917bfcb5da96ea5",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_haspopup_grid-manual.html": [
+ "a3929cf79e73a99addcaf0a7160535373186143e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_haspopup_listbox-manual.html": [
+ "e1c9084fd540851d620e4888bc6c882a36db6193",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_haspopup_menu-manual.html": [
+ "a9439ed496ac8fe7cb4db2d65a71507156460fb0",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_haspopup_tree-manual.html": [
+ "a0602b520f7207ddad1655a42edc4ded9d2883a7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_haspopup_true-manual.html": [
+ "c7548ce5cd3b93755fbd602c350333d6d28c57f6",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_haspopup_unspecified-manual.html": [
+ "cd61076fb4e3ae797d34d26163849543b7064446",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_orientation_horizontal-manual.html": [
+ "a5bcc700eca6edf06edfe7d4cef627f902f30d68",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_orientation_unspecified-manual.html": [
+ "20bd53d8d118e5d8b1ec9d26aa5e16155215ea0c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_orientation_vertical-manual.html": [
+ "189345c4151bbdd7e3159270cf0fb01acd29aba9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_readonly_false-manual.html": [
+ "978ab1194842938c95393e81a38fbd25936c3678",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_readonly_true-manual.html": [
+ "26a4302c24b8643e25c6b83c8f55006de7c328ad",
+ [
+ null,
+ {}
+ ]
+ ],
+ "combobox_readonly_unspecified-manual.html": [
+ "4ad87b2c0a91d27b316773a3bd022a4596ba738e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "dialog_modal_false-manual.html": [
+ "6c906d320f15821444bb5de99d0dc6d77e3b4694",
+ [
+ null,
+ {}
+ ]
+ ],
+ "dialog_modal_true-manual.html": [
+ "02cbfb5fe897acda12e58642f30fc34c9af435cd",
+ [
+ null,
+ {}
+ ]
+ ],
+ "dialog_modal_unspecified-manual.html": [
+ "edd4605dad83935bb4566ef299065d250f9dcbf2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "div_element_without_role_roledescription_valid-manual.html": [
+ "68b6cc51c728b339b1686c684c26e172489e8570",
+ [
+ null,
+ {}
+ ]
+ ],
+ "errormessage_object_in_invalid_state-manual.html": [
+ "999656826281546f33fa73232fc08429c34bdfdb",
+ [
+ null,
+ {}
+ ]
+ ],
+ "errormessage_object_in_valid_state-manual.html": [
+ "7c194c6d0ace9ece9b12cd7f04b55d69530096af",
+ [
+ null,
+ {}
+ ]
+ ],
+ "feed-manual.html": [
+ "91fc6778dbfec8480ed578812db3f8a4ca5cc5dc",
+ [
+ null,
+ {}
+ ]
+ ],
+ "figure-manual.html": [
+ "d60973527a9c4fd7270d4262483679efcd521efd",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_aria-readonly_false_automatically_propagated-manual.html": [
+ "d373a3023efa1f9bce448970dca89306f6da0caf",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_aria-readonly_true_automatically_propagated-manual.html": [
+ "7b6a22e2921a93034ae017f340b8c9a497cbc9da",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_busy_false-manual.html": [
+ "48edba5bf765a19d50741d59e9ed4c7f4758eaea",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_busy_true-manual.html": [
+ "ddcdf0198f897df038a72de9f891f8034e486db3",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_busy_value_changes-manual.html": [
+ "4891198882acf72d50f73c05a2075186100cf870",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_colcount_8-manual.html": [
+ "0f03b12605df254eae653094b9714beba4ca88ab",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_columnheader_readonly_false-manual.html": [
+ "bb8dd34a92f84074df85226effa0543dc95df0f5",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_columnheader_readonly_true-manual.html": [
+ "a81e4cbdced1de0640f1f32ca6286f415a5acda7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_columnheader_readonly_unspecified-manual.html": [
+ "d45d3b9ca71a0b1c8e8978c8635cb2b362a0b4c7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_columnheader_required_false-manual.html": [
+ "b8f7ae332ca6e6b7bb344f842e60d6fe8dc83455",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_columnheader_required_true-manual.html": [
+ "76155ab905d682b5c95450c3a7a159fe5ce15047",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_columnheader_required_unspecified-manual.html": [
+ "491cbed6f2ffe8ee82274651fede675e569fda0e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_rowcount_3-manual.html": [
+ "3079b59b4de72f52eea82350d3c7877e3900cd28",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_rowheader_readonly_false-manual.html": [
+ "883918fd043f8d63aa62497f71c7d3e9ce72f40e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_rowheader_readonly_true-manual.html": [
+ "5d53c3624c6233c6040265624730627adde4dc14",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_rowheader_readonly_unspecified-manual.html": [
+ "f9321cac1021bd9c4e4677d5962d20ce88d74669",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_rowheader_required_false-manual.html": [
+ "4fafba50a983f726443f6aedcc4081f34a36b1a9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_rowheader_required_true-manual.html": [
+ "0f14d2dea8bd44077820dc3b3331c448385b062d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "grid_rowheader_required_unspecified-manual.html": [
+ "208f0c5e56d7d6aa3ae5ee5459b3162cc2317062",
+ [
+ null,
+ {}
+ ]
+ ],
+ "gridcell_aria-colspan_2_on_div-manual.html": [
+ "c151087767e3b1c50093ca5010664581868eef05",
+ [
+ null,
+ {}
+ ]
+ ],
+ "gridcell_aria-rowspan_2_on_div-manual.html": [
+ "318709b360908482be27f99ebc1c060cc5f1db53",
+ [
+ null,
+ {}
+ ]
+ ],
+ "gridcell_colindex_4-manual.html": [
+ "6ef4fb3a166944114e3be9e9950f10c24c082863",
+ [
+ null,
+ {}
+ ]
+ ],
+ "gridcell_rowindex_4-manual.html": [
+ "8b9daaa7030e3fa77072e816c851800f828875f9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "group_hidden_undefined_element_not_rendered-manual.html": [
+ "ef947859dba1906a2aa7d4be256beb0763a4ccc5",
+ [
+ null,
+ {}
+ ]
+ ],
+ "group_hidden_undefined_element_rendered-manual.html": [
+ "92c067c2160a849320fc08306f18d31e9bb49864",
+ [
+ null,
+ {}
+ ]
+ ],
+ "heading_level_unspecified-manual.html": [
+ "819bc7b60c6d42df7fb94b46f1249f9591359e23",
+ [
+ null,
+ {}
+ ]
+ ],
+ "keyshortcuts_multiple_shortcuts-manual.html": [
+ "ce4074a4f2cdefb01a6686fea3c9a4c2cf5861e5",
+ [
+ null,
+ {}
+ ]
+ ],
+ "keyshortcuts_one_shortcut-manual.html": [
+ "d0238dbf20e7f22220adb0d1b64e8a6069a5f48a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "listbox_busy_false-manual.html": [
+ "9f6b8b36a88ae9074aabaf8c53d8b3cbaa1156a4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "listbox_busy_true-manual.html": [
+ "c8388f7addfd240b40a5407170e996ccbd303795",
+ [
+ null,
+ {}
+ ]
+ ],
+ "listbox_orientation_horizontal-manual.html": [
+ "c718a54eafb837bb70523239e39653e747c97416",
+ [
+ null,
+ {}
+ ]
+ ],
+ "listbox_orientation_unspecified-manual.html": [
+ "7dd2762d6db08c22408a4beb5e56c88268f28493",
+ [
+ null,
+ {}
+ ]
+ ],
+ "listbox_orientation_vertical-manual.html": [
+ "8bcca037d3072dd359054b7fee7692ab21462867",
+ [
+ null,
+ {}
+ ]
+ ],
+ "listbox_readonly_false-manual.html": [
+ "b3bde923a406ecdc3b6c1dead4a2ddf21540ec34",
+ [
+ null,
+ {}
+ ]
+ ],
+ "listbox_readonly_true-manual.html": [
+ "30213919e48879474f68fb20caf53f53e0716583",
+ [
+ null,
+ {}
+ ]
+ ],
+ "listbox_readonly_unspecified-manual.html": [
+ "9283ad24046e27f9d9e91f8853d090d852c6fe68",
+ [
+ null,
+ {}
+ ]
+ ],
+ "listitem_setsize_-1-manual.html": [
+ "7537a4bcd72b3b0fd52dfb85b80f3c55dbdb95e4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menu_orientation_horizontal-manual.html": [
+ "184c42052e4fe19f03905b63c6694a083595a934",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menu_orientation_unspecified-manual.html": [
+ "07e8e691b9432b539f63dad6e8ee9ed25430a55b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menu_orientation_vertical-manual.html": [
+ "10a65e997d5a3d3a7b4a55c01e12d98d32c07fe3",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menubar_busy_false-manual.html": [
+ "8224d79b87625eb4407ec2fb62b785638012ec83",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menubar_busy_true-manual.html": [
+ "b1695dcef4caf0dc9e387680da7085e8f0992dce",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menubar_orientation_horizontal-manual.html": [
+ "e47a68e81af133f97684d2c09102f7a83f2b66ab",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menubar_orientation_unspecified-manual.html": [
+ "0e945ae26f24fad7bcf842e165193de35dd81ac4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menubar_orientation_vertical-manual.html": [
+ "c0830abc7fe84562dbfda4a008055c713f087447",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitem_expanded_false-manual.html": [
+ "7e5ca5485bac03490a7f6486ec62f449500fa64d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitem_expanded_true-manual.html": [
+ "a9d9b5df359c8c8e30238cf53bd08c7c04d61765",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitem_posinset_and_setsize-manual.html": [
+ "ac0ec8871d5599b57dc99d8f4352f2a3bb7dd0dd",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitemcheckbox_expanded_false-manual.html": [
+ "e05ea1af711be9603fe44a6830d89a0abceccb1c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitemcheckbox_expanded_true-manual.html": [
+ "b2ac5db68f32becde41dfe29ec757cb618775fc0",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitemcheckbox_posinset_and_setsize-manual.html": [
+ "cf867c1cf927fd475bda19ab08c6b942044429e4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitemcheckbox_readonly_false-manual.html": [
+ "59f12ed0fc992ea1cad913c93ec4729a9b9c01d1",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitemcheckbox_readonly_true-manual.html": [
+ "faa9703fda36a390de76458c76090785bc52b2f6",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitemcheckbox_readonly_unspecified-manual.html": [
+ "d9b5dc2980724bf363302d50278c3b3efb218754",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitemradio_expanded_false-manual.html": [
+ "52c599d90ef0cf6dd60fed9be34b6b00de54a440",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitemradio_expanded_true-manual.html": [
+ "601879885fe3afdb531557fc1ac64b0da132a1cb",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitemradio_posinset_and_setsize-manual.html": [
+ "d512e95dddbdf02e34648e3415c657aa33f2a96a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitemradio_readonly_false-manual.html": [
+ "164bde7ae177ada9c1dfffca22eef4d0beda519f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitemradio_readonly_true-manual.html": [
+ "70690f372c07a8d4aa97b23ad6e5a3d773848db7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "menuitemradio_readonly_unspecified-manual.html": [
+ "a4257c439f800d0d410a1c45517d010a4e820f2e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "none-manual.html": [
+ "ded346faa6d68864345740772c9b8a51af9ca4a5",
+ [
+ null,
+ {}
+ ]
+ ],
+ "option_selected_false-manual.html": [
+ "02b1ec8293db444645369ee34bf2f093a0dfdbf5",
+ [
+ null,
+ {}
+ ]
+ ],
+ "option_selected_true-manual.html": [
+ "8bb7dd7ef54bb402d098f918bdff28b8f0798f35",
+ [
+ null,
+ {}
+ ]
+ ],
+ "option_selected_undefined-manual.html": [
+ "5930de9a48250300d2c122eea10f93dde265a2b2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "option_selected_value_changes-manual.html": [
+ "2c02a8707d3e128ae74c4b1757397b75ee559d99",
+ [
+ null,
+ {}
+ ]
+ ],
+ "radiogroup_orientation_horizontal-manual.html": [
+ "4943335cf26448995fac6ec2a85b3b928dc3013a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "radiogroup_orientation_unspecified-manual.html": [
+ "40ceab71ca8e10ff54095dac86ec7c90eff775d2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "radiogroup_orientation_vertical-manual.html": [
+ "def4543652a0b1ec6ae83ca221347b6bdeb2bbb3",
+ [
+ null,
+ {}
+ ]
+ ],
+ "radiogroup_readonly_false-manual.html": [
+ "102f51757baf7456dfbc72fb555564d44b03327d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "radiogroup_readonly_true-manual.html": [
+ "0c97e24a8bf0a76d24bcac20f92afcaec8e2ccd4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "radiogroup_readonly_unspecified-manual.html": [
+ "6e8c641ac7b595cd5fc2ace06b168575a51d8c58",
+ [
+ null,
+ {}
+ ]
+ ],
+ "region_with_name-manual.html": [
+ "ba868a77b2e481787208ded2e07e12c16273c508",
+ [
+ null,
+ {}
+ ]
+ ],
+ "region_without_name-manual.html": [
+ "84ea6658e70505466602c856635dbdabb75b4c84",
+ [
+ null,
+ {}
+ ]
+ ],
+ "row_colindex_4-manual.html": [
+ "82ee257d9e51f1dd81ffe3a94a029936e1fcb16f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "row_rowindex_4-manual.html": [
+ "1333219e0486c685ab1a29f91801556e8c58bcd9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "rowheader_aria-colspan_2_on_div-manual.html": [
+ "3d8288895974c786dc21e7e3188da1672ca16dc1",
+ [
+ null,
+ {}
+ ]
+ ],
+ "rowheader_aria-rowspan_2_on_div-manual.html": [
+ "4ddf4f5c9acfbe6b4a46f8e2d74f7e46809e343e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "rowheader_colindex_4-manual.html": [
+ "8b1eb477e47e07371b3fb2f0924ca8a74e746205",
+ [
+ null,
+ {}
+ ]
+ ],
+ "rowheader_rowindex_4-manual.html": [
+ "716403cfeb6101c9bec4839bb8812a7f07e133de",
+ [
+ null,
+ {}
+ ]
+ ],
+ "rowheader_selected_false_not_automatically_propagated-manual.html": [
+ "7cd9a559900769094c42c4986aebb5fb5da0807a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "rowheader_selected_true_not_automatically_propagated-manual.html": [
+ "51b2b68fee31b0241eaa12bdaa12f4fb9fd75596",
+ [
+ null,
+ {}
+ ]
+ ],
+ "scrollbar_all_values_unspecified-manual.html": [
+ "910fe2b11812a8e6ec08ba67fc23a5ffc1acb9a3",
+ [
+ null,
+ {}
+ ]
+ ],
+ "scrollbar_only_valuenow_unspecified-manual.html": [
+ "73e315817635fe552fe7abdcd83b2c926b41a134",
+ [
+ null,
+ {}
+ ]
+ ],
+ "scrollbar_orientation_unspecified-manual.html": [
+ "32791ae1d8df74fd3045cd22a194e032aa8866cd",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox-manual.html": [
+ "979bd0fad45a6ddab51e9c284f72e864393f698c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_activedescendant-manual.html": [
+ "a72cf9326364bc44b4cb96f29a94b174016cb04b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_activedescendant_value_changes-manual.html": [
+ "956f931ae863ad643821c91783952502e6247a40",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_autocomplete_both-manual.html": [
+ "ea8b69867946322bda7261e3b9bc8571516b8ddb",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_autocomplete_inline-manual.html": [
+ "77e707666c563c42d781139244476c317bb76998",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_autocomplete_list-manual.html": [
+ "0ce8068ea94cf9f34b442837d1da4cd9a2091d2f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_autocomplete_none-manual.html": [
+ "341d75c5320116135551df3f8d7b4e750b215a30",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_autocomplete_unspecified-manual.html": [
+ "59becae655e94f39d9773df4a4eba1086e058929",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_multiline_false-manual.html": [
+ "8f49eb61e93a4b3de4a0d19ed9f970fc7e75ba77",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_multiline_true-manual.html": [
+ "47e6c3aaa97011ed2053d0ffa08b4c4ea6bcbda3",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_multiline_unspecified-manual.html": [
+ "5c1d7f5185aa67b3fdc589b03d0c43401aff5f54",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_placeholder-manual.html": [
+ "da513456d2de45ee7fd1d371ffb443674201f7d9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_readonly_false-manual.html": [
+ "574666a0177b890e1b27e6d60aa2c251e05ffa91",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_readonly_true-manual.html": [
+ "833f1bc4288c1dba08b0e72573fa691696fdd5b1",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_readonly_unspecified-manual.html": [
+ "51b9893595d4d0dc14b7c71cbf7c35d7231b226a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_required_false-manual.html": [
+ "1bfc8953564d28e199b52abc903aea537f2ce541",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_required_true-manual.html": [
+ "7e26e5ab03ab4bc45d855b34ebc87ac99b0c7734",
+ [
+ null,
+ {}
+ ]
+ ],
+ "searchbox_required_unspecified-manual.html": [
+ "13489ad13a0ca80b9cda0eb911013ad561ed30fd",
+ [
+ null,
+ {}
+ ]
+ ],
+ "separator_focusable_all_values_unspecified-manual.html": [
+ "fb8e852bb17c196d33cac5475145bdd092fb3e0e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "separator_focusable_only_valuenow_unspecified-manual.html": [
+ "680c2a3605a10fca3bef753b2e6dd08d32c80052",
+ [
+ null,
+ {}
+ ]
+ ],
+ "separator_focusable_valuetext-manual.html": [
+ "5992f15aeb0077ace637e577d1615ee006ce6354",
+ [
+ null,
+ {}
+ ]
+ ],
+ "separator_orientation_unspecified-manual.html": [
+ "3a3901b4244040b42fb2f6b3f63af949bbadc87f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "separator_unfocusable_all_values_unspecified-manual.html": [
+ "171370f422bcbbc357e2b68c405cdac64786c4c3",
+ [
+ null,
+ {}
+ ]
+ ],
+ "separator_unfocusable_valuetext-manual.html": [
+ "db8ee6322dd1356eca5e546c8cc1c20cdfe9849a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "slider_all_values_unspecified-manual.html": [
+ "0dea62e620f7a3a1d8ce21db5a31e4136557e3f1",
+ [
+ null,
+ {}
+ ]
+ ],
+ "slider_only_valuenow_unspecified-manual.html": [
+ "ffcbc783734e3708b33ebe5884d65b2f92cdee62",
+ [
+ null,
+ {}
+ ]
+ ],
+ "slider_orientation_unspecified-manual.html": [
+ "295b0a61960b92c5691c14b66e46ecaad485b8b7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "slider_readonly_false-manual.html": [
+ "f5a70984d51d74c649ca3b1a308c9942efe30a6f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "slider_readonly_true-manual.html": [
+ "2588079d784cfd659df39504032d2494dc481995",
+ [
+ null,
+ {}
+ ]
+ ],
+ "slider_readonly_unspecified-manual.html": [
+ "271325a47d39f3b2d2cb95a0a6b8c49a741d2aea",
+ [
+ null,
+ {}
+ ]
+ ],
+ "spinbutton_all_values_unspecified-manual.html": [
+ "8da69af36d6e8e7ac6028de683ba576d7262ec5d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "spinbutton_only_aria-valuenow_unspecified-manual.html": [
+ "bbb94702fe333831ae34a10cf15aaa796efaf0b5",
+ [
+ null,
+ {}
+ ]
+ ],
+ "spinbutton_readonly_false-manual.html": [
+ "5e9429ca28a46413e56896794a4341813c75e2d4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "spinbutton_readonly_true-manual.html": [
+ "a7a3abe632797531f82b09ca861e87d70f5d259a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "spinbutton_readonly_unspecified-manual.html": [
+ "0976b0737c7acd5e34cd9aa719d2a9141de8f4e1",
+ [
+ null,
+ {}
+ ]
+ ],
+ "switch_checked_false-manual.html": [
+ "ac61802bdfb39a197e14e607c25cc48d895d1f35",
+ [
+ null,
+ {}
+ ]
+ ],
+ "switch_checked_mixed-manual.html": [
+ "a674c7d7bcf6dcbe4134e2fbff97d35395c19832",
+ [
+ null,
+ {}
+ ]
+ ],
+ "switch_checked_true-manual.html": [
+ "e23e7235616334f41fa0c29780e5b42051125659",
+ [
+ null,
+ {}
+ ]
+ ],
+ "switch_checked_undefined-manual.html": [
+ "4f5399e88ceb23d91a4c00d1bd1f4ac562725d18",
+ [
+ null,
+ {}
+ ]
+ ],
+ "switch_checked_value_changes-manual.html": [
+ "b58e52fefb039216c64c48a9701bd9c50f86b4c6",
+ [
+ null,
+ {}
+ ]
+ ],
+ "switch_readonly_false-manual.html": [
+ "e68b6bb0d27aef4cbfad98217151a544fa5231ba",
+ [
+ null,
+ {}
+ ]
+ ],
+ "switch_readonly_true-manual.html": [
+ "605d2d0d9afdf867c1a23c1759b9e10c05fde336",
+ [
+ null,
+ {}
+ ]
+ ],
+ "switch_readonly_unspecified-manual.html": [
+ "0fd582c0e9bace1a25474c05f55d9e8492100335",
+ [
+ null,
+ {}
+ ]
+ ],
+ "tab_posinset_and_setsize-manual.html": [
+ "f27f485ac97bf2423a72507925016f2a2cc227e2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "table_colcount_-1-manual.html": [
+ "2135f6ed8d0d760ddace412faf1e490902fbf8ed",
+ [
+ null,
+ {}
+ ]
+ ],
+ "table_colcount_8-manual.html": [
+ "1b8e0affdd5dd5ff2728fc32fabca877d8a117fc",
+ [
+ null,
+ {}
+ ]
+ ],
+ "table_rowcount_-1-manual.html": [
+ "5e7b5b8bf49aa121b50e6ddacfd768026e025115",
+ [
+ null,
+ {}
+ ]
+ ],
+ "table_rowcount_3-manual.html": [
+ "5bfad69b240d6c6fd57f5a8dc554069771a9f9d4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "tablist_orientation_horizontal-manual.html": [
+ "104668cbb95e044d2055f7a35f69da6adfa93b04",
+ [
+ null,
+ {}
+ ]
+ ],
+ "tablist_orientation_unspecified-manual.html": [
+ "001c2ee77b31778169f377e2be4013912e164910",
+ [
+ null,
+ {}
+ ]
+ ],
+ "tablist_orientation_vertical-manual.html": [
+ "f6fe16e8955cd5914167a943675db0bd7e399ea9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "term_role-manual.html": [
+ "ac5030df950334c912f57821c9ae978c47d49efd",
+ [
+ null,
+ {}
+ ]
+ ],
+ "textbox_placeholder-manual.html": [
+ "fdf0635be67baf7d71e22a43d59cfa551b17d018",
+ [
+ null,
+ {}
+ ]
+ ],
+ "toolbar_orientation_horizontal-manual.html": [
+ "1b8fda8dd60bbab169349ce227574a9737cfbf14",
+ [
+ null,
+ {}
+ ]
+ ],
+ "toolbar_orientation_unspecified-manual.html": [
+ "4607511874bd8b16b47789b20c7a727ffc8ffd88",
+ [
+ null,
+ {}
+ ]
+ ],
+ "toolbar_orientation_vertical-manual.html": [
+ "792952d323d178819a83f237c1f25b8d02274712",
+ [
+ null,
+ {}
+ ]
+ ],
+ "tree_orientation_horizontal-manual.html": [
+ "15813f5f039a7c93581c0132e2913580dac72ea8",
+ [
+ null,
+ {}
+ ]
+ ],
+ "tree_orientation_unspecified-manual.html": [
+ "dfc1bdcc587e104444691895a2840388f1e242f7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "tree_orientation_vertical-manual.html": [
+ "b9afa33ff44cd4e4c3a4646b2398e10e55069bcc",
+ [
+ null,
+ {}
+ ]
+ ],
+ "treegrid_colcount_8-manual.html": [
+ "a3e9ea14963ca5da01235724200d3df4a7f79ad1",
+ [
+ null,
+ {}
+ ]
+ ],
+ "treegrid_orientation_horizontal-manual.html": [
+ "756153abf3bc68e62e68840393645b823f320741",
+ [
+ null,
+ {}
+ ]
+ ],
+ "treegrid_orientation_unspecified-manual.html": [
+ "d536e9afbed7c6d83185c4416cbe424a4bf27941",
+ [
+ null,
+ {}
+ ]
+ ],
+ "treegrid_orientation_vertical-manual.html": [
+ "62a19d09046691bbcccd81922d29efbe5b92c4bd",
+ [
+ null,
+ {}
+ ]
+ ],
+ "treegrid_rowcount_3-manual.html": [
+ "9d9b8acf44700de3166430c34e3b751ce6d8f177",
+ [
+ null,
+ {}
+ ]
+ ],
+ "treeitem_selected_false-manual.html": [
+ "684fda69b6d157bef02d1ef60a9ce9cc602d0f82",
+ [
+ null,
+ {}
+ ]
+ ],
+ "treeitem_selected_true-manual.html": [
+ "b951c54dec674ac8d7e9a537cf8a064f6b4d0d97",
+ [
+ null,
+ {}
+ ]
+ ],
+ "treeitem_selected_undefined-manual.html": [
+ "dddfd3826f094c6557f939734819ea437497aaa0",
+ [
+ null,
+ {}
+ ]
+ ],
+ "treeitem_selected_value_changes-manual.html": [
+ "69734c82ddaa1455b7473c84b27fac49c8cf1c82",
+ [
+ null,
+ {}
+ ]
]
- ]
+ }
},
"web-nfc": {
"NDEFReader-make-read-only-document-hidden-manual.https.html": [
@@ -28602,149 +28662,6 @@
{}
]
],
- "fixedpos-001-print.html": [
- "04feb96e8474bb638254bc0babc22fa378178f48",
- [
- null,
- [
- [
- "/css/css-break/fixedpos-001-print-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fixedpos-002-print.html": [
- "c23c6be7d2a3bd2416b7c2765cd7654869918d54",
- [
- null,
- [
- [
- "/css/css-break/fixedpos-002-print-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fixedpos-003-print.html": [
- "1b06257175fe3bc93a9205bbaa4c6ee38a778e9f",
- [
- null,
- [
- [
- "/css/css-break/fixedpos-003-print-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fixedpos-004-print.html": [
- "c138e9cd6aa591657f65cd80859a8e9e4f33e132",
- [
- null,
- [
- [
- "/css/css-break/fixedpos-004-print-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fixedpos-005-print.html": [
- "0a2edc71788aaa76305f1d17951e5499418709bd",
- [
- null,
- [
- [
- "/css/css-break/fixedpos-005-print-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fixedpos-006-print.html": [
- "2386c166c81363a904c3e11dfac7dec4e0241029",
- [
- null,
- [
- [
- "/css/css-break/fixedpos-006-print-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fixedpos-007-print.html": [
- "8dcb700b96d89c508f9e6696292c79a382a472a2",
- [
- null,
- [
- [
- "/css/css-break/fixedpos-007-print-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fixedpos-008-print.html": [
- "02b5d63cc7cd500e8dafa2d7a7e966d2dc90c521",
- [
- null,
- [
- [
- "/css/css-break/fixedpos-008-print-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fixedpos-with-abspos-with-link-print.html": [
- "057ddc91460264bbef9bb36fa7be8d89f6d6458e",
- [
- null,
- [
- [
- "/css/css-break/fixedpos-with-abspos-with-link-print-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fixedpos-with-iframe-print.html": [
- "5102d045c4202e4bc22c6c876fd3bbbcf620c4b0",
- [
- null,
- [
- [
- "/css/css-break/fixedpos-with-iframe-print-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fixedpos-with-link-with-inline-child-print.html": [
- "694e5376cbfab7ee52c1f27b9bf0fd23a2a91375",
- [
- null,
- [
- [
- "/css/css-break/fixedpos-with-link-with-inline-child-print-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"flexbox": {
"multi-line-row-flex-fragmentation-063-print.html": [
"1225792abac5a223be7c98cb298e979c1ceda3d7",
@@ -28864,19 +28781,6 @@
{}
]
],
- "page-name-001-print.html": [
- "56281bb4ed5f8b3e34401420b10504ed6c0e00fd",
- [
- null,
- [
- [
- "/css/css-break/page-name-001-print-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"table": {
"repeated-section": {
"fixedpos-in-footer-forced-break-print.html": [
@@ -29184,6 +29088,149 @@
{}
]
],
+ "fixedpos-001-print.html": [
+ "04feb96e8474bb638254bc0babc22fa378178f48",
+ [
+ null,
+ [
+ [
+ "/css/printing/fixedpos-001-print-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fixedpos-002-print.html": [
+ "c23c6be7d2a3bd2416b7c2765cd7654869918d54",
+ [
+ null,
+ [
+ [
+ "/css/printing/fixedpos-002-print-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fixedpos-003-print.html": [
+ "1b06257175fe3bc93a9205bbaa4c6ee38a778e9f",
+ [
+ null,
+ [
+ [
+ "/css/printing/fixedpos-003-print-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fixedpos-004-print.html": [
+ "c138e9cd6aa591657f65cd80859a8e9e4f33e132",
+ [
+ null,
+ [
+ [
+ "/css/printing/fixedpos-004-print-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fixedpos-005-print.html": [
+ "0a2edc71788aaa76305f1d17951e5499418709bd",
+ [
+ null,
+ [
+ [
+ "/css/printing/fixedpos-005-print-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fixedpos-006-print.html": [
+ "2386c166c81363a904c3e11dfac7dec4e0241029",
+ [
+ null,
+ [
+ [
+ "/css/printing/fixedpos-006-print-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fixedpos-007-print.html": [
+ "8dcb700b96d89c508f9e6696292c79a382a472a2",
+ [
+ null,
+ [
+ [
+ "/css/printing/fixedpos-007-print-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fixedpos-008-print.html": [
+ "02b5d63cc7cd500e8dafa2d7a7e966d2dc90c521",
+ [
+ null,
+ [
+ [
+ "/css/printing/fixedpos-008-print-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fixedpos-with-abspos-with-link-print.html": [
+ "057ddc91460264bbef9bb36fa7be8d89f6d6458e",
+ [
+ null,
+ [
+ [
+ "/css/printing/fixedpos-with-abspos-with-link-print-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fixedpos-with-iframe-print.html": [
+ "5102d045c4202e4bc22c6c876fd3bbbcf620c4b0",
+ [
+ null,
+ [
+ [
+ "/css/printing/fixedpos-with-iframe-print-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fixedpos-with-link-with-inline-child-print.html": [
+ "694e5376cbfab7ee52c1f27b9bf0fd23a2a91375",
+ [
+ null,
+ [
+ [
+ "/css/printing/fixedpos-with-link-with-inline-child-print-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"fragmented-inline-block-001-print.html": [
"848635431ecfc5ae3835cdc1f8398b1c04c95ed9",
[
@@ -29231,6 +29278,19 @@
{}
]
],
+ "page-name-001-print.html": [
+ "56281bb4ed5f8b3e34401420b10504ed6c0e00fd",
+ [
+ null,
+ [
+ [
+ "/css/printing/page-name-001-print-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"page-overflow-crash-print.html": [
"e295c569d2d634867bab43741baf23c905918fc3",
[
@@ -129089,6 +129149,19 @@
{}
]
],
+ "background-clip-padding-box-with-border-radius.html": [
+ "8595caec7bb2d751dd87aebc777be84de6233af7",
+ [
+ null,
+ [
+ [
+ "/css/css-backgrounds/reference/background-clip-padding-box-with-border-radius-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"background-clip_padding-box.html": [
"354cbba90759471f886961d3b0e1a5202618d577",
[
@@ -136330,19 +136403,6 @@
{}
]
],
- "simple-bg-color.html": [
- "07bea44d21964b832cd9e4b4f32098ec41a2c206",
- [
- null,
- [
- [
- "/css/css-backgrounds/simple-bg-color-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"subpixel-repeat-no-repeat-mix.html": [
"1828b974877c2dc780388f044126d0499cc5f9fb",
[
@@ -138289,6 +138349,19 @@
{}
]
],
+ "flex-item-content-overflow-003.html": [
+ "d3a5b976ccd3fa0dc972b7b61b4a37ba9365e442",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"increase-fragmentainer-size-flex-item-trailing-margin.html": [
"94845449fbf185b2004cc532ecb401eab4e4221d",
[
@@ -142359,6 +142432,19 @@
],
{}
]
+ ],
+ "grid-item-overflow-001.html": [
+ "30d6f3bb21ca1e144c960fffb3cf657dc79cef64",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
]
},
"increase-fragmentainer-size-tall-border.html": [
@@ -214744,6 +214830,32 @@
{}
]
],
+ "first-line-inherited-no-transition.html": [
+ "e5253daa63fc7cb074901dd086864e27426cd152",
+ [
+ null,
+ [
+ [
+ "/css/css-pseudo/first-line-inherited-no-transition-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "first-line-inherited-with-transition.html": [
+ "88b1f34362279e156559e49d6d22f9ca48f5237f",
+ [
+ null,
+ [
+ [
+ "/css/css-pseudo/first-line-inherited-with-transition-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"first-line-line-height-001.html": [
"f1dd69807ed866374539a4416d0102f043bec5e1",
[
@@ -241953,6 +242065,19 @@
{}
]
],
+ "text-wrap-balance-line-clamp-001.html": [
+ "292e655464b750a3c0426fb6c63df8ebdbac5ffe",
+ [
+ null,
+ [
+ [
+ "/css/css-text/white-space/reference/text-wrap-balance-line-clamp-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"textarea-break-spaces-001.html": [
"ad81e99768f9816c6e8a659c13aed81c4f22d940",
[
@@ -276528,7 +276653,7 @@
},
"css-view-transitions": {
"3d-transform-incoming.html": [
- "e1c172263b7824911d205646f14c93fe97cd78b0",
+ "b3726d4cd5131f413219d8dcc10ce3e5cce28f61",
[
null,
[
@@ -276561,7 +276686,7 @@
]
],
"3d-transform-outgoing.html": [
- "1796284c06d0de95538a7b8b923b505fb9218571",
+ "746b93afd40c1c1e33f8ca3b4a8e0fa2970e635c",
[
null,
[
@@ -276640,7 +276765,7 @@
]
],
"content-visibility-auto-shared-element.html": [
- "d76eab2fcd67372c3df2558748035929b3a5ed4f",
+ "11b4957fbcca7d1ceb8b151741eba1b86cb5708e",
[
null,
[
@@ -276798,7 +276923,7 @@
]
],
"css-tags-paint-order-with-entry.html": [
- "efd1aff5df79b2e8ee6a775bd987876483f3464c",
+ "703b64f5c68c732d42d5ffeb1bb590f3c8ebf543",
[
null,
[
@@ -276831,7 +276956,7 @@
]
],
"css-tags-paint-order.html": [
- "28a955bad66c21adfd8f7ec938cb9fc2ff9a62b9",
+ "c0e8769b473052d3adc8f192d454f5bb59c10647",
[
null,
[
@@ -276844,7 +276969,7 @@
]
],
"css-tags-shared-element.html": [
- "9046b915b4f03fba81c58e44ad3d61c4236d468a",
+ "33bbae70fc6b918d12a17c856a3c75c1c0071ff7",
[
null,
[
@@ -276929,7 +277054,7 @@
]
],
"far-away-capture.html": [
- "7b003cbb76961d9747448949eaf9001cc218b4f3",
+ "bfe0b9fb9484f5984fbea9460d40818a40ab6ddd",
[
null,
[
@@ -277017,7 +277142,7 @@
]
],
"hit-test-unrelated-element.html": [
- "dae232b74defa675ca211b3b843a990a3b5ca0c7",
+ "1b8868280b2a82dbf8d5d4506372c925d642e159",
[
null,
[
@@ -277143,7 +277268,7 @@
]
],
"japanese-tag.html": [
- "67115a6fae6a8b63db7a7264efe921e056f5c7cb",
+ "976dcab4fca8f8cf17fbdedbf7af0a162036eb37",
[
null,
[
@@ -277182,7 +277307,7 @@
]
],
"new-and-old-sizes-match.html": [
- "1549a402af0cfb1fb18e8e8e7d76a71035577ad9",
+ "78efa9d82fa7591f62d855b2fe8ab80c4140f0fe",
[
null,
[
@@ -277215,7 +277340,7 @@
]
],
"new-content-captures-clip-path.html": [
- "0d4c94e47d61790b77be1805a128ae93cae1ceb8",
+ "4a2dfc78c2746c02ca7aae34685292fbc76aed47",
[
null,
[
@@ -277248,7 +277373,7 @@
]
],
"new-content-captures-different-size.html": [
- "a3ecddaf26c6d4be142525da40caaf947827684d",
+ "a891dec55532d6a740a459772f65acb39136cd9b",
[
null,
[
@@ -277282,7 +277407,7 @@
]
],
"new-content-captures-opacity.html": [
- "7f23f9110a915dff94ce768a6e69c73ceb6df5d4",
+ "ab4efd1f42478c2fb1c78b224a564623b3197046",
[
null,
[
@@ -277295,7 +277420,7 @@
]
],
"new-content-captures-positioned-spans.html": [
- "39bbfbfb123f70f3282a8ce09a69fb4892e87dc8",
+ "b88654cd379c92316e6eee6ed6e27ba0c80038fb",
[
null,
[
@@ -277321,7 +277446,7 @@
]
],
"new-content-captures-spans.html": [
- "661d7c8a01ad9f0c655ba48db7a893ead5da1b4c",
+ "843f6752d76740550f8348ed3cd3c9134700aa77",
[
null,
[
@@ -277334,7 +277459,7 @@
]
],
"new-content-container-writing-modes.html": [
- "7b55a0f012fb772fc26c85ea5568553511a82855",
+ "e7ac768e17d6104d0f70cab29a891c8b08b03c8c",
[
null,
[
@@ -277347,7 +277472,7 @@
]
],
"new-content-element-writing-modes.html": [
- "78ce545b74ad5df5c8cdb3b4d44e1b77808e9b81",
+ "d7740d78f54f52766c58adfcd618d1e260bdba42",
[
null,
[
@@ -277407,7 +277532,7 @@
]
],
"new-content-intrinsic-aspect-ratio.html": [
- "69e8f82e9f1b2c3e0b9fc710260585863e081b9a",
+ "53ec94122f06998a01c3b69b47d5c312e15e21d0",
[
null,
[
@@ -277420,7 +277545,7 @@
]
],
"new-content-is-empty-div.html": [
- "53f3e23b686f90fff4582c05b113e713010b6a21",
+ "bacc63f1945835678628f59c229540e990e6e30e",
[
null,
[
@@ -277433,7 +277558,7 @@
]
],
"new-content-is-inline.html": [
- "d971ec4eaa618cd4313a9e9ce4b269a1dad6ee13",
+ "c341444f3425de43a7bc47f2a718a36337398141",
[
null,
[
@@ -277466,7 +277591,7 @@
]
],
"new-content-object-fit-fill.html": [
- "2a34348c12a6f0df60672f003d5a77fa36fc9564",
+ "b891eee16d5e93258f8bf8df0ce80b5bdb9b2d6e",
[
null,
[
@@ -277499,7 +277624,7 @@
]
],
"new-content-object-fit-none.html": [
- "0ec9d0bc8a4f77ec8e9e08f02b0dffc1f1a279e9",
+ "d4b81b1a0eeadb38f13b7ae00a4d694d90e43568",
[
null,
[
@@ -277512,7 +277637,7 @@
]
],
"new-content-object-view-box-clip-path-reference.html": [
- "a8507f5f33e98dcb45c2670c88b918682bb3c23b",
+ "01a3ed3204fb418947a1d89f237ef918327a394e",
[
null,
[
@@ -277525,7 +277650,7 @@
]
],
"new-content-object-view-box-clip-path.html": [
- "d6a3f925cbf55d600aecd087b8b8bd460a1ef3b3",
+ "dcd5fec70a1c539c65dbd665d13442f0a4725966",
[
null,
[
@@ -277538,7 +277663,7 @@
]
],
"new-content-object-view-box-overflow-clipped.html": [
- "247a33d15bc7fb14a74f41027a8b93531f24e64e",
+ "593901529f43b2daa0b02e1e1eb9c9ff0e05d2fd",
[
null,
[
@@ -277551,7 +277676,7 @@
]
],
"new-content-object-view-box-overflow.html": [
- "d0c129a1abfe6410d3a1481b4afcf85828721602",
+ "2bbea1e1c4c54d5e5e6281de8f14ccc4bae8aad1",
[
null,
[
@@ -277564,7 +277689,7 @@
]
],
"new-content-scaling.html": [
- "5ce6d5ba693b4c493d2481b07ba3d34851389570",
+ "4ea3c2e04a486b74c8c92b2ca473ad9f2a2bfe44",
[
null,
[
@@ -277597,7 +277722,7 @@
]
],
"new-content-with-overflow-zoomed.html": [
- "fef9b26b2c2611ecd873e2315174791362d1d665",
+ "59170ebf00349710d34c8f5fd2966352b1d23594",
[
null,
[
@@ -277610,7 +277735,7 @@
]
],
"new-content-with-overflow.html": [
- "d2c802dbf53f0769963098f7ae9ddd0c3d971aa9",
+ "e2dc045089b024fce27e8a1ce1facacbab5ef2aa",
[
null,
[
@@ -277623,7 +277748,7 @@
]
],
"new-element-on-start.html": [
- "f0a8c144a98e92071f4da0435bbe61f16f9f5e6f",
+ "e3ec5463bfd3797b18831063253324fdc8fd52c7",
[
null,
[
@@ -277722,7 +277847,7 @@
]
],
"old-content-captures-clip-path.html": [
- "0734edd56fd19f49ac720da21652043174a0cfa5",
+ "a2faa7f1575af4c6ac3f65b3fb303f6dbab875d3",
[
null,
[
@@ -277735,7 +277860,7 @@
]
],
"old-content-captures-different-size.html": [
- "547cc4d7ba2eda41c9a3436206c4dbb580c65a04",
+ "a8d375f06463eef00ea8bf0d509e0137658c2a88",
[
null,
[
@@ -277769,7 +277894,7 @@
]
],
"old-content-captures-opacity.html": [
- "0b727f7972fa813f5e560a7805434e7693db34e9",
+ "ee3e3e4cde132895f9e1b4f2a1ca5dcd02710d3d",
[
null,
[
@@ -277835,7 +277960,7 @@
]
],
"old-content-container-writing-modes.html": [
- "383585335d65bf0312625362c65d8bf41fe6e5e7",
+ "9896c27152746f9598666455d1ffa133026ec1b0",
[
null,
[
@@ -277848,7 +277973,7 @@
]
],
"old-content-element-writing-modes.html": [
- "b6903d10e61c16e981a0bad5e322d182bdc2cdb2",
+ "5029c6aaaa362e47033389005ba050993100cfeb",
[
null,
[
@@ -277895,7 +278020,7 @@
]
],
"old-content-intrinsic-aspect-ratio.html": [
- "d166f438f4dae41757bd3f23e269b9fc3c1b411a",
+ "b46a77821781f857a5fc4742056b296092b1f113",
[
null,
[
@@ -277908,7 +278033,7 @@
]
],
"old-content-is-empty-div.html": [
- "54c56994d8cdafc2d8ee7612af16f1938b3f2ec6",
+ "137060c1ddb7ad88da61593238b1b4178f158966",
[
null,
[
@@ -277921,7 +278046,7 @@
]
],
"old-content-is-inline.html": [
- "9da15266bae3e2a07cd456814024127d7e94053e",
+ "9f350237adcb1ea234c98f9374c8e357a14e6e78",
[
null,
[
@@ -277954,7 +278079,7 @@
]
],
"old-content-object-fit-fill.html": [
- "fb7549cc4088fbc83e79eefbc8d6971f40014512",
+ "9ad8b14843fbb059229234fb8970f87e5a83ee48",
[
null,
[
@@ -277987,7 +278112,7 @@
]
],
"old-content-object-fit-none.html": [
- "06472302b9e6369303d6c742577fd8770dc2520c",
+ "1275aece7cae48d02e6fc403af743337d8d20d94",
[
null,
[
@@ -278000,7 +278125,7 @@
]
],
"old-content-object-view-box-clip-path-reference.html": [
- "ac566029a0feca1b5b5149ec14139a4785d1f09d",
+ "14a1ee83d9271555f3d85b5e4a73feeb2cf532b2",
[
null,
[
@@ -278033,7 +278158,7 @@
]
],
"old-content-object-view-box-clip-path.html": [
- "73100d052814a1f935610cd14952ab27fe527d26",
+ "dff57c68f6b5f5f6cfa807df9d280d499605fc45",
[
null,
[
@@ -278066,7 +278191,7 @@
]
],
"old-content-object-view-box-overflow.html": [
- "7a1ef2d0052192f151aa5163f382d3ae1c6b93ea",
+ "ff9bb4e7d2be4eb7194b3bbe9730210e105fd089",
[
null,
[
@@ -278079,7 +278204,7 @@
]
],
"old-content-with-overflow-zoomed.html": [
- "887bf7c64823d644603f3e319e046259c4b7e21b",
+ "10257b761fa639410849e8982e317b38baa0161c",
[
null,
[
@@ -278092,7 +278217,7 @@
]
],
"old-content-with-overflow.html": [
- "7a40c8e386aea92c3129568c109f23be3c15d007",
+ "6ed31d375c6f83f90253e7d4b324d81cb56f87f2",
[
null,
[
@@ -278164,7 +278289,7 @@
]
],
"root-style-change-during-animation.html": [
- "1453e5019d7de6176a7967056e14703e01f292e3",
+ "d1d291124bd6dfa57b36e24072a1be830940753f",
[
null,
[
@@ -278374,7 +278499,7 @@
]
],
"set-universal-specificity.html": [
- "1e8b7d0eb868b2aa6e9226d4073130a9c565f62c",
+ "ec50b1e4078589752dcc9f887a39f877cd443a40",
[
null,
[
@@ -298266,7 +298391,7 @@
]
],
"nth-child-in-shadow-root.html": [
- "740b68f2003848e9f3447ac48e373091691f29a3",
+ "443a12d229f793c201248583934fa3c05d7f81af",
[
null,
[
@@ -298396,7 +298521,7 @@
]
],
"nth-last-child-in-shadow-root.html": [
- "766bac0fa385ae97d1c57633a7376b2ca5c066b1",
+ "890abfe99720b056f068a52e76e7b1580189ffb2",
[
null,
[
@@ -322102,8 +322227,16 @@
"201dff83ce9cacbd3f61f6a0b16eeb3105fa9ab2",
[]
],
+ "aes_gcm_256_iv_fixtures.js": [
+ "9cdbbbb79075c0a90d4a55caf18157fe485a5609",
+ []
+ ],
+ "aes_gcm_96_iv_fixtures.js": [
+ "bb00e2d7dd92cbd780d48273e065e95d5c38e181",
+ []
+ ],
"aes_gcm_vectors.js": [
- "bc406f8f0ef78e0759f1dd5b4a48892ce43fcde4",
+ "965fe9564d461925df00ffc465f161e03436f817",
[]
],
"rsa.js": [
@@ -322137,7 +322270,7 @@
[]
],
"ecdsa_vectors.js": [
- "2d1fb6d5c9e80bbc1b4ece377a4743f7ed371bb7",
+ "aa9b81ba8a4bd11a5a27adab005aaf5727be18d1",
[]
],
"eddsa.js": [
@@ -325056,7 +325189,7 @@
"critical-ch": {
"resources": {
"echo-critical-hint.py": [
- "e4e77ad2a9a3bc9af2b76b6471f275db936bce4d",
+ "0913dbb19db57c3cacada72547dbe55d2a8e1688",
[]
],
"util.js": [
@@ -325174,6 +325307,22 @@
"83a6a05e547f39947f21da53de7a3bbc137101d1",
[]
],
+ "accept-ch-mixed.html": [
+ "bf604dffeefe14c07ea327ed4887ef9a69d94d9b",
+ []
+ ],
+ "accept-ch-mixed.html.headers": [
+ "39d4e1935da486146c515d132434eff241622c61",
+ []
+ ],
+ "accept-ch-split.html": [
+ "5038b9401398c5f8cd2d0ac247ea447551439c9d",
+ []
+ ],
+ "accept-ch-split.html.headers": [
+ "261e1e8ee6d204afdce3cf5013c51b70a0887163",
+ []
+ ],
"accept-ch.html": [
"1f1da26cebe45d3e55fe4aea8af6cefcae94adb5",
[]
@@ -366475,6 +366624,10 @@
"dc6d9a00d53495e17f21adc8915176dd8c681e1e",
[]
],
+ "background-clip-padding-box-with-border-radius-ref.html": [
+ "545b80d35163b43e136d21f7584082b3b9401b38",
+ []
+ ],
"background-color-clip.html": [
"18e80a92586f241dbbe9d2a73991d78c98141071",
[]
@@ -366874,10 +367027,6 @@
[]
]
},
- "simple-bg-color-ref.html": [
- "d8003b58e3ac1c5e917500a59b60c0d2e56287a3",
- []
- ],
"support": {
"100x100-blue-and-orange.png": [
"70437d7bda2b56a921b523d4a81ca4df7be4321d",
@@ -367506,50 +367655,6 @@
"5c96f31a6ba193f6d86c7a66267581edd65260d2",
[]
],
- "fixedpos-001-print-ref.html": [
- "3d66305db0e7497f76dd6aa5a42217eb0931a87a",
- []
- ],
- "fixedpos-002-print-ref.html": [
- "3d66305db0e7497f76dd6aa5a42217eb0931a87a",
- []
- ],
- "fixedpos-003-print-ref.html": [
- "3d66305db0e7497f76dd6aa5a42217eb0931a87a",
- []
- ],
- "fixedpos-004-print-ref.html": [
- "3e3473bcb8e41ce1c4ac6aaf0006b25622b24bc3",
- []
- ],
- "fixedpos-005-print-ref.html": [
- "e692ff8db3764e05601348acfc2d4ce8314f41b5",
- []
- ],
- "fixedpos-006-print-ref.html": [
- "b03e1d78d003f33d1ad7810bcacf9cf407b95acb",
- []
- ],
- "fixedpos-007-print-ref.html": [
- "f576c9377153c3e48ce58d8fcd5428da0d705b23",
- []
- ],
- "fixedpos-008-print-ref.html": [
- "6ed2528115ae3a5634df6a2968a71fcd81424471",
- []
- ],
- "fixedpos-with-abspos-with-link-print-ref.html": [
- "000c05350b54885c47ea74a7336e02ed857d55ea",
- []
- ],
- "fixedpos-with-iframe-print-ref.html": [
- "5c1714045083dfc22272b0522273e7a7235cde6f",
- []
- ],
- "fixedpos-with-link-with-inline-child-print-ref.html": [
- "f12d31acd9d077a24a4ba47bcdbb5b2a3029faf3",
- []
- ],
"flexbox": {
"flex-fragmented-with-float-descendant-001-ref.html": [
"ead53ad704a08d06a2e88ed5e43b9bcaf55aa584",
@@ -367676,10 +367781,6 @@
"cf345b59638f28ddf423ed343a269178ab47f1b9",
[]
],
- "page-name-001-print-ref.html": [
- "69c5c37b5a3cc4ed47fab1f8105e5f2351e2d07b",
- []
- ],
"reference": {
"widows-001-ref.html": [
"4f822f8fd67aed18355177a5e9de18d8a63f895e",
@@ -387154,6 +387255,14 @@
"99e9c334bf2c856535c7643911a3050390658a6f",
[]
],
+ "first-line-inherited-no-transition-ref.html": [
+ "1955beef3006e11c442f8e23f2e6f8b94976c874",
+ []
+ ],
+ "first-line-inherited-with-transition-ref.html": [
+ "b28c17436a67030b1e7edf9fce17475e7c88d8f2",
+ []
+ ],
"first-line-line-height-001-ref.html": [
"13e9b20f34d44cbe436b6bbcbdd6e85884ee71ca",
[]
@@ -393012,6 +393121,10 @@
"43202e4d97f03c1694176f5c6a95b4a48e938a96",
[]
],
+ "text-wrap-balance-line-clamp-001-ref.html": [
+ "4e465be7ccf97dfe4e8523f92aa6aec4470acbe2",
+ []
+ ],
"textarea-pre-wrap-001-ref.html": [
"31070ea92815e4d3a3ece48ed69da03de02f671e",
[]
@@ -398117,7 +398230,7 @@
[]
],
"new-and-old-sizes-match-ref.html": [
- "ca597dfbb84be1a473c3d31747a97c7273d5d5b1",
+ "b8c3b34c03a693c9f1e71a040a2176dd8dc5413d",
[]
],
"new-content-captures-clip-path-ref.html": [
@@ -402292,6 +402405,50 @@
"305aa2fce2f490ef161c803558cc7a17bf7aa117",
[]
],
+ "fixedpos-001-print-ref.html": [
+ "3d66305db0e7497f76dd6aa5a42217eb0931a87a",
+ []
+ ],
+ "fixedpos-002-print-ref.html": [
+ "3d66305db0e7497f76dd6aa5a42217eb0931a87a",
+ []
+ ],
+ "fixedpos-003-print-ref.html": [
+ "3d66305db0e7497f76dd6aa5a42217eb0931a87a",
+ []
+ ],
+ "fixedpos-004-print-ref.html": [
+ "3e3473bcb8e41ce1c4ac6aaf0006b25622b24bc3",
+ []
+ ],
+ "fixedpos-005-print-ref.html": [
+ "e692ff8db3764e05601348acfc2d4ce8314f41b5",
+ []
+ ],
+ "fixedpos-006-print-ref.html": [
+ "b03e1d78d003f33d1ad7810bcacf9cf407b95acb",
+ []
+ ],
+ "fixedpos-007-print-ref.html": [
+ "f576c9377153c3e48ce58d8fcd5428da0d705b23",
+ []
+ ],
+ "fixedpos-008-print-ref.html": [
+ "6ed2528115ae3a5634df6a2968a71fcd81424471",
+ []
+ ],
+ "fixedpos-with-abspos-with-link-print-ref.html": [
+ "000c05350b54885c47ea74a7336e02ed857d55ea",
+ []
+ ],
+ "fixedpos-with-iframe-print-ref.html": [
+ "5c1714045083dfc22272b0522273e7a7235cde6f",
+ []
+ ],
+ "fixedpos-with-link-with-inline-child-print-ref.html": [
+ "f12d31acd9d077a24a4ba47bcdbb5b2a3029faf3",
+ []
+ ],
"fragmented-inline-block-002-print-ref.html": [
"dcfa3a1385628a90cb2d1be17e8bf6da09cde20e",
[]
@@ -402300,6 +402457,10 @@
"fb5255eddb1cdbdc1b9b610a7813b977d822b7b9",
[]
],
+ "page-name-001-print-ref.html": [
+ "69c5c37b5a3cc4ed47fab1f8105e5f2351e2d07b",
+ []
+ ],
"paused-animations-print-ref.html": [
"c22ecd174585100fd5faae8402f5a6e141b8264e",
[]
@@ -403761,7 +403922,7 @@
[]
],
"making-a-testing-plan.md": [
- "eb96f31202e21fa2509781fead227931075c5e97",
+ "a4007039ae4aa47ee2f06df784b34b48e8678214",
[]
],
"manual.md": [
@@ -407417,6 +407578,86 @@
]
}
},
+ "local-network-access": {
+ "META.yml": [
+ "944ce6f14a1204f048e00db3b7ea21da93037709",
+ []
+ ],
+ "README.md": [
+ "8995e3d7ef6ba5b7286c334842bd0b77426882a1",
+ []
+ ],
+ "resources": {
+ "executor.html": [
+ "d71212951cb63ebd310820d1df7c8789b5fbd316",
+ []
+ ],
+ "fetcher.html": [
+ "000a5cc25bb72b334d41ff05e7b8f22691f48f30",
+ []
+ ],
+ "fetcher.js": [
+ "3a1859876d406cebe9a2bbc63952d019ddc5ed06",
+ []
+ ],
+ "iframed.html": [
+ "c889c2882a45030fb1257db6be812a722475c9f3",
+ []
+ ],
+ "iframer.html": [
+ "304cc54ae4448b84bf43aad3279b2dd198add165",
+ []
+ ],
+ "preflight.py": [
+ "4b0bfefd4d6356fad7bf0460a67da4b13fb4930e",
+ []
+ ],
+ "service-worker-bridge.html": [
+ "816de535feaa83c224e76159d3defa571b1199fe",
+ []
+ ],
+ "service-worker.js": [
+ "bca71ad910cb189c2de6298b4ea59b5594aba637",
+ []
+ ],
+ "shared-fetcher.js": [
+ "30bde1e0542d144f9b5b0e47824802df13556ee2",
+ []
+ ],
+ "shared-worker-blob-fetcher.html": [
+ "a79869b2f96249969d44e5f18341fa1cbd094f4d",
+ []
+ ],
+ "shared-worker-fetcher.html": [
+ "4af4b1f23959e00c50d48a926f24d97edb8edb90",
+ []
+ ],
+ "socket-opener.html": [
+ "48d27216bedf9aa1daf4d2a4e96f860e9315a0c3",
+ []
+ ],
+ "support.sub.js": [
+ "c07fd2c2acee68967c57826fd093abb013b05761",
+ []
+ ],
+ "worker-blob-fetcher.html": [
+ "5a50271e11b57d808b01a5849b1bee7d3dbeba28",
+ []
+ ],
+ "worker-fetcher.html": [
+ "bd155a532bd2d9dd2b5f96383cb8bde27a289856",
+ []
+ ],
+ "worker-fetcher.js": [
+ "aab49afe6f47c752884d407cfa48ef38e3b4a847",
+ []
+ ],
+ "xhr-sender.html": [
+ "b131fa41f9a8bf14c5c0a1aac8fcc2593bec6c42",
+ []
+ ]
+ }
+ },
"metadata": {
"META.yml": [
"85f0a7d2ee12616aa7a5698b346954829d8a8bb0",
@@ -407775,86 +408016,6 @@
]
}
},
- "private-network-access": {
- "META.yml": [
- "944ce6f14a1204f048e00db3b7ea21da93037709",
- []
- ],
- "README.md": [
- "a69aab487239021088f944b0a8cee2dad4b3d111",
- []
- ],
- "resources": {
- "executor.html": [
- "d71212951cb63ebd310820d1df7c8789b5fbd316",
- []
- ],
- "fetcher.html": [
- "000a5cc25bb72b334d41ff05e7b8f22691f48f30",
- []
- ],
- "fetcher.js": [
- "3a1859876d406cebe9a2bbc63952d019ddc5ed06",
- []
- ],
- "iframed.html": [
- "c889c2882a45030fb1257db6be812a722475c9f3",
- []
- ],
- "iframer.html": [
- "304cc54ae4448b84bf43aad3279b2dd198add165",
- []
- ],
- "preflight.py": [
- "4b0bfefd4d6356fad7bf0460a67da4b13fb4930e",
- []
- ],
- "service-worker-bridge.html": [
- "816de535feaa83c224e76159d3defa571b1199fe",
- []
- ],
- "service-worker.js": [
- "bca71ad910cb189c2de6298b4ea59b5594aba637",
- []
- ],
- "shared-fetcher.js": [
- "30bde1e0542d144f9b5b0e47824802df13556ee2",
- []
- ],
- "shared-worker-blob-fetcher.html": [
- "a79869b2f96249969d44e5f18341fa1cbd094f4d",
- []
- ],
- "shared-worker-fetcher.html": [
- "4af4b1f23959e00c50d48a926f24d97edb8edb90",
- []
- ],
- "socket-opener.html": [
- "48d27216bedf9aa1daf4d2a4e96f860e9315a0c3",
- []
- ],
- "support.sub.js": [
- "210184ec4b654e6529adb70d47d058945e5bc298",
- []
- ],
- "worker-blob-fetcher.html": [
- "5a50271e11b57d808b01a5849b1bee7d3dbeba28",
- []
- ],
- "worker-fetcher.html": [
- "bd155a532bd2d9dd2b5f96383cb8bde27a289856",
- []
- ],
- "worker-fetcher.js": [
- "aab49afe6f47c752884d407cfa48ef38e3b4a847",
- []
- ],
- "xhr-sender.html": [
- "b131fa41f9a8bf14c5c0a1aac8fcc2593bec6c42",
- []
- ]
- }
- },
"range": {
"resources": {
"basic.html": [
@@ -413182,10 +413343,6 @@
"the-canvas-state.yaml": [
"045208615436efec1596a2f14cb62f02fa8e470a",
[]
- ],
- "transformations.yaml": [
- "876c48f849cb1e111a0a1ead7a17945f443723eb",
- []
]
},
"offscreen": {
@@ -413216,10 +413373,6 @@
"the-offscreen-canvas.yaml": [
"0bef18bf9d56acccb5a747a791bc038c61857f48",
[]
- ],
- "transformations.yaml": [
- "efc00222bfc70ae08b1d03e2628ea87c76f15f48",
- []
]
}
},
@@ -413268,6 +413421,10 @@
"dd088aa396f47e70a6e66b0b9c7d8ffca0fa0e1e",
[]
],
+ "transformations.yaml": [
+ "0d2265be7aa0c94ccbddc41f4051dbf082bfc186",
+ []
+ ],
"video.yaml": [
"f9b48fb8daa2a247e9e22a18b5e891be3351bda9",
[]
@@ -421183,7 +421340,7 @@
[]
],
"popover-utils.js": [
- "9c6ba77549bd76f6bc4f05794547574d95d36224",
+ "7eb9e6327a285bbb880ae53c5e92c60b746cc7c0",
[]
]
}
@@ -424651,6 +424808,10 @@
"2ff648a04905f9090df637f2140c1c092cc3a247",
[]
],
+ "cicp.png": [
+ "8fa0ce2123c4f876a71b1ca80e04931614f3b87f",
+ []
+ ],
"clear-100x50.png": [
"eeedd0ff05889ffd4468bf19a2e8e9e0a094201c",
[]
@@ -424801,6 +424962,10 @@
"55f8e69325bc61ff83f769a6524f7f9c3310be1f",
[]
],
+ "trns.png": [
+ "4e309a89a8a27a9f7afb6eee6a4a604a3ef7c249",
+ []
+ ],
"undecodable.png": [
"f2581017b43d44664e7137a78c0803554b50f3b1",
[]
@@ -427025,7 +427190,7 @@
]
},
"lint.ignore": [
- "3b6106fbfc3f8dff9e2f6fb2d6caf05753bdc8bb",
+ "743986b66eed4d84d10a52b2c47c43ffbf95e53f",
[]
],
"loading": {
@@ -427275,8 +427440,12 @@
],
"tentative": {
"resources": {
+ "busy.js": [
+ "9d761b6de5ee65c9067a4c576c90eb9e7dd6ef05",
+ []
+ ],
"utils.js": [
- "47c138b1e62ebfbe9287e903e4e7be438674dc34",
+ "3a121a5a9b571238a548b2f246e3ae1327c4d5a5",
[]
]
}
@@ -427305,7 +427474,7 @@
[]
],
"utils.js": [
- "36bd6c7bc28a762343202d1fc44ace6ddbf03467",
+ "7bb37bab32c181f3138b2ea9ea7ff84f306be3d4",
[]
]
},
@@ -430566,6 +430735,12 @@
]
}
},
+ "png": {
+ "META.yml": [
+ "da174ac614d820479e25a9ae86217b128f2c63fa",
+ []
+ ]
+ },
"pointerevents": {
"META.yml": [
"1962feaf8af08b003e519fa525271e70451984d5",
@@ -436037,6 +436212,10 @@
"b432854db8bc7f8292c43434d8c24a3ffe97dec0",
[]
],
+ "import-scripts-data-url-worker.js": [
+ "fdabdafc63041ea816760afb6e04ee4f6b78c54d",
+ []
+ ],
"import-scripts-diff-resource-map-worker.js": [
"0fdcb0fcf80ad7f0dffa284c5b77178bdad95ef6",
[]
@@ -437936,7 +438115,7 @@
[]
],
"helpers.js": [
- "ddc638434aefb0217a4b4c2149d29d91d194a634",
+ "f718f637cd964b4b2d3fc68879fa9d4a2035480d",
[]
],
"resources": {
@@ -446294,7 +446473,7 @@
},
"tooltool": {
"tooltool.py": [
- "53929fce880285629ebf6f243d7bea86036b16d0",
+ "5abc98a09d8081f025d7269c1e7a1f338eb70d16",
[]
]
},
@@ -447657,7 +447836,7 @@
[]
],
"error.py": [
- "1b65d225fae303108d3a1f0462775563172cf04e",
+ "81910a63eb2bf3d062cc8a6985002826bb25fa59",
[]
],
"modules": {
@@ -447670,7 +447849,7 @@
[]
],
"browsing_context.py": [
- "033929d5ff5f0cfcce215c60cb680ca7713e603d",
+ "abaf569f92891bb49c3bda0aee53e892d8c6ce2e",
[]
],
"script.py": [
@@ -447688,7 +447867,7 @@
]
},
"client.py": [
- "ba01e1fe8668de8e889cb237e1c6615c5fdffdb9",
+ "851c6722fc27c199956e90f4d08a4d2b10ed7976",
[]
],
"error.py": [
@@ -448308,7 +448487,7 @@
[]
],
"testloader.py": [
- "93e2a87826c59926a649bcfb16949aa5c6c93342",
+ "78e05264d4d40c04c558ab8a0f5031f52ff0bd38",
[]
],
"testrunner.py": [
@@ -448367,7 +448546,7 @@
[]
],
"test_testloader.py": [
- "0936c54ea975335a60176e168f9d98c8d588e337",
+ "8c8d02a22b90f1acddb9e12859aa33d52eefdb43",
[]
],
"test_update.py": [
@@ -448484,7 +448663,7 @@
}
},
"wptrunner.py": [
- "224a4fde4df64c480232f6d3af0a651da5d0375c",
+ "740bb7e9f425024d8e930c5581e88940de3a99b0",
[]
],
"wpttest.py": [
@@ -448885,6 +449064,10 @@
"c9907203322112ffb01a50b09541e891250c4f5e",
[]
],
+ "requestStorageAccess-integration-iframe.https.html": [
+ "f4db5cf65ec6814036d40ab165b9705725df39fa",
+ []
+ ],
"requestStorageAccessForOrigin-iframe.html": [
"43d16705c8515b48685420c8d14925af90afb62a",
[]
@@ -449763,10 +449946,12 @@
"864132a5a36c6dde2cf9ff9e8675ac9ed765e8fa",
[]
],
- "README.md": [
- "4e1a7706e33337e798f98d983a89eb44b77a21d5",
- []
- ],
+ "manual": {
+ "README.md": [
+ "4e1a7706e33337e798f98d983a89eb44b77a21d5",
+ []
+ ]
+ },
"scripts": {
"ATTAcomm.js": [
"b748233fc22c43153212e8a495cdce3b48425fd9",
@@ -451537,6 +451722,12 @@
[]
]
}
+ },
+ "print": {
+ "__init__.py": [
+ "d34fef9869a859b43646bd0b7a63519cff121fba",
+ []
+ ]
}
},
"conftest.py": [
@@ -451642,6 +451833,12 @@
[]
]
},
+ "classic_interop": {
+ "__init__.py": [
+ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
+ []
+ ]
+ },
"conftest.py": [
"09eea7b7d59c45200f95e979e917599e992aa10d",
[]
@@ -451654,7 +451851,7 @@
},
"evaluate": {
"__init__.py": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
+ "8b137891791fe96927ad78e64b0aad7bded08bdc",
[]
]
},
@@ -452050,7 +452247,7 @@
},
"print": {
"__init__.py": [
- "788c0e1a3179280604a8634d4db43b4a8db6880a",
+ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
[]
]
},
@@ -452126,15 +452323,15 @@
[]
],
"fixtures.py": [
- "e63c0d01d269d277fb299d6bf1f6cb41bdd5a091",
+ "7fff07bb407f7f29dabcf805d12936741cbabf6b",
[]
],
"fixtures_bidi.py": [
- "6273b8f1575819d6beaef35033a2f326b55b2903",
+ "6f1106373d955d3fa3558f7bbb65f6af3811645f",
[]
],
"fixtures_http.py": [
- "748fe214a2b39d57d3581eee6a196cc5ad85ac08",
+ "65ea064c51977c6f4d96f8e2836be86aab00969f",
[]
],
"helpers.py": [
@@ -464810,14 +465007,18 @@
]
],
"aes_gcm.https.any.js": [
- "8f1103d8f4a483a93259e1f91541ec4bba1647c7",
+ "6e3a6efb12d7b8170c204d91dc5812846b44f574",
[
"WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.html",
{
"script_metadata": [
[
"title",
- "WebCryptoAPI: encrypt() Using AES-GCM"
+ "WebCryptoAPI: encrypt() Using AES-GCM w/ 96-bit iv"
+ ],
+ [
+ "script",
+ "aes_gcm_96_iv_fixtures.js"
],
[
"script",
@@ -464841,7 +465042,70 @@
"script_metadata": [
[
"title",
- "WebCryptoAPI: encrypt() Using AES-GCM"
+ "WebCryptoAPI: encrypt() Using AES-GCM w/ 96-bit iv"
+ ],
+ [
+ "script",
+ "aes_gcm_96_iv_fixtures.js"
+ ],
+ [
+ "script",
+ "aes_gcm_vectors.js"
+ ],
+ [
+ "script",
+ "aes.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "aes_gcm_256_iv.https.any.js": [
+ "92900fb13ae2ecb928652d37b6d67e6b1a74d708",
+ [
+ "WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "WebCryptoAPI: encrypt() Using AES-GCM w/ 256-bit iv"
+ ],
+ [
+ "script",
+ "aes_gcm_256_iv_fixtures.js"
+ ],
+ [
+ "script",
+ "aes_gcm_vectors.js"
+ ],
+ [
+ "script",
+ "aes.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "WebCryptoAPI: encrypt() Using AES-GCM w/ 256-bit iv"
+ ],
+ [
+ "script",
+ "aes_gcm_256_iv_fixtures.js"
],
[
"script",
@@ -470681,7 +470945,7 @@
},
"wrapKey_unwrapKey": {
"wrapKey_unwrapKey.https.any.js": [
- "95102495fe3a5be8cd8f8196328867b0d4ba5c1e",
+ "edb67d9e30fdba41b759992bddc8ddf755466638",
[
"WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.html",
{
@@ -470693,6 +470957,10 @@
[
"timeout",
"long"
+ ],
+ [
+ "script",
+ "../util/helpers.js"
]
],
"timeout": "long"
@@ -470709,6 +470977,10 @@
[
"timeout",
"long"
+ ],
+ [
+ "script",
+ "../util/helpers.js"
]
],
"timeout": "long"
@@ -478446,7 +478718,7 @@
]
},
"accept-ch-change.https.html": [
- "b0a4da61ddd464c418257a3bf4264b429ec1dca6",
+ "826aca85a4e677730ba21f3f4b10bbe979302633",
[
null,
{}
@@ -478783,7 +479055,7 @@
},
"critical-ch": {
"iframe.https.window.js": [
- "f4dd295208fd4acddb084530cae772077004cab4",
+ "bbb9623752ea593a15e306152b49342c305a3420",
[
"client-hints/critical-ch/iframe.https.window.html",
{
@@ -478797,7 +479069,7 @@
]
],
"mis-matched-count.https.window.js": [
- "54bd66789793babdc8aab812059d30aeaa21ba11",
+ "23d297837e6ce6cf6a12c5ef9909bb0441501c1b",
[
"client-hints/critical-ch/mis-matched-count.https.window.html",
{
@@ -478815,7 +479087,7 @@
]
],
"mis-matched.https.window.js": [
- "9476640b3513d36850d26ab2154e0bd07db5d77d",
+ "10f9a30b6d257155f0d775f3baed4b0217294752",
[
"client-hints/critical-ch/mis-matched.https.window.html",
{
@@ -478842,8 +479114,22 @@
}
]
],
+ "navigation.multiple.https.window.js": [
+ "ff9cc210feb96f711c1e49f2ef64269bffacf12b",
+ [
+ "client-hints/critical-ch/navigation.multiple.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/util.js"
+ ]
+ ]
+ }
+ ]
+ ],
"non-secure.http.window.js": [
- "cdd79243982a46d60177e8721479e9eab111e88c",
+ "b634f98e55c94132f8c96295b0b9199e00cd9b94",
[
"client-hints/critical-ch/non-secure.http.window.html",
{
@@ -478874,8 +479160,26 @@
}
]
],
+ "request-count.multiple.https.window.js": [
+ "602803b5d687435273d6e4a5e8a2cc419a028726",
+ [
+ "client-hints/critical-ch/request-count.multiple.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/util.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ]
+ ]
+ }
+ ]
+ ],
"subresource.https.window.js": [
- "f8112b628d0f263959fd2a7dd8dfa066920f3514",
+ "81dfc303c62e03498314abbf9b80a2abc88d2a36",
[
"client-hints/critical-ch/subresource.https.window.html",
{
@@ -478893,7 +479197,7 @@
]
],
"unsafe-method.https.window.js": [
- "0eca0eb8e9aea1c066d56b685f23ffadf3a6754f",
+ "37bbcb3315e1b14f8d45b35f3b9cfb2b2be602dc",
[
"client-hints/critical-ch/unsafe-method.https.window.html",
{}
@@ -489409,50 +489713,6 @@
]
}
},
- "core-aam": {
- "aria-expanded_not_supported_on_alert.html": [
- "1317cc658f76a8e19a4dc862cc638e17a859d0fe",
- [
- null,
- {}
- ]
- ],
- "aria-expanded_not_supported_on_banner.html": [
- "e1bf9cc7f45a9342d244c262186bbb1636cb2b1b",
- [
- null,
- {}
- ]
- ],
- "aria-expanded_not_supported_on_dialog.html": [
- "c7feeddf2bbb35e82211055c8dcc5c8e689b815f",
- [
- null,
- {}
- ]
- ],
- "aria-expanded_not_supported_on_feed.html": [
- "e81f3e49494c499ab2411cbcc7c82d41e5b3d816",
- [
- null,
- {}
- ]
- ],
- "aria-expanded_not_supported_on_form.html": [
- "6b533da6f7205bad6e14e8cddf525e7adb1e521b",
- [
- null,
- {}
- ]
- ],
- "aria-expanded_not_supported_on_group.html": [
- "8deb17c2b24a07c1801d214db6990e30cd883d54",
- [
- null,
- {}
- ]
- ]
- },
"cors": {
"304.htm": [
"2aee01417a7cdfb5cb9a69cce2bcc59d7b8eded2",
@@ -514913,6 +515173,13 @@
{}
]
],
+ "dynamic-root-element.html": [
+ "befc20d1d084d94390bb9fd2c00979a6f1ec7073",
+ [
+ null,
+ {}
+ ]
+ ],
"event-dispatch.tentative.html": [
"5ed01cdd2588d1a5a5226a9abb46f60dd441ed13",
[
@@ -515334,7 +515601,7 @@
]
],
"zero-duration-multiple-transition.html": [
- "4268ce766d76f14af0a211e829f50434f131bd20",
+ "7b85702092a988aaced7070198252dda1891e40d",
[
null,
{}
@@ -518524,7 +518791,7 @@
]
],
"calc-infinity-nan-serialize-time.html": [
- "fd3f02524ba1a9980fe98da21fca166d74b1931a",
+ "2baa890259cb8a4c6c9ef128c611083b4395fd56",
[
null,
{}
@@ -519475,7 +519742,7 @@
]
],
"hit-test-unpainted-element-from-point.html": [
- "47a8e5fb994d60f02cccf5c786d7a9e3a4ad0d43",
+ "7c9ed911cb7776fd553265146816dfbbf5f18952",
[
null,
{}
@@ -525245,7 +525512,7 @@
]
],
"HTMLElement.html": [
- "bd252282161b59a50b0ee991e7b2d28e94ddd74f",
+ "0a1d40199e633e9677da09f34e42200965b5241c",
[
null,
{}
@@ -558074,6 +558341,751 @@
]
]
},
+ "local-network-access": {
+ "fetch-from-treat-as-public.https.window.js": [
+ "90f7feb63419d7e3c03811679644f6ccc4abd2a7",
+ [
+ "fetch/local-network-access/fetch-from-treat-as-public.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "fetch.https.window.js": [
+ "dbc4f23f677c716ba439c508c42ee33f4b1b3233",
+ [
+ "fetch/local-network-access/fetch.https.window.html?include=baseline",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "variant",
+ "?include=baseline"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ]
+ ]
+ }
+ ],
+ [
+ "fetch/local-network-access/fetch.https.window.html?include=from-local",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "variant",
+ "?include=baseline"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ]
+ ]
+ }
+ ],
+ [
+ "fetch/local-network-access/fetch.https.window.html?include=from-private",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "variant",
+ "?include=baseline"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ]
+ ]
+ }
+ ],
+ [
+ "fetch/local-network-access/fetch.https.window.html?include=from-public",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "variant",
+ "?include=baseline"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ]
+ ]
+ }
+ ]
+ ],
+ "fetch.window.js": [
+ "8ee54c905629293255551d560b240c5ac7086707",
+ [
+ "fetch/local-network-access/fetch.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "iframe.tentative.https.window.js": [
+ "48bd6420fd9c46a758f8f1f01bf9e2263c8760e1",
+ [
+ "fetch/local-network-access/iframe.tentative.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "iframe.tentative.window.js": [
+ "e00cb202bec61b69d5dcd8e6c1f1b519266f9122",
+ [
+ "fetch/local-network-access/iframe.tentative.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "mixed-content-fetch.tentative.https.window.js": [
+ "6f7d765617c9c1f8e2aec16422ad3c561c51a641",
+ [
+ "fetch/local-network-access/mixed-content-fetch.tentative.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "nested-worker.https.window.js": [
+ "3eeb435badb2d00404e0e214e1d42c4be2817f8a",
+ [
+ "fetch/local-network-access/nested-worker.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "nested-worker.window.js": [
+ "6d246e1c76d6c5f603c3e29430ae0586fdb9f5ad",
+ [
+ "fetch/local-network-access/nested-worker.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "preflight-cache.https.window.js": [
+ "87dbf501f628a25fa299240da5d5856f4366d8cc",
+ [
+ "fetch/local-network-access/preflight-cache.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "redirect.https.window.js": [
+ "f8a53ad1889e61712b98e0794de398307385b299",
+ [
+ "fetch/local-network-access/redirect.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "service-worker-background-fetch.https.window.js": [
+ "6369b166e21ef023c17ec5140282990092621990",
+ [
+ "fetch/local-network-access/service-worker-background-fetch.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "service-worker-fetch.https.window.js": [
+ "5645d78456156d09afd5b074c24215de83b19c4a",
+ [
+ "fetch/local-network-access/service-worker-fetch.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "service-worker-update.https.window.js": [
+ "fe2bf58f6600470650b9a19707a98ca895b2d86c",
+ [
+ "fetch/local-network-access/service-worker-update.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "service-worker.https.window.js": [
+ "8dc631f65a85d65a29e891482310f74c942da6b1",
+ [
+ "fetch/local-network-access/service-worker.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "shared-worker-blob-fetch.https.window.js": [
+ "ad9cd09c31b0a7aa83501f44a9e63455696ab9c2",
+ [
+ "fetch/local-network-access/shared-worker-blob-fetch.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "shared-worker-blob-fetch.window.js": [
+ "d430ea7383771844bb8955e4c6be23c63e6adc59",
+ [
+ "fetch/local-network-access/shared-worker-blob-fetch.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "shared-worker-fetch.https.window.js": [
+ "7066b359caa2ddb173a02a359d012456dd7a43a2",
+ [
+ "fetch/local-network-access/shared-worker-fetch.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "shared-worker-fetch.window.js": [
+ "9bc1a89beadc673afe783eb56b5e0b2560dbf408",
+ [
+ "fetch/local-network-access/shared-worker-fetch.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "shared-worker.https.window.js": [
+ "ecb70c41245e82ab89f652d0de01c1d3b1f80890",
+ [
+ "fetch/local-network-access/shared-worker.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "shared-worker.window.js": [
+ "ffa8a360c7032138b89d48507b0d1dcb9a23d5a2",
+ [
+ "fetch/local-network-access/shared-worker.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "websocket.https.window.js": [
+ "0731896098bcefa614ebdf28765a04766b5e6cda",
+ [
+ "fetch/local-network-access/websocket.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "websocket.window.js": [
+ "a44cfaedec78b2570e868f3b81ac59575c76bc54",
+ [
+ "fetch/local-network-access/websocket.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "worker-blob-fetch.window.js": [
+ "e119746b8a6b298a2c57bde63f03a59d8e72d477",
+ [
+ "fetch/local-network-access/worker-blob-fetch.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "worker-fetch.https.window.js": [
+ "89e0c3cf1f35f0cf741957c3eb0bff38a4705d93",
+ [
+ "fetch/local-network-access/worker-fetch.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "worker-fetch.window.js": [
+ "4d6b12f06715a8aaa88e2a290531713c036df3c1",
+ [
+ "fetch/local-network-access/worker-fetch.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "worker.https.window.js": [
+ "2d0dddd685cccf4d1ed4064db61ffcc1a3514f09",
+ [
+ "fetch/local-network-access/worker.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "worker.window.js": [
+ "118c0992544265603671862af5511f6e7220af28",
+ [
+ "fetch/local-network-access/worker.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "xhr-from-treat-as-public.https.window.js": [
+ "04fe5449d19e5baecbb1904140b315dc18206070",
+ [
+ "fetch/local-network-access/xhr-from-treat-as-public.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "xhr.https.window.js": [
+ "4dc5da9912f1012bf72a9e689acfbc125d7c2923",
+ [
+ "fetch/local-network-access/xhr.https.window.html?include=from-local",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ]
+ ]
+ }
+ ],
+ [
+ "fetch/local-network-access/xhr.https.window.html?include=from-private",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ]
+ ]
+ }
+ ],
+ [
+ "fetch/local-network-access/xhr.https.window.html?include=from-public",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ]
+ ]
+ }
+ ]
+ ],
+ "xhr.window.js": [
+ "fa307dc559a76cb3cd3f70f76a3c904f4602a442",
+ [
+ "fetch/local-network-access/xhr.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ]
+ ]
+ }
+ ]
+ ]
+ },
"metadata": {
"audio-worklet.https.html": [
"3b768ef0b5ddd2d13361629afd011e6987cb38d0",
@@ -559129,751 +560141,6 @@
]
]
},
- "private-network-access": {
- "fetch-from-treat-as-public.https.window.js": [
- "90f7feb63419d7e3c03811679644f6ccc4abd2a7",
- [
- "fetch/private-network-access/fetch-from-treat-as-public.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "fetch.https.window.js": [
- "dbc4f23f677c716ba439c508c42ee33f4b1b3233",
- [
- "fetch/private-network-access/fetch.https.window.html?include=baseline",
- {
- "script_metadata": [
- [
- "script",
- "/common/subset-tests-by-key.js"
- ],
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ],
- [
- "variant",
- "?include=baseline"
- ],
- [
- "variant",
- "?include=from-local"
- ],
- [
- "variant",
- "?include=from-private"
- ],
- [
- "variant",
- "?include=from-public"
- ]
- ]
- }
- ],
- [
- "fetch/private-network-access/fetch.https.window.html?include=from-local",
- {
- "script_metadata": [
- [
- "script",
- "/common/subset-tests-by-key.js"
- ],
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ],
- [
- "variant",
- "?include=baseline"
- ],
- [
- "variant",
- "?include=from-local"
- ],
- [
- "variant",
- "?include=from-private"
- ],
- [
- "variant",
- "?include=from-public"
- ]
- ]
- }
- ],
- [
- "fetch/private-network-access/fetch.https.window.html?include=from-private",
- {
- "script_metadata": [
- [
- "script",
- "/common/subset-tests-by-key.js"
- ],
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ],
- [
- "variant",
- "?include=baseline"
- ],
- [
- "variant",
- "?include=from-local"
- ],
- [
- "variant",
- "?include=from-private"
- ],
- [
- "variant",
- "?include=from-public"
- ]
- ]
- }
- ],
- [
- "fetch/private-network-access/fetch.https.window.html?include=from-public",
- {
- "script_metadata": [
- [
- "script",
- "/common/subset-tests-by-key.js"
- ],
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ],
- [
- "variant",
- "?include=baseline"
- ],
- [
- "variant",
- "?include=from-local"
- ],
- [
- "variant",
- "?include=from-private"
- ],
- [
- "variant",
- "?include=from-public"
- ]
- ]
- }
- ]
- ],
- "fetch.window.js": [
- "8ee54c905629293255551d560b240c5ac7086707",
- [
- "fetch/private-network-access/fetch.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "iframe.tentative.https.window.js": [
- "48bd6420fd9c46a758f8f1f01bf9e2263c8760e1",
- [
- "fetch/private-network-access/iframe.tentative.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/dispatcher/dispatcher.js"
- ],
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "iframe.tentative.window.js": [
- "e00cb202bec61b69d5dcd8e6c1f1b519266f9122",
- [
- "fetch/private-network-access/iframe.tentative.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/dispatcher/dispatcher.js"
- ],
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "mixed-content-fetch.tentative.https.window.js": [
- "54485dc70474023683f2a9f4f4fba1f0df0032af",
- [
- "fetch/private-network-access/mixed-content-fetch.tentative.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "nested-worker.https.window.js": [
- "3eeb435badb2d00404e0e214e1d42c4be2817f8a",
- [
- "fetch/private-network-access/nested-worker.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "nested-worker.window.js": [
- "6d246e1c76d6c5f603c3e29430ae0586fdb9f5ad",
- [
- "fetch/private-network-access/nested-worker.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "preflight-cache.https.window.js": [
- "87dbf501f628a25fa299240da5d5856f4366d8cc",
- [
- "fetch/private-network-access/preflight-cache.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "redirect.https.window.js": [
- "f8a53ad1889e61712b98e0794de398307385b299",
- [
- "fetch/private-network-access/redirect.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "service-worker-background-fetch.https.window.js": [
- "6369b166e21ef023c17ec5140282990092621990",
- [
- "fetch/private-network-access/service-worker-background-fetch.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "service-worker-fetch.https.window.js": [
- "5645d78456156d09afd5b074c24215de83b19c4a",
- [
- "fetch/private-network-access/service-worker-fetch.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "service-worker-update.https.window.js": [
- "fe2bf58f6600470650b9a19707a98ca895b2d86c",
- [
- "fetch/private-network-access/service-worker-update.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "service-worker.https.window.js": [
- "8dc631f65a85d65a29e891482310f74c942da6b1",
- [
- "fetch/private-network-access/service-worker.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "shared-worker-blob-fetch.https.window.js": [
- "ad9cd09c31b0a7aa83501f44a9e63455696ab9c2",
- [
- "fetch/private-network-access/shared-worker-blob-fetch.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "shared-worker-blob-fetch.window.js": [
- "d430ea7383771844bb8955e4c6be23c63e6adc59",
- [
- "fetch/private-network-access/shared-worker-blob-fetch.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "shared-worker-fetch.https.window.js": [
- "7066b359caa2ddb173a02a359d012456dd7a43a2",
- [
- "fetch/private-network-access/shared-worker-fetch.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "shared-worker-fetch.window.js": [
- "9bc1a89beadc673afe783eb56b5e0b2560dbf408",
- [
- "fetch/private-network-access/shared-worker-fetch.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "shared-worker.https.window.js": [
- "ecb70c41245e82ab89f652d0de01c1d3b1f80890",
- [
- "fetch/private-network-access/shared-worker.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "shared-worker.window.js": [
- "ffa8a360c7032138b89d48507b0d1dcb9a23d5a2",
- [
- "fetch/private-network-access/shared-worker.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "websocket.https.window.js": [
- "0731896098bcefa614ebdf28765a04766b5e6cda",
- [
- "fetch/private-network-access/websocket.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "websocket.window.js": [
- "a44cfaedec78b2570e868f3b81ac59575c76bc54",
- [
- "fetch/private-network-access/websocket.window.html",
- {
- "script_metadata": [
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "worker-blob-fetch.window.js": [
- "e119746b8a6b298a2c57bde63f03a59d8e72d477",
- [
- "fetch/private-network-access/worker-blob-fetch.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "worker-fetch.https.window.js": [
- "89e0c3cf1f35f0cf741957c3eb0bff38a4705d93",
- [
- "fetch/private-network-access/worker-fetch.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "worker-fetch.window.js": [
- "4d6b12f06715a8aaa88e2a290531713c036df3c1",
- [
- "fetch/private-network-access/worker-fetch.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "worker.https.window.js": [
- "2d0dddd685cccf4d1ed4064db61ffcc1a3514f09",
- [
- "fetch/private-network-access/worker.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "worker.window.js": [
- "118c0992544265603671862af5511f6e7220af28",
- [
- "fetch/private-network-access/worker.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "xhr-from-treat-as-public.https.window.js": [
- "04fe5449d19e5baecbb1904140b315dc18206070",
- [
- "fetch/private-network-access/xhr-from-treat-as-public.https.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ],
- "xhr.https.window.js": [
- "4dc5da9912f1012bf72a9e689acfbc125d7c2923",
- [
- "fetch/private-network-access/xhr.https.window.html?include=from-local",
- {
- "script_metadata": [
- [
- "script",
- "/common/subset-tests-by-key.js"
- ],
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ],
- [
- "variant",
- "?include=from-local"
- ],
- [
- "variant",
- "?include=from-private"
- ],
- [
- "variant",
- "?include=from-public"
- ]
- ]
- }
- ],
- [
- "fetch/private-network-access/xhr.https.window.html?include=from-private",
- {
- "script_metadata": [
- [
- "script",
- "/common/subset-tests-by-key.js"
- ],
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ],
- [
- "variant",
- "?include=from-local"
- ],
- [
- "variant",
- "?include=from-private"
- ],
- [
- "variant",
- "?include=from-public"
- ]
- ]
- }
- ],
- [
- "fetch/private-network-access/xhr.https.window.html?include=from-public",
- {
- "script_metadata": [
- [
- "script",
- "/common/subset-tests-by-key.js"
- ],
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ],
- [
- "variant",
- "?include=from-local"
- ],
- [
- "variant",
- "?include=from-private"
- ],
- [
- "variant",
- "?include=from-public"
- ]
- ]
- }
- ]
- ],
- "xhr.window.js": [
- "fa307dc559a76cb3cd3f70f76a3c904f4602a442",
- [
- "fetch/private-network-access/xhr.window.html",
- {
- "script_metadata": [
- [
- "script",
- "/common/utils.js"
- ],
- [
- "script",
- "resources/support.sub.js"
- ]
- ]
- }
- ]
- ]
- },
"range": {
"blob.any.js": [
"f3eb313b34b42d12f6ee7e2740edd9360c4ab6f1",
@@ -561755,7 +562022,7 @@
]
],
"FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js": [
- "7f244bc02aad96f55137f2be52f13c269b78dade",
+ "1b7fcda35bf9aada9b7a1a60205525f7a4383349",
[
"fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.html",
{}
@@ -564871,6 +565138,141 @@
]
}
]
+ ],
+ "worker-cookies.tentative.https.window.js": [
+ "4c29983c2b23d62dd4888f72565c70ca4454b511",
+ [
+ "html/anonymous-iframe/worker-cookies.tentative.https.window.html?worker=dedicated_worker",
+ {
+ "script_metadata": [
+ [
+ "timeout",
+ "long"
+ ],
+ [
+ "variant",
+ "?worker=dedicated_worker"
+ ],
+ [
+ "variant",
+ "?worker=shared_worker"
+ ],
+ [
+ "variant",
+ "?worker=service_worker"
+ ],
+ [
+ "script",
+ "/common/get-host-info.sub.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/html/cross-origin-embedder-policy/credentialless/resources/common.js"
+ ],
+ [
+ "script",
+ "./resources/common.js"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "html/anonymous-iframe/worker-cookies.tentative.https.window.html?worker=service_worker",
+ {
+ "script_metadata": [
+ [
+ "timeout",
+ "long"
+ ],
+ [
+ "variant",
+ "?worker=dedicated_worker"
+ ],
+ [
+ "variant",
+ "?worker=shared_worker"
+ ],
+ [
+ "variant",
+ "?worker=service_worker"
+ ],
+ [
+ "script",
+ "/common/get-host-info.sub.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/html/cross-origin-embedder-policy/credentialless/resources/common.js"
+ ],
+ [
+ "script",
+ "./resources/common.js"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "html/anonymous-iframe/worker-cookies.tentative.https.window.html?worker=shared_worker",
+ {
+ "script_metadata": [
+ [
+ "timeout",
+ "long"
+ ],
+ [
+ "variant",
+ "?worker=dedicated_worker"
+ ],
+ [
+ "variant",
+ "?worker=shared_worker"
+ ],
+ [
+ "variant",
+ "?worker=service_worker"
+ ],
+ [
+ "script",
+ "/common/get-host-info.sub.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/html/cross-origin-embedder-policy/credentialless/resources/common.js"
+ ],
+ [
+ "script",
+ "./resources/common.js"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
]
},
"browsers": {
@@ -576779,7 +577181,7 @@
]
],
"2d.transformation.scale.zero.html": [
- "4ff7397ae8c4ab109e08302e71a7a745203c0313",
+ "f495ee2e6a0a194e65f37ce8edb62bee9c23fce3",
[
null,
{}
@@ -589227,308 +589629,308 @@
},
"transformations": {
"2d.transformation.order.html": [
- "b1308035936676ff4f37f077b8aee96f9e4b56b7",
+ "83815f367b7adbbcf54eada88a67753f38d124fe",
[
null,
{}
]
],
"2d.transformation.order.worker.js": [
- "7ac61067b4b870f4ab6b8491ba69bf2e664e1680",
+ "d00fe230efb9659cc84f71605d8dea709a54acd6",
[
"html/canvas/offscreen/transformations/2d.transformation.order.worker.html",
{}
]
],
"2d.transformation.rotate.direction.html": [
- "0a98c7e65f9b5fb288832048b3696eaac77c1346",
+ "c20608f81c87eca1485f1724ac3c9ebbc4bb9037",
[
null,
{}
]
],
"2d.transformation.rotate.direction.worker.js": [
- "465d3b679072de2c1d93274c877f8e047f0f0a34",
+ "8506937583ee0329a1ed6753a024eadbd608bee4",
[
"html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.html",
{}
]
],
"2d.transformation.rotate.nonfinite.html": [
- "0f2227a4e5cc185d02236eaf3f1117648240e662",
+ "bbc294a24fef4bd800c4b13bcea624c7eb72f705",
[
null,
{}
]
],
"2d.transformation.rotate.nonfinite.worker.js": [
- "56a04d874e864de75e904fb7961012f43aaf15a9",
+ "2c892a561b2e4d5a20739551a73ebb699c845a6f",
[
"html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.html",
{}
]
],
"2d.transformation.rotate.radians.html": [
- "8a78dddd7f8e678c4e7ba762e96e8dd17900e64c",
+ "75121e39d7fbd8255168d452396c5f2d45b9908b",
[
null,
{}
]
],
"2d.transformation.rotate.radians.worker.js": [
- "9780e68a02f77a578dd570f256edd536dd981261",
+ "8c2fdd8ab0811c8bf96abf0f42b2848aafd701f4",
[
"html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.html",
{}
]
],
"2d.transformation.rotate.wrap.html": [
- "7711a8c1404e95fd703737d5208c609540e0c79d",
+ "1f9eb838c818f473a78e09bf4f5f41abc242d68c",
[
null,
{}
]
],
"2d.transformation.rotate.wrap.worker.js": [
- "db9fbd43bc148a62f905037c9c6db6c0f6dfeeca",
+ "579a1b6dd687b052276ff19bfc5804879b386a6a",
[
"html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.html",
{}
]
],
"2d.transformation.rotate.wrapnegative.html": [
- "49959dac0227cabcb33cc1a37114804ae451783c",
+ "c06f6453155a7d84f5568f274432d75a6b877b91",
[
null,
{}
]
],
"2d.transformation.rotate.wrapnegative.worker.js": [
- "7f93f654582433f71d38bdb7b9735540f359e883",
+ "cce91071210fcbcaa3214a60cbc27e97af86a51e",
[
"html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.html",
{}
]
],
"2d.transformation.rotate.zero.html": [
- "2255b9973dd0ee34a1ebd25fbaf0525b9a91ad57",
+ "0101fa27c5848c18ef66fd032f36c663e5cd907c",
[
null,
{}
]
],
"2d.transformation.rotate.zero.worker.js": [
- "10e00c4656a0b4301328af8c785e0ee6ff89ab48",
+ "1ad0aa5985375c8737c7dc9518b14d9a0c054f7c",
[
"html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.html",
{}
]
],
"2d.transformation.scale.basic.html": [
- "c78ac79f5abc26f2e61b7da8f54acc6c4849f281",
+ "5c70438ba16eb54f3109878080724a0275df75f4",
[
null,
{}
]
],
"2d.transformation.scale.basic.worker.js": [
- "39b52d57b5f68267c115b3b61d8310ca378587b4",
+ "73be61007a5868aee8a573e309e2738cb244d5d6",
[
"html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.html",
{}
]
],
"2d.transformation.scale.large.html": [
- "a67d05eb2c2d8b52c0619d359d3041d85e969560",
+ "8974545500a128a02e45fe2a579e1cbc5dbb28a9",
[
null,
{}
]
],
"2d.transformation.scale.large.worker.js": [
- "1293cce196fdb6fe092637de5932a40dc42b099b",
+ "30af9631e6ccbdfe3f0f6b6ab52ce777f0774c2d",
[
"html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.html",
{}
]
],
"2d.transformation.scale.multiple.html": [
- "717f3d305a146c994410b7bbb3d1b15dd3ada2da",
+ "b07acf15ce6ee9a7c837f75a24f8a75ef3e151bd",
[
null,
{}
]
],
"2d.transformation.scale.multiple.worker.js": [
- "c5a38207ea0c1a06ba754e6117edbd7f1509d5b2",
+ "267a7df9441e6fd7cfc95aae12e6a830b2064990",
[
"html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.html",
{}
]
],
"2d.transformation.scale.negative.html": [
- "fbcec5d763a9518bf4d9e86baa9d8687e00f8fd1",
+ "b516c1154f4d8ff4d56352d19ffd68dc8d7784a6",
[
null,
{}
]
],
"2d.transformation.scale.negative.worker.js": [
- "a5344a9a7177e2d128aa72cf089e93de7ba386c7",
+ "0e68f7e8d8ce8c1b5e03116128e3588713f87254",
[
"html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.html",
{}
]
],
"2d.transformation.scale.nonfinite.html": [
- "ac38bc1fa468cb3087aa0e4a7fcc30e431fd359d",
+ "3d9c75a0dc0200245ec34767a0e1257a49ae6e99",
[
null,
{}
]
],
"2d.transformation.scale.nonfinite.worker.js": [
- "95e9922b69b521a2211502a4718425b2434e8648",
+ "67c5c104481ce86d046044c0692eb1f56e3b02c9",
[
"html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.html",
{}
]
],
"2d.transformation.scale.zero.html": [
- "9eae3b1db3338dced1ee49738454559cc038d00b",
+ "4b664125c2271ea2ac069ad1cb924f727ffd2863",
[
null,
{}
]
],
"2d.transformation.scale.zero.worker.js": [
- "0f8dad04422d52a66f4d49b59f22cebae76e300a",
+ "dc52323bc23a74eff3ac37318e7db02dab7d8c18",
[
"html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.html",
{}
]
],
"2d.transformation.setTransform.multiple.html": [
- "f8dfb048812c34016a8ae2424855c688e92ce4a7",
+ "e28710858b1fe476643d1d597a463788942435a2",
[
null,
{}
]
],
"2d.transformation.setTransform.multiple.worker.js": [
- "9d01c1302ec136bce85fe918bda42f176b591bf3",
+ "b6b004601fb6b4a363acca80dd7b4b0d54ef36b2",
[
"html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.html",
{}
]
],
"2d.transformation.setTransform.nonfinite.html": [
- "fbed341a04a5599f1646fa3b92cdcd4b5d54d162",
+ "03c1b74579f0638147a6f8ff14d31dc6bb034e56",
[
null,
{}
]
],
"2d.transformation.setTransform.nonfinite.worker.js": [
- "be7e055a853ccff10e7ba9f76237dd3229a36dc1",
+ "bd48262ca7d3bc7a5ca87b545ef07c86f906542b",
[
"html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.html",
{}
]
],
"2d.transformation.setTransform.skewed.html": [
- "40fa8015d4ca10258c9b4870843af85b1c9f7022",
+ "c49d9d8a29855fc29ed7fedf4e8209180dfd0d8d",
[
null,
{}
]
],
"2d.transformation.setTransform.skewed.worker.js": [
- "6490f9b7094ec6094c93953e7178ecfb60ce1580",
+ "6f4b4769b61cd2f2ae9d4156967b3dec4ffb5ca8",
[
"html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.html",
{}
]
],
"2d.transformation.transform.identity.html": [
- "92753bc9e3eecb2f7a4b00054c967467be39c9e1",
+ "1efa306707c06c4e4ca8cd296cf8ad464bb6f8af",
[
null,
{}
]
],
"2d.transformation.transform.identity.worker.js": [
- "99ac58d49d3ae634c1123bc9dd87aaae0bc59b96",
+ "51a11ee03ded65c2f7235ba02b9356c386874e09",
[
"html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.html",
{}
]
],
"2d.transformation.transform.multiply.html": [
- "f69fa4330af2d17d88b4315c08a03ae1fa4a3406",
+ "05a1e7e5ead0af5d3b0ce215219dcb032a226e90",
[
null,
{}
]
],
"2d.transformation.transform.multiply.worker.js": [
- "1a0e702a05bf73984e1c8416bf639e5349eac711",
+ "61a5f052dc722dcb2f4dbf6b6911081815e47781",
[
"html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.html",
{}
]
],
"2d.transformation.transform.nonfinite.html": [
- "6e679341d5d01012a23627e0251fdfe6c6073560",
+ "b81bda463bd3515346d1967bc4a081b0a171f29a",
[
null,
{}
]
],
"2d.transformation.transform.nonfinite.worker.js": [
- "d596fc9744b70e25f07c6e61ea84480e0b5f215f",
+ "ee675151b3ab6210d022947fac799d193a7141d5",
[
"html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.html",
{}
]
],
"2d.transformation.transform.skewed.html": [
- "78e1252c67c517cb9d35f80136178fa8e9ae7416",
+ "9cb6dfcc52e462a8974e484100c82e9c0fb3f993",
[
null,
{}
]
],
"2d.transformation.transform.skewed.worker.js": [
- "46416bb957010f8bea2d29fc7256e87a8d832949",
+ "638adc14c44c9b930bb9a9b6bd9f37af35b44e83",
[
"html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.html",
{}
]
],
"2d.transformation.translate.basic.html": [
- "8144ab0cc1b4e6317f08953366fec5bd2de9d03b",
+ "51a7527b5ccb82d4a41dc39cc20dae29fcc12b01",
[
null,
{}
]
],
"2d.transformation.translate.basic.worker.js": [
- "695aff37da54e53f925d65896546cca85a2235af",
+ "11e8bd897b4d73cdae7758009bdf16931ddd884c",
[
"html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.html",
{}
]
],
"2d.transformation.translate.nonfinite.html": [
- "4127a7a157ed2bad072b8df45ed80bec903bdbf8",
+ "010b28f3c6a8ebb88285e67d06f5e071fbf67c26",
[
null,
{}
]
],
"2d.transformation.translate.nonfinite.worker.js": [
- "84b52a203b65bb9bea5834d96197a16f66149148",
+ "c3ff3a31a8c3fda8d5992c35a38b282aa35f7783",
[
"html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.html",
{}
@@ -604922,6 +605324,15 @@
{}
]
],
+ "selectmenu-form-elements.tentative.html": [
+ "eed098256ca41f5f5982e8804f03309f6c4ce755",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"selectmenu-form-state-restore.tentative.html": [
"1002355a5ab1ea4718ad2194826dac743ea7ec85",
[
@@ -606053,7 +606464,7 @@
]
],
"popover-attribute-basic.html": [
- "88051f57394b7d525d24d74a37f5f73b05599e9f",
+ "c5937cd3237e55b04d93798ad4271a2cca0a22d7",
[
null,
{
@@ -606206,7 +606617,7 @@
]
],
"popover-types.html": [
- "615c5a818c06c1bd75c5bfc80c2fc38e543048a9",
+ "9941f3228285690149c59d03d5dcba480d18b70b",
[
null,
{}
@@ -616269,7 +616680,7 @@
]
],
"inert-computed-style.html": [
- "3c1748de2b424197c3d37f913cb2f91f8696a4b1",
+ "f1adbab6b7a5955fa7797ea9a03ed215b365d34f",
[
null,
{}
@@ -616283,7 +616694,7 @@
]
],
"inert-iframe-hittest.html": [
- "bcc542d35edff1bf93fdb7bcc6185fceb0d130d6",
+ "8d7facf17230d70350adf4cd54a32151e30fc11b",
[
null,
{
@@ -616433,7 +616844,7 @@
]
],
"non-local-ports.sub.window.js": [
- "8c9eb33c4f77ba1b7724a253a3f73d765d7425ab",
+ "06ecb3ab21b9cee404bb3618117dd0511da076b3",
[
"infrastructure/assumptions/non-local-ports.sub.window.html",
{}
@@ -620787,7 +621198,7 @@
"long-animation-frame": {
"tentative": {
"loaf-basic.html": [
- "d289f0dd3427af4d29923d091c332113768b3b1c",
+ "c6d3f8e32a293a4a66af0830d0e7c275ac785f5f",
[
null,
{
@@ -620804,8 +621215,72 @@
}
]
],
+ "loaf-desired-exec-time.html": [
+ "5fecb20fb40dad1313d8935b37835b40d43d43f9",
+ [
+ null,
+ {
+ "testdriver": true,
+ "timeout": "long"
+ }
+ ]
+ ],
+ "loaf-event-listener.html": [
+ "6349c28b3202262c444aaefc558620c7baa19ff3",
+ [
+ null,
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "loaf-idle.html": [
+ "bc9f910bb14858527fd6727cdf4b8278df859faf",
+ [
+ null,
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
"loaf-iframe-popup.html": [
- "83def5729984f63bcd491152f56c548a54bf0d87",
+ "565273b6c6adfe610778b050f62030b19a786d87",
+ [
+ null,
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "loaf-promise.html": [
+ "226d06a8303410d8a4ba5a116df98fa56a588ad5",
+ [
+ null,
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "loaf-script-block.html": [
+ "f896a737ce7cc14af380a772a06146b874a6c74e",
+ [
+ null,
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "loaf-script-window-attribution.html": [
+ "001bb537f79dea2b100d274ac83340218da5909f",
+ [
+ null,
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "loaf-supportedEntryTypes.html": [
+ "efa01481fa18b935fdace923b039065404a969d1",
[
null,
{
@@ -620829,6 +621304,15 @@
{}
]
],
+ "loaf-user-callback.html": [
+ "bc8fdd05e10f5d03bfdebf266701892e76e9a972",
+ [
+ null,
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
"loaf-visibility.html": [
"97038e30738d36114fcac0a88fec7a5365509a3b",
[
@@ -620838,6 +621322,13 @@
"timeout": "long"
}
]
+ ],
+ "loaf-window-only.worker.js": [
+ "c1f0439c4bda4f68aeeb5e89bb55a4d2a475d62c",
+ [
+ "long-animation-frame/tentative/loaf-window-only.worker.html",
+ {}
+ ]
]
}
},
@@ -620952,7 +621443,7 @@
]
],
"longtask-in-raf.html": [
- "d65f8928186aa11361c1ab79ec21e2865a870368",
+ "169843a7423068ebda950774dbb189fd45088200",
[
null,
{}
@@ -623804,7 +624295,7 @@
]
],
"MediaRecorder-pause-resume.html": [
- "a1495dcb0c7c84867b257286dc9430454b6adec6",
+ "84efe52e06b7788d71bc44fbec7c9963216f2734",
[
null,
{}
@@ -626887,7 +627378,7 @@
]
],
"navigation-traverseTo-in-iframe-same-document-preventDefault.html": [
- "d68b11fa7ccae6a3dc6287150cf25fe8d96d93cf",
+ "463746e8f7977017066e4f9525b7c7a55a04a600",
[
null,
{}
@@ -627843,6 +628334,13 @@
{}
]
],
+ "traverseTo-detach-cross-document-before-navigate-event.html": [
+ "ed319f6223936830c15d36a08e9c782f59bffc1b",
+ [
+ null,
+ {}
+ ]
+ ],
"traverseTo-detach-cross-document.html": [
"8784313b70546e49d37e227ec9c0f809990b77d5",
[
@@ -627850,6 +628348,13 @@
{}
]
],
+ "traverseTo-detach-same-document-before-navigate-event.html": [
+ "592ac6f19906979ff19b7ae85f7ad9006e8a5f22",
+ [
+ null,
+ {}
+ ]
+ ],
"traverseTo-detach-same-document.html": [
"b0308b8df8fe4c3ed975fe16b790c29a0de1891c",
[
@@ -627894,14 +628399,14 @@
]
},
"sandboxing-back-parent.html": [
- "bc3d4e2e9fb7e3906e027109fe18d275e5db744e",
+ "6eee3f917cdc5bfae0491685172da2fff918cdb3",
[
null,
{}
]
],
"sandboxing-back-sibling.html": [
- "718ea6d3ddada0bc73ea965a2969f5fe79642a9c",
+ "97c03ea0c2fbd84cc1cc8d829bfd352d31981544",
[
null,
{}
@@ -633137,6 +633642,22 @@
]
]
},
+ "png": {
+ "cicp-chunk.html": [
+ "4afc262dcf5ead61423a5bea21ae6e6f998a401c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "trns-chunk.html": [
+ "652cda0e32089b7ade4e41c0f69a9637177bd9dd",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"pointerevents": {
"capturing_boundary_event_handler_at_ua_shadowdom.html": [
"7500277f2251fa300f9af99d52e1f73a943f237c",
@@ -633229,6 +633750,15 @@
}
]
],
+ "pointerevent_mouse-pointer-preventdefault-passive.html": [
+ "57da09686602f96da63cf8bb0b740f0862732c91",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"pointerevent_mouse-pointer-preventdefault.html": [
"549cbf55d8818291f412a1627765df9611ce614c",
[
@@ -651359,7 +651889,7 @@
]
],
"animation-shorthand.html": [
- "60d6c7664672b61a40f4b20e0fa89765d2bf67f4",
+ "87e66d0f532bf85de5e19e90235e8fc71e7cb11a",
[
null,
{}
@@ -651394,7 +651924,7 @@
]
],
"animation-timeline-named-scroll-progress-timeline.tentative.html": [
- "9f55e2d2c91ff0045ab452cd5e30a3e54d34fe2a",
+ "30461723386a2e5c0440856664ff49b2cfd380e6",
[
null,
{}
@@ -656202,6 +656732,13 @@
{}
]
],
+ "import-scripts-data-url.https.html": [
+ "f0922193dd0112b72881d05a97aafc67c5bdc3d5",
+ [
+ null,
+ {}
+ ]
+ ],
"import-scripts-mime-types.https.html": [
"1679831d0f2b98aee22898d820373e80079fbe00",
[
@@ -661512,7 +662049,7 @@
]
],
"requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js": [
- "67906708aed7676accb91efe2e2cad926c0d4706",
+ "24595ed340856e0f667dbd2671614e5c23ba712c",
[
"storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.html",
{
@@ -661769,7 +662306,7 @@
]
],
"storage-access-permission.sub.https.window.js": [
- "4222051c10bdc1c2ad060d7da1abec0ba6ea2f25",
+ "82794061bd013ced4d8a42f3337fddd6a53d6d0a",
[
"storage-access-api/storage-access-permission.sub.https.window.html",
{
@@ -669278,7 +669815,7 @@
]
],
"requestStorageAccessForOrigin.sub.https.window.js": [
- "76e5bf83b1eed2fb19f6c2ae5547b422dea6d764",
+ "6fff9e9189e495af43ef0a4c9a087cbc05c7d14c",
[
"top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.html",
{
@@ -682793,7 +683330,7 @@
]
],
"getcredential-prf.https.html": [
- "61b52ac5958c7b242168285ad5e83581b4c1497e",
+ "40dfc5cad33921e3f5c00865a74cf79e5f81e26e",
[
null,
{
@@ -689328,7 +689865,7 @@
]
],
"RTCPeerConnection-getStats.https.html": [
- "8062618dd6170f81dbeb5af4a43bbcc204d96e95",
+ "96e763985c059679b1e97b9cfab4399632c9b00b",
[
null,
{
@@ -689713,7 +690250,7 @@
]
],
"RTCRtpReceiver-getStats.https.html": [
- "06d0f0b39bf57814114bd35c68156b89752e0c64",
+ "b8daf12fc275fb68ef47e1556a9ecd194f5b9e90",
[
null,
{
@@ -689747,7 +690284,7 @@
]
],
"RTCRtpSender-getStats.https.html": [
- "27ac3e952f11d37ad50581465e6d8e8454982677",
+ "62c01aafa6a959f25bfd072a512ddc4b66ed1878",
[
null,
{
@@ -690569,7 +691106,7 @@
]
],
"RTCRtpTransceiver-headerExtensionControl.html": [
- "770aa49f052f5d5f84185ca6420c674a6dadb765",
+ "b6dc7da5d4076d113419888e814e445e9dd2c40a",
[
null,
{}
@@ -706793,10 +707330,12 @@
]
],
"Worker_script_mimetype.htm": [
- "4768fe70bcb0bde98c1d0bd3801362e2bcdf3150",
+ "d2278d3717c2f0c57673c220da49a07d8251d0d5",
[
null,
- {}
+ {
+ "timeout": "long"
+ }
]
],
"Worker_terminate_event_queue.htm": [
@@ -730348,13 +730887,6 @@
{}
]
],
- "background-clip-padding-box-with-border-radius.html": [
- "ee98dababbcce0d7fbee2f6b7eaff18bb78341e9",
- [
- null,
- {}
- ]
- ],
"background-clip-root.html": [
"8f9f5f3ebd50137939e6f006e7cb068aa120863c",
[
@@ -734769,6 +735301,31 @@
{}
]
]
+ },
+ "print": {
+ "context.py": [
+ "a73bfee96215621a67456a501f5b7f420cda82ce",
+ [
+ null,
+ {}
+ ]
+ ],
+ "invalid.py": [
+ "114aeb62dcc27474a0869c0964b8dca2e95c8053",
+ [
+ null,
+ {}
+ ]
+ ],
+ "page_ranges.py": [
+ "9e466883b0a6e4381b227b3c8115fd3a6e93879e",
+ [
+ null,
+ {
+ "timeout": "long"
+ }
+ ]
+ ]
}
},
"errors": {
@@ -734890,7 +735447,7 @@
},
"call_function": {
"arguments.py": [
- "9fbe5fb81101054f9cafe1411a6c9a5937473324",
+ "daf31fc869c3dab31218b508cf4b24b6a084f78a",
[
null,
{}
@@ -734925,7 +735482,7 @@
]
],
"invalid.py": [
- "cf5a07f41b78b00d688e8c3f8b29259856fa79bb",
+ "d73705c672470e1fe1986b61808b29eae4aea4d6",
[
null,
{}
@@ -734953,7 +735510,7 @@
]
],
"result_node.py": [
- "08e47be5f714de3a53d39c0dfec45a4d6827fb5a",
+ "e1575374fd594c24e395a4e5c2f2fdfb6c53b563",
[
null,
{}
@@ -734967,7 +735524,7 @@
]
],
"sandbox.py": [
- "e0a4914d8f6024db9966d6f54e215a237f099285",
+ "382ede3c7839afcaa625aa56ef2b9d728f7730a3",
[
null,
{}
@@ -734988,6 +735545,15 @@
]
]
},
+ "classic_interop": {
+ "node_shared_id.py": [
+ "410d029207c6674c2263a58f875c10d3c7784fdd",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"disown": {
"handles.py": [
"d4a514576624cd9fce98cf244b00ca39008ba0ee",
@@ -735069,7 +735635,7 @@
]
],
"result_node.py": [
- "0d0589a5f3816e4aa64aa275360bee0ee76c5958",
+ "63915a8f4a4781330583b29fbd62f020a9801c2e",
[
null,
{}
@@ -735083,7 +735649,7 @@
]
],
"sandbox.py": [
- "ba4eb732d16f2bb533af67b1ef15d347b6b6734d",
+ "3a6771780d5f69af4054cd7fdcac35e8f6139aee",
[
null,
{}
@@ -735299,7 +735865,7 @@
},
"element_clear": {
"clear.py": [
- "fa96ed3a58aa0ae81216926e153381ecfe3f2ae8",
+ "9b0d7f2133f7686603449897c659c7e4220ec746",
[
null,
{
@@ -735333,7 +735899,7 @@
]
],
"click.py": [
- "79be957d1b214527b363d9b35d46af67c7d3f9de",
+ "3c3f7d70e6c6b23932e7452f73e160a2d213a5ba",
[
null,
{}
@@ -735442,7 +736008,7 @@
]
],
"send_keys.py": [
- "854d2af42ccc8f42735a3e7b6df7217fdb8770b3",
+ "281c7ad719ddd05dac2ab7c6de343e9bebde4a5b",
[
null,
{}
@@ -735460,7 +736026,7 @@
},
"execute_async_script": {
"arguments.py": [
- "55fd9527aea390c7a1a9ae7556022ab854cfc6f9",
+ "ead6e0c186ea40771643aea56ccc7180e6cc28d7",
[
null,
{}
@@ -735527,7 +736093,7 @@
},
"execute_script": {
"arguments.py": [
- "53c49aaa6897dc4f60da317480161c1516a7ec18",
+ "b8657ce0efae2a266158bb8c2846864cd63c1d5e",
[
null,
{}
@@ -735781,7 +736347,7 @@
},
"get_computed_label": {
"get.py": [
- "8124fee0c9dec85f9478b6702b25b4fdece96a8e",
+ "0dc00a471a9a37509e4ed7a448c1213bb978eeda",
[
null,
{}
@@ -735790,7 +736356,7 @@
},
"get_computed_role": {
"get.py": [
- "dcfe753f0dcaf65d6cbd77a074a0039ad0564cde",
+ "8d15e8fb90ddda39c13836134d179ca7cb5cc7fe",
[
null,
{}
@@ -735831,7 +736397,7 @@
},
"get_element_attribute": {
"get.py": [
- "e23d7e4d5abbf2ce430e16816e7d49b740e931fb",
+ "375f25032c06a10fecf78a884647056fbd826b9d",
[
null,
{}
@@ -735849,7 +736415,7 @@
},
"get_element_css_value": {
"get.py": [
- "f9797c2cff51b06818c9d2f9f46efdf321e50504",
+ "6f0a8a56395788be0f9152028f569f133fcd79ed",
[
null,
{}
@@ -735867,7 +736433,7 @@
},
"get_element_property": {
"get.py": [
- "072375804e814cfe2dc0d13e89f3389ec52b674d",
+ "84e4e89628146e3984ba926a2a9a88fb27fa9f4e",
[
null,
{}
@@ -735885,7 +736451,7 @@
},
"get_element_rect": {
"get.py": [
- "7f87b44e7e932b9e5215bb277af12a6be779fc3c",
+ "942f119f43c9bb30eaefd52f3c793d7e47cfbfc4",
[
null,
{}
@@ -735903,7 +736469,7 @@
},
"get_element_shadow_root": {
"get.py": [
- "61d0d008100495a308189e2494184b4490cc6e39",
+ "d9adde0b9e3aee402aa2e03db9d02259d968e81b",
[
null,
{}
@@ -735921,7 +736487,7 @@
},
"get_element_tag_name": {
"get.py": [
- "1bf19309e45888edcbf4483daa4970d81a70dad0",
+ "3bb03d79886d88c6ba045d9f0bedae7414412025",
[
null,
{}
@@ -735939,7 +736505,7 @@
},
"get_element_text": {
"get.py": [
- "aa36c487c809e101029689ef4aa1a1b8f25ec8d0",
+ "e8d559cf661acee18a39cbc4b6bb03289385ca08",
[
null,
{}
@@ -736090,7 +736656,7 @@
},
"is_element_enabled": {
"enabled.py": [
- "34e5cce4197cb2f3d33a34e819119f4581ea3b55",
+ "fccff383a55a7929179810216407acbdea0a079c",
[
null,
{}
@@ -736108,7 +736674,7 @@
},
"is_element_selected": {
"selected.py": [
- "b119705e7dd16fc87f41d17fc6b77c159a5a5a65",
+ "1fb5b9ce86b521069f638956272e3101ea62cc5c",
[
null,
{}
@@ -736477,7 +737043,7 @@
},
"print": {
"printcmd.py": [
- "169e2249a99449d99e44eed55f8565836e139468",
+ "415786675c5936bb55cf4c6c4b49980407aa0547",
[
null,
{
@@ -736651,7 +737217,7 @@
]
],
"screenshot.py": [
- "deea9514ed48f107196447dbe8f1f660720ba48d",
+ "ea4cc290db4cdd603d9dc20bbc90914c4e241cb5",
[
null,
{}
diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js.ini
new file mode 100644
index 00000000000..751ae3bdb5b
--- /dev/null
+++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js.ini
@@ -0,0 +1,5 @@
+[aes_gcm_256_iv.https.any.worker.html]
+ expected: ERROR
+
+[aes_gcm_256_iv.https.any.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini
deleted file mode 100644
index 0842d0b5727..00000000000
--- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[hit-test-floats-001.html]
- [hit-test-floats-001]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini
index a057f038339..5e3a96e5999 100644
--- a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini
+++ b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini
@@ -8,8 +8,5 @@
[[data-expected-height\] 3]
expected: FAIL
- [[data-expected-height\] 1]
- expected: FAIL
-
- [[data-expected-height\] 2]
+ [[data-expected-height\] 4]
expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini
deleted file mode 100644
index 3e5096beef3..00000000000
--- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[block-in-inline-hittest-float-002.html]
- [block-in-inline-hittest-float-002]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/line-breaking/segment-break-transformation-unremovable-2.html.ini b/tests/wpt/metadata/css/css-text/line-breaking/segment-break-transformation-unremovable-2.html.ini
deleted file mode 100644
index 2a64df11b9a..00000000000
--- a/tests/wpt/metadata/css/css-text/line-breaking/segment-break-transformation-unremovable-2.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[segment-break-transformation-unremovable-2.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini
new file mode 100644
index 00000000000..b9463b3ee1e
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini
@@ -0,0 +1,2 @@
+[trailing-other-space-separators-break-spaces-005.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-012.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-012.html.ini
new file mode 100644
index 00000000000..c4ec0fbcc2f
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-012.html.ini
@@ -0,0 +1,2 @@
+[trailing-other-space-separators-break-spaces-012.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/dynamic-root-element.html.ini b/tests/wpt/metadata/css/css-transitions/dynamic-root-element.html.ini
new file mode 100644
index 00000000000..f55fcd9f3a4
--- /dev/null
+++ b/tests/wpt/metadata/css/css-transitions/dynamic-root-element.html.ini
@@ -0,0 +1,2 @@
+[dynamic-root-element.html]
+ expected: CRASH
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
index cfd069eec6c..442caf6e43f 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
@@ -326,3 +326,303 @@
[margin-right length(mm) / values]
expected: [FAIL, PASS]
+
+ [margin-right length(cm) / values]
+ expected: FAIL
+
+ [margin-right length(in) / values]
+ expected: FAIL
+
+ [margin-top length(pt) / values]
+ expected: FAIL
+
+ [margin-top length(pc) / values]
+ expected: FAIL
+
+ [margin-top length(px) / values]
+ expected: FAIL
+
+ [margin-top length(em) / values]
+ expected: FAIL
+
+ [margin-top length(ex) / values]
+ expected: FAIL
+
+ [margin-top length(mm) / values]
+ expected: FAIL
+
+ [margin-top length(cm) / values]
+ expected: FAIL
+
+ [margin-top length(in) / values]
+ expected: FAIL
+
+ [height length(pt) / values]
+ expected: FAIL
+
+ [height length(pc) / values]
+ expected: FAIL
+
+ [height length(px) / values]
+ expected: FAIL
+
+ [height length(em) / values]
+ expected: FAIL
+
+ [height length(ex) / values]
+ expected: FAIL
+
+ [height length(mm) / values]
+ expected: FAIL
+
+ [height length(cm) / values]
+ expected: FAIL
+
+ [height length(in) / values]
+ expected: FAIL
+
+ [height percentage(%) / values]
+ expected: FAIL
+
+ [width length(pt) / values]
+ expected: FAIL
+
+ [width length(pc) / values]
+ expected: FAIL
+
+ [width length(px) / values]
+ expected: FAIL
+
+ [width length(em) / values]
+ expected: FAIL
+
+ [width length(ex) / values]
+ expected: FAIL
+
+ [width length(mm) / values]
+ expected: FAIL
+
+ [width length(cm) / values]
+ expected: FAIL
+
+ [width length(in) / values]
+ expected: FAIL
+
+ [width percentage(%) / values]
+ expected: FAIL
+
+ [min-height length(pt) / values]
+ expected: FAIL
+
+ [min-height length(pc) / values]
+ expected: FAIL
+
+ [min-height length(px) / values]
+ expected: FAIL
+
+ [min-height length(em) / values]
+ expected: FAIL
+
+ [min-height length(ex) / values]
+ expected: FAIL
+
+ [min-height length(mm) / values]
+ expected: FAIL
+
+ [min-height length(cm) / values]
+ expected: FAIL
+
+ [min-height length(in) / values]
+ expected: FAIL
+
+ [min-height percentage(%) / values]
+ expected: FAIL
+
+ [min-width length(pt) / values]
+ expected: FAIL
+
+ [min-width length(pc) / values]
+ expected: FAIL
+
+ [min-width length(px) / values]
+ expected: FAIL
+
+ [min-width length(em) / values]
+ expected: FAIL
+
+ [min-width length(ex) / values]
+ expected: FAIL
+
+ [min-width length(mm) / values]
+ expected: FAIL
+
+ [min-width length(cm) / values]
+ expected: FAIL
+
+ [min-width length(in) / values]
+ expected: FAIL
+
+ [min-width percentage(%) / values]
+ expected: FAIL
+
+ [max-height length(pt) / values]
+ expected: FAIL
+
+ [max-height length(pc) / values]
+ expected: FAIL
+
+ [max-height length(px) / values]
+ expected: FAIL
+
+ [max-height length(em) / values]
+ expected: FAIL
+
+ [color color(rgba) / values]
+ expected: FAIL
+
+ [font-size length(pt) / values]
+ expected: FAIL
+
+ [font-size length(pc) / values]
+ expected: FAIL
+
+ [font-size length(px) / values]
+ expected: FAIL
+
+ [font-size length(em) / values]
+ expected: FAIL
+
+ [font-size length(ex) / values]
+ expected: FAIL
+
+ [font-size length(mm) / values]
+ expected: FAIL
+
+ [font-size length(cm) / values]
+ expected: FAIL
+
+ [font-size length(in) / values]
+ expected: FAIL
+
+ [font-size percentage(%) / values]
+ expected: FAIL
+
+ [font-weight font-weight(keyword) / values]
+ expected: FAIL
+
+ [font-weight font-weight(numeric) / values]
+ expected: FAIL
+
+ [line-height number(integer) / values]
+ expected: FAIL
+
+ [line-height number(decimal) / values]
+ expected: FAIL
+
+ [line-height length(pt) / values]
+ expected: FAIL
+
+ [line-height length(pc) / values]
+ expected: FAIL
+
+ [line-height length(px) / values]
+ expected: FAIL
+
+ [line-height length(em) / values]
+ expected: FAIL
+
+ [line-height length(ex) / values]
+ expected: FAIL
+
+ [line-height length(mm) / values]
+ expected: FAIL
+
+ [line-height length(cm) / values]
+ expected: FAIL
+
+ [line-height length(in) / values]
+ expected: FAIL
+
+ [line-height percentage(%) / values]
+ expected: FAIL
+
+ [letter-spacing length(pt) / values]
+ expected: FAIL
+
+ [letter-spacing length(pc) / values]
+ expected: FAIL
+
+ [letter-spacing length(px) / values]
+ expected: FAIL
+
+ [letter-spacing length(em) / values]
+ expected: FAIL
+
+ [letter-spacing length(ex) / values]
+ expected: FAIL
+
+ [letter-spacing length(mm) / values]
+ expected: FAIL
+
+ [letter-spacing length(cm) / values]
+ expected: FAIL
+
+ [letter-spacing length(in) / values]
+ expected: FAIL
+
+ [word-spacing length(pt) / values]
+ expected: FAIL
+
+ [word-spacing length(pc) / values]
+ expected: FAIL
+
+ [word-spacing length(px) / values]
+ expected: FAIL
+
+ [word-spacing length(em) / values]
+ expected: FAIL
+
+ [word-spacing length(ex) / values]
+ expected: FAIL
+
+ [word-spacing length(mm) / values]
+ expected: FAIL
+
+ [word-spacing length(cm) / values]
+ expected: FAIL
+
+ [word-spacing length(in) / values]
+ expected: FAIL
+
+ [word-spacing percentage(%) / values]
+ expected: FAIL
+
+ [text-indent length(pt) / values]
+ expected: FAIL
+
+ [text-indent length(pc) / values]
+ expected: FAIL
+
+ [text-indent length(px) / values]
+ expected: FAIL
+
+ [text-indent length(em) / values]
+ expected: FAIL
+
+ [text-indent length(ex) / values]
+ expected: FAIL
+
+ [text-indent length(mm) / values]
+ expected: FAIL
+
+ [text-indent length(cm) / values]
+ expected: FAIL
+
+ [text-indent length(in) / values]
+ expected: FAIL
+
+ [text-indent percentage(%) / values]
+ expected: FAIL
+
+ [text-shadow shadow(shadow) / values]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-values/calc-infinity-nan-serialize-time.html.ini b/tests/wpt/metadata/css/css-values/calc-infinity-nan-serialize-time.html.ini
index 6af7d919ad8..b24f2c792bb 100644
--- a/tests/wpt/metadata/css/css-values/calc-infinity-nan-serialize-time.html.ini
+++ b/tests/wpt/metadata/css/css-values/calc-infinity-nan-serialize-time.html.ini
@@ -82,3 +82,6 @@
['calc(1s * clamp(-inFinity, infinity, 10))' as a specified value should serialize as 'calc(10s)'.]
expected: FAIL
+
+ ['calc(1ms * NaN)' as a specified value should serialize as 'calc(NaN * 1s)'.]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini
new file mode 100644
index 00000000000..f18b8d2fcf9
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini
@@ -0,0 +1,3 @@
+[CaretPosition-001.html]
+ [Element at (400, 100)]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini
new file mode 100644
index 00000000000..b905fe70fcb
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini
@@ -0,0 +1,3 @@
+[elementFromPoint-ellipsis-in-inline-box.html]
+ [elementFromPoint-ellipsis-in-inline-box]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini
index 8ae9bae3500..390e170437a 100644
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini
@@ -13,3 +13,15 @@
[<li>Outside 3</li>]
expected: FAIL
+
+ [<li>Inside 2</li>]
+ expected: FAIL
+
+ [<li>Inside 3</li>]
+ expected: FAIL
+
+ [<li>Image Inside 1</li>]
+ expected: FAIL
+
+ [<li>Image Inside 2</li>]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-subpixel.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-subpixel.html.ini
deleted file mode 100644
index 8f6f663ba61..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-subpixel.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[elementFromPoint-subpixel.html]
- [Hit test top left corner of box]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini
new file mode 100644
index 00000000000..a6bca7ac372
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini
@@ -0,0 +1,3 @@
+[elementFromPoint-visibility-hidden-resizer.html]
+ [elementFromPoint on resizer area of an element with visibility:hidden]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
index ceb43099040..898f39c4330 100644
--- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
@@ -17,3 +17,6 @@
[test some point of the element: bottom right corner]
expected: FAIL
+
+ [test the top of layer]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
deleted file mode 100644
index a3496a40d07..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[elementsFromPoint-invalid-cases.html]
- [The root element is the last element returned for otherwise empty queries within the viewport]
- expected: FAIL
diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini
index 0edb8845eed..6b36b7c0d59 100644
--- a/tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini
+++ b/tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini
@@ -41,3 +41,9 @@
[outerText on HTMLElement must enqueue a disconnected reaction]
expected: FAIL
+
+ [popover on HTMLElement must enqueue an attributeChanged reaction when adding popover content attribute]
+ expected: FAIL
+
+ [popover on HTMLElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
diff --git a/tests/wpt/metadata/fetch/private-network-access/fetch-from-treat-as-public.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/fetch-from-treat-as-public.https.window.js.ini
index 6a6b5a69797..6a6b5a69797 100644
--- a/tests/wpt/metadata/fetch/private-network-access/fetch-from-treat-as-public.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/fetch-from-treat-as-public.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/fetch.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/fetch.https.window.js.ini
index b900b72b643..4d6c6cb1bb0 100644
--- a/tests/wpt/metadata/fetch/private-network-access/fetch.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/fetch.https.window.js.ini
@@ -1,5 +1,3 @@
-[fetch.https.window.html?include=from-local]
-
[fetch.https.window.html?include=baseline]
[local to public: PUT preflight failure.]
expected: FAIL
@@ -55,6 +53,8 @@
expected: FAIL
+[fetch.https.window.html?include=from-local]
+
[fetch.https.window.html?include=from-private]
[private to local: failed preflight.]
expected: FAIL
@@ -79,17 +79,3 @@
[private to local: no-CORS mode missing PNA header on preflight response.]
expected: FAIL
-
-
-[fetch.https.window.html?include=from-treat-as-public]
- [treat-as-public-address to local: failed preflight.]
- expected: FAIL
-
- [treat-as-public-address to local: success.]
- expected: FAIL
-
- [treat-as-public-address to private: failed preflight.]
- expected: FAIL
-
- [treat-as-public-address to private: success.]
- expected: FAIL
diff --git a/tests/wpt/metadata/fetch/private-network-access/fetch.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/fetch.window.js.ini
index 7f186d41c92..7f186d41c92 100644
--- a/tests/wpt/metadata/fetch/private-network-access/fetch.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/fetch.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/iframe.tentative.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/iframe.tentative.https.window.js.ini
index 5b0348afa74..5b0348afa74 100644
--- a/tests/wpt/metadata/fetch/private-network-access/iframe.tentative.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/iframe.tentative.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/iframe.tentative.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/iframe.tentative.window.js.ini
index ca42692a9d7..ca42692a9d7 100644
--- a/tests/wpt/metadata/fetch/private-network-access/iframe.tentative.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/iframe.tentative.window.js.ini
diff --git a/tests/wpt/metadata/fetch/local-network-access/mixed-content-fetch.tentative.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/mixed-content-fetch.tentative.https.window.js.ini
new file mode 100644
index 00000000000..87f9c6b6f17
--- /dev/null
+++ b/tests/wpt/metadata/fetch/local-network-access/mixed-content-fetch.tentative.https.window.js.ini
@@ -0,0 +1,135 @@
+[mixed-content-fetch.tentative.https.window.html]
+ [https-loopback to http-loopback: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-loopback to http-loopback: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-loopback to http-loopback: wrong targetAddressSpace "public".]
+ expected: FAIL
+
+ [https-loopback to http-loopback: not a local network request.]
+ expected: FAIL
+
+ [https-loopback to http-local: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-loopback to http-local: wrong targetAddressSpace "loopback".]
+ expected: FAIL
+
+ [https-loopback to http-local: wrong targetAddressSpace "public".]
+ expected: FAIL
+
+ [https-loopback to http-local: not a local network request.]
+ expected: FAIL
+
+ [https-loopback to http-public: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-loopback to http-public: wrong targetAddressSpace "loopback".]
+ expected: FAIL
+
+ [https-loopback to http-public: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-loopback to http-public: not a local network request.]
+ expected: FAIL
+
+ [https-local to http-loopback: missing targetAddressSpace.]
+ expected: FAIL
+
+ [https-local to http-loopback: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-local to http-loopback: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-local to http-loopback: wrong targetAddressSpace "public".]
+ expected: FAIL
+
+ [https-local to http-loopback: failed preflight.]
+ expected: FAIL
+
+ [https-local to http-loopback: success.]
+ expected: FAIL
+
+ [https-local to http-local: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-local to http-local: wrong targetAddressSpace "loopback".]
+ expected: FAIL
+
+ [https-local to http-local: wrong targetAddressSpace "public".]
+ expected: FAIL
+
+ [https-local to http-local: not a local network request.]
+ expected: FAIL
+
+ [https-local to http-public: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-local to http-public: wrong targetAddressSpace "loopback".]
+ expected: FAIL
+
+ [https-local to http-public: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-local to http-public: not a local network request.]
+ expected: FAIL
+
+ [https-public to http-loopback: missing targetAddressSpace.]
+ expected: FAIL
+
+ [https-public to http-loopback: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-public to http-loopback: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-public to http-loopback: wrong targetAddressSpace "public".]
+ expected: FAIL
+
+ [https-public to http-loopback: failed preflight.]
+ expected: FAIL
+
+ [https-public to http-loopback: success.]
+ expected: FAIL
+
+ [https-public to http-local: missing targetAddressSpace.]
+ expected: FAIL
+
+ [https-public to http-local: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-public to http-local: wrong targetAddressSpace "loopback".]
+ expected: FAIL
+
+ [https-public to http-local: wrong targetAddressSpace "public".]
+ expected: FAIL
+
+ [https-public to http-local: failed preflight.]
+ expected: FAIL
+
+ [https-public to http-local: success.]
+ expected: FAIL
+
+ [https-public to http-public: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-public to http-public: wrong targetAddressSpace "loopback".]
+ expected: FAIL
+
+ [https-public to http-public: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-public to http-public: not a local network request.]
+ expected: FAIL
+
+ [https-treat-as-public to http-loopback: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-treat-as-public to http-local: wrong targetAddressSpace "loopback".]
+ expected: FAIL
+
+ [https-treat-as-public to http-local: success.]
+ expected: FAIL
diff --git a/tests/wpt/metadata/fetch/private-network-access/nested-worker.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/nested-worker.https.window.js.ini
index a9b78417a52..a9b78417a52 100644
--- a/tests/wpt/metadata/fetch/private-network-access/nested-worker.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/nested-worker.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/nested-worker.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/nested-worker.window.js.ini
index 3e9038297b0..3e9038297b0 100644
--- a/tests/wpt/metadata/fetch/private-network-access/nested-worker.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/nested-worker.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/preflight-cache.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/preflight-cache.https.window.js.ini
index 552ad51cc01..552ad51cc01 100644
--- a/tests/wpt/metadata/fetch/private-network-access/preflight-cache.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/preflight-cache.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/redirect.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/redirect.https.window.js.ini
index 88e8e246059..88e8e246059 100644
--- a/tests/wpt/metadata/fetch/private-network-access/redirect.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/redirect.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/service-worker-background-fetch.https.window.js.ini
index 8835e5da97f..8835e5da97f 100644
--- a/tests/wpt/metadata/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/service-worker-background-fetch.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/service-worker-fetch.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/service-worker-fetch.https.window.js.ini
index fdafb082080..fdafb082080 100644
--- a/tests/wpt/metadata/fetch/private-network-access/service-worker-fetch.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/service-worker-fetch.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/service-worker-update.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/service-worker-update.https.window.js.ini
index 3aa79df2da4..3aa79df2da4 100644
--- a/tests/wpt/metadata/fetch/private-network-access/service-worker-update.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/service-worker-update.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/service-worker.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/service-worker.https.window.js.ini
index 4ba4f613562..4ba4f613562 100644
--- a/tests/wpt/metadata/fetch/private-network-access/service-worker.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/service-worker.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/shared-worker-blob-fetch.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/shared-worker-blob-fetch.https.window.js.ini
index 2761ecc3254..2761ecc3254 100644
--- a/tests/wpt/metadata/fetch/private-network-access/shared-worker-blob-fetch.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/shared-worker-blob-fetch.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/shared-worker-blob-fetch.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/shared-worker-blob-fetch.window.js.ini
index 4a32995af78..4a32995af78 100644
--- a/tests/wpt/metadata/fetch/private-network-access/shared-worker-blob-fetch.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/shared-worker-blob-fetch.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/shared-worker-fetch.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/shared-worker-fetch.https.window.js.ini
index 22b714229e3..531ee59cc61 100644
--- a/tests/wpt/metadata/fetch/private-network-access/shared-worker-fetch.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/shared-worker-fetch.https.window.js.ini
@@ -27,15 +27,6 @@
[public to public: success.]
expected: NOTRUN
- [treat-as-public to local: failure.]
- expected: NOTRUN
-
- [treat-as-public to private: failure.]
- expected: NOTRUN
-
- [treat-as-public to public: success.]
- expected: NOTRUN
-
[treat-as-public to local: failed preflight.]
expected: NOTRUN
@@ -47,3 +38,6 @@
[treat-as-public to private: success.]
expected: NOTRUN
+
+ [treat-as-public to public: success.]
+ expected: NOTRUN
diff --git a/tests/wpt/metadata/fetch/private-network-access/shared-worker-fetch.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/shared-worker-fetch.window.js.ini
index f0099d7d57f..d1acbafe5bf 100644
--- a/tests/wpt/metadata/fetch/private-network-access/shared-worker-fetch.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/shared-worker-fetch.window.js.ini
@@ -27,20 +27,14 @@
[treat-as-public to public: success.]
expected: NOTRUN
- [private https to local: failure.]
+ [local https to local: success.]
expected: NOTRUN
- [pubiic https to local: failure.]
+ [private https to local: failure.]
expected: NOTRUN
[public https to local: failure.]
expected: NOTRUN
- [local https to local: failure.]
- expected: NOTRUN
-
- [local https to local: success.]
- expected: NOTRUN
-
[public https to private: failure.]
expected: NOTRUN
diff --git a/tests/wpt/metadata/fetch/private-network-access/shared-worker.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/shared-worker.https.window.js.ini
index 612a764cb13..612a764cb13 100644
--- a/tests/wpt/metadata/fetch/private-network-access/shared-worker.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/shared-worker.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/shared-worker.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/shared-worker.window.js.ini
index fc70a5d539e..fc70a5d539e 100644
--- a/tests/wpt/metadata/fetch/private-network-access/shared-worker.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/shared-worker.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/websocket.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/websocket.window.js.ini
index fa8c34f6050..fa8c34f6050 100644
--- a/tests/wpt/metadata/fetch/private-network-access/websocket.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/websocket.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/worker-blob-fetch.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/worker-blob-fetch.window.js.ini
index 03a7b6f1d92..25ca088668d 100644
--- a/tests/wpt/metadata/fetch/private-network-access/worker-blob-fetch.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/worker-blob-fetch.window.js.ini
@@ -1,4 +1,7 @@
[worker-blob-fetch.window.html]
+ [local to local: success.]
+ expected: FAIL
+
[private to local: failure.]
expected: FAIL
@@ -11,6 +14,9 @@
[public to private: failure.]
expected: FAIL
+ [public to public: success.]
+ expected: FAIL
+
[treat-as-public to local: failure.]
expected: FAIL
@@ -20,18 +26,6 @@
[treat-as-public to public: success.]
expected: FAIL
- [public https to private: failure.]
- expected: FAIL
-
- [public https to local: failure.]
- expected: FAIL
-
- [private https to local: failure.]
- expected: FAIL
-
- [local to local: success.]
- expected: FAIL
-
[local https to local https: success.]
expected: FAIL
@@ -43,6 +37,3 @@
[public https to local https: failure.]
expected: FAIL
-
- [public to public: success.]
- expected: FAIL
diff --git a/tests/wpt/metadata/fetch/private-network-access/worker-fetch.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/worker-fetch.https.window.js.ini
index 6cd5a624687..9a23a9e10af 100644
--- a/tests/wpt/metadata/fetch/private-network-access/worker-fetch.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/worker-fetch.https.window.js.ini
@@ -17,9 +17,6 @@
[public to private: success.]
expected: FAIL
- [treat-as-public to local: failure.]
- expected: FAIL
-
[treat-as-public to local: failed preflight.]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/private-network-access/worker-fetch.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/worker-fetch.window.js.ini
index 7877d69e75b..3117a884c7c 100644
--- a/tests/wpt/metadata/fetch/private-network-access/worker-fetch.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/worker-fetch.window.js.ini
@@ -1,7 +1,4 @@
[worker-fetch.window.html]
- [treat-as-public to local: failure.]
- expected: FAIL
-
[private to local: failure.]
expected: FAIL
@@ -11,6 +8,9 @@
[public to private: failure.]
expected: FAIL
+ [treat-as-public to local: failure.]
+ expected: FAIL
+
[treat-as-public to private: failure.]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/private-network-access/worker.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/worker.https.window.js.ini
index b5f3516a4d3..b5f3516a4d3 100644
--- a/tests/wpt/metadata/fetch/private-network-access/worker.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/worker.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/worker.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/worker.window.js.ini
index cc55ff5bf19..cc55ff5bf19 100644
--- a/tests/wpt/metadata/fetch/private-network-access/worker.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/worker.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/xhr-from-treat-as-public.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/xhr-from-treat-as-public.https.window.js.ini
index ed26f02f650..ed26f02f650 100644
--- a/tests/wpt/metadata/fetch/private-network-access/xhr-from-treat-as-public.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/xhr-from-treat-as-public.https.window.js.ini
diff --git a/tests/wpt/metadata/fetch/private-network-access/xhr.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/xhr.https.window.js.ini
index 08c2eedd219..55c3b9c0f4a 100644
--- a/tests/wpt/metadata/fetch/private-network-access/xhr.https.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/xhr.https.window.js.ini
@@ -8,20 +8,6 @@
expected: FAIL
-[xhr.https.window.html?include=from-treat-as-public]
- [treat-as-public to local: failed preflight.]
- expected: FAIL
-
- [treat-as-public to local: success.]
- expected: FAIL
-
- [treat-as-public to private: failed preflight.]
- expected: FAIL
-
- [treat-as-public to private: success.]
- expected: FAIL
-
-
[xhr.https.window.html?include=from-public]
[public to local: failed preflight.]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/private-network-access/xhr.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/xhr.window.js.ini
index 341bf6fc075..5b0e01c0942 100644
--- a/tests/wpt/metadata/fetch/private-network-access/xhr.window.js.ini
+++ b/tests/wpt/metadata/fetch/local-network-access/xhr.window.js.ini
@@ -1,7 +1,4 @@
[xhr.window.html]
- [treat-as-public-address to local: failure.]
- expected: FAIL
-
[private to local: failure.]
expected: FAIL
@@ -11,6 +8,9 @@
[public to private: failure.]
expected: FAIL
+ [treat-as-public-address to local: failure.]
+ expected: FAIL
+
[treat-as-public-address to private: failure.]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini
index f9de5391ad6..0d48169e3cc 100644
--- a/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini
+++ b/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini
@@ -146,3 +146,6 @@
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
+
+ [background-image sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js.ini b/tests/wpt/metadata/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js.ini
deleted file mode 100644
index 061d0a797f4..00000000000
--- a/tests/wpt/metadata/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js.ini
+++ /dev/null
@@ -1,135 +0,0 @@
-[mixed-content-fetch.tentative.https.window.html]
- [https-local to http-local: wrong targetAddressSpace "unknown".]
- expected: FAIL
-
- [https-local to http-local: wrong targetAddressSpace "private".]
- expected: FAIL
-
- [https-local to http-local: wrong targetAddressSpace "public".]
- expected: FAIL
-
- [https-local to http-local: not a private network request.]
- expected: FAIL
-
- [https-local to http-private: wrong targetAddressSpace "unknown".]
- expected: FAIL
-
- [https-local to http-private: wrong targetAddressSpace "local".]
- expected: FAIL
-
- [https-local to http-private: wrong targetAddressSpace "public".]
- expected: FAIL
-
- [https-local to http-private: not a private network request.]
- expected: FAIL
-
- [https-local to http-public: wrong targetAddressSpace "unknown".]
- expected: FAIL
-
- [https-local to http-public: wrong targetAddressSpace "local".]
- expected: FAIL
-
- [https-local to http-public: wrong targetAddressSpace "private".]
- expected: FAIL
-
- [https-local to http-public: not a private network request.]
- expected: FAIL
-
- [https-private to http-local: missing targetAddressSpace.]
- expected: FAIL
-
- [https-private to http-local: wrong targetAddressSpace "unknown".]
- expected: FAIL
-
- [https-private to http-local: wrong targetAddressSpace "private".]
- expected: FAIL
-
- [https-private to http-local: wrong targetAddressSpace "public".]
- expected: FAIL
-
- [https-private to http-local: failed preflight.]
- expected: FAIL
-
- [https-private to http-local: success.]
- expected: FAIL
-
- [https-private to http-private: wrong targetAddressSpace "unknown".]
- expected: FAIL
-
- [https-private to http-private: wrong targetAddressSpace "local".]
- expected: FAIL
-
- [https-private to http-private: wrong targetAddressSpace "public".]
- expected: FAIL
-
- [https-private to http-private: not a private network request.]
- expected: FAIL
-
- [https-private to http-public: wrong targetAddressSpace "unknown".]
- expected: FAIL
-
- [https-private to http-public: wrong targetAddressSpace "local".]
- expected: FAIL
-
- [https-private to http-public: wrong targetAddressSpace "private".]
- expected: FAIL
-
- [https-private to http-public: not a private network request.]
- expected: FAIL
-
- [https-public to http-local: missing targetAddressSpace.]
- expected: FAIL
-
- [https-public to http-local: wrong targetAddressSpace "unknown".]
- expected: FAIL
-
- [https-public to http-local: wrong targetAddressSpace "private".]
- expected: FAIL
-
- [https-public to http-local: wrong targetAddressSpace "public".]
- expected: FAIL
-
- [https-public to http-local: failed preflight.]
- expected: FAIL
-
- [https-public to http-local: success.]
- expected: FAIL
-
- [https-public to http-private: missing targetAddressSpace.]
- expected: FAIL
-
- [https-public to http-private: wrong targetAddressSpace "unknown".]
- expected: FAIL
-
- [https-public to http-private: wrong targetAddressSpace "local".]
- expected: FAIL
-
- [https-public to http-private: wrong targetAddressSpace "public".]
- expected: FAIL
-
- [https-public to http-private: failed preflight.]
- expected: FAIL
-
- [https-public to http-private: success.]
- expected: FAIL
-
- [https-public to http-public: wrong targetAddressSpace "unknown".]
- expected: FAIL
-
- [https-public to http-public: wrong targetAddressSpace "local".]
- expected: FAIL
-
- [https-public to http-public: wrong targetAddressSpace "private".]
- expected: FAIL
-
- [https-public to http-public: not a private network request.]
- expected: FAIL
-
- [https-treat-as-public to http-local: wrong targetAddressSpace "private".]
- expected: FAIL
-
- [https-treat-as-public to http-private: wrong targetAddressSpace "local".]
- expected: FAIL
-
- [https-treat-as-public to http-private: success.]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/anonymous-iframe/worker-cookies.tentative.https.window.js.ini b/tests/wpt/metadata/html/anonymous-iframe/worker-cookies.tentative.https.window.js.ini
new file mode 100644
index 00000000000..1ac26e08597
--- /dev/null
+++ b/tests/wpt/metadata/html/anonymous-iframe/worker-cookies.tentative.https.window.js.ini
@@ -0,0 +1,21 @@
+[worker-cookies.tentative.https.window.html?worker=shared_worker]
+ expected: TIMEOUT
+ [Worker spawned from normal iframe can access global cookies]
+ expected: TIMEOUT
+
+ [Worker spawned from credentialless iframe can't access global cookies]
+ expected: NOTRUN
+
+
+[worker-cookies.tentative.https.window.html?worker=service_worker]
+ expected: TIMEOUT
+ [Worker spawned from normal iframe can access global cookies]
+ expected: TIMEOUT
+
+ [Worker spawned from credentialless iframe can't access global cookies]
+ expected: NOTRUN
+
+
+[worker-cookies.tentative.https.window.html?worker=dedicated_worker]
+ [Worker spawned from credentialless iframe can't access global cookies]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini
index 6e9f7acf151..c8a3c8f9e68 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini
@@ -1,6 +1,6 @@
[scroll-restoration-fragment-scrolling-cross-origin.html]
type: testharness
- expected: TIMEOUT
+ expected: ERROR
[Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini
index f7ee5361549..33efcdbcf48 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini
@@ -1,4 +1,3 @@
[005.html]
- expected: TIMEOUT
[Link with onclick navigation and href navigation ]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
index dc1144214ef..dd7320bb46e 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
@@ -1,9 +1,10 @@
[iframe-src-aboutblank-navigate-immediately.html]
+ expected: TIMEOUT
[Navigating to a different document with window.open]
expected: FAIL
[Navigating to a different document with form submission]
- expected: FAIL
+ expected: NOTRUN
[Navigating to a different document with link click]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini
index 8ae58f9f1e2..78240a2f463 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini
@@ -16,6 +16,3 @@
[D83D DE0D set in href="" targeting a frame and clicked]
expected: FAIL
-
- [DE0D 0041 set in href="" targeting a frame and clicked]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini
index 27889a98fb5..24d2f8ac554 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini
@@ -1,6 +1,3 @@
[navigate-to-unparseable-url.html]
[location.href setter throws a SyntaxError DOMException for unparseable URLs]
expected: FAIL
-
- [<a> tag navigate fails for unparseable URLs]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini
deleted file mode 100644
index 7dc346632a4..00000000000
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[navigation-unload-same-origin.window.html]
- [Same-origin navigation started from unload handler must be ignored]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini
deleted file mode 100644
index d993e8dcc42..00000000000
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[pageload-image-in-popup.html]
- [The document for a standalone media file should have one child in the body.]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini
new file mode 100644
index 00000000000..4b4820d1729
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini
@@ -0,0 +1,3 @@
+[creating_browsing_context_test_01.html]
+ [first argument: absolute url]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html.ini b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html.ini
new file mode 100644
index 00000000000..64c79a60c4a
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html.ini
@@ -0,0 +1,4 @@
+[opener-setter.html]
+ expected: TIMEOUT
+ [Auxiliary browsing context created via `window.open` and setting `window.opener` to `test` should report `test`]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini b/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini
index 5cdcce07c65..2a54f2f8814 100644
--- a/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini
+++ b/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini
@@ -1,2 +1,2 @@
[canvas.2d.disconnected.html]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.scale.large.html.ini b/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.scale.large.html.ini
index a2f6ef4c2cb..e6c27b72f74 100644
--- a/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.scale.large.html.ini
+++ b/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.scale.large.html.ini
@@ -1,4 +1,4 @@
[2d.transformation.scale.large.html]
+ expected: ERROR
[scale() with large scale factors works]
- expected: FAIL
-
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html.ini b/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html.ini
new file mode 100644
index 00000000000..951f84bb1b2
--- /dev/null
+++ b/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html.ini
@@ -0,0 +1,4 @@
+[2d.transformation.setTransform.multiple.html]
+ expected: ERROR
+ [OffscreenCanvas test: 2d.transformation.setTransform.multiple]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js.ini
new file mode 100644
index 00000000000..1d740cfd1ca
--- /dev/null
+++ b/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js.ini
@@ -0,0 +1,3 @@
+[2d.transformation.setTransform.multiple.worker.html]
+ [2d]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
index 841bafc6eca..7df8f9458e9 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
@@ -1,3 +1,4 @@
[iframe_sandbox_popups_escaping-2.html]
+ expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index fe55ddae3f1..eacbe5794ea 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,4 +1,5 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
index 47b45e65a1c..3cdeb8ebcbc 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
@@ -1,9 +1,3 @@
[non-active-document.html]
[DOMParser]
expected: FAIL
-
- [createHTMLDocument]
- expected: FAIL
-
- [<template>]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
index aa36ec5b723..aac39182097 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
@@ -167,9 +167,6 @@
[multipart/form-data: character not in encoding in filename (formdata event)]
expected: FAIL
- [multipart/form-data: 0x00 in value (normal form)]
- expected: FAIL
-
[multipart/form-data: single quote in value (formdata event)]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini
index 155e1335aa4..f523b37700a 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini
@@ -173,8 +173,5 @@
[text/plain: Basic test (formdata event)]
expected: FAIL
- [text/plain: Basic File test (formdata event)]
- expected: FAIL
-
[text/plain: 0x00 in name (formdata event)]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini
index e21beb8eba0..094fb5842c0 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini
@@ -155,12 +155,6 @@
[application/x-www-form-urlencoded: 0x00 in name (formdata event)]
expected: FAIL
- [application/x-www-form-urlencoded: Basic test (formdata event)]
- expected: FAIL
-
- [application/x-www-form-urlencoded: 0x00 in value (normal form)]
- expected: FAIL
-
[application/x-www-form-urlencoded: backslash in value (normal form)]
expected: FAIL
@@ -173,8 +167,5 @@
[application/x-www-form-urlencoded: 0x00 in filename (formdata event)]
expected: FAIL
- [application/x-www-form-urlencoded: 0x00 in name (normal form)]
- expected: FAIL
-
[application/x-www-form-urlencoded: \\r\\n in filename (formdata event)]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/popovers/popover-types.html.ini b/tests/wpt/metadata/html/semantics/popovers/popover-types.html.ini
index 21598a8f1ec..597f4077508 100644
--- a/tests/wpt/metadata/html/semantics/popovers/popover-types.html.ini
+++ b/tests/wpt/metadata/html/semantics/popovers/popover-types.html.ini
@@ -1,3 +1,4 @@
[popover-types.html]
+ expected: ERROR
[manuals do not close popovers]
expected: FAIL
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini
deleted file mode 100644
index f9a4f08cd70..00000000000
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[module-tla-delayed.html]
- [document.write in an imported module]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
index e55f8f2ce3c..8845054116d 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
@@ -3,6 +3,3 @@
expected: TIMEOUT
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
-
- [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
index 1d71471b73c..4a48dd15a9d 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
@@ -1,7 +1,6 @@
[promise-rejection-events.html]
- expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
- expected: TIMEOUT
+ expected: FAIL
[unhandledrejection: from createImageBitmap which is UA triggered]
expected: FAIL
diff --git a/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini b/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini
index 71ca4ed5411..49b17a921b5 100644
--- a/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini
+++ b/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini
@@ -94,10 +94,10 @@
expected: FAIL
[mime-type 16 : text/html;charset=\x0bgbk]
- expected: FAIL
+ expected: TIMEOUT
[mime-type 17 : text/html;charset=\x0cgbk]
- expected: TIMEOUT
+ expected: NOTRUN
[mime-type 18 : text/html;\x0bcharset=gbk]
expected: NOTRUN
diff --git a/tests/wpt/metadata/resource-timing/response-status-code.html.ini b/tests/wpt/metadata/resource-timing/response-status-code.html.ini
index b84e3cf7b11..38df5f01300 100644
--- a/tests/wpt/metadata/resource-timing/response-status-code.html.ini
+++ b/tests/wpt/metadata/resource-timing/response-status-code.html.ini
@@ -265,10 +265,10 @@
expected: FAIL
[This test validates the response status of resources. 88]
- expected: TIMEOUT
+ expected: FAIL
[This test validates the response status of resources. 89]
- expected: NOTRUN
+ expected: TIMEOUT
[This test validates the response status of resources. 90]
expected: NOTRUN
diff --git a/tests/wpt/metadata/wasm/jsapi/functions/entry.html.ini b/tests/wpt/metadata/wasm/jsapi/functions/entry.html.ini
index 145d4a8fe37..2ab19558726 100644
--- a/tests/wpt/metadata/wasm/jsapi/functions/entry.html.ini
+++ b/tests/wpt/metadata/wasm/jsapi/functions/entry.html.ini
@@ -1,6 +1,7 @@
[entry.html]
+ expected: TIMEOUT
[Start function]
- expected: FAIL
+ expected: TIMEOUT
[Sanity check: this all works as expected synchronously]
expected: FAIL
diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
new file mode 100644
index 00000000000..c7946fc91b4
--- /dev/null
+++ b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
@@ -0,0 +1,4 @@
+[017.html]
+ expected: TIMEOUT
+ [origin of the script that invoked the method, about:blank]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/webmessaging/without-ports/018.html.ini b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini
new file mode 100644
index 00000000000..b7b36c1d3a4
--- /dev/null
+++ b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini
@@ -0,0 +1,4 @@
+[018.html]
+ expected: TIMEOUT
+ [origin of the script that invoked the method, javascript:]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini b/tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini
deleted file mode 100644
index aa6c9e5b826..00000000000
--- a/tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html]
- expected: TIMEOUT
- [StorageKey: test 3P about:blank window opened from a 3P iframe]
- expected: TIMEOUT
diff --git a/tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini b/tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini
new file mode 100644
index 00000000000..f78f699f620
--- /dev/null
+++ b/tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini
@@ -0,0 +1,3 @@
+[scrollBy.html]
+ [Ensure that the window.scrollBy function affects scroll position as expected]
+ expected: FAIL
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js
index 8f1103d8f4a..6e3a6efb12d 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js
@@ -1,4 +1,5 @@
-// META: title=WebCryptoAPI: encrypt() Using AES-GCM
+// META: title=WebCryptoAPI: encrypt() Using AES-GCM w/ 96-bit iv
+// META: script=aes_gcm_96_iv_fixtures.js
// META: script=aes_gcm_vectors.js
// META: script=aes.js
// META: timeout=long
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js
new file mode 100644
index 00000000000..92900fb13ae
--- /dev/null
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js
@@ -0,0 +1,7 @@
+// META: title=WebCryptoAPI: encrypt() Using AES-GCM w/ 256-bit iv
+// META: script=aes_gcm_256_iv_fixtures.js
+// META: script=aes_gcm_vectors.js
+// META: script=aes.js
+// META: timeout=long
+
+run_test();
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv_fixtures.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv_fixtures.js
new file mode 100644
index 00000000000..9cdbbbb7907
--- /dev/null
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv_fixtures.js
@@ -0,0 +1,210 @@
+function getFixtures() {
+ // Before we can really start, we need to fill a bunch of buffers with data
+ var plaintext = new Uint8Array([
+ 84, 104, 105, 115, 32, 115, 112, 101, 99, 105, 102, 105, 99, 97, 116, 105,
+ 111, 110, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, 32, 74, 97,
+ 118, 97, 83, 99, 114, 105, 112, 116, 32, 65, 80, 73, 32, 102, 111, 114, 32,
+ 112, 101, 114, 102, 111, 114, 109, 105, 110, 103, 32, 98, 97, 115, 105, 99,
+ 32, 99, 114, 121, 112, 116, 111, 103, 114, 97, 112, 104, 105, 99, 32, 111,
+ 112, 101, 114, 97, 116, 105, 111, 110, 115, 32, 105, 110, 32, 119, 101, 98,
+ 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 115, 44, 32, 115,
+ 117, 99, 104, 32, 97, 115, 32, 104, 97, 115, 104, 105, 110, 103, 44, 32,
+ 115, 105, 103, 110, 97, 116, 117, 114, 101, 32, 103, 101, 110, 101, 114, 97,
+ 116, 105, 111, 110, 32, 97, 110, 100, 32, 118, 101, 114, 105, 102, 105, 99,
+ 97, 116, 105, 111, 110, 44, 32, 97, 110, 100, 32, 101, 110, 99, 114, 121,
+ 112, 116, 105, 111, 110, 32, 97, 110, 100, 32, 100, 101, 99, 114, 121, 112,
+ 116, 105, 111, 110, 46, 32, 65, 100, 100, 105, 116, 105, 111, 110, 97, 108,
+ 108, 121, 44, 32, 105, 116, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115,
+ 32, 97, 110, 32, 65, 80, 73, 32, 102, 111, 114, 32, 97, 112, 112, 108, 105,
+ 99, 97, 116, 105, 111, 110, 115, 32, 116, 111, 32, 103, 101, 110, 101, 114,
+ 97, 116, 101, 32, 97, 110, 100, 47, 111, 114, 32, 109, 97, 110, 97, 103,
+ 101, 32, 116, 104, 101, 32, 107, 101, 121, 105, 110, 103, 32, 109, 97, 116,
+ 101, 114, 105, 97, 108, 32, 110, 101, 99, 101, 115, 115, 97, 114, 121, 32,
+ 116, 111, 32, 112, 101, 114, 102, 111, 114, 109, 32, 116, 104, 101, 115,
+ 101, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 115, 46, 32, 85, 115,
+ 101, 115, 32, 102, 111, 114, 32, 116, 104, 105, 115, 32, 65, 80, 73, 32,
+ 114, 97, 110, 103, 101, 32, 102, 114, 111, 109, 32, 117, 115, 101, 114, 32,
+ 111, 114, 32, 115, 101, 114, 118, 105, 99, 101, 32, 97, 117, 116, 104, 101,
+ 110, 116, 105, 99, 97, 116, 105, 111, 110, 44, 32, 100, 111, 99, 117, 109,
+ 101, 110, 116, 32, 111, 114, 32, 99, 111, 100, 101, 32, 115, 105, 103, 110,
+ 105, 110, 103, 44, 32, 97, 110, 100, 32, 116, 104, 101, 32, 99, 111, 110,
+ 102, 105, 100, 101, 110, 116, 105, 97, 108, 105, 116, 121, 32, 97, 110, 100,
+ 32, 105, 110, 116, 101, 103, 114, 105, 116, 121, 32, 111, 102, 32, 99, 111,
+ 109, 109, 117, 110, 105, 99, 97, 116, 105, 111, 110, 115, 46,
+ ]);
+
+ // We want some random key bytes of various sizes.
+ // These were randomly generated from a script.
+ var keyBytes = {
+ 128: new Uint8Array([
+ 222, 192, 212, 252, 191, 60, 71, 65, 200, 146, 218, 189, 28, 212, 192, 78,
+ ]),
+ 192: new Uint8Array([
+ 208, 238, 131, 65, 63, 68, 196, 63, 186, 208, 61, 207, 166, 18, 99, 152,
+ 29, 109, 221, 95, 240, 30, 28, 246,
+ ]),
+ 256: new Uint8Array([
+ 103, 105, 56, 35, 251, 29, 88, 7, 63, 145, 236, 233, 204, 58, 249, 16,
+ 229, 83, 38, 22, 164, 210, 123, 19, 235, 123, 116, 216, 0, 11, 191, 48,
+ ]),
+ };
+
+ // AES-GCM needs an IV of no more than 2^64 - 1 bytes. Arbitrary 32 bytes is okay then.
+ var iv = new Uint8Array([
+ 58, 146, 115, 42, 166, 234, 57, 191, 57, 134, 224, 199, 63, 169, 32, 0, 32,
+ 33, 117, 56, 94, 248, 173, 234, 194, 200, 115, 53, 235, 146, 141, 212,
+ ]);
+
+ // Authenticated encryption via AES-GCM requires additional data that
+ // will be checked. We use the ASCII encoded Editorial Note
+ // following the Abstract of the Web Cryptography API recommendation.
+ var additionalData = new Uint8Array([
+ 84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 55, 32, 102, 117, 114, 116,
+ 104, 101, 114, 32, 101, 100, 105, 116, 111, 114, 105, 97, 108, 32, 110, 111,
+ 116, 101, 115, 32, 105, 110, 32, 116, 104, 101, 32, 100, 111, 99, 117, 109,
+ 101, 110, 116, 46,
+ ]);
+
+ // The length of the tag defaults to 16 bytes (128 bit).
+ var tag = {
+ 128: new Uint8Array([
+ 194, 226, 198, 253, 239, 28, 197, 240, 123, 216, 176, 151, 239, 200, 184,
+ 183,
+ ]),
+ 192: new Uint8Array([
+ 183, 57, 32, 144, 164, 76, 121, 77, 58, 86, 62, 132, 53, 130, 96, 225,
+ ]),
+ 256: new Uint8Array([
+ 188, 239, 241, 48, 159, 21, 213, 0, 241, 42, 85, 76, 194, 28, 49, 60,
+ ]),
+ };
+
+ var tag_with_empty_ad = {
+ 128: new Uint8Array([
+ 222, 51, 11, 23, 36, 222, 250, 248, 27, 98, 30, 81, 150, 35, 220, 198,
+ ]),
+ 192: new Uint8Array([
+ 243, 11, 130, 112, 169, 239, 114, 238, 185, 219, 93, 1, 95, 108, 184, 183,
+ ]),
+ 256: new Uint8Array([
+ 244, 186, 86, 203, 154, 37, 191, 248, 246, 57, 139, 130, 224, 47, 217,
+ 238,
+ ]),
+ };
+
+ // Results. These were created using the Python cryptography module.
+
+ // AES-GCM produces ciphertext and a tag.
+ var ciphertext = {
+ 128: new Uint8Array([
+ 180, 241, 40, 183, 105, 52, 147, 238, 224, 175, 175, 236, 168, 244, 241,
+ 121, 9, 202, 225, 237, 56, 216, 253, 254, 186, 102, 111, 207, 228, 190,
+ 130, 177, 159, 246, 6, 53, 249, 113, 228, 254, 81, 126, 253, 191, 100, 43,
+ 251, 147, 107, 91, 166, 231, 201, 241, 180, 214, 112, 47, 123, 164, 186,
+ 134, 54, 65, 22, 181, 201, 82, 236, 59, 52, 139, 172, 39, 41, 89, 123, 62,
+ 102, 167, 82, 150, 250, 93, 96, 169, 135, 89, 245, 255, 164, 192, 169,
+ 159, 25, 16, 139, 145, 76, 4, 144, 131, 148, 197, 204, 46, 23, 110, 193,
+ 228, 127, 120, 242, 24, 54, 240, 181, 162, 98, 244, 249, 68, 134, 122,
+ 126, 151, 38, 108, 116, 68, 150, 109, 38, 194, 21, 159, 140, 205, 183, 35,
+ 97, 151, 186, 120, 145, 22, 235, 22, 210, 223, 187, 143, 162, 183, 93,
+ 196, 104, 51, 96, 53, 234, 250, 184, 76, 237, 157, 37, 203, 226, 87, 222,
+ 75, 240, 95, 218, 222, 64, 81, 165, 75, 201, 216, 190, 13, 116, 217, 69,
+ 66, 47, 161, 68, 247, 74, 253, 157, 181, 162, 121, 53, 32, 91, 124, 230,
+ 105, 224, 17, 187, 50, 61, 77, 103, 79, 71, 57, 163, 116, 234, 149, 27,
+ 105, 24, 31, 159, 3, 128, 130, 42, 94, 125, 200, 142, 251, 148, 201, 17,
+ 149, 232, 84, 50, 17, 18, 203, 186, 226, 164, 227, 202, 76, 65, 16, 163,
+ 224, 132, 52, 31, 101, 129, 72, 171, 159, 42, 177, 253, 98, 86, 201, 95,
+ 117, 62, 12, 205, 78, 36, 126, 196, 121, 89, 185, 37, 161, 66, 181, 117,
+ 186, 71, 124, 132, 110, 120, 27, 246, 163, 18, 13, 90, 200, 127, 82, 209,
+ 241, 170, 73, 247, 137, 96, 244, 254, 251, 119, 71, 156, 27, 107, 53, 33,
+ 45, 22, 0, 144, 48, 32, 11, 116, 21, 125, 246, 217, 171, 158, 224, 142,
+ 234, 141, 242, 168, 89, 154, 66, 227, 161, 182, 96, 1, 88, 78, 12, 7, 239,
+ 30, 206, 31, 89, 111, 107, 42, 37, 241, 148, 232, 1, 8, 251, 117, 146,
+ 183, 9, 48, 39, 94, 59, 70, 230, 26, 165, 97, 156, 140, 141, 31, 62, 10,
+ 206, 55, 48, 207, 0, 197, 202, 197, 108, 133, 175, 80, 4, 16, 154, 223,
+ 255, 4, 196, 188, 178, 240, 29, 13, 120, 5, 225, 202, 3, 35, 225, 158, 92,
+ 152, 73, 205, 107, 157, 224, 245, 99, 194, 171, 156, 245, 247, 183, 165,
+ 40, 62, 200, 110, 29, 151, 206, 100, 175, 88, 36, 242, 90, 4, 82, 73, 250,
+ 140, 245, 217, 9, 153, 35, 242, 206, 78, 197, 121, 115, 15, 80, 128, 101,
+ 191, 240, 91, 151, 249, 62, 62, 244, 18, 3, 17, 135, 222, 210, 93, 149,
+ 123,
+ ]),
+
+ 192: new Uint8Array([
+ 126, 160, 166, 112, 227, 212, 106, 186, 175, 70, 24, 28, 86, 149, 31, 154,
+ 156, 190, 244, 132, 44, 61, 149, 242, 105, 67, 17, 136, 7, 146, 153, 170,
+ 200, 214, 142, 205, 170, 225, 85, 44, 241, 159, 255, 234, 10, 13, 37, 48,
+ 255, 21, 141, 176, 60, 117, 73, 130, 247, 204, 144, 102, 167, 89, 203,
+ 235, 229, 129, 122, 253, 124, 179, 115, 118, 163, 157, 67, 141, 122, 146,
+ 209, 11, 112, 5, 230, 117, 123, 184, 243, 99, 83, 10, 31, 166, 96, 1, 121,
+ 44, 10, 241, 24, 43, 184, 187, 25, 239, 246, 176, 108, 230, 127, 25, 42,
+ 67, 202, 140, 179, 104, 159, 75, 103, 43, 248, 98, 166, 179, 67, 0, 163,
+ 227, 84, 40, 129, 227, 198, 205, 7, 156, 16, 185, 24, 166, 59, 218, 197,
+ 114, 74, 34, 126, 22, 226, 226, 85, 212, 69, 83, 163, 185, 68, 109, 182,
+ 54, 209, 237, 96, 184, 32, 53, 127, 175, 13, 146, 141, 115, 164, 184, 98,
+ 245, 174, 223, 46, 32, 167, 39, 103, 19, 210, 80, 131, 254, 103, 249, 247,
+ 29, 120, 31, 105, 241, 103, 169, 249, 93, 153, 74, 56, 53, 239, 157, 132,
+ 236, 169, 246, 242, 24, 113, 97, 128, 238, 152, 148, 31, 84, 8, 52, 105,
+ 198, 116, 103, 132, 48, 199, 23, 90, 24, 29, 63, 41, 117, 191, 57, 31,
+ 209, 128, 60, 119, 175, 84, 141, 177, 165, 169, 195, 35, 163, 105, 146,
+ 157, 209, 93, 149, 105, 160, 93, 231, 78, 201, 92, 235, 200, 89, 37, 50,
+ 181, 30, 213, 242, 59, 156, 219, 19, 158, 17, 224, 81, 108, 52, 87, 248,
+ 101, 23, 39, 107, 67, 151, 103, 230, 126, 202, 184, 118, 226, 18, 29, 93,
+ 37, 208, 40, 82, 113, 35, 157, 145, 152, 50, 253, 140, 47, 141, 192, 1,
+ 148, 114, 40, 10, 112, 79, 227, 16, 105, 247, 31, 49, 102, 195, 75, 183,
+ 172, 254, 188, 42, 89, 77, 38, 104, 1, 180, 106, 61, 71, 70, 35, 160, 103,
+ 101, 244, 26, 226, 37, 159, 155, 4, 107, 222, 219, 136, 37, 24, 246, 44,
+ 23, 44, 248, 132, 108, 59, 179, 99, 145, 132, 82, 53, 203, 111, 150, 55,
+ 123, 51, 214, 165, 108, 124, 179, 131, 174, 139, 224, 114, 96, 218, 181,
+ 243, 128, 198, 98, 115, 92, 95, 165, 23, 229, 108, 146, 14, 244, 162, 37,
+ 85, 201, 33, 44, 92, 106, 112, 185, 16, 189, 42, 114, 109, 59, 124, 131,
+ 16, 211, 31, 97, 29, 135, 61, 150, 75, 250, 207, 129, 38, 205, 187, 186,
+ 55, 207, 232, 24, 48, 232, 49, 226, 16, 12, 27, 70, 31, 124, 128, 218,
+ 100, 91, 200, 184, 78, 252, 100, 235, 62, 43, 69, 214, 163, 65, 14, 44,
+ 180,
+ ]),
+
+ 256: new Uint8Array([
+ 8, 97, 235, 113, 70, 32, 135, 131, 210, 209, 124, 160, 255, 182, 9, 29,
+ 125, 193, 27, 240, 129, 46, 2, 137, 169, 142, 61, 7, 145, 54, 170, 207,
+ 159, 111, 39, 95, 87, 63, 162, 27, 6, 18, 219, 215, 116, 34, 90, 57, 114,
+ 244, 102, 145, 67, 6, 51, 152, 247, 165, 242, 116, 100, 219, 177, 72, 177,
+ 17, 110, 67, 93, 219, 100, 217, 20, 207, 89, 154, 45, 37, 105, 83, 67,
+ 162, 140, 235, 129, 40, 177, 202, 174, 54, 148, 55, 156, 193, 232, 249,
+ 134, 163, 195, 51, 114, 116, 65, 38, 73, 99, 96, 249, 224, 69, 17, 119,
+ 186, 188, 181, 43, 78, 156, 76, 138, 226, 63, 5, 248, 9, 94, 26, 1, 2,
+ 235, 39, 174, 74, 47, 183, 22, 40, 47, 47, 13, 100, 119, 12, 67, 178, 184,
+ 56, 167, 238, 143, 13, 44, 208, 185, 151, 108, 6, 17, 52, 122, 182, 210,
+ 207, 42, 219, 37, 74, 94, 126, 36, 249, 37, 32, 4, 218, 44, 238, 69, 56,
+ 219, 31, 77, 173, 46, 187, 103, 36, 112, 213, 252, 40, 87, 164, 240, 163,
+ 159, 32, 129, 125, 178, 108, 47, 28, 31, 36, 42, 115, 36, 14, 145, 195,
+ 156, 191, 46, 163, 249, 181, 31, 90, 73, 30, 72, 57, 223, 63, 60, 79, 140,
+ 14, 117, 31, 145, 222, 156, 121, 237, 32, 145, 143, 96, 12, 254, 35, 21,
+ 21, 59, 168, 171, 154, 217, 0, 59, 202, 175, 103, 214, 192, 175, 26, 18,
+ 43, 54, 176, 222, 75, 22, 7, 122, 253, 224, 145, 61, 42, 208, 73, 237, 84,
+ 141, 209, 213, 228, 46, 244, 59, 9, 68, 6, 35, 88, 189, 10, 62, 9, 85, 28,
+ 44, 82, 19, 153, 160, 178, 240, 56, 160, 244, 201, 173, 77, 61, 20, 227,
+ 30, 180, 167, 16, 105, 185, 193, 95, 207, 41, 23, 134, 78, 198, 182, 93,
+ 24, 89, 247, 231, 75, 233, 194, 137, 242, 114, 194, 190, 130, 138, 238,
+ 94, 137, 193, 194, 115, 137, 190, 207, 169, 83, 155, 14, 210, 160, 129,
+ 195, 161, 234, 221, 255, 114, 67, 98, 12, 93, 41, 65, 183, 244, 103, 247,
+ 101, 82, 246, 125, 87, 125, 78, 21, 186, 102, 205, 20, 40, 32, 201, 174,
+ 15, 52, 240, 217, 180, 162, 108, 6, 211, 41, 18, 135, 232, 184, 18, 188,
+ 169, 157, 190, 76, 166, 75, 176, 127, 39, 251, 22, 203, 153, 80, 49, 241,
+ 124, 137, 151, 123, 204, 43, 159, 190, 177, 196, 18, 117, 169, 46, 152,
+ 251, 45, 25, 164, 27, 145, 214, 228, 55, 15, 2, 131, 216, 80, 255, 204,
+ 175, 100, 59, 145, 15, 103, 40, 33, 45, 255, 200, 254, 172, 138, 20, 58,
+ 87, 182, 192, 148, 219, 41, 88, 230, 229, 70, 249,
+ ]),
+ };
+
+ return {
+ plaintext,
+ keyBytes,
+ iv,
+ additionalData,
+ tag,
+ tag_with_empty_ad,
+ ciphertext,
+ };
+}
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_96_iv_fixtures.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_96_iv_fixtures.js
new file mode 100644
index 00000000000..bb00e2d7dd9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_96_iv_fixtures.js
@@ -0,0 +1,209 @@
+function getFixtures() {
+ // Before we can really start, we need to fill a bunch of buffers with data
+ var plaintext = new Uint8Array([
+ 84, 104, 105, 115, 32, 115, 112, 101, 99, 105, 102, 105, 99, 97, 116, 105,
+ 111, 110, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, 32, 74, 97,
+ 118, 97, 83, 99, 114, 105, 112, 116, 32, 65, 80, 73, 32, 102, 111, 114, 32,
+ 112, 101, 114, 102, 111, 114, 109, 105, 110, 103, 32, 98, 97, 115, 105, 99,
+ 32, 99, 114, 121, 112, 116, 111, 103, 114, 97, 112, 104, 105, 99, 32, 111,
+ 112, 101, 114, 97, 116, 105, 111, 110, 115, 32, 105, 110, 32, 119, 101, 98,
+ 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 115, 44, 32, 115,
+ 117, 99, 104, 32, 97, 115, 32, 104, 97, 115, 104, 105, 110, 103, 44, 32,
+ 115, 105, 103, 110, 97, 116, 117, 114, 101, 32, 103, 101, 110, 101, 114, 97,
+ 116, 105, 111, 110, 32, 97, 110, 100, 32, 118, 101, 114, 105, 102, 105, 99,
+ 97, 116, 105, 111, 110, 44, 32, 97, 110, 100, 32, 101, 110, 99, 114, 121,
+ 112, 116, 105, 111, 110, 32, 97, 110, 100, 32, 100, 101, 99, 114, 121, 112,
+ 116, 105, 111, 110, 46, 32, 65, 100, 100, 105, 116, 105, 111, 110, 97, 108,
+ 108, 121, 44, 32, 105, 116, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115,
+ 32, 97, 110, 32, 65, 80, 73, 32, 102, 111, 114, 32, 97, 112, 112, 108, 105,
+ 99, 97, 116, 105, 111, 110, 115, 32, 116, 111, 32, 103, 101, 110, 101, 114,
+ 97, 116, 101, 32, 97, 110, 100, 47, 111, 114, 32, 109, 97, 110, 97, 103,
+ 101, 32, 116, 104, 101, 32, 107, 101, 121, 105, 110, 103, 32, 109, 97, 116,
+ 101, 114, 105, 97, 108, 32, 110, 101, 99, 101, 115, 115, 97, 114, 121, 32,
+ 116, 111, 32, 112, 101, 114, 102, 111, 114, 109, 32, 116, 104, 101, 115,
+ 101, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 115, 46, 32, 85, 115,
+ 101, 115, 32, 102, 111, 114, 32, 116, 104, 105, 115, 32, 65, 80, 73, 32,
+ 114, 97, 110, 103, 101, 32, 102, 114, 111, 109, 32, 117, 115, 101, 114, 32,
+ 111, 114, 32, 115, 101, 114, 118, 105, 99, 101, 32, 97, 117, 116, 104, 101,
+ 110, 116, 105, 99, 97, 116, 105, 111, 110, 44, 32, 100, 111, 99, 117, 109,
+ 101, 110, 116, 32, 111, 114, 32, 99, 111, 100, 101, 32, 115, 105, 103, 110,
+ 105, 110, 103, 44, 32, 97, 110, 100, 32, 116, 104, 101, 32, 99, 111, 110,
+ 102, 105, 100, 101, 110, 116, 105, 97, 108, 105, 116, 121, 32, 97, 110, 100,
+ 32, 105, 110, 116, 101, 103, 114, 105, 116, 121, 32, 111, 102, 32, 99, 111,
+ 109, 109, 117, 110, 105, 99, 97, 116, 105, 111, 110, 115, 46,
+ ]);
+
+ // We want some random key bytes of various sizes.
+ // These were randomly generated from a script.
+ var keyBytes = {
+ 128: new Uint8Array([
+ 222, 192, 212, 252, 191, 60, 71, 65, 200, 146, 218, 189, 28, 212, 192, 78,
+ ]),
+ 192: new Uint8Array([
+ 208, 238, 131, 65, 63, 68, 196, 63, 186, 208, 61, 207, 166, 18, 99, 152,
+ 29, 109, 221, 95, 240, 30, 28, 246,
+ ]),
+ 256: new Uint8Array([
+ 103, 105, 56, 35, 251, 29, 88, 7, 63, 145, 236, 233, 204, 58, 249, 16,
+ 229, 83, 38, 22, 164, 210, 123, 19, 235, 123, 116, 216, 0, 11, 191, 48,
+ ]),
+ };
+
+ // AES-GCM specification recommends that the IV should be 96 bits long.
+ var iv = new Uint8Array([
+ 58, 146, 115, 42, 166, 234, 57, 191, 57, 134, 224, 199,
+ ]);
+
+ // Authenticated encryption via AES-GCM requires additional data that
+ // will be checked. We use the ASCII encoded Editorial Note
+ // following the Abstract of the Web Cryptography API recommendation.
+ var additionalData = new Uint8Array([
+ 84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 55, 32, 102, 117, 114, 116,
+ 104, 101, 114, 32, 101, 100, 105, 116, 111, 114, 105, 97, 108, 32, 110, 111,
+ 116, 101, 115, 32, 105, 110, 32, 116, 104, 101, 32, 100, 111, 99, 117, 109,
+ 101, 110, 116, 46,
+ ]);
+
+ // The length of the tag defaults to 16 bytes (128 bit).
+ var tag = {
+ 128: new Uint8Array([
+ 180, 165, 14, 180, 121, 113, 220, 168, 254, 117, 18, 66, 110, 98, 146,
+ 240,
+ ]),
+ 192: new Uint8Array([
+ 43, 102, 63, 121, 1, 120, 252, 2, 95, 149, 99, 207, 161, 10, 139, 159,
+ ]),
+ 256: new Uint8Array([
+ 53, 0, 70, 11, 217, 64, 250, 241, 175, 160, 37, 78, 92, 160, 107, 38,
+ ]),
+ };
+
+ var tag_with_empty_ad = {
+ 128: new Uint8Array([
+ 168, 116, 195, 94, 178, 179, 227, 160, 158, 207, 188, 132, 23, 137, 246,
+ 129,
+ ]),
+ 192: new Uint8Array([
+ 111, 84, 157, 153, 12, 219, 247, 161, 220, 24, 0, 74, 203, 228, 83, 201,
+ ]),
+ 256: new Uint8Array([
+ 125, 85, 225, 240, 220, 112, 144, 9, 168, 179, 251, 128, 126, 147, 131,
+ 244,
+ ]),
+ };
+
+ // Results. These were created using OpenSSL.
+
+ // AES-GCM produces ciphertext and a tag.
+ var ciphertext = {
+ 128: new Uint8Array([
+ 46, 244, 139, 198, 120, 180, 9, 39, 83, 58, 203, 107, 69, 71, 8, 165, 132,
+ 200, 94, 31, 228, 120, 170, 81, 241, 29, 38, 175, 99, 215, 241, 157, 144,
+ 97, 35, 42, 36, 231, 2, 94, 214, 140, 67, 48, 189, 242, 21, 208, 110, 179,
+ 30, 90, 181, 105, 242, 17, 244, 42, 42, 36, 125, 228, 82, 250, 87, 199,
+ 95, 168, 210, 57, 174, 20, 220, 188, 107, 65, 242, 43, 217, 122, 145, 160,
+ 100, 139, 54, 135, 175, 139, 115, 89, 15, 236, 234, 83, 2, 135, 51, 125,
+ 63, 168, 184, 235, 148, 68, 132, 124, 166, 171, 53, 68, 94, 187, 31, 68,
+ 119, 47, 252, 73, 63, 138, 154, 84, 167, 0, 54, 33, 11, 200, 22, 91, 245,
+ 62, 64, 192, 7, 180, 210, 52, 233, 23, 24, 181, 50, 230, 63, 118, 228, 24,
+ 1, 242, 75, 62, 196, 222, 122, 154, 227, 125, 89, 73, 112, 100, 154, 249,
+ 61, 141, 126, 145, 46, 247, 102, 242, 62, 148, 94, 172, 128, 181, 110, 6,
+ 7, 209, 58, 222, 51, 169, 83, 189, 200, 47, 22, 80, 49, 169, 227, 245,
+ 165, 24, 96, 152, 228, 14, 252, 199, 193, 148, 46, 84, 49, 248, 198, 7, 0,
+ 134, 255, 174, 151, 103, 48, 154, 178, 198, 103, 45, 226, 118, 19, 41, 85,
+ 2, 55, 71, 7, 6, 0, 24, 150, 145, 227, 162, 126, 102, 248, 134, 116, 174,
+ 215, 217, 166, 160, 140, 129, 21, 220, 131, 110, 242, 94, 249, 103, 151,
+ 154, 81, 225, 35, 111, 131, 129, 111, 172, 214, 168, 30, 169, 71, 210, 64,
+ 68, 56, 228, 223, 248, 233, 234, 140, 86, 145, 121, 29, 232, 55, 165, 61,
+ 175, 147, 66, 33, 92, 6, 209, 241, 149, 73, 77, 9, 104, 2, 154, 247, 92,
+ 87, 159, 191, 113, 82, 122, 148, 89, 28, 122, 111, 93, 110, 60, 42, 34,
+ 70, 161, 14, 50, 153, 238, 189, 173, 99, 10, 118, 252, 1, 28, 67, 151,
+ 114, 46, 78, 181, 78, 233, 183, 6, 254, 57, 29, 53, 118, 175, 80, 97, 156,
+ 237, 219, 196, 71, 80, 161, 248, 139, 96, 124, 181, 154, 124, 149, 219,
+ 47, 90, 11, 98, 63, 21, 64, 144, 77, 161, 204, 127, 209, 209, 7, 86, 65,
+ 39, 142, 251, 183, 43, 227, 120, 155, 72, 70, 204, 89, 227, 199, 203, 28,
+ 128, 23, 104, 188, 215, 32, 190, 18, 156, 57, 105, 7, 179, 155, 136, 236,
+ 82, 173, 156, 170, 124, 210, 22, 11, 27, 182, 236, 109, 200, 172, 227, 72,
+ 37, 1, 175, 9, 214, 227, 23, 141, 169, 215, 77, 134, 76, 229, 169, 241,
+ 116, 222, 157, 77, 158, 213, 118, 223, 17, 31, 212, 97, 21, 237, 83, 2,
+ 218, 239, 59, 147, 30, 169, 97, 12,
+ ]),
+
+ 192: new Uint8Array([
+ 129, 16, 61, 38, 99, 56, 226, 139, 71, 251, 211, 15, 91, 152, 159, 219,
+ 112, 147, 210, 73, 97, 204, 203, 240, 183, 243, 104, 241, 37, 67, 169,
+ 198, 56, 76, 96, 202, 250, 212, 177, 157, 93, 115, 247, 176, 19, 3, 229,
+ 102, 75, 200, 252, 222, 197, 58, 31, 44, 123, 151, 9, 191, 88, 123, 35,
+ 48, 47, 25, 149, 35, 191, 219, 223, 94, 251, 152, 109, 171, 225, 31, 236,
+ 252, 223, 174, 128, 238, 173, 32, 32, 79, 22, 100, 112, 215, 153, 128, 63,
+ 158, 247, 18, 215, 81, 247, 208, 91, 28, 223, 222, 170, 9, 135, 210, 143,
+ 47, 247, 132, 183, 252, 84, 19, 78, 85, 17, 215, 20, 51, 32, 124, 149,
+ 172, 129, 202, 161, 217, 207, 24, 45, 177, 11, 106, 17, 108, 17, 12, 6,
+ 62, 90, 132, 2, 54, 96, 90, 30, 239, 216, 173, 76, 67, 7, 221, 62, 124,
+ 228, 156, 243, 31, 111, 160, 192, 188, 87, 107, 182, 138, 95, 122, 152,
+ 202, 51, 118, 100, 124, 67, 220, 116, 52, 99, 15, 39, 2, 14, 209, 173,
+ 119, 88, 6, 174, 106, 236, 150, 28, 189, 112, 161, 224, 186, 58, 110, 91,
+ 54, 211, 132, 149, 7, 188, 77, 232, 118, 197, 43, 107, 101, 179, 44, 195,
+ 159, 4, 124, 5, 30, 48, 227, 251, 199, 72, 98, 177, 206, 234, 228, 58,
+ 191, 150, 28, 211, 29, 182, 138, 141, 249, 152, 142, 244, 203, 210, 128,
+ 143, 244, 44, 187, 251, 221, 101, 152, 31, 119, 194, 51, 27, 167, 215,
+ 122, 244, 193, 224, 191, 198, 210, 2, 143, 185, 207, 145, 228, 193, 153,
+ 207, 119, 167, 75, 145, 43, 17, 1, 42, 146, 164, 21, 15, 164, 221, 216,
+ 140, 122, 248, 49, 19, 246, 84, 214, 176, 226, 118, 140, 130, 123, 163,
+ 217, 61, 198, 243, 182, 217, 52, 127, 190, 127, 135, 18, 239, 163, 195,
+ 102, 136, 227, 128, 38, 244, 49, 208, 229, 249, 126, 157, 100, 72, 246,
+ 10, 102, 163, 241, 155, 112, 165, 95, 32, 61, 66, 24, 233, 123, 236, 190,
+ 124, 214, 65, 135, 114, 118, 122, 222, 196, 47, 120, 120, 64, 117, 253,
+ 165, 28, 17, 152, 104, 119, 10, 53, 140, 109, 79, 246, 246, 28, 104, 228,
+ 175, 102, 71, 246, 183, 79, 30, 31, 186, 32, 64, 146, 72, 228, 1, 175,
+ 252, 115, 254, 95, 66, 87, 196, 134, 41, 115, 165, 206, 253, 245, 147,
+ 137, 163, 230, 235, 238, 77, 218, 74, 157, 65, 97, 43, 198, 130, 190, 195,
+ 142, 22, 166, 4, 179, 184, 167, 254, 156, 243, 38, 46, 66, 68, 252, 252,
+ 161, 209, 83, 177, 128, 115, 92, 158, 182, 177, 185, 23, 39, 138, 245, 29,
+ 216, 17, 178, 142, 225, 135, 8, 115,
+ ]),
+
+ 256: new Uint8Array([
+ 191, 72, 167, 1, 122, 218, 148, 218, 15, 239, 202, 129, 96, 108, 229, 157,
+ 138, 161, 232, 71, 80, 188, 118, 61, 75, 105, 120, 201, 14, 102, 102, 240,
+ 111, 131, 180, 83, 95, 73, 2, 138, 205, 56, 9, 137, 227, 235, 73, 71, 200,
+ 62, 246, 0, 223, 209, 3, 255, 113, 112, 63, 103, 41, 154, 77, 13, 149, 89,
+ 94, 79, 132, 193, 114, 40, 158, 33, 55, 242, 130, 109, 136, 69, 124, 130,
+ 150, 40, 69, 211, 224, 154, 209, 243, 65, 58, 230, 253, 31, 21, 72, 102,
+ 18, 250, 139, 230, 235, 11, 108, 184, 133, 108, 181, 138, 188, 189, 91,
+ 91, 115, 216, 68, 9, 229, 30, 154, 132, 118, 219, 183, 235, 177, 197, 221,
+ 58, 13, 90, 126, 198, 74, 87, 162, 226, 7, 51, 184, 15, 209, 81, 86, 138,
+ 169, 154, 12, 206, 58, 187, 228, 177, 68, 65, 62, 68, 141, 93, 241, 105,
+ 29, 239, 20, 102, 222, 49, 209, 18, 162, 247, 200, 240, 122, 244, 204,
+ 148, 67, 58, 118, 164, 95, 230, 68, 242, 203, 138, 145, 132, 6, 224, 206,
+ 234, 131, 183, 137, 249, 2, 11, 254, 123, 235, 70, 14, 136, 207, 76, 57,
+ 22, 38, 49, 197, 219, 123, 43, 241, 191, 64, 211, 152, 178, 140, 165, 1,
+ 189, 52, 79, 184, 213, 56, 215, 182, 27, 27, 70, 243, 101, 255, 50, 108,
+ 210, 105, 13, 22, 218, 176, 238, 36, 113, 251, 18, 218, 138, 214, 193, 21,
+ 122, 224, 125, 118, 134, 161, 174, 130, 86, 233, 149, 151, 33, 31, 88, 63,
+ 91, 63, 209, 145, 158, 109, 42, 176, 43, 23, 151, 49, 101, 199, 35, 101,
+ 158, 139, 198, 219, 209, 125, 221, 205, 99, 69, 142, 165, 139, 110, 220,
+ 184, 226, 238, 149, 161, 175, 171, 167, 170, 65, 19, 156, 166, 219, 231,
+ 87, 20, 226, 58, 210, 134, 110, 160, 176, 118, 250, 73, 86, 213, 116, 53,
+ 114, 24, 101, 34, 185, 59, 237, 47, 39, 206, 67, 12, 74, 236, 130, 7, 249,
+ 217, 203, 245, 122, 14, 230, 53, 203, 126, 93, 131, 51, 2, 0, 231, 161,
+ 111, 42, 126, 173, 121, 80, 179, 59, 186, 133, 236, 252, 188, 149, 99,
+ 221, 182, 55, 5, 38, 83, 132, 43, 123, 233, 174, 208, 140, 165, 77, 1,
+ 202, 46, 6, 183, 207, 246, 125, 37, 110, 226, 61, 155, 194, 198, 153, 107,
+ 1, 8, 0, 23, 124, 18, 4, 144, 235, 146, 77, 220, 123, 152, 114, 219, 127,
+ 59, 126, 10, 79, 106, 198, 11, 27, 111, 11, 155, 1, 137, 38, 74, 3, 248,
+ 225, 221, 203, 86, 4, 148, 25, 88, 144, 185, 38, 114, 139, 48, 74, 82,
+ 172, 36, 115, 193, 223, 220, 144, 69, 91, 5, 83, 56, 138, 63,
+ ]),
+ };
+
+ return {
+ plaintext,
+ keyBytes,
+ iv,
+ additionalData,
+ tag,
+ tag_with_empty_ad,
+ ciphertext,
+ };
+}
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js
index bc406f8f0ef..965fe9564d4 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js
@@ -1,4 +1,3 @@
-
// aes_gcm_vectors.js
// The following function returns an array of test vectors
@@ -12,200 +11,15 @@
// plaintext - the text to encrypt
// result - the expected result (usually just ciphertext, sometimes with added authentication)
function getTestVectors() {
- // Before we can really start, we need to fill a bunch of buffers with data
- var plaintext = new Uint8Array([84, 104, 105, 115, 32, 115,
- 112, 101, 99, 105, 102, 105, 99, 97, 116, 105, 111, 110,
- 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, 32,
- 74, 97, 118, 97, 83, 99, 114, 105, 112, 116, 32, 65, 80,
- 73, 32, 102, 111, 114, 32, 112, 101, 114, 102, 111, 114,
- 109, 105, 110, 103, 32, 98, 97, 115, 105, 99, 32, 99, 114,
- 121, 112, 116, 111, 103, 114, 97, 112, 104, 105, 99, 32,
- 111, 112, 101, 114, 97, 116, 105, 111, 110, 115, 32, 105,
- 110, 32, 119, 101, 98, 32, 97, 112, 112, 108, 105, 99, 97,
- 116, 105, 111, 110, 115, 44, 32, 115, 117, 99, 104, 32, 97,
- 115, 32, 104, 97, 115, 104, 105, 110, 103, 44, 32, 115,
- 105, 103, 110, 97, 116, 117, 114, 101, 32, 103, 101, 110,
- 101, 114, 97, 116, 105, 111, 110, 32, 97, 110, 100, 32,
- 118, 101, 114, 105, 102, 105, 99, 97, 116, 105, 111, 110,
- 44, 32, 97, 110, 100, 32, 101, 110, 99, 114, 121, 112,
- 116, 105, 111, 110, 32, 97, 110, 100, 32, 100, 101, 99,
- 114, 121, 112, 116, 105, 111, 110, 46, 32, 65, 100, 100,
- 105, 116, 105, 111, 110, 97, 108, 108, 121, 44, 32, 105,
- 116, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97,
- 110, 32, 65, 80, 73, 32, 102, 111, 114, 32, 97, 112, 112,
- 108, 105, 99, 97, 116, 105, 111, 110, 115, 32, 116, 111,
- 32, 103, 101, 110, 101, 114, 97, 116, 101, 32, 97, 110,
- 100, 47, 111, 114, 32, 109, 97, 110, 97, 103, 101, 32, 116,
- 104, 101, 32, 107, 101, 121, 105, 110, 103, 32, 109, 97,
- 116, 101, 114, 105, 97, 108, 32, 110, 101, 99, 101, 115,
- 115, 97, 114, 121, 32, 116, 111, 32, 112, 101, 114, 102,
- 111, 114, 109, 32, 116, 104, 101, 115, 101, 32, 111, 112,
- 101, 114, 97, 116, 105, 111, 110, 115, 46, 32, 85, 115,
- 101, 115, 32, 102, 111, 114, 32, 116, 104, 105, 115, 32,
- 65, 80, 73, 32, 114, 97, 110, 103, 101, 32, 102, 114, 111,
- 109, 32, 117, 115, 101, 114, 32, 111, 114, 32, 115, 101,
- 114, 118, 105, 99, 101, 32, 97, 117, 116, 104, 101, 110,
- 116, 105, 99, 97, 116, 105, 111, 110, 44, 32, 100, 111,
- 99, 117, 109, 101, 110, 116, 32, 111, 114, 32, 99, 111,
- 100, 101, 32, 115, 105, 103, 110, 105, 110, 103, 44, 32,
- 97, 110, 100, 32, 116, 104, 101, 32, 99, 111, 110, 102,
- 105, 100, 101, 110, 116, 105, 97, 108, 105, 116, 121, 32,
- 97, 110, 100, 32, 105, 110, 116, 101, 103, 114, 105, 116,
- 121, 32, 111, 102, 32, 99, 111, 109, 109, 117, 110, 105,
- 99, 97, 116, 105, 111, 110, 115, 46]);
-
- // We want some random key bytes of various sizes.
- // These were randomly generated from a script.
- var keyBytes = {
- 128: new Uint8Array([222, 192, 212, 252, 191, 60, 71,
- 65, 200, 146, 218, 189, 28, 212, 192, 78]),
- 192: new Uint8Array([208, 238, 131, 65, 63, 68, 196, 63, 186, 208,
- 61, 207, 166, 18, 99, 152, 29, 109, 221, 95, 240, 30, 28, 246]),
- 256: new Uint8Array([103, 105, 56, 35, 251, 29, 88, 7, 63, 145, 236,
- 233, 204, 58, 249, 16, 229, 83, 38, 22, 164, 210, 123, 19, 235, 123, 116,
- 216, 0, 11, 191, 48])
- }
-
- // AES-GCM needs an IV of no more than 2^64 - 1 bytes. Well, 32 bytes is okay then.
- var iv = new Uint8Array([58, 146, 115, 42, 166, 234, 57,
- 191, 57, 134, 224, 199, 63, 169, 32, 0, 32, 33, 117, 56,
- 94, 248, 173, 234, 194, 200, 115, 53, 235, 146, 141, 212]);
-
- // Authenticated encryption via AES-GCM requires additional data that
- // will be checked. We use the ASCII encoded Editorial Note
- // following the Abstract of the Web Cryptography API recommendation.
- var additionalData = new Uint8Array([84, 104, 101, 114, 101,
- 32, 97, 114, 101, 32, 55, 32, 102, 117, 114, 116, 104, 101,
- 114, 32, 101, 100, 105, 116, 111, 114, 105, 97, 108, 32,
- 110, 111, 116, 101, 115, 32, 105, 110, 32, 116, 104, 101,
- 32, 100, 111, 99, 117, 109, 101, 110, 116, 46]);
-
- // The length of the tag defaults to 16 bytes (128 bit).
- var tag = {
- 128: new Uint8Array([194, 226, 198, 253, 239, 28,
- 197, 240, 123, 216, 176, 151, 239, 200, 184, 183]),
- 192: new Uint8Array([183, 57, 32, 144, 164, 76, 121, 77, 58,
- 86, 62, 132, 53, 130, 96, 225]),
- 256: new Uint8Array([188, 239, 241, 48, 159, 21, 213, 0, 241,
- 42, 85, 76, 194, 28, 49, 60])
- };
-
- var tag_with_empty_ad = {
- 128: new Uint8Array([222, 51, 11, 23, 36, 222, 250, 248, 27, 98, 30, 81, 150, 35, 220, 198]),
- 192: new Uint8Array([243, 11, 130, 112, 169, 239, 114, 238, 185, 219, 93, 1, 95, 108, 184, 183]),
- 256: new Uint8Array([244, 186, 86, 203, 154, 37, 191, 248, 246, 57, 139, 130, 224, 47, 217, 238])
- };
-
-
- // Results. These were created using the Python cryptography module.
-
- // AES-GCM produces ciphertext and a tag.
- var ciphertext = {
- 128: new Uint8Array([180, 241, 40, 183, 105,
- 52, 147, 238, 224, 175, 175, 236, 168, 244, 241, 121, 9,
- 202, 225, 237, 56, 216, 253, 254, 186, 102, 111, 207, 228,
- 190, 130, 177, 159, 246, 6, 53, 249, 113, 228, 254, 81,
- 126, 253, 191, 100, 43, 251, 147, 107, 91, 166, 231, 201,
- 241, 180, 214, 112, 47, 123, 164, 186, 134, 54, 65, 22,
- 181, 201, 82, 236, 59, 52, 139, 172, 39, 41, 89, 123, 62,
- 102, 167, 82, 150, 250, 93, 96, 169, 135, 89, 245, 255,
- 164, 192, 169, 159, 25, 16, 139, 145, 76, 4, 144, 131,
- 148, 197, 204, 46, 23, 110, 193, 228, 127, 120, 242, 24,
- 54, 240, 181, 162, 98, 244, 249, 68, 134, 122, 126, 151,
- 38, 108, 116, 68, 150, 109, 38, 194, 21, 159, 140, 205,
- 183, 35, 97, 151, 186, 120, 145, 22, 235, 22, 210, 223,
- 187, 143, 162, 183, 93, 196, 104, 51, 96, 53, 234, 250,
- 184, 76, 237, 157, 37, 203, 226, 87, 222, 75, 240, 95, 218,
- 222, 64, 81, 165, 75, 201, 216, 190, 13, 116, 217, 69, 66,
- 47, 161, 68, 247, 74, 253, 157, 181, 162, 121, 53, 32, 91,
- 124, 230, 105, 224, 17, 187, 50, 61, 77, 103, 79, 71, 57,
- 163, 116, 234, 149, 27, 105, 24, 31, 159, 3, 128, 130, 42,
- 94, 125, 200, 142, 251, 148, 201, 17, 149, 232, 84, 50, 17,
- 18, 203, 186, 226, 164, 227, 202, 76, 65, 16, 163, 224,
- 132, 52, 31, 101, 129, 72, 171, 159, 42, 177, 253, 98, 86,
- 201, 95, 117, 62, 12, 205, 78, 36, 126, 196, 121, 89, 185,
- 37, 161, 66, 181, 117, 186, 71, 124, 132, 110, 120, 27,
- 246, 163, 18, 13, 90, 200, 127, 82, 209, 241, 170, 73, 247,
- 137, 96, 244, 254, 251, 119, 71, 156, 27, 107, 53, 33, 45,
- 22, 0, 144, 48, 32, 11, 116, 21, 125, 246, 217, 171, 158,
- 224, 142, 234, 141, 242, 168, 89, 154, 66, 227, 161, 182,
- 96, 1, 88, 78, 12, 7, 239, 30, 206, 31, 89, 111, 107, 42,
- 37, 241, 148, 232, 1, 8, 251, 117, 146, 183, 9, 48, 39, 94,
- 59, 70, 230, 26, 165, 97, 156, 140, 141, 31, 62, 10, 206,
- 55, 48, 207, 0, 197, 202, 197, 108, 133, 175, 80, 4, 16,
- 154, 223, 255, 4, 196, 188, 178, 240, 29, 13, 120, 5, 225,
- 202, 3, 35, 225, 158, 92, 152, 73, 205, 107, 157, 224, 245,
- 99, 194, 171, 156, 245, 247, 183, 165, 40, 62, 200, 110,
- 29, 151, 206, 100, 175, 88, 36, 242, 90, 4, 82, 73, 250,
- 140, 245, 217, 9, 153, 35, 242, 206, 78, 197, 121, 115, 15,
- 80, 128, 101, 191, 240, 91, 151, 249, 62, 62, 244, 18, 3,
- 17, 135, 222, 210, 93, 149, 123]),
-
- 192: new Uint8Array([126, 160, 166, 112, 227, 212, 106,
- 186, 175, 70, 24, 28, 86, 149, 31, 154, 156, 190, 244, 132, 44, 61, 149,
- 242, 105, 67, 17, 136, 7, 146, 153, 170, 200, 214, 142, 205, 170, 225,
- 85, 44, 241, 159, 255, 234, 10, 13, 37, 48, 255, 21, 141, 176, 60, 117,
- 73, 130, 247, 204, 144, 102, 167, 89, 203, 235, 229, 129, 122, 253, 124,
- 179, 115, 118, 163, 157, 67, 141, 122, 146, 209, 11, 112, 5, 230, 117,
- 123, 184, 243, 99, 83, 10, 31, 166, 96, 1, 121, 44, 10, 241, 24, 43,
- 184, 187, 25, 239, 246, 176, 108, 230, 127, 25, 42, 67, 202, 140, 179,
- 104, 159, 75, 103, 43, 248, 98, 166, 179, 67, 0, 163, 227, 84, 40, 129,
- 227, 198, 205, 7, 156, 16, 185, 24, 166, 59, 218, 197, 114, 74, 34, 126,
- 22, 226, 226, 85, 212, 69, 83, 163, 185, 68, 109, 182, 54, 209, 237, 96,
- 184, 32, 53, 127, 175, 13, 146, 141, 115, 164, 184, 98, 245, 174, 223,
- 46, 32, 167, 39, 103, 19, 210, 80, 131, 254, 103, 249, 247, 29, 120, 31,
- 105, 241, 103, 169, 249, 93, 153, 74, 56, 53, 239, 157, 132, 236, 169,
- 246, 242, 24, 113, 97, 128, 238, 152, 148, 31, 84, 8, 52, 105, 198, 116,
- 103, 132, 48, 199, 23, 90, 24, 29, 63, 41, 117, 191, 57, 31, 209, 128,
- 60, 119, 175, 84, 141, 177, 165, 169, 195, 35, 163, 105, 146, 157, 209,
- 93, 149, 105, 160, 93, 231, 78, 201, 92, 235, 200, 89, 37, 50, 181, 30,
- 213, 242, 59, 156, 219, 19, 158, 17, 224, 81, 108, 52, 87, 248, 101, 23,
- 39, 107, 67, 151, 103, 230, 126, 202, 184, 118, 226, 18, 29, 93, 37, 208,
- 40, 82, 113, 35, 157, 145, 152, 50, 253, 140, 47, 141, 192, 1, 148, 114,
- 40, 10, 112, 79, 227, 16, 105, 247, 31, 49, 102, 195, 75, 183, 172, 254,
- 188, 42, 89, 77, 38, 104, 1, 180, 106, 61, 71, 70, 35, 160, 103, 101,
- 244, 26, 226, 37, 159, 155, 4, 107, 222, 219, 136, 37, 24, 246, 44, 23,
- 44, 248, 132, 108, 59, 179, 99, 145, 132, 82, 53, 203, 111, 150, 55,
- 123, 51, 214, 165, 108, 124, 179, 131, 174, 139, 224, 114, 96, 218, 181,
- 243, 128, 198, 98, 115, 92, 95, 165, 23, 229, 108, 146, 14, 244, 162,
- 37, 85, 201, 33, 44, 92, 106, 112, 185, 16, 189, 42, 114, 109, 59, 124,
- 131, 16, 211, 31, 97, 29, 135, 61, 150, 75, 250, 207, 129, 38, 205, 187,
- 186, 55, 207, 232, 24, 48, 232, 49, 226, 16, 12, 27, 70, 31, 124, 128,
- 218, 100, 91, 200, 184, 78, 252, 100, 235, 62, 43, 69, 214, 163, 65, 14,
- 44, 180]),
-
- 256: new Uint8Array([8, 97, 235, 113, 70, 32, 135, 131,
- 210, 209, 124, 160, 255, 182, 9, 29, 125, 193, 27, 240, 129, 46, 2, 137,
- 169, 142, 61, 7, 145, 54, 170, 207, 159, 111, 39, 95, 87, 63, 162, 27,
- 6, 18, 219, 215, 116, 34, 90, 57, 114, 244, 102, 145, 67, 6, 51, 152,
- 247, 165, 242, 116, 100, 219, 177, 72, 177, 17, 110, 67, 93, 219, 100,
- 217, 20, 207, 89, 154, 45, 37, 105, 83, 67, 162, 140, 235, 129, 40, 177,
- 202, 174, 54, 148, 55, 156, 193, 232, 249, 134, 163, 195, 51, 114, 116,
- 65, 38, 73, 99, 96, 249, 224, 69, 17, 119, 186, 188, 181, 43, 78, 156,
- 76, 138, 226, 63, 5, 248, 9, 94, 26, 1, 2, 235, 39, 174, 74, 47, 183,
- 22, 40, 47, 47, 13, 100, 119, 12, 67, 178, 184, 56, 167, 238, 143, 13,
- 44, 208, 185, 151, 108, 6, 17, 52, 122, 182, 210, 207, 42, 219, 37, 74,
- 94, 126, 36, 249, 37, 32, 4, 218, 44, 238, 69, 56, 219, 31, 77, 173, 46,
- 187, 103, 36, 112, 213, 252, 40, 87, 164, 240, 163, 159, 32, 129, 125,
- 178, 108, 47, 28, 31, 36, 42, 115, 36, 14, 145, 195, 156, 191, 46, 163,
- 249, 181, 31, 90, 73, 30, 72, 57, 223, 63, 60, 79, 140, 14, 117, 31,
- 145, 222, 156, 121, 237, 32, 145, 143, 96, 12, 254, 35, 21, 21, 59, 168,
- 171, 154, 217, 0, 59, 202, 175, 103, 214, 192, 175, 26, 18, 43, 54, 176,
- 222, 75, 22, 7, 122, 253, 224, 145, 61, 42, 208, 73, 237, 84, 141, 209,
- 213, 228, 46, 244, 59, 9, 68, 6, 35, 88, 189, 10, 62, 9, 85, 28, 44, 82,
- 19, 153, 160, 178, 240, 56, 160, 244, 201, 173, 77, 61, 20, 227, 30,
- 180, 167, 16, 105, 185, 193, 95, 207, 41, 23, 134, 78, 198, 182, 93, 24,
- 89, 247, 231, 75, 233, 194, 137, 242, 114, 194, 190, 130, 138, 238, 94,
- 137, 193, 194, 115, 137, 190, 207, 169, 83, 155, 14, 210, 160, 129, 195,
- 161, 234, 221, 255, 114, 67, 98, 12, 93, 41, 65, 183, 244, 103, 247,
- 101, 82, 246, 125, 87, 125, 78, 21, 186, 102, 205, 20, 40, 32, 201, 174,
- 15, 52, 240, 217, 180, 162, 108, 6, 211, 41, 18, 135, 232, 184, 18, 188,
- 169, 157, 190, 76, 166, 75, 176, 127, 39, 251, 22, 203, 153, 80, 49,
- 241, 124, 137, 151, 123, 204, 43, 159, 190, 177, 196, 18, 117, 169, 46,
- 152, 251, 45, 25, 164, 27, 145, 214, 228, 55, 15, 2, 131, 216, 80, 255,
- 204, 175, 100, 59, 145, 15, 103, 40, 33, 45, 255, 200, 254, 172, 138,
- 20, 58, 87, 182, 192, 148, 219, 41, 88, 230, 229, 70, 249])
- };
+ const {
+ plaintext,
+ keyBytes,
+ iv,
+ additionalData,
+ tag,
+ tag_with_empty_ad,
+ ciphertext,
+ } = getFixtures();
var keyLengths = [128, 192, 256];
var tagLengths = [32, 64, 96, 104, 112, 120, 128];
@@ -220,7 +34,7 @@ function getTestVectors() {
result.set(ciphertext[keyLength], 0);
result.set(tag[keyLength].slice(0, byteCount), ciphertext[keyLength].byteLength);
passing.push({
- name: "AES-GCM " + keyLength.toString() + "-bit key, " + tagLength.toString() + "-bit tag",
+ name: "AES-GCM " + keyLength.toString() + "-bit key, " + tagLength.toString() + "-bit tag, " + (iv.byteLength << 3).toString() + "-bit iv",
keyBuffer: keyBytes[keyLength],
key: null,
algorithm: {name: "AES-GCM", iv: iv, additionalData: additionalData, tagLength: tagLength},
@@ -232,7 +46,7 @@ function getTestVectors() {
noadresult.set(ciphertext[keyLength], 0);
noadresult.set(tag_with_empty_ad[keyLength].slice(0, byteCount), ciphertext[keyLength].byteLength);
passing.push({
- name: "AES-GCM " + keyLength.toString() + "-bit key, no additional data, " + tagLength.toString() + "-bit tag",
+ name: "AES-GCM " + keyLength.toString() + "-bit key, no additional data, " + tagLength.toString() + "-bit tag, " + (iv.byteLength << 3).toString() + "-bit iv",
keyBuffer: keyBytes[keyLength],
key: null,
algorithm: {name: "AES-GCM", iv: iv, tagLength: tagLength},
@@ -248,7 +62,7 @@ function getTestVectors() {
// First, make some tests for bad tag lengths
[24, 48, 72, 95, 129].forEach(function(badTagLength) {
failing.push({
- name: "AES-GCM " + keyLength.toString() + "-bit key, illegal tag length " + badTagLength.toString() + "-bits",
+ name: "AES-GCM " + keyLength.toString() + "-bit key, " + (iv.byteLength << 3).toString() + "-bit iv, " + "illegal tag length " + badTagLength.toString() + "-bits",
keyBuffer: keyBytes[keyLength],
key: null,
algorithm: {name: "AES-GCM", iv: iv, additionalData: additionalData, tagLength: badTagLength},
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa_vectors.js b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa_vectors.js
index 2d1fb6d5c9e..aa9b81ba8a4 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa_vectors.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa_vectors.js
@@ -85,53 +85,55 @@ function getTestVectors() {
// Additional test vectors, using the same format as getTestVectors, but the
// signatures are invalid.
function getInvalidTestVectors() {
- var vectors = [
+ var vectors = [];
+ for (const validVector of getTestVectors()) {
{
- name: "The signature was truncated by 1 byte",
- publicKeyBuffer: new Uint8Array([48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 156, 176, 207, 105, 48, 61, 175, 199, 97, 212, 228, 104, 123, 78, 207, 3, 158, 109, 52, 171, 150, 74, 248, 8, 16, 216, 213, 88, 164, 168, 214, 247, 45, 81, 35, 58, 23, 136, 146, 10, 134, 238, 8, 161, 150, 44, 121, 239, 163, 23, 251, 120, 121, 226, 151, 218, 210, 20, 109, 185, 149, 250, 28, 120]),
- publicKeyFormat: "spki",
- publicKey: null,
- algorithmName: "ECDSA",
- namedCurve: "P-256",
- hashName: "SHA-512",
- plaintext: new Uint8Array([110, 41, 50, 21, 51, 1, 164, 238, 246, 128, 230, 66, 137, 41, 173, 174, 152, 140, 16, 141, 102, 138, 49, 255, 85, 208, 72, 153, 71, 215, 95, 248, 26, 70, 191, 137, 232, 77, 100, 1, 240, 35, 190, 110, 135, 104, 143, 188, 215, 132, 215, 133, 202, 132, 103, 53, 82, 74, 203, 82, 208, 4, 82, 200, 64, 64, 164, 121, 231, 204, 51, 9, 54, 68, 29, 147, 187, 231, 34, 169, 67, 42, 110, 29, 177, 18, 181, 201, 64, 59, 16, 39, 44, 177, 52, 127, 214, 25, 212, 99, 247, 169, 210, 35, 173, 118, 253, 224, 109, 138, 104, 131, 80, 15, 184, 67, 35, 90, 191, 249, 142, 36, 27, 223, 181, 83, 140, 62]),
- signature: new Uint8Array([75, 159, 145, 228, 40, 82, 135, 38, 26, 29, 28, 146, 60, 246, 25, 205, 82, 193, 117, 207, 231, 241, 190, 96, 165, 37, 140, 97, 3, 72, 186, 61, 40, 196, 95, 144, 29, 113, 196, 27, 41, 134, 56, 236, 13, 106, 133, 215, 252, 176, 195, 59, 191, 236, 90, 156, 129, 8, 70, 182, 57, 40, 154]),
- },
+ const vector = structuredClone(validVector);
+ vector.name = `${vector.name} - The signature was truncated by 1 byte`;
+ vector.signature = vector.signature.subarray(0, vector.signature.byteLength - 1);
+ vectors.push(vector);
+ }
+
+ // The signature was made with a different algorithm
+ for (const hashName of ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]) {
+ if (validVector.hashName === hashName) continue;
+ const vector = structuredClone(validVector);
+ vector.name = `${vector.name} - The signature was made using ${vector.hashName}, however verification is being done using ${hashName}`;
+ vector.hashName = hashName;
+ vectors.push(vector);
+ }
+
{
- name: "The signature was made using SHA-512, however verification is being done using SHA-1.",
- publicKeyBuffer: new Uint8Array([48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 156, 176, 207, 105, 48, 61, 175, 199, 97, 212, 228, 104, 123, 78, 207, 3, 158, 109, 52, 171, 150, 74, 248, 8, 16, 216, 213, 88, 164, 168, 214, 247, 45, 81, 35, 58, 23, 136, 146, 10, 134, 238, 8, 161, 150, 44, 121, 239, 163, 23, 251, 120, 121, 226, 151, 218, 210, 20, 109, 185, 149, 250, 28, 120]),
- publicKeyFormat: "spki",
- publicKey: null,
- algorithmName: "ECDSA",
- namedCurve: "P-256",
- hashName: "SHA-1",
- plaintext: new Uint8Array([110, 41, 50, 21, 51, 1, 164, 238, 246, 128, 230, 66, 137, 41, 173, 174, 152, 140, 16, 141, 102, 138, 49, 255, 85, 208, 72, 153, 71, 215, 95, 248, 26, 70, 191, 137, 232, 77, 100, 1, 240, 35, 190, 110, 135, 104, 143, 188, 215, 132, 215, 133, 202, 132, 103, 53, 82, 74, 203, 82, 208, 4, 82, 200, 64, 64, 164, 121, 231, 204, 51, 9, 54, 68, 29, 147, 187, 231, 34, 169, 67, 42, 110, 29, 177, 18, 181, 201, 64, 59, 16, 39, 44, 177, 52, 127, 214, 25, 212, 99, 247, 169, 210, 35, 173, 118, 253, 224, 109, 138, 104, 131, 80, 15, 184, 67, 35, 90, 191, 249, 142, 36, 27, 223, 181, 83, 140, 62]),
- signature: new Uint8Array([75, 159, 145, 228, 40, 82, 135, 38, 26, 29, 28, 146, 60, 246, 25, 205, 82, 193, 117, 207, 231, 241, 190, 96, 165, 37, 140, 97, 3, 72, 186, 61, 40, 196, 95, 144, 29, 113, 196, 27, 41, 134, 56, 236, 13, 106, 133, 215, 252, 176, 195, 59, 191, 236, 90, 156, 129, 8, 70, 182, 57, 40, 154, 132]),
- },
+ // Excess padding
+ const vector = structuredClone(validVector);
+ vector.name = `${vector.name} - Signature has excess padding`;
+
+ const r = vector.signature.subarray(0, vector.signature.byteLength / 2);
+ const s = vector.signature.subarray(vector.signature.byteLength);
+ vector.signature = new Uint8Array([
+ 0, ...r,
+ 0, ...s,
+ ]);
+
+ vectors.push(vector);
+ }
+
{
- name: "Excess padding",
- publicKeyBuffer: new Uint8Array([48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 3, 98, 0, 4, 8, 116, 162, 224, 184, 255, 68, 143, 14, 84, 50, 30, 39, 244, 241, 230, 77, 6, 76, 222, 183, 210, 111, 69, 140, 50, 233, 48, 18, 15, 78, 87, 220, 133, 194, 105, 63, 151, 126, 237, 74, 142, 204, 141, 185, 129, 180, 217, 31, 105, 68, 109, 244, 244, 198, 245, 222, 25, 0, 63, 69, 248, 145, 208, 235, 205, 47, 255, 219, 92, 129, 192, 64, 232, 214, 153, 76, 67, 199, 254, 237, 185, 138, 74, 49, 237, 251, 53, 232, 154, 48, 1, 60, 59, 146, 103]),
- publicKeyFormat: "spki",
- publicKey: null,
- algorithmName: "ECDSA",
- namedCurve: "P-384",
- hashName: "SHA-1",
- plaintext: new Uint8Array([63, 7, 131, 165, 142, 102, 243, 210, 192, 204, 251, 95, 172, 63, 9, 219, 111, 134, 9, 208, 89, 43, 199, 127, 223, 254, 217, 207, 14, 19, 125, 38, 168, 103, 5, 118, 101, 243, 173, 129, 190, 235, 187, 219, 114, 61, 90, 71, 197, 128, 130, 143, 16, 247, 52, 122, 184, 169, 194, 77, 25, 95, 115, 109, 250, 230, 234, 227, 125, 136, 254, 59, 71, 53, 231, 198, 105, 168, 10, 193, 145, 62, 92, 36, 200, 193, 213, 205, 177, 95, 153, 79, 62, 194, 241, 199, 116, 117, 46, 20, 245, 150, 179, 140, 47, 191, 3, 118, 22, 214, 8, 36, 77, 61, 167, 212, 186, 223, 53, 19, 48, 249, 71, 224, 76, 195, 80, 231]),
- // Each of r and s in this input is padded up to one extra byte.
- signature: new Uint8Array([0, 141, 157, 62, 61, 11, 43, 40, 113, 234, 47, 3, 242, 123, 168, 105, 159, 33, 75, 232, 216, 117, 192, 215, 112, 176, 255, 241, 196, 206, 52, 31, 12, 131, 74, 193, 31, 158, 193, 43, 253, 184, 50, 11, 23, 36, 200, 194, 32, 0, 98, 21, 13, 251, 168, 230, 92, 12, 123, 231, 239, 129, 200, 114, 65, 210, 195, 122, 131, 194, 126, 179, 28, 204, 43, 60, 57, 87, 103, 10, 116, 76, 129, 190, 109, 116, 19, 64, 181, 24, 156, 192, 197, 71, 223, 129, 176, 210]),
- },
+ // Empty signature
+ const vector = structuredClone(validVector);
+ vector.name = `${vector.name} - The signature is empty`;
+ vector.signature = new Uint8Array();
+ vectors.push(vector);
+ }
+
{
- name: "Empty signature",
- publicKeyBuffer: new Uint8Array([48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 3, 98, 0, 4, 8, 116, 162, 224, 184, 255, 68, 143, 14, 84, 50, 30, 39, 244, 241, 230, 77, 6, 76, 222, 183, 210, 111, 69, 140, 50, 233, 48, 18, 15, 78, 87, 220, 133, 194, 105, 63, 151, 126, 237, 74, 142, 204, 141, 185, 129, 180, 217, 31, 105, 68, 109, 244, 244, 198, 245, 222, 25, 0, 63, 69, 248, 145, 208, 235, 205, 47, 255, 219, 92, 129, 192, 64, 232, 214, 153, 76, 67, 199, 254, 237, 185, 138, 74, 49, 237, 251, 53, 232, 154, 48, 1, 60, 59, 146, 103]),
- publicKeyFormat: "spki",
- publicKey: null,
- algorithmName: "ECDSA",
- namedCurve: "P-384",
- hashName: "SHA-1",
- plaintext: new Uint8Array([63, 7, 131, 165, 142, 102, 243, 210, 192, 204, 251, 95, 172, 63, 9, 219, 111, 134, 9, 208, 89, 43, 199, 127, 223, 254, 217, 207, 14, 19, 125, 38, 168, 103, 5, 118, 101, 243, 173, 129, 190, 235, 187, 219, 114, 61, 90, 71, 197, 128, 130, 143, 16, 247, 52, 122, 184, 169, 194, 77, 25, 95, 115, 109, 250, 230, 234, 227, 125, 136, 254, 59, 71, 53, 231, 198, 105, 168, 10, 193, 145, 62, 92, 36, 200, 193, 213, 205, 177, 95, 153, 79, 62, 194, 241, 199, 116, 117, 46, 20, 245, 150, 179, 140, 47, 191, 3, 118, 22, 214, 8, 36, 77, 61, 167, 212, 186, 223, 53, 19, 48, 249, 71, 224, 76, 195, 80, 231]),
- signature: new Uint8Array([]),
- },
- ];
+ // Zeroed signature
+ const vector = structuredClone(validVector);
+ vector.name = `${vector.name} - The signature is all zeroes`;
+ vector.signature = new Uint8Array(vector.signature.byteLength);
+ vectors.push(vector);
+ }
+ }
return vectors;
}
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js
index 95102495fe3..edb67d9e30f 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js
@@ -1,5 +1,6 @@
// META: title=WebCryptoAPI: wrapKey() and unwrapKey()
// META: timeout=long
+// META: script=../util/helpers.js
// Tests for wrapKey and unwrapKey round tripping
@@ -19,7 +20,7 @@
promises.push(testWrapping(wrapper, key));
})
});
- return Promise.all(promises);
+ return Promise.allSettled(promises);
});
}, "setup");
@@ -48,7 +49,7 @@
{
name: "AES-GCM",
generateParameters: {name: "AES-GCM", length: 128},
- wrapParameters: {name: "AES-GCM", iv: new Uint8Array(16), additionalData: new Uint8Array(16), tagLength: 64}
+ wrapParameters: {name: "AES-GCM", iv: new Uint8Array(16), additionalData: new Uint8Array(16), tagLength: 128}
},
{
name: "AES-KW",
@@ -141,7 +142,7 @@
.then(function(wrappedResult) {
return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, true, toWrap.usages);
}).then(function(unwrappedResult) {
- assert_true(unwrappedResult.extractable, "Unwrapped result is extractable");
+ assert_goodCryptoKey(unwrappedResult, toWrap.algorithm, true, toWrap.usages, toWrap.key.type);
return subtle.exportKey(fmt, unwrappedResult)
}).then(function(roundTripExport) {
assert_true(equalExport(originalExport, roundTripExport), "Post-wrap export matches original export");
@@ -161,7 +162,7 @@
.then(function(wrappedResult) {
return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, false, toWrap.usages);
}).then(function(unwrappedResult){
- assert_false(unwrappedResult.extractable, "Unwrapped result is non-extractable");
+ assert_goodCryptoKey(unwrappedResult, toWrap.algorithm, false, toWrap.usages, toWrap.key.type);
return equalKeys(toWrap.key, unwrappedResult);
}).then(function(result){
assert_true(result, "Unwrapped key matches original");
diff --git a/tests/wpt/web-platform-tests/accessibility/crashtests/aria-owns-presentation.html b/tests/wpt/web-platform-tests/accessibility/crashtests/aria-owns-presentation.html
deleted file mode 100644
index 138625a1534..00000000000
--- a/tests/wpt/web-platform-tests/accessibility/crashtests/aria-owns-presentation.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<!DOCTYPE html>
-<div id="parent" aria-owns="owned"></div>
-<div id="owned" role="none"></div>
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-change.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-change.https.html
index b0a4da61ddd..826aca85a4e 100644
--- a/tests/wpt/web-platform-tests/client-hints/accept-ch-change.https.html
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-change.https.html
@@ -60,6 +60,14 @@ promise_test(async () => {
// settings have been saved
await open_and_expect_headers("resources/expect-no-client-hints-headers.html");
+ // Check that multiple headers will fill the cache.
+ await open_and_add_load_event("resources/accept-ch-split.html");
+ await open_and_expect_headers("resources/expect-client-hints-headers.html");
+
+ // Check that a mix of empty and full headers drops the cache.
+ await open_and_add_load_event("resources/accept-ch-mixed.html");
+ await open_and_expect_headers("resources/expect-no-client-hints-headers.html");
+
}, "Accept-CH changes based on header");
</script>
diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/iframe.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/iframe.https.window.js
index f4dd295208f..bbb9623752e 100644
--- a/tests/wpt/web-platform-tests/client-hints/critical-ch/iframe.https.window.js
+++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/iframe.https.window.js
@@ -6,3 +6,10 @@ async_test((t) => {
document.body.appendChild(iframe);
iframe.contentWindow.addEventListener('message', message_listener(t, "FAIL"));
}, "Critical-CH iframe");
+
+async_test((t) => {
+ var iframe = document.createElement("iframe");
+ iframe.src = ECHO_URL+"?multiple=true";
+ document.body.appendChild(iframe);
+ iframe.contentWindow.addEventListener('message', message_listener(t, "FAIL"));
+}, "Critical-CH w/ multiple headers and iframe");
diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched-count.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched-count.https.window.js
index 54bd6678979..23d297837e6 100644
--- a/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched-count.https.window.js
+++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched-count.https.window.js
@@ -2,3 +2,4 @@
// META: script=/common/utils.js
async_test(make_message_test(ECHO_URL+"?mismatch=true&token="+token(), "1"), "Critical-CH no restart on mismatched hints")
+async_test(make_message_test(ECHO_URL+"?multiple=true&mismatch=true&token="+token(), "1"), "Critical-CH w/ multiple headers and no restart on mismatched hints")
diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched.https.window.js
index 9476640b351..10f9a30b6d2 100644
--- a/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched.https.window.js
+++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched.https.window.js
@@ -1,3 +1,4 @@
// META: script=resources/util.js
async_test(make_message_test(ECHO_URL+"?mismatch=true", "FAIL"), "Critical-CH Mis-matched hints")
+async_test(make_message_test(ECHO_URL+"?multiple=true&mismatch=true", "FAIL"), "Critical-CH w/ multiple headers and Mis-matched hints")
diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/navigation.multiple.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/navigation.multiple.https.window.js
new file mode 100644
index 00000000000..ff9cc210feb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/navigation.multiple.https.window.js
@@ -0,0 +1,3 @@
+// META: script=resources/util.js
+
+async_test(make_message_test(ECHO_URL+"?multiple=true", "PASS"), "Critical-CH w/ multiple headers and navigation")
diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/non-secure.http.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/non-secure.http.window.js
index cdd79243982..b634f98e55c 100644
--- a/tests/wpt/web-platform-tests/client-hints/critical-ch/non-secure.http.window.js
+++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/non-secure.http.window.js
@@ -1,3 +1,4 @@
// META: script=resources/util.js
async_test(make_message_test(ECHO_URL, "FAIL"), "Critical-CH navigation non-secure")
+async_test(make_message_test(ECHO_URL+"?multiple=true", "FAIL"), "Critical-CH w/ multiple headers and navigation non-secure")
diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/request-count.multiple.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/request-count.multiple.https.window.js
new file mode 100644
index 00000000000..602803b5d68
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/request-count.multiple.https.window.js
@@ -0,0 +1,4 @@
+// META: script=resources/util.js
+// META: script=/common/utils.js
+
+async_test(make_message_test(ECHO_URL+"?multiple=true&token="+token(), "2"), "Critical-CH w/ multiple headers and navigation restart")
diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/resources/echo-critical-hint.py b/tests/wpt/web-platform-tests/client-hints/critical-ch/resources/echo-critical-hint.py
index e4e77ad2a9a..0913dbb19db 100644
--- a/tests/wpt/web-platform-tests/client-hints/critical-ch/resources/echo-critical-hint.py
+++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/resources/echo-critical-hint.py
@@ -11,13 +11,22 @@ def main(request, response):
response.headers.append(b"Access-Control-Allow-Headers", b"*")
response.headers.append(b"Access-Control-Expose-Headers", b"*")
- response.headers.append(b"Accept-CH", b"sec-ch-device-memory,device-memory")
+ accept = b"sec-ch-device-memory,device-memory"
+ if(request.GET.first(b"multiple", None) is not None):
+ for accept_part in accept.split(b","):
+ response.headers.append(b"Accept-CH", accept_part)
+ else:
+ response.headers.append(b"Accept-CH", accept)
critical = b"sec-ch-device-memory,device-memory"
if(request.GET.first(b"mismatch", None) is not None):
critical = b"sec-ch-viewport-width,viewport-width"
- response.headers.append(b"Critical-CH", critical)
+ if(request.GET.first(b"multiple", None) is not None):
+ for critical_part in critical.split(b","):
+ response.headers.append(b"Critical-CH", critical_part)
+ else:
+ response.headers.append(b"Critical-CH", critical)
response.headers.append(b"Cache-Control", b"no-store")
diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/subresource.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/subresource.https.window.js
index f8112b628d0..81dfc303c62 100644
--- a/tests/wpt/web-platform-tests/client-hints/critical-ch/subresource.https.window.js
+++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/subresource.https.window.js
@@ -2,9 +2,17 @@
// META: script=/common/utils.js
promise_test(() =>
- fetch("resources/echo-critical-hint.py")
+ fetch(ECHO_URL)
.then((r) => r.text())
.then((r) => {
assert_true(r.includes("FAIL"));
})
, "Critical-CH subresource fetch");
+
+promise_test(() =>
+ fetch(ECHO_URL+"?multiple=true")
+ .then((r) => r.text())
+ .then((r) => {
+ assert_true(r.includes("FAIL"));
+ })
+, "Critical-CH w/ multiple headers and subresource fetch");
diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/unsafe-method.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/unsafe-method.https.window.js
index 0eca0eb8e9a..37bbcb3315e 100644
--- a/tests/wpt/web-platform-tests/client-hints/critical-ch/unsafe-method.https.window.js
+++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/unsafe-method.https.window.js
@@ -21,3 +21,27 @@ async_test((t) => {
form.submit();
}, "Critical-CH unsafe method")
+
+async_test((t) => {
+ // This test requires a navigation with a non-safe (i.e. non-GET) HTTP
+ // response, which the Critical-CH spec says to ignore. The most
+ // "straight-forward" way to do this in JS is by making a form with an
+ // unsafe method (e.g. POST) method and submit it.
+
+ // Build the form DOM element
+ var form = document.createElement("form");
+ form.setAttribute("method", "post");
+ form.setAttribute("action", "resources/echo-critical-hint.py?multiple=true");
+ form.setAttribute("target", "popup"); //don't navigate away from the page running the test...
+ document.body.appendChild(form);
+
+ var popup_window = window.open("/common/blank.html", "popup");
+ assert_not_equals(popup_window, null, "Popup windows not allowed?");
+
+ popup_window.addEventListener('message', (e) => {
+ t.step(()=>{assert_equals(e.data, "FAIL")});
+ t.done();
+ });
+
+ form.submit();
+}, "Critical-CH w/ multiple headers and unsafe method")
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html
new file mode 100644
index 00000000000..bf604dffeef
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+<body>
+
+<!-- An empty webpage whose response headers include empty and full
+Accept-CH headers. Fetching this webpage should cause
+the hint cache to be dropped.-->
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html.headers b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html.headers
new file mode 100644
index 00000000000..39d4e1935da
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html.headers
@@ -0,0 +1,5 @@
+Accept-CH:
+Accept-CH: sec-ch-device-memory
+Accept-CH: device-memory
+Accept-CH:
+Access-Control-Allow-Origin: *
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html
new file mode 100644
index 00000000000..5038b940139
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+<body>
+
+<!-- An empty webpage whose response headers include only
+non-empty Accept-CH headers. Fetching this webpage should cause
+hints to be added to the cache.-->
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html.headers b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html.headers
new file mode 100644
index 00000000000..261e1e8ee6d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html.headers
@@ -0,0 +1,3 @@
+Accept-CH: sec-ch-device-memory
+Accept-CH: device-memory
+Access-Control-Allow-Origin: *
diff --git a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_alert.html b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_alert-manual.html
index 1317cc658f7..1317cc658f7 100644
--- a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_alert.html
+++ b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_alert-manual.html
diff --git a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_banner.html b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_banner-manual.html
index e1bf9cc7f45..e1bf9cc7f45 100644
--- a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_banner.html
+++ b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_banner-manual.html
diff --git a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_dialog.html b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_dialog-manual.html
index c7feeddf2bb..c7feeddf2bb 100644
--- a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_dialog.html
+++ b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_dialog-manual.html
diff --git a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_feed.html b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_feed-manual.html
index e81f3e49494..e81f3e49494 100644
--- a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_feed.html
+++ b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_feed-manual.html
diff --git a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_form.html b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_form-manual.html
index 6b533da6f72..6b533da6f72 100644
--- a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_form.html
+++ b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_form-manual.html
diff --git a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_group.html b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_group-manual.html
index 8deb17c2b24..8deb17c2b24 100644
--- a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_group.html
+++ b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_group-manual.html
diff --git a/tests/wpt/web-platform-tests/core-aam/generic_roledescription_prohibited-manual.html b/tests/wpt/web-platform-tests/core-aam/generic_roledescription_prohibited-manual.html
index 7c54dff1549..07f32ccc5cd 100644
--- a/tests/wpt/web-platform-tests/core-aam/generic_roledescription_prohibited-manual.html
+++ b/tests/wpt/web-platform-tests/core-aam/generic_roledescription_prohibited-manual.html
@@ -61,7 +61,7 @@
</head>
<body>
<p>This test examines the ARIA properties for generic with a roledescription.</p>
- <p role="generic" id="test" aria-roledescription="foo">content</p>
+ <div role="generic" id="test" aria-roledescription="foo">content</div>
<div id="manualMode"></div>
<div id="log"></div>
<div id="ATTAmessages"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius.html b/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius.html
index ee98dababbc..8595caec7bb 100644
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius.html
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius.html
@@ -7,6 +7,7 @@
<link rel="author" title="Lea Verou" href="http://lea.verou.me" />
<link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-clip" />
<link rel="help" href="http://www.w3.org/TR/css3-background/#corner-shaping" />
+<link rel="match" href="reference/background-clip-padding-box-with-border-radius-ref.html" />
<meta name="assert" content="Backgrounds clipped to the padding box should follow the padding box curve, which should be equal to the outer border radius minus the corresponding border thickness." />
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/reference/background-clip-padding-box-with-border-radius-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/background-clip-padding-box-with-border-radius-ref.html
new file mode 100644
index 00000000000..545b80d3516
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/background-clip-padding-box-with-border-radius-ref.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Reference File</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ div
+ {
+ background-color: green;
+ border-radius: 30px;
+ height: 144px;
+ margin-left: 18px;
+ margin-top: 24px;
+ width: 144px;
+ }
+
+ div + div
+ {
+ margin-top: 6px;
+ }
+ </style>
+
+ <p>Test passes if there are two filled green rounded squares and <strong>no red</strong>.
+
+ <div></div>
+
+ <div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color-ref.html
deleted file mode 100644
index d8003b58e3a..00000000000
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color-ref.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html>
-<body>
- <canvas id="canvas" width="200" height="400"></canvas>
-</body>
-<script>
- var canvas = document.getElementById('canvas');
- var ctx = canvas.getContext('2d');
- ctx.fillStyle = 'green';
- ctx.fillRect(0, 0, 100, 150);
- ctx.fillStyle = 'red';
- ctx.fillRect(0, 150, 200, 250);
-</script>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color.html b/tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color.html
deleted file mode 100644
index 07bea44d219..00000000000
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html>
-<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#background-color">
-<link rel="match" href="simple-bg-color-ref.html">
-<style>
-.box1 {
- width: 100px;
- height: 150px;
- background-color: green;
-}
-.box2 {
- width: 200px;
- height: 250px;
- background-color: red;
-}
-</style>
-<body>
- <div class='box1'></div>
- <div class='box2'></div>
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-item-content-overflow-003.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-item-content-overflow-003.html
new file mode 100644
index 00000000000..d3a5b976ccd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-item-content-overflow-003.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1417976">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-fill:auto;">
+ <div style="display:flex;">
+ <div style="width:100px; max-height:50px;">
+ <div style="height:50px; background:green;"></div>
+ <div style="height:50px; background:red;"></div>
+ </div>
+ </div>
+ <div style="position:relative; width:100px; height:50px; background:green;"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-overflow-001.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-overflow-001.html
new file mode 100644
index 00000000000..30d6f3bb21c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-overflow-001.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1417976">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-fill:auto;">
+ <div style="display:grid;">
+ <div style="width:100px; max-height:50px;">
+ <div style="height:50px; background:green;"></div>
+ <div style="height:50px; background:red;"></div>
+ </div>
+ </div>
+ <div style="position:relative; width:100px; height:50px; background:green;"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition-ref.html
new file mode 100644
index 00000000000..1955beef300
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<title>CSS Test Reference</title>
+<p>
+ <span style="font-weight:bold">Should be bold</span><br>
+ Should not be bold
+</p>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition.html
new file mode 100644
index 00000000000..e5253daa63f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<title>CSS Pseudo-Element Test: ::first-line style should not trigger transitions on elements</title>
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo">
+<link rel="match" href="first-line-inherited-no-transition-ref.html">
+<style>
+ p::first-line { font-weight: bold; }
+ span {
+ transition-property: font-weight;
+ transition-duration: 100s;
+ transition-delay: -50s;
+ }
+</style>
+<p><span>Should be bold<br>Should not be bold</span></p>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition-ref.html
new file mode 100644
index 00000000000..b28c17436a6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition-ref.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<title>CSS Test Reference</title>
+<style>
+ span { background-color: green; }
+ #orange { color: orange; }
+</style>
+<p>
+ <span id="orange">Orange on green</span><br>
+ <span>Black on green</span>
+</p>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition.html
new file mode 100644
index 00000000000..88b1f343622
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<title>CSS Pseudo-Element Test: ::first-line style should not trigger transitions on elements</title>
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo">
+<link rel="match" href="first-line-inherited-with-transition-ref.html">
+<style>
+ p::first-line { color: orange; }
+ span {
+ background-color: black;
+ transition: background-color 1000s steps(2, start);
+ }
+ span.lime {
+ background-color: lime;
+ }
+</style>
+<p><span id="s">Orange on green<br>Black on green</span></p>
+<script>
+ s.offsetTop;
+ s.className = "lime";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-line-clamp-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-line-clamp-001-ref.html
new file mode 100644
index 00000000000..4e465be7ccf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-line-clamp-001-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<style>
+.container {
+ font-family: monospace;
+ font-size: 20px;
+ width: 20ch;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+ overflow: hidden;
+}
+</style>
+<div class="container">
+ 123 567 901 345 789
+ 123 567 901 345 789
+ 123
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-001.html b/tests/wpt/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-001.html
new file mode 100644
index 00000000000..292e655464b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-001.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<link rel="help" href="https://w3c.github.io/csswg-drafts/css-text-4/#valdef-text-wrap-balance">
+<link rel="match" href="reference/text-wrap-balance-line-clamp-001-ref.html">
+<style>
+.container {
+ font-family: monospace;
+ font-size: 20px;
+ width: 20ch;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+ overflow: hidden;
+ text-wrap: balance;
+}
+</style>
+<div class="container">
+ 123 567 901 345 789
+ 123 567 901 345 789
+ 123
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/dynamic-root-element.html b/tests/wpt/web-platform-tests/css/css-transitions/dynamic-root-element.html
new file mode 100644
index 00000000000..befc20d1d08
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transitions/dynamic-root-element.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<meta charset="utf-8">
+<link rel="help" href="https://drafts.csswg.org/css-transitions/#starting">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1816672">
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe></iframe>
+<script>
+ let t = async_test("Transitions don't incorrectly start on dynamic document element insertion");
+ window.onload = t.step_func_done(function() {
+ let frame = document.querySelector("iframe");
+ let doc = frame.contentDocument;
+ doc.open();
+ doc.write("<!doctype html>");
+ let root = doc.createElement("html");
+ root.innerHTML = `
+ <style>
+ div {
+ width: 100px;
+ height: 100px;
+ background-color: blue;
+ transition: margin-left 10s ease;
+ margin-left: 100px;
+ }
+ </style>
+ <div></div>
+ `;
+ doc.appendChild(root);
+ doc.close();
+ assert_equals(frame.contentWindow.getComputedStyle(doc.querySelector("div")).marginLeft, "100px", "Transition shouldn't have started");
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/zero-duration-multiple-transition.html b/tests/wpt/web-platform-tests/css/css-transitions/zero-duration-multiple-transition.html
index 4268ce766d7..7b85702092a 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/zero-duration-multiple-transition.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/zero-duration-multiple-transition.html
@@ -2,7 +2,7 @@
<meta charset="utf-8">
<link rel="help" href="https://drafts.csswg.org/css-transitions/#starting">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1461070">
-<link rel="author" title="Emilio Cobos Álvarez" href="emilio@crisal.io">
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
diff --git a/tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-serialize-time.html b/tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-serialize-time.html
index fd3f02524ba..2baa890259c 100644
--- a/tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-serialize-time.html
+++ b/tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-serialize-time.html
@@ -15,6 +15,7 @@ function test_serialization(t,s, {prop="animationDuration"}={}) {
var test_map = {
"1s * NaN" :"calc(NaN * 1s)",
"1s * nan" :"calc(NaN * 1s)",
+ "1ms * NaN" :"calc(NaN * 1s)",
"1s * infinity / infinity" :"calc(NaN * 1s)",
"1s * 0 * infinity" :"calc(NaN * 1s)",
"1s * (infinity + -infinity)" :"calc(NaN * 1s)",
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html b/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html
index e1c172263b7..b3726d4cd51 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html
@@ -38,7 +38,7 @@ div { box-sizing: border-box; will-change: transform }
::view-transition-group(hidden) { animation-duration: 300s; }
::view-transition-image-pair(hidden) { visibility: hidden; }
::view-transition-group(root) { visibility: hidden; }
-::view-transition { width: 100%; height: 100%; background: pink; }
+::view-transition { background: pink; }
::view-transition-group(*) { animation-delay: 300s; }
::view-transition-new(*) { animation: unset; opacity: 1; }
::view-transition-old(*) { animation: unset; opacity: 0; }
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html b/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html
index 1796284c06d..746b93afd40 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html
@@ -39,7 +39,7 @@ div { box-sizing: border-box; will-change: transform }
::view-transition-group(hidden) { animation-duration: 300s; }
::view-transition-image-pair(hidden) { visibility: hidden; }
::view-transition-group(root) { visibility: hidden; }
-::view-transition { width: 100%; height: 100%; background: pink; }
+::view-transition { background: pink; }
::view-transition-group(*) { animation-duration: 0s; }
::view-transition-new(*) { animation: unset; opacity: 0; }
::view-transition-old(*) { animation: unset; opacity: 1; }
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element.html b/tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element.html
index d76eab2fcd6..11b4957fbcc 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element.html
@@ -47,7 +47,7 @@ html::view-transition-group(*) { animation-duration: 0s; }
html::view-transition-new(*) { animation: unset; opacity: 0; }
html::view-transition-old(*) { animation: unset; opacity: 1; }
html::view-transition-group(root) { display: none; }
-html::view-transition { width: 100%; height: 100%; background: pink }
+html::view-transition { background: pink }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order-with-entry.html b/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order-with-entry.html
index efd1aff5df7..703b64f5c68 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order-with-entry.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order-with-entry.html
@@ -84,7 +84,7 @@ html::view-transition-old(two),
html::view-transition-old(three) { animation: unset; opacity: 1; }
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order.html b/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order.html
index 28a955bad66..c0e8769b473 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order.html
@@ -69,7 +69,7 @@ html::view-transition-old(two),
html::view-transition-old(three) { animation: unset; opacity: 1; }
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-shared-element.html b/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-shared-element.html
index 9046b915b4f..33bbae70fc6 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-shared-element.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-shared-element.html
@@ -51,7 +51,7 @@ html::view-transition-old(left-element),
html::view-transition-old(right-element) { animation: unset; opacity: 1; }
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/document-element-detatched-crash.html b/tests/wpt/web-platform-tests/css/css-view-transitions/document-element-detatched-crash.html
new file mode 100644
index 00000000000..3c5419a8102
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/document-element-detatched-crash.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<title>View transitions: documentElement.remove</title>
+<link rel="help" href="https://github.com/WICG/view-transitions">
+<link rel="author" href="mailto:vmpstr@chromium.org">
+
+<style>
+html {
+ display: none;
+}
+</style>
+
+<script>
+async function runTest() {
+ document.startViewTransition(() => {
+ requestAnimationFrame(() => document.documentElement.remove());
+ })
+
+}
+onload = () => requestAnimationFrame(runTest);
+</script>
+
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/far-away-capture.html b/tests/wpt/web-platform-tests/css/css-view-transitions/far-away-capture.html
index 7b003cbb769..bfe0b9fb948 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/far-away-capture.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/far-away-capture.html
@@ -41,7 +41,7 @@ html::view-transition-group(*) { animation-duration: 0s; }
html::view-transition-new(*) { animation: unset; opacity: 0; }
html::view-transition-old(*) { animation: unset; opacity: 1; }
html::view-transition-group(root) { display: none; }
-html::view-transition { width: 100%; height: 100%; background: pink }
+html::view-transition { background: pink }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html b/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html
index 47a8e5fb994..7c9ed911cb7 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html
@@ -35,6 +35,13 @@ html { view-transition-name: none }
background: blue;
}
+html::view-transition {
+ pointer-events: none;
+}
+html::view-transition-group(*) {
+ pointer-events: auto;
+}
+
html::view-transition-group(shared) {
animation-delay: 300s;
}
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unrelated-element.html b/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unrelated-element.html
index dae232b74de..1b8868280b2 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unrelated-element.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unrelated-element.html
@@ -36,6 +36,13 @@ html { view-transition-name: none }
background: green;
}
+html::view-transition {
+ pointer-events: none;
+}
+html::view-transition-group(*) {
+ pointer-events: auto;
+}
+
html::view-transition-group(shared) {
animation-delay: 300s;
}
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/japanese-tag.html b/tests/wpt/web-platform-tests/css/css-view-transitions/japanese-tag.html
index 67115a6fae6..976dcab4fca 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/japanese-tag.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/japanese-tag.html
@@ -60,7 +60,7 @@ html::view-transition-old(第三) { animation: unset; opacity: 1; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match-ref.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match-ref.html
index ca597dfbb84..b8c3b34c03a 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match-ref.html
@@ -32,7 +32,7 @@ html::view-transition-new(*) { animation: unset; opacity: 0; }
html::view-transition-old(*) { animation: unset; opacity: 1; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=target class=box><div class=inner_overflow>X</div></div>
<script>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match.html
index 1549a402af0..78efa9d82fa 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match.html
@@ -34,7 +34,7 @@ html::view-transition-new(*) { animation: unset; opacity: 1; }
html::view-transition-old(*) { animation: unset; opacity: 0; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=target class=box><div class=inner_overflow>X</div></div>
<script>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-clip-path.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-clip-path.html
index 0d4c94e47d6..4a2dfc78c27 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-clip-path.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-clip-path.html
@@ -31,7 +31,7 @@ html::view-transition-new(*) { animation: unset; opacity: 1; }
html::view-transition-old(*) { animation: unset; opacity: 0; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=e1 class=box></div>
<script>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-different-size.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-different-size.html
index a3ecddaf26c..a891dec5553 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-different-size.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-different-size.html
@@ -43,7 +43,7 @@ html::view-transition-new(*) { animation: unset; opacity: 1; }
html::view-transition-old(*) { animation: unset; opacity: 0; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=e1 class=box>one</div>
<div id=e2 class=box>two</div>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-opacity.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-opacity.html
index 7f23f9110a9..ab4efd1f424 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-opacity.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-opacity.html
@@ -26,7 +26,7 @@ html::view-transition-new(*) { animation: unset; opacity: 1; }
html::view-transition-old(*) { animation: unset; opacity: 0; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=e1 class=box></div>
<div id=e2 class=box></div>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-positioned-spans.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-positioned-spans.html
index 39bbfbfb123..b88654cd379 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-positioned-spans.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-positioned-spans.html
@@ -20,7 +20,7 @@ html::view-transition-new(*) { animation: unset; opacity: 1; }
html::view-transition-old(*) { animation: unset; opacity: 0; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<span id=target>This is a span</span>
<script>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html
index 661d7c8a01a..843f6752d76 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html
@@ -17,7 +17,7 @@ html::view-transition-new(*) { animation: unset; opacity: 1; }
html::view-transition-old(*) { animation: unset; opacity: 0; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<span id=target>This is a span</span>
<script>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-container-writing-modes.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-container-writing-modes.html
index 7b55a0f012f..e7ac768e17d 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-container-writing-modes.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-container-writing-modes.html
@@ -53,7 +53,7 @@ html::view-transition-old(s3) { animation: unset; opacity: 0; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-element-writing-modes.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-element-writing-modes.html
index 78ce545b74a..d7740d78f54 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-element-writing-modes.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-element-writing-modes.html
@@ -54,7 +54,7 @@ html::view-transition-old(s3) { animation: unset; opacity: 0; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-intrinsic-aspect-ratio.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-intrinsic-aspect-ratio.html
index 69e8f82e9f1..53ec94122f0 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-intrinsic-aspect-ratio.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-intrinsic-aspect-ratio.html
@@ -47,7 +47,7 @@ html::view-transition-group(target2) {
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=target1 class=box></div>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-empty-div.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-empty-div.html
index 53f3e23b686..bacc63f1945 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-empty-div.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-empty-div.html
@@ -37,7 +37,7 @@ html::view-transition-new(shared) { animation: unset; opacity: 1; }
html::view-transition-old(shared) { animation: unset; opacity: 1; }
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-inline.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-inline.html
index d971ec4eaa6..c341444f342 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-inline.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-inline.html
@@ -57,8 +57,6 @@ body { margin : 0; }
view-transition-name: none;
}
::view-transition {
- width: 100%;
- height: 100%;
background-color: rebeccapurple;
}
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-fill.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-fill.html
index 2a34348c12a..b891eee16d5 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-fill.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-fill.html
@@ -57,7 +57,7 @@ html::view-transition-group(hidden) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=target><div id=inner></div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-none.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-none.html
index 0ec9d0bc8a4..d4b81b1a0ee 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-none.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-none.html
@@ -50,7 +50,7 @@ html::view-transition-group(hidden) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=target>This is text</div>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path-reference.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path-reference.html
index a8507f5f33e..01a3ed3204f 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path-reference.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path-reference.html
@@ -55,7 +55,7 @@ html::view-transition-new(target-two) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=one class=target>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path.html
index d6a3f925cbf..dcd5fec70a1 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path.html
@@ -55,7 +55,7 @@ html::view-transition-new(target-two) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=one class=target>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow-clipped.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow-clipped.html
index 247a33d15bc..593901529f4 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow-clipped.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow-clipped.html
@@ -46,7 +46,7 @@ html::view-transition-new(target) {
html::view-transition-old(target) { animation: unset; opacity: 0; height: 100%; }
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div class=target>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow.html
index d0c129a1abf..2bbea1e1c4c 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow.html
@@ -46,7 +46,7 @@ html::view-transition-new(target) {
html::view-transition-old(target) { animation: unset; opacity: 0; height: 100%; }
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div class=target>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-scaling.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-scaling.html
index 5ce6d5ba693..4ea3c2e04a4 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-scaling.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-scaling.html
@@ -43,7 +43,7 @@ html::view-transition-old(shared) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=target class="shared src"><div class=inner></div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow-zoomed.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow-zoomed.html
index fef9b26b2c2..59170ebf003 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow-zoomed.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow-zoomed.html
@@ -34,7 +34,7 @@ html::view-transition-new(target) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div class=ancestor>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow.html
index d2c802dbf53..e2dc045089b 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow.html
@@ -31,7 +31,7 @@ html::view-transition-new(target) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div class=target>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-element-on-start.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-element-on-start.html
index f0a8c144a98..e3ec5463bfd 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-element-on-start.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-element-on-start.html
@@ -42,7 +42,7 @@ html::view-transition-new(after) { animation-duration: 0s; }
html::view-transition-old(after) { animation-duration: 0s; }
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-clip-path.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-clip-path.html
index 0734edd56fd..a2faa7f1575 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-clip-path.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-clip-path.html
@@ -29,7 +29,7 @@ html::view-transition-new(*) { animation: unset; opacity: 0; }
html::view-transition-old(*) { animation: unset; opacity: 1; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=e1 class=box></div>
<script>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-different-size.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-different-size.html
index 547cc4d7ba2..a8d375f0646 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-different-size.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-different-size.html
@@ -43,7 +43,7 @@ html::view-transition-new(*) { animation: unset; opacity: 0; }
html::view-transition-old(*) { animation: unset; opacity: 1; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=e1 class=box>one</div>
<div id=e2 class=box>two</div>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-opacity.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-opacity.html
index 0b727f7972f..ee3e3e4cde1 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-opacity.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-opacity.html
@@ -27,7 +27,7 @@ html::view-transition-new(*) { animation: unset; opacity: 0; }
html::view-transition-old(*) { animation: unset; opacity: 1; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=e1 class=box>one</div>
<div id=e2 class=box>two</div>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-container-writing-modes.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-container-writing-modes.html
index 383585335d6..9896c271527 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-container-writing-modes.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-container-writing-modes.html
@@ -60,7 +60,7 @@ html::view-transition-old(s3) { animation: unset; opacity: 1; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-element-writing-modes.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-element-writing-modes.html
index b6903d10e61..5029c6aaaa3 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-element-writing-modes.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-element-writing-modes.html
@@ -60,7 +60,7 @@ html::view-transition-old(s3) { animation: unset; opacity: 1; }
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-intrinsic-aspect-ratio.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-intrinsic-aspect-ratio.html
index d166f438f4d..b46a7782178 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-intrinsic-aspect-ratio.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-intrinsic-aspect-ratio.html
@@ -47,7 +47,7 @@ html::view-transition-group(target2) {
/* hide the root so we show transition background to ensure we're in a transition */
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=target1 class=box></div>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-empty-div.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-empty-div.html
index 54c56994d8c..137060c1ddb 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-empty-div.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-empty-div.html
@@ -36,7 +36,7 @@ html::view-transition-new(shared) { animation: unset; opacity: 1; }
html::view-transition-old(shared) { animation: unset; opacity: 1; }
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline.html
index 9da15266bae..9f350237adc 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline.html
@@ -57,8 +57,6 @@ body { margin : 0; }
view-transition-name: none;
}
::view-transition {
- width: 100%;
- height: 100%;
background-color: rebeccapurple;
}
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-fill.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-fill.html
index fb7549cc408..9ad8b14843f 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-fill.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-fill.html
@@ -57,7 +57,7 @@ html::view-transition-group(hidden) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=target><div id=inner></div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-none.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-none.html
index 06472302b9e..1275aece7ca 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-none.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-none.html
@@ -50,7 +50,7 @@ html::view-transition-group(hidden) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=target>This is text</div>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html
index ac566029a0f..14a1ee83d92 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html
@@ -56,7 +56,7 @@ html::view-transition-old(target-two) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=one class=target>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path.html
index 73100d05281..dff57c68f6b 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path.html
@@ -56,7 +56,7 @@ html::view-transition-old(target-two) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div id=one class=target>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-overflow.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-overflow.html
index 7a1ef2d0052..ff9bb4e7d2b 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-overflow.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-overflow.html
@@ -45,7 +45,7 @@ html::view-transition-old(target) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div class=target>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow-zoomed.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow-zoomed.html
index 887bf7c6482..10257b761fa 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow-zoomed.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow-zoomed.html
@@ -34,7 +34,7 @@ html::view-transition-old(target) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div class=ancestor>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow.html
index 7a40c8e386a..6ed31d375c6 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow.html
@@ -31,7 +31,7 @@ html::view-transition-old(target) {
}
html::view-transition-group(root) { animation: unset; opacity: 0; }
-html::view-transition { width: 100%; height: 100%; background: lightpink; }
+html::view-transition { background: lightpink; }
</style>
<div class=target>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/root-style-change-during-animation.html b/tests/wpt/web-platform-tests/css/css-view-transitions/root-style-change-during-animation.html
index 1453e5019d7..d1d291124bd 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/root-style-change-during-animation.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/root-style-change-during-animation.html
@@ -23,8 +23,6 @@
}
html::view-transition {
- width: 100%;
- height: 100%;
background: grey;
}
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/set-universal-specificity.html b/tests/wpt/web-platform-tests/css/css-view-transitions/set-universal-specificity.html
index 1e8b7d0eb86..ec50b1e4078 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/set-universal-specificity.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/set-universal-specificity.html
@@ -15,7 +15,7 @@
}
/* We're verifying what we capture, so just display the old contents for 5 minutes. */
-html::view-transition { width: 100%; height: 100%; background: pink; }
+html::view-transition { background: pink; }
html::view-transition-group(shared) { animation-duration: 300s; }
html::view-transition-old(shared) {
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-001-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-001-print-ref.html
index 3d66305db0e..3d66305db0e 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-001-print-ref.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-001-print-ref.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-001-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-001-print.html
index 04feb96e847..04feb96e847 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-001-print.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-001-print.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-002-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-002-print-ref.html
index 3d66305db0e..3d66305db0e 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-002-print-ref.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-002-print-ref.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-002-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-002-print.html
index c23c6be7d2a..c23c6be7d2a 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-002-print.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-002-print.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-003-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-003-print-ref.html
index 3d66305db0e..3d66305db0e 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-003-print-ref.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-003-print-ref.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-003-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-003-print.html
index 1b06257175f..1b06257175f 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-003-print.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-003-print.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-004-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-004-print-ref.html
index 3e3473bcb8e..3e3473bcb8e 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-004-print-ref.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-004-print-ref.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-004-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-004-print.html
index c138e9cd6aa..c138e9cd6aa 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-004-print.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-004-print.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-005-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-005-print-ref.html
index e692ff8db37..e692ff8db37 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-005-print-ref.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-005-print-ref.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-005-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-005-print.html
index 0a2edc71788..0a2edc71788 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-005-print.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-005-print.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-006-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-006-print-ref.html
index b03e1d78d00..b03e1d78d00 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-006-print-ref.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-006-print-ref.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-006-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-006-print.html
index 2386c166c81..2386c166c81 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-006-print.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-006-print.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-007-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-007-print-ref.html
index f576c937715..f576c937715 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-007-print-ref.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-007-print-ref.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-007-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-007-print.html
index 8dcb700b96d..8dcb700b96d 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-007-print.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-007-print.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-008-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-008-print-ref.html
index 6ed2528115a..6ed2528115a 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-008-print-ref.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-008-print-ref.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-008-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-008-print.html
index 02b5d63cc7c..02b5d63cc7c 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-008-print.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-008-print.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-abspos-with-link-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-abspos-with-link-print-ref.html
index 000c05350b5..000c05350b5 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-abspos-with-link-print-ref.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-abspos-with-link-print-ref.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-abspos-with-link-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-abspos-with-link-print.html
index 057ddc91460..057ddc91460 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-abspos-with-link-print.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-abspos-with-link-print.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-iframe-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-iframe-print-ref.html
index 5c171404508..5c171404508 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-iframe-print-ref.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-iframe-print-ref.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-iframe-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-iframe-print.html
index 5102d045c42..5102d045c42 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-iframe-print.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-iframe-print.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-link-with-inline-child-print-ref.html
index f12d31acd9d..f12d31acd9d 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print-ref.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-link-with-inline-child-print-ref.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-link-with-inline-child-print.html
index 694e5376cbf..694e5376cbf 100644
--- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print.html
+++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-link-with-inline-child-print.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/page-name-001-print-ref.html b/tests/wpt/web-platform-tests/css/printing/page-name-001-print-ref.html
index 69c5c37b5a3..69c5c37b5a3 100644
--- a/tests/wpt/web-platform-tests/css/css-break/page-name-001-print-ref.html
+++ b/tests/wpt/web-platform-tests/css/printing/page-name-001-print-ref.html
diff --git a/tests/wpt/web-platform-tests/css/css-break/page-name-001-print.html b/tests/wpt/web-platform-tests/css/printing/page-name-001-print.html
index 56281bb4ed5..56281bb4ed5 100644
--- a/tests/wpt/web-platform-tests/css/css-break/page-name-001-print.html
+++ b/tests/wpt/web-platform-tests/css/printing/page-name-001-print.html
diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-child-in-shadow-root.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-child-in-shadow-root.html
index 740b68f2003..443a12d229f 100644
--- a/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-child-in-shadow-root.html
+++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-child-in-shadow-root.html
@@ -17,6 +17,7 @@
</template>
</div>
<script>
+ polyfill_declarative_shadow_dom(host);
host.offsetTop;
host.shadowRoot.getElementById('toggler').classList.toggle('foo');
</script>
diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-last-child-in-shadow-root.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-last-child-in-shadow-root.html
index 766bac0fa38..890abfe9972 100644
--- a/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-last-child-in-shadow-root.html
+++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-last-child-in-shadow-root.html
@@ -19,6 +19,7 @@
</template>
</div>
<script>
+ polyfill_declarative_shadow_dom(host);
host.offsetTop;
host.shadowRoot.getElementById("toggler").classList.toggle("foo");
</script>
diff --git a/tests/wpt/web-platform-tests/css/selectors/visited-part-crash.html b/tests/wpt/web-platform-tests/css/selectors/visited-part-crash.html
new file mode 100644
index 00000000000..f4cb28995b1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/visited-part-crash.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<link rel="help" href="https://crbug.com/1413904">
+<style>
+ .foo:visited::part(test) {}
+</style>
+<div class=foo>
+ <a class=foo href="">Test</a>
+</div>
diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLElement.html
index bd252282161..0a1d40199e6 100644
--- a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLElement.html
+++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLElement.html
@@ -3,7 +3,7 @@
<head>
<title>Custom Elements: CEReactions on HTMLElement interface</title>
<meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org">
-<meta name="assert" content="title, lang, translate, dir, hidden, tabIndex, accessKey, draggable, dropzone, contextMenu, spellcheck, innerText, and outerText of HTMLElement interface must have CEReactions">
+<meta name="assert" content="title, lang, translate, dir, hidden, tabIndex, accessKey, draggable, dropzone, contextMenu, spellcheck, popover, innerText, and outerText of HTMLElement interface must have CEReactions">
<meta name="help" content="https://html.spec.whatwg.org/#htmlelement">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
@@ -23,6 +23,7 @@ testReflectAttribute('tabIndex', 'tabindex', '0', '1', 'tabIndex on HTMLElement'
testReflectAttribute('accessKey', 'accesskey', 'a', 'b', 'accessKey on HTMLElement');
testReflectAttributeWithContentValues('draggable', 'draggable', true, 'true', false, 'false', 'draggable on HTMLElement');
testReflectAttributeWithContentValues('spellcheck', 'spellcheck', true, 'true', false, 'false', 'spellcheck on HTMLElement');
+testReflectAttribute('popover', 'popover', 'auto', 'manual', 'popover on HTMLElement');
testNodeDisconnector(function (customElement) {
customElement.parentNode.innerText = '';
diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md b/tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md
index eb96f31202e..a4007039ae4 100644
--- a/tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md
+++ b/tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md
@@ -382,7 +382,7 @@ that looks on a UNIX-like command line:
$ ls fetch
api/ DIR_METADATA OWNERS
- connection-pool/ h1-parsing/ private-network-access/
+ connection-pool/ h1-parsing/ local-network-access/
content-encoding/ http-cache/ range/
content-length/ images/ README.md
content-type/ metadata/ redirect-navigate/
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/META.yml b/tests/wpt/web-platform-tests/fetch/local-network-access/META.yml
index 944ce6f14a1..944ce6f14a1 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/META.yml
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/META.yml
diff --git a/tests/wpt/web-platform-tests/fetch/local-network-access/README.md b/tests/wpt/web-platform-tests/fetch/local-network-access/README.md
new file mode 100644
index 00000000000..8995e3d7ef6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/README.md
@@ -0,0 +1,10 @@
+# Local Network Access tests
+
+This directory contains tests for Local Network Access' integration with
+the Fetch specification.
+
+See also:
+
+* [The specification](https://wicg.github.io/local-network-access/)
+* [The repository](https://github.com/WICG/local-network-access/)
+* [Open issues](https://github.com/WICG/local-network-access/issues/)
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch-from-treat-as-public.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/fetch-from-treat-as-public.https.window.js
index 90f7feb6341..90f7feb6341 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch-from-treat-as-public.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/fetch-from-treat-as-public.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/fetch.https.window.js
index dbc4f23f677..dbc4f23f677 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/fetch.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/fetch.window.js
index 8ee54c90562..8ee54c90562 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/fetch.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/iframe.tentative.https.window.js
index 48bd6420fd9..48bd6420fd9 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/iframe.tentative.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/iframe.tentative.window.js
index e00cb202bec..e00cb202bec 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/iframe.tentative.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/mixed-content-fetch.tentative.https.window.js
index 54485dc7047..6f7d765617c 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/mixed-content-fetch.tentative.https.window.js
@@ -1,10 +1,10 @@
// META: script=/common/utils.js
// META: script=resources/support.sub.js
//
-// Spec: https://wicg.github.io/private-network-access
+// Spec: https://wicg.github.io/local-network-access
//
// These tests verify that secure contexts can fetch non-secure subresources
-// from more private address spaces, avoiding mixed context checks, as long as
+// from more local address spaces, avoiding mixed context checks, as long as
// they specify a valid `targetAddressSpace` fetch option that matches the
// target server's address space.
@@ -16,9 +16,9 @@ setup(() => {
// Given `addressSpace`, returns the other three possible IP address spaces.
function otherAddressSpaces(addressSpace) {
switch (addressSpace) {
- case "local": return ["unknown", "private", "public"];
- case "private": return ["unknown", "local", "public"];
- case "public": return ["unknown", "local", "private"];
+ case "loopback": return ["unknown", "local", "public"];
+ case "local": return ["unknown", "loopback", "public"];
+ case "public": return ["unknown", "loopback", "local"];
}
}
@@ -169,64 +169,66 @@ function makeNoBypassTests({ source, target }) {
},
fetchOptions: { targetAddressSpace: correctAddressSpace },
expected: FetchTestResult.FAILURE,
- }), prefix + 'not a private network request.');
+ }), prefix + 'not a local network request.');
}
-// Source: local secure context.
+// Source: loopback secure context.
//
-// Fetches to the local and private address spaces cannot use
+// Fetches to the loopback and local address spaces cannot use
// `targetAddressSpace` to bypass mixed content, as they are not otherwise
-// blocked by Private Network Access.
+// blocked by Local Network Access.
-makeNoBypassTests({ source: "local", target: "local" });
-makeNoBypassTests({ source: "local", target: "private" });
-makeNoBypassTests({ source: "local", target: "public" });
+makeNoBypassTests({ source: "loopback", target: "loopback" });
+makeNoBypassTests({ source: "loopback", target: "local" });
+makeNoBypassTests({ source: "loopback", target: "public" });
-// Source: private secure context.
+// Source: local secure context.
//
-// Fetches to the local address space requires the right `targetAddressSpace`
+// Fetches to the loopback address space requires the right `targetAddressSpace`
// option, as well as a successful preflight response carrying a PNA-specific
// header.
//
-// Fetches to the private address space cannot use `targetAddressSpace` to
-// bypass mixed content, as they are not otherwise blocked by Private Network
+// Fetches to the local address space cannot use `targetAddressSpace` to
+// bypass mixed content, as they are not otherwise blocked by Local Network
// Access.
-makeTests({ source: "private", target: "local" });
+makeTests({ source: "local", target: "loopback" });
-makeNoBypassTests({ source: "private", target: "private" });
-makeNoBypassTests({ source: "private", target: "public" });
+makeNoBypassTests({ source: "local", target: "local" });
+makeNoBypassTests({ source: "local", target: "public" });
// Source: public secure context.
//
-// Fetches to the local and private address spaces require the right
+// Fetches to the loopback and local address spaces require the right
// `targetAddressSpace` option, as well as a successful preflight response
// carrying a PNA-specific header.
+makeTests({ source: "public", target: "loopback" });
makeTests({ source: "public", target: "local" });
-makeTests({ source: "public", target: "private" });
makeNoBypassTests({ source: "public", target: "public" });
-// These tests verify that documents fetched from the `local` address space yet
-// carrying the `treat-as-public-address` CSP directive are treated as if they
-// had been fetched from the `public` address space.
+// These tests verify that documents fetched from the `loopback` address space
+// yet carrying the `treat-as-public-address` CSP directive are treated as if
+// they had been fetched from the `public` address space.
-promise_test_parallel(t => fetchTest(t, {
- source: {
- server: Server.HTTPS_LOCAL,
- treatAsPublic: true,
- },
- target: {
- server: Server.HTTP_LOCAL,
- behavior: {
- preflight: PreflightBehavior.optionalSuccess(token()),
- response: ResponseBehavior.allowCrossOrigin(),
- },
- },
- fetchOptions: { targetAddressSpace: "private" },
- expected: FetchTestResult.FAILURE,
-}), 'https-treat-as-public to http-local: wrong targetAddressSpace "private".');
+promise_test_parallel(
+ t => fetchTest(t, {
+ source: {
+ server: Server.HTTPS_LOCAL,
+ treatAsPublic: true,
+ },
+ target: {
+ server: Server.HTTP_LOCAL,
+ behavior: {
+ preflight: PreflightBehavior.optionalSuccess(token()),
+ response: ResponseBehavior.allowCrossOrigin(),
+ },
+ },
+ fetchOptions: {targetAddressSpace: 'local'},
+ expected: FetchTestResult.FAILURE,
+ }),
+ 'https-treat-as-public to http-loopback: wrong targetAddressSpace "local".');
promise_test_parallel(t => fetchTest(t, {
source: {
@@ -240,9 +242,9 @@ promise_test_parallel(t => fetchTest(t, {
response: ResponseBehavior.allowCrossOrigin(),
},
},
- fetchOptions: { targetAddressSpace: "local" },
+ fetchOptions: { targetAddressSpace: "loopback" },
expected: FetchTestResult.SUCCESS,
-}), "https-treat-as-public to http-local: success.");
+}), "https-treat-as-public to http-loopback: success.");
promise_test_parallel(t => fetchTest(t, {
source: {
@@ -256,9 +258,9 @@ promise_test_parallel(t => fetchTest(t, {
response: ResponseBehavior.allowCrossOrigin(),
},
},
- fetchOptions: { targetAddressSpace: "local" },
+ fetchOptions: { targetAddressSpace: "loopback" },
expected: FetchTestResult.FAILURE,
-}), 'https-treat-as-public to http-private: wrong targetAddressSpace "local".');
+}), 'https-treat-as-public to http-local: wrong targetAddressSpace "loopback".');
promise_test_parallel(t => fetchTest(t, {
source: {
@@ -272,6 +274,6 @@ promise_test_parallel(t => fetchTest(t, {
response: ResponseBehavior.allowCrossOrigin(),
},
},
- fetchOptions: { targetAddressSpace: "private" },
+ fetchOptions: { targetAddressSpace: "local" },
expected: FetchTestResult.SUCCESS,
-}), "https-treat-as-public to http-private: success.");
+}), "https-treat-as-public to http-local: success.");
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/nested-worker.https.window.js
index 3eeb435badb..3eeb435badb 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/nested-worker.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/nested-worker.window.js
index 6d246e1c76d..6d246e1c76d 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/nested-worker.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/preflight-cache.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/preflight-cache.https.window.js
index 87dbf501f62..87dbf501f62 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/preflight-cache.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/preflight-cache.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/redirect.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/redirect.https.window.js
index f8a53ad1889..f8a53ad1889 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/redirect.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/redirect.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/executor.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/executor.html
index d71212951cb..d71212951cb 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/executor.html
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/executor.html
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/fetcher.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/fetcher.html
index 000a5cc25bb..000a5cc25bb 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/fetcher.html
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/fetcher.html
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/fetcher.js b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/fetcher.js
index 3a1859876d4..3a1859876d4 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/fetcher.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/fetcher.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframed.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/iframed.html
index c889c2882a4..c889c2882a4 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframed.html
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/iframed.html
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframer.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/iframer.html
index 304cc54ae44..304cc54ae44 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframer.html
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/iframer.html
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/preflight.py
index 4b0bfefd4d6..4b0bfefd4d6 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/preflight.py
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker-bridge.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/service-worker-bridge.html
index 816de535fea..816de535fea 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker-bridge.html
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/service-worker-bridge.html
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker.js b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/service-worker.js
index bca71ad910c..bca71ad910c 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/service-worker.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-fetcher.js b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-fetcher.js
index 30bde1e0542..30bde1e0542 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-fetcher.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-fetcher.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-worker-blob-fetcher.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-worker-blob-fetcher.html
index a79869b2f96..a79869b2f96 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-worker-blob-fetcher.html
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-worker-blob-fetcher.html
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-worker-fetcher.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-worker-fetcher.html
index 4af4b1f2395..4af4b1f2395 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-worker-fetcher.html
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-worker-fetcher.html
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/socket-opener.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/socket-opener.html
index 48d27216bed..48d27216bed 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/socket-opener.html
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/socket-opener.html
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/support.sub.js b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/support.sub.js
index 210184ec4b6..c07fd2c2ace 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/support.sub.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/support.sub.js
@@ -75,20 +75,20 @@ async function postMessageAndAwaitReply(target, message) {
// Maps protocol (without the trailing colon) and address space to port.
const SERVER_PORTS = {
"http": {
- "local": {{ports[http][0]}},
- "private": {{ports[http-private][0]}},
+ "loopback": {{ports[http][0]}},
+ "local": {{ports[http-private][0]}},
"public": {{ports[http-public][0]}},
},
"https": {
- "local": {{ports[https][0]}},
- "private": {{ports[https-private][0]}},
+ "loopback": {{ports[https][0]}},
+ "local": {{ports[https-private][0]}},
"public": {{ports[https-public][0]}},
},
"ws": {
- "local": {{ports[ws][0]}},
+ "loopback": {{ports[ws][0]}},
},
"wss": {
- "local": {{ports[wss][0]}},
+ "loopback": {{ports[wss][0]}},
},
};
@@ -126,14 +126,14 @@ class Server {
};
}
- static HTTP_LOCAL = Server.get("http", "local");
- static HTTP_PRIVATE = Server.get("http", "private");
+ static HTTP_LOCAL = Server.get("http", "loopback");
+ static HTTP_PRIVATE = Server.get("http", "local");
static HTTP_PUBLIC = Server.get("http", "public");
- static HTTPS_LOCAL = Server.get("https", "local");
- static HTTPS_PRIVATE = Server.get("https", "private");
+ static HTTPS_LOCAL = Server.get("https", "loopback");
+ static HTTPS_PRIVATE = Server.get("https", "local");
static HTTPS_PUBLIC = Server.get("https", "public");
- static WS_LOCAL = Server.get("ws", "local");
- static WSS_LOCAL = Server.get("wss", "local");
+ static WS_LOCAL = Server.get("ws", "loopback");
+ static WSS_LOCAL = Server.get("wss", "loopback");
};
// Resolves a URL relative to the current location, returning an absolute URL.
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-blob-fetcher.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-blob-fetcher.html
index 5a50271e11b..5a50271e11b 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-blob-fetcher.html
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-blob-fetcher.html
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-fetcher.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-fetcher.html
index bd155a532bd..bd155a532bd 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-fetcher.html
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-fetcher.html
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-fetcher.js b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-fetcher.js
index aab49afe6f4..aab49afe6f4 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-fetcher.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-fetcher.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/xhr-sender.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/xhr-sender.html
index b131fa41f9a..b131fa41f9a 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/xhr-sender.html
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/xhr-sender.html
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-background-fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-background-fetch.https.window.js
index 6369b166e21..6369b166e21 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-background-fetch.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-background-fetch.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-fetch.https.window.js
index 5645d784561..5645d784561 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-fetch.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-fetch.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-update.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-update.https.window.js
index fe2bf58f660..fe2bf58f660 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-update.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-update.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker.https.window.js
index 8dc631f65a8..8dc631f65a8 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-blob-fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-blob-fetch.https.window.js
index ad9cd09c31b..ad9cd09c31b 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-blob-fetch.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-blob-fetch.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-blob-fetch.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-blob-fetch.window.js
index d430ea73837..d430ea73837 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-blob-fetch.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-blob-fetch.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-fetch.https.window.js
index 7066b359caa..7066b359caa 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-fetch.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-fetch.window.js
index 9bc1a89bead..9bc1a89bead 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-fetch.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker.https.window.js
index ecb70c41245..ecb70c41245 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker.window.js
index ffa8a360c70..ffa8a360c70 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/websocket.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/websocket.https.window.js
index 0731896098b..0731896098b 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/websocket.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/websocket.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/websocket.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/websocket.window.js
index a44cfaedec7..a44cfaedec7 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/websocket.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/websocket.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-blob-fetch.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/worker-blob-fetch.window.js
index e119746b8a6..e119746b8a6 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-blob-fetch.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/worker-blob-fetch.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/worker-fetch.https.window.js
index 89e0c3cf1f3..89e0c3cf1f3 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/worker-fetch.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/worker-fetch.window.js
index 4d6b12f0671..4d6b12f0671 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/worker-fetch.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/worker.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/worker.https.window.js
index 2d0dddd685c..2d0dddd685c 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/worker.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/worker.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/worker.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/worker.window.js
index 118c0992544..118c0992544 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/worker.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/worker.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr-from-treat-as-public.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/xhr-from-treat-as-public.https.window.js
index 04fe5449d19..04fe5449d19 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr-from-treat-as-public.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/xhr-from-treat-as-public.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/xhr.https.window.js
index 4dc5da9912f..4dc5da9912f 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr.https.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/xhr.https.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/xhr.window.js
index fa307dc559a..fa307dc559a 100644
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr.window.js
+++ b/tests/wpt/web-platform-tests/fetch/local-network-access/xhr.window.js
diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/README.md b/tests/wpt/web-platform-tests/fetch/private-network-access/README.md
deleted file mode 100644
index a69aab48723..00000000000
--- a/tests/wpt/web-platform-tests/fetch/private-network-access/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Private Network Access tests
-
-This directory contains tests for Private Network Access' integration with
-the Fetch specification.
-
-See also:
-
-* [The specification](https://wicg.github.io/private-network-access/)
-* [The repository](https://github.com/WICG/private-network-access/)
-* [Open issues](https://github.com/WICG/private-network-access/issues/)
diff --git a/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js
index 7f244bc02aa..1b7fcda35bf 100644
--- a/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js
+++ b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js
@@ -7,6 +7,7 @@ directory_test(async (t, root_dir) => {
const fileHandle = await root_dir.getFileHandle('OPFS.test', {create: true});
const syncHandle1 = await fileHandle.createSyncAccessHandle();
+ t.add_cleanup(() => syncHandle1.close());
await promise_rejects_dom(
t, 'NoModificationAllowedError', fileHandle.createSyncAccessHandle());
@@ -23,6 +24,7 @@ directory_test(async (t, root_dir) => {
t.add_cleanup(() => fooSyncHandle.close());
const barSyncHandle1 = await barFileHandle.createSyncAccessHandle();
+ t.add_cleanup(() => barSyncHandle1.close());
await promise_rejects_dom(
t, 'NoModificationAllowedError', barFileHandle.createSyncAccessHandle());
@@ -60,8 +62,10 @@ directory_test(async (t, root_dir) => {
const fileHandle = await root_dir.getFileHandle('OPFS.test', {create: true});
const syncHandle = await fileHandle.createSyncAccessHandle();
+ t.add_cleanup(() => { syncHandle.close(); });
await promise_rejects_dom(
- t, 'NoModificationAllowedError', fileHandle.createWritable());
+ t, 'NoModificationAllowedError', cleanup_writable(t, fileHandle.createWritable()));
+
syncHandle.close();
const writable = await fileHandle.createWritable();
await writable.close();
diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/worker-cookies.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/worker-cookies.tentative.https.window.js
new file mode 100644
index 00000000000..4c29983c2b2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/worker-cookies.tentative.https.window.js
@@ -0,0 +1,69 @@
+// META: timeout=long
+// META: variant=?worker=dedicated_worker
+// META: variant=?worker=shared_worker
+// META: variant=?worker=service_worker
+// META: script=/common/get-host-info.sub.js
+// META: script=/common/utils.js
+// META: script=/common/dispatcher/dispatcher.js
+// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js
+// META: script=./resources/common.js
+
+// Execute the same set of tests for every type of worker.
+// - DedicatedWorkers
+// - SharedWorkers
+// - ServiceWorkers.
+const params = new URLSearchParams(document.location.search);
+const worker_param = params.get("worker") || "dedicated_worker";
+
+const cookie_key = token();
+const cookie_value = "cookie_value";
+const cookie_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
+
+// Create worker spawned from `context` and return its uuid.
+const workerFrom = context => {
+ const reply = token();
+ send(context, `
+ for(deps of [
+ "/common/utils.js",
+ "/html/cross-origin-embedder-policy/credentialless/resources/common.js",
+ ]) {
+ await new Promise(resolve => {
+ const script = document.createElement("script");
+ script.src = deps;
+ script.onload = resolve;
+ document.body.appendChild(script);
+ });
+ }
+
+ const worker_constructor = environments["${worker_param}"];
+ const headers = "";
+ const [worker, error] = worker_constructor(headers);
+ send("${reply}", worker);
+ `);
+ return receive(reply);
+};
+
+// Set a cookie from a top-level document.
+promise_test(async test => {
+ await setCookie(cookie_origin, cookie_key, cookie_value);
+}, "set cookies");
+
+// Control: iframe is not credentialless. The worker can access cookies.
+promise_test(async test => {
+ const headers = token();
+ send(await workerFrom(newIframe(cookie_origin)), `
+ fetch("${showRequestHeaders(cookie_origin, headers)}");
+ `);
+ const cookie = parseCookies(JSON.parse(await receive(headers)));
+ assert_equals(cookie[cookie_key], cookie_value)
+}, "Worker spawned from normal iframe can access global cookies");
+
+// Experiment: iframe is credentialless.
+promise_test(async test => {
+ const headers = token();
+ send(await workerFrom(newIframeCredentialless(cookie_origin)), `
+ fetch("${showRequestHeaders(cookie_origin, headers)}");
+ `);
+ const cookie = parseCookies(JSON.parse(await receive(headers)));
+ assert_equals(cookie[cookie_key], undefined)
+}, "Worker spawned from credentialless iframe can't access global cookies");
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html
index 4ff7397ae8c..f495ee2e6a0 100644
--- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html
+++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html
@@ -36,8 +36,6 @@ ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
ctx.restore();
-canvas.toDataURL();
-
_assertPixel(canvas, 50,25, 0,255,0,255);
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html
index b1308035936..83815f367b7 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html
@@ -15,18 +15,21 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.scale(2, 1);
ctx.rotate(Math.PI / 2);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, -50, 50, 50);
_assertPixel(canvas, 75,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js
index 7ac61067b4b..d00fe230efb 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.scale(2, 1);
ctx.rotate(Math.PI / 2);
ctx.fillStyle = '#0f0';
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html
index 0a98c7e65f9..c20608f81c8 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html
@@ -15,17 +15,20 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.rotate(Math.PI / 2);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, -100, 50, 100);
_assertPixel(canvas, 50,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js
index 465d3b67907..8506937583e 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.rotate(Math.PI / 2);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, -100, 50, 100);
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html
index 0f2227a4e5c..bbc294a24fe 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html
@@ -15,20 +15,25 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.translate(100, 10);
ctx.rotate(Infinity);
ctx.rotate(-Infinity);
ctx.rotate(NaN);
+
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -10, 100, 50);
+
_assertPixel(canvas, 50,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js
index 56a04d874e8..2c892a561b2 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js
@@ -18,12 +18,15 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.translate(100, 10);
ctx.rotate(Infinity);
ctx.rotate(-Infinity);
ctx.rotate(NaN);
+
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -10, 100, 50);
+
_assertPixel(canvas, 50,25, 0,255,0,255);
t.done();
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html
index 8a78dddd7f8..75121e39d7f 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html
@@ -15,17 +15,20 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -50, 100, 50);
_assertPixel(canvas, 50,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js
index 9780e68a02f..8c2fdd8ab08 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -50, 100, 50);
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html
index 7711a8c1404..1f9eb838c81 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html
@@ -15,13 +15,15 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi)
// We need about pi +/- 0.001 in order to get correct-looking results
// 32-bit floats can store pi*4097 with precision 2^-10, so that should
@@ -31,6 +33,7 @@ ctx.fillRect(-100, -50, 100, 50);
_assertPixel(canvas, 50,25, 0,255,0,255);
_assertPixel(canvas, 98,2, 0,255,0,255);
_assertPixel(canvas, 98,47, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js
index db9fbd43bc1..579a1b6dd68 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi)
// We need about pi +/- 0.001 in order to get correct-looking results
// 32-bit floats can store pi*4097 with precision 2^-10, so that should
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html
index 49959dac022..c06f6453155 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html
@@ -15,19 +15,22 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.rotate(-Math.PI * (1 + 4096));
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -50, 100, 50);
_assertPixel(canvas, 50,25, 0,255,0,255);
_assertPixel(canvas, 98,2, 0,255,0,255);
_assertPixel(canvas, 98,47, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js
index 7f93f654582..cce91071210 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.rotate(-Math.PI * (1 + 4096));
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -50, 100, 50);
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html
index 2255b9973dd..0101fa27c58 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html
@@ -15,17 +15,20 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.rotate(0);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
_assertPixel(canvas, 50,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js
index 10e00c4656a..1ad0aa59853 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.rotate(0);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html
index c78ac79f5ab..5c70438ba16 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html
@@ -15,17 +15,20 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.scale(2, 4);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 50, 12.5);
_assertPixel(canvas, 90,40, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js
index 39b52d57b5f..73be61007a5 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.scale(2, 4);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 50, 12.5);
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html
index a67d05eb2c2..8974545500a 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html
@@ -15,17 +15,20 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.scale(1e5, 1e5);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 1, 1);
_assertPixel(canvas, 50,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js
index 1293cce196f..30af9631e6c 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.scale(1e5, 1e5);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 1, 1);
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html
index 717f3d305a1..b07acf15ce6 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html
@@ -15,18 +15,21 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.scale(Math.sqrt(2), Math.sqrt(2));
ctx.scale(Math.sqrt(2), Math.sqrt(2));
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 50, 25);
_assertPixel(canvas, 90,40, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js
index c5a38207ea0..267a7df9441 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.scale(Math.sqrt(2), Math.sqrt(2));
ctx.scale(Math.sqrt(2), Math.sqrt(2));
ctx.fillStyle = '#0f0';
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html
index fbcec5d763a..b516c1154f4 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html
@@ -15,18 +15,21 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.save();
ctx.scale(-1, 1);
ctx.fillStyle = '#0f0';
ctx.fillRect(-50, 0, 50, 50);
ctx.restore();
+
ctx.save();
ctx.scale(1, -1);
ctx.fillStyle = '#0f0';
@@ -34,6 +37,7 @@ ctx.fillRect(50, -50, 50, 50);
ctx.restore();
_assertPixel(canvas, 25,25, 0,255,0,255);
_assertPixel(canvas, 75,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js
index a5344a9a717..0e68f7e8d8c 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js
@@ -18,11 +18,13 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.save();
ctx.scale(-1, 1);
ctx.fillStyle = '#0f0';
ctx.fillRect(-50, 0, 50, 50);
ctx.restore();
+
ctx.save();
ctx.scale(1, -1);
ctx.fillStyle = '#0f0';
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html
index ac38bc1fa46..3d9c75a0dc0 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html
@@ -15,13 +15,15 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.translate(100, 10);
ctx.scale(Infinity, 0.1);
ctx.scale(-Infinity, 0.1);
@@ -30,9 +32,12 @@ ctx.scale(0.1, Infinity);
ctx.scale(0.1, -Infinity);
ctx.scale(0.1, NaN);
ctx.scale(Infinity, Infinity);
+
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -10, 100, 50);
+
_assertPixel(canvas, 50,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js
index 95e9922b69b..67c5c104481 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.translate(100, 10);
ctx.scale(Infinity, 0.1);
ctx.scale(-Infinity, 0.1);
@@ -26,8 +27,10 @@ ctx.scale(0.1, Infinity);
ctx.scale(0.1, -Infinity);
ctx.scale(0.1, NaN);
ctx.scale(Infinity, Infinity);
+
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -10, 100, 50);
+
_assertPixel(canvas, 50,25, 0,255,0,255);
t.done();
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html
index 9eae3b1db33..4b664125c22 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html
@@ -15,26 +15,31 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
+
ctx.save();
ctx.translate(50, 0);
ctx.scale(0, 1);
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
ctx.restore();
+
ctx.save();
ctx.translate(0, 25);
ctx.scale(1, 0);
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
ctx.restore();
+
_assertPixel(canvas, 50,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js
index 0f8dad04422..dc52323bc23 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js
@@ -18,18 +18,21 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
+
ctx.save();
ctx.translate(50, 0);
ctx.scale(0, 1);
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
ctx.restore();
+
ctx.save();
ctx.translate(0, 25);
ctx.scale(1, 0);
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
ctx.restore();
+
_assertPixel(canvas, 50,25, 0,255,0,255);
t.done();
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html
index f8dfb048812..e28710858b1 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html
@@ -15,18 +15,22 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.setTransform(1/2,0, 0,1/2, 0,0);
+ctx.setTransform();
ctx.setTransform(2,0, 0,2, 0,0);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 50, 25);
_assertPixel(canvas, 75,35, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js
index 9d01c1302ec..b6b004601fb 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js
@@ -18,7 +18,9 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.setTransform(1/2,0, 0,1/2, 0,0);
+ctx.setTransform();
ctx.setTransform(2,0, 0,2, 0,0);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 50, 25);
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html
index fbed341a04a..03c1b74579f 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html
@@ -15,13 +15,15 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.translate(100, 10);
ctx.setTransform(Infinity, 0, 0, 0, 0, 0);
ctx.setTransform(-Infinity, 0, 0, 0, 0, 0);
@@ -98,9 +100,12 @@ ctx.setTransform(0, 0, 0, Infinity, Infinity, 0);
ctx.setTransform(0, 0, 0, Infinity, Infinity, Infinity);
ctx.setTransform(0, 0, 0, Infinity, 0, Infinity);
ctx.setTransform(0, 0, 0, 0, Infinity, Infinity);
+
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -10, 100, 50);
+
_assertPixel(canvas, 50,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js
index be7e055a853..bd48262ca7d 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.translate(100, 10);
ctx.setTransform(Infinity, 0, 0, 0, 0, 0);
ctx.setTransform(-Infinity, 0, 0, 0, 0, 0);
@@ -94,8 +95,10 @@ ctx.setTransform(0, 0, 0, Infinity, Infinity, 0);
ctx.setTransform(0, 0, 0, Infinity, Infinity, Infinity);
ctx.setTransform(0, 0, 0, Infinity, 0, Infinity);
ctx.setTransform(0, 0, 0, 0, Infinity, Infinity);
+
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -10, 100, 50);
+
_assertPixel(canvas, 50,25, 0,255,0,255);
t.done();
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html
index 40fa8015d4c..c49d9d8a298 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html
@@ -15,11 +15,12 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
// Create green with a red square ring inside it
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
@@ -27,6 +28,7 @@ ctx.fillStyle = '#f00';
ctx.fillRect(20, 10, 60, 30);
ctx.fillStyle = '#0f0';
ctx.fillRect(40, 20, 20, 10);
+
// Draw a skewed shape to fill that gap, to make sure it is aligned correctly
ctx.setTransform(1,4, 2,3, 5,6);
// Post-transform coordinates:
@@ -48,6 +50,7 @@ _assertPixel(canvas, 39,19, 0,255,0,255);
_assertPixel(canvas, 61,19, 0,255,0,255);
_assertPixel(canvas, 39,31, 0,255,0,255);
_assertPixel(canvas, 61,31, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js
index 6490f9b7094..6f4b4769b61 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js
@@ -23,6 +23,7 @@ ctx.fillStyle = '#f00';
ctx.fillRect(20, 10, 60, 30);
ctx.fillStyle = '#0f0';
ctx.fillRect(40, 20, 20, 10);
+
// Draw a skewed shape to fill that gap, to make sure it is aligned correctly
ctx.setTransform(1,4, 2,3, 5,6);
// Post-transform coordinates:
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html
index 92753bc9e3e..1efa306707c 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html
@@ -15,17 +15,20 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.transform(1,0, 0,1, 0,0);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
_assertPixel(canvas, 50,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js
index 99ac58d49d3..51a11ee03de 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.transform(1,0, 0,1, 0,0);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html
index f69fa4330af..05a1e7e5ead 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html
@@ -15,18 +15,21 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.transform(1,2, 3,4, 5,6);
ctx.transform(-2,1, 3/2,-1/2, 1,-2);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
_assertPixel(canvas, 50,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js
index 1a0e702a05b..61a5f052dc7 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.transform(1,2, 3,4, 5,6);
ctx.transform(-2,1, 3/2,-1/2, 1,-2);
ctx.fillStyle = '#0f0';
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html
index 6e679341d5d..b81bda463bd 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html
@@ -15,13 +15,15 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.translate(100, 10);
ctx.transform(Infinity, 0, 0, 0, 0, 0);
ctx.transform(-Infinity, 0, 0, 0, 0, 0);
@@ -98,9 +100,12 @@ ctx.transform(0, 0, 0, Infinity, Infinity, 0);
ctx.transform(0, 0, 0, Infinity, Infinity, Infinity);
ctx.transform(0, 0, 0, Infinity, 0, Infinity);
ctx.transform(0, 0, 0, 0, Infinity, Infinity);
+
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -10, 100, 50);
+
_assertPixel(canvas, 50,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js
index d596fc9744b..ee675151b3a 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.translate(100, 10);
ctx.transform(Infinity, 0, 0, 0, 0, 0);
ctx.transform(-Infinity, 0, 0, 0, 0, 0);
@@ -94,8 +95,10 @@ ctx.transform(0, 0, 0, Infinity, Infinity, 0);
ctx.transform(0, 0, 0, Infinity, Infinity, Infinity);
ctx.transform(0, 0, 0, Infinity, 0, Infinity);
ctx.transform(0, 0, 0, 0, Infinity, Infinity);
+
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -10, 100, 50);
+
_assertPixel(canvas, 50,25, 0,255,0,255);
t.done();
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html
index 78e1252c67c..9cb6dfcc52e 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html
@@ -15,11 +15,12 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
// Create green with a red square ring inside it
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
@@ -27,6 +28,7 @@ ctx.fillStyle = '#f00';
ctx.fillRect(20, 10, 60, 30);
ctx.fillStyle = '#0f0';
ctx.fillRect(40, 20, 20, 10);
+
// Draw a skewed shape to fill that gap, to make sure it is aligned correctly
ctx.transform(1,4, 2,3, 5,6);
// Post-transform coordinates:
@@ -48,6 +50,7 @@ _assertPixel(canvas, 39,19, 0,255,0,255);
_assertPixel(canvas, 61,19, 0,255,0,255);
_assertPixel(canvas, 39,31, 0,255,0,255);
_assertPixel(canvas, 61,31, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js
index 46416bb9570..638adc14c44 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js
@@ -23,6 +23,7 @@ ctx.fillStyle = '#f00';
ctx.fillRect(20, 10, 60, 30);
ctx.fillStyle = '#0f0';
ctx.fillRect(40, 20, 20, 10);
+
// Draw a skewed shape to fill that gap, to make sure it is aligned correctly
ctx.transform(1,4, 2,3, 5,6);
// Post-transform coordinates:
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html
index 8144ab0cc1b..51a7527b5cc 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html
@@ -15,17 +15,20 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.translate(100, 50);
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -50, 100, 50);
_assertPixel(canvas, 90,40, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js
index 695aff37da5..11e8bd897b4 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.translate(100, 50);
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -50, 100, 50);
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html
index 4127a7a157e..010b28f3c6a 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html
@@ -15,13 +15,15 @@ var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
-t.step(function() {
+t.step(async function() {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
+await (function(canvas, ctx) {
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.translate(100, 10);
ctx.translate(Infinity, 0.1);
ctx.translate(-Infinity, 0.1);
@@ -30,9 +32,12 @@ ctx.translate(0.1, Infinity);
ctx.translate(0.1, -Infinity);
ctx.translate(0.1, NaN);
ctx.translate(Infinity, Infinity);
+
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -10, 100, 50);
+
_assertPixel(canvas, 50,25, 0,255,0,255);
+})(canvas, ctx);
t.done();
});
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js
index 84b52a203b6..c3ff3a31a8c 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js
@@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
+
ctx.translate(100, 10);
ctx.translate(Infinity, 0.1);
ctx.translate(-Infinity, 0.1);
@@ -26,8 +27,10 @@ ctx.translate(0.1, Infinity);
ctx.translate(0.1, -Infinity);
ctx.translate(0.1, NaN);
ctx.translate(Infinity, Infinity);
+
ctx.fillStyle = '#0f0';
ctx.fillRect(-100, -10, 100, 50);
+
_assertPixel(canvas, 50,25, 0,255,0,255);
t.done();
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/transformations.yaml
index 876c48f849c..0d2265be7aa 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/transformations.yaml
@@ -44,8 +44,6 @@
ctx.fillRect(0, 0, 100, 50);
ctx.restore();
- canvas.toDataURL();
-
@assert pixel 50,25 == 0,255,0,255;
expected: green
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/transformations.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/transformations.yaml
deleted file mode 100644
index efc00222bfc..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/transformations.yaml
+++ /dev/null
@@ -1,320 +0,0 @@
-- name: 2d.transformation.order
- desc: Transformations are applied in the right order
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.scale(2, 1);
- ctx.rotate(Math.PI / 2);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, -50, 50, 50);
- @assert pixel 75,25 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.scale.basic
- desc: scale() works
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.scale(2, 4);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 50, 12.5);
- @assert pixel 90,40 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.scale.zero
- desc: scale() with a scale factor of zero works
- code: |
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.save();
- ctx.translate(50, 0);
- ctx.scale(0, 1);
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.restore();
- ctx.save();
- ctx.translate(0, 25);
- ctx.scale(1, 0);
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.restore();
- @assert pixel 50,25 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.scale.negative
- desc: scale() with negative scale factors works
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.save();
- ctx.scale(-1, 1);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(-50, 0, 50, 50);
- ctx.restore();
- ctx.save();
- ctx.scale(1, -1);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(50, -50, 50, 50);
- ctx.restore();
- @assert pixel 25,25 == 0,255,0,255;
- @assert pixel 75,25 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.scale.large
- desc: scale() with large scale factors works
- notes: Not really that large at all, but it hits the limits in Firefox.
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.scale(1e5, 1e5);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 1, 1);
- @assert pixel 50,25 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.scale.nonfinite
- desc: scale() with Infinity/NaN is ignored
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.translate(100, 10);
- @nonfinite ctx.scale(<0.1 Infinity -Infinity NaN>, <0.1 Infinity -Infinity NaN>);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(-100, -10, 100, 50);
- @assert pixel 50,25 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.scale.multiple
- desc: Multiple scale()s combine
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.scale(Math.sqrt(2), Math.sqrt(2));
- ctx.scale(Math.sqrt(2), Math.sqrt(2));
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 50, 25);
- @assert pixel 90,40 == 0,255,0,255;
- t.done();
-
-
-- name: 2d.transformation.rotate.zero
- desc: rotate() by 0 does nothing
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.rotate(0);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- @assert pixel 50,25 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.rotate.radians
- desc: rotate() uses radians
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees
- ctx.fillStyle = '#0f0';
- ctx.fillRect(-100, -50, 100, 50);
- @assert pixel 50,25 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.rotate.direction
- desc: rotate() is clockwise
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.rotate(Math.PI / 2);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, -100, 50, 100);
- @assert pixel 50,25 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.rotate.wrap
- desc: rotate() wraps large positive values correctly
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi)
- // We need about pi +/- 0.001 in order to get correct-looking results
- // 32-bit floats can store pi*4097 with precision 2^-10, so that should
- // be safe enough on reasonable implementations
- ctx.fillStyle = '#0f0';
- ctx.fillRect(-100, -50, 100, 50);
- @assert pixel 50,25 == 0,255,0,255;
- @assert pixel 98,2 == 0,255,0,255;
- @assert pixel 98,47 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.rotate.wrapnegative
- desc: rotate() wraps large negative values correctly
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.rotate(-Math.PI * (1 + 4096));
- ctx.fillStyle = '#0f0';
- ctx.fillRect(-100, -50, 100, 50);
- @assert pixel 50,25 == 0,255,0,255;
- @assert pixel 98,2 == 0,255,0,255;
- @assert pixel 98,47 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.rotate.nonfinite
- desc: rotate() with Infinity/NaN is ignored
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.translate(100, 10);
- @nonfinite ctx.rotate(<0.1 Infinity -Infinity NaN>);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(-100, -10, 100, 50);
- @assert pixel 50,25 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.translate.basic
- desc: translate() works
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.translate(100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(-100, -50, 100, 50);
- @assert pixel 90,40 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.translate.nonfinite
- desc: translate() with Infinity/NaN is ignored
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.translate(100, 10);
- @nonfinite ctx.translate(<0.1 Infinity -Infinity NaN>, <0.1 Infinity -Infinity NaN>);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(-100, -10, 100, 50);
- @assert pixel 50,25 == 0,255,0,255;
- t.done();
-
-
-- name: 2d.transformation.transform.identity
- desc: transform() with the identity matrix does nothing
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.transform(1,0, 0,1, 0,0);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- @assert pixel 50,25 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.transform.skewed
- desc: transform() with skewy matrix transforms correctly
- code: |
- // Create green with a red square ring inside it
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#f00';
- ctx.fillRect(20, 10, 60, 30);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(40, 20, 20, 10);
- // Draw a skewed shape to fill that gap, to make sure it is aligned correctly
- ctx.transform(1,4, 2,3, 5,6);
- // Post-transform coordinates:
- // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]];
- // Hence pre-transform coordinates:
- var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2],
- [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2],
- [-7.4,11.2]];
- ctx.beginPath();
- ctx.moveTo(pts[0][0], pts[0][1]);
- for (var i = 0; i < pts.length; ++i)
- ctx.lineTo(pts[i][0], pts[i][1]);
- ctx.fill();
- @assert pixel 21,11 == 0,255,0,255;
- @assert pixel 79,11 == 0,255,0,255;
- @assert pixel 21,39 == 0,255,0,255;
- @assert pixel 79,39 == 0,255,0,255;
- @assert pixel 39,19 == 0,255,0,255;
- @assert pixel 61,19 == 0,255,0,255;
- @assert pixel 39,31 == 0,255,0,255;
- @assert pixel 61,31 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.transform.multiply
- desc: transform() multiplies the CTM
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.transform(1,2, 3,4, 5,6);
- ctx.transform(-2,1, 3/2,-1/2, 1,-2);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- @assert pixel 50,25 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.transform.nonfinite
- desc: transform() with Infinity/NaN is ignored
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.translate(100, 10);
- @nonfinite ctx.transform(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(-100, -10, 100, 50);
- @assert pixel 50,25 == 0,255,0,255;
- t.done();
-
-
-- name: 2d.transformation.setTransform.skewed
- code: |
- // Create green with a red square ring inside it
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#f00';
- ctx.fillRect(20, 10, 60, 30);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(40, 20, 20, 10);
- // Draw a skewed shape to fill that gap, to make sure it is aligned correctly
- ctx.setTransform(1,4, 2,3, 5,6);
- // Post-transform coordinates:
- // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]];
- // Hence pre-transform coordinates:
- var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2],
- [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2],
- [-7.4,11.2]];
- ctx.beginPath();
- ctx.moveTo(pts[0][0], pts[0][1]);
- for (var i = 0; i < pts.length; ++i)
- ctx.lineTo(pts[i][0], pts[i][1]);
- ctx.fill();
- @assert pixel 21,11 == 0,255,0,255;
- @assert pixel 79,11 == 0,255,0,255;
- @assert pixel 21,39 == 0,255,0,255;
- @assert pixel 79,39 == 0,255,0,255;
- @assert pixel 39,19 == 0,255,0,255;
- @assert pixel 61,19 == 0,255,0,255;
- @assert pixel 39,31 == 0,255,0,255;
- @assert pixel 61,31 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.setTransform.multiple
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.setTransform(1/2,0, 0,1/2, 0,0);
- ctx.setTransform(2,0, 0,2, 0,0);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 50, 25);
- @assert pixel 75,35 == 0,255,0,255;
- t.done();
-
-- name: 2d.transformation.setTransform.nonfinite
- desc: setTransform() with Infinity/NaN is ignored
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.translate(100, 10);
- @nonfinite ctx.setTransform(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>);
- ctx.fillStyle = '#0f0';
- ctx.fillRect(-100, -10, 100, 50);
- @assert pixel 50,25 == 0,255,0,255;
- t.done();
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-elements.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-elements.tentative.html
new file mode 100644
index 00000000000..eed098256ca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-elements.tentative.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="en">
+<title>HTMLSelectMenuElement Test: form.elements</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+
+<form id="form0">
+<selectmenu id="selectmenu0">
+ <option>one</option>
+ <option>two</option>
+ <option>three</option>
+</selectmenu>
+<form>
+
+<script>
+promise_test(async t => {
+ // TODO: Move test to /the-form-element/form-elements-filter.html once
+ // <selectmenu> becomes part of the HTML spec.
+ const formElements = document.querySelector("#form0").elements;
+ assert_equals(formElements.length, 1);
+ assert_equals(formElements[0].id, "selectmenu0");
+}, "Check that <selectmenu> is exposed in form.elements");
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-attribute-basic.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-attribute-basic.html
index 88051f57394..c5937cd3237 100644
--- a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-attribute-basic.html
+++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-attribute-basic.html
@@ -160,8 +160,8 @@ window.onload = () => {
assert_false(popover.matches(':open'));
popover.showPopover();
assert_true(popover.matches(':open'));
- popover.setAttribute('popover','manual');
}
+ popover.setAttribute('popover','manual');
assert_false(popover.matches(':open'));
popover.showPopover();
assert_true(popover.matches(':open'));
diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-types.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-types.html
index 615c5a818c0..9941f322828 100644
--- a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-types.html
+++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-types.html
@@ -5,35 +5,33 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<div>
+<div id="container">
<div popover>Popover</div>
<div popover=manual>Async</div>
<div popover=manual>Async</div>
- <script>
- {
- const auto = document.currentScript.parentElement.querySelector('[popover=""]');
- const manual = document.currentScript.parentElement.querySelectorAll('[popover=manual]')[0];
- const manual2 = document.currentScript.parentElement.querySelectorAll('[popover=manual]')[1];
- function assert_state_1(autoOpen,manualOpen,manual2Open) {
- assert_equals(auto.matches(':open'),autoOpen,'auto open state is incorrect');
- assert_equals(manual.matches(':open'),manualOpen,'manual open state is incorrect');
- assert_equals(manual2.matches(':open'),manual2Open,'manual2 open state is incorrect');
- }
- test(() => {
- assert_state_1(false,false,false);
- auto.showPopover();
- assert_state_1(true,false,false);
- manual.showPopover();
- assert_state_1(true,true,false);
- manual2.showPopover();
- assert_state_1(true,true,true);
- auto.hidePopover();
- assert_state_1(false,true,true);
- manual.hidePopover();
- assert_state_1(false,false,true);
- manual2.hidePopover();
- assert_state_1(false,false,false);
- },'manuals do not close popovers');
- }
- </script>
</div>
+<script>
+ const auto = container.querySelector('[popover=""]');
+ const manual = container.querySelectorAll('[popover=manual]')[0];
+ const manual2 = container.querySelectorAll('[popover=manual]')[1];
+ function assert_state_1(autoOpen,manualOpen,manual2Open) {
+ assert_equals(auto.matches(':open'),autoOpen,'auto open state is incorrect');
+ assert_equals(manual.matches(':open'),manualOpen,'manual open state is incorrect');
+ assert_equals(manual2.matches(':open'),manual2Open,'manual2 open state is incorrect');
+ }
+ test(() => {
+ assert_state_1(false,false,false);
+ auto.showPopover();
+ assert_state_1(true,false,false);
+ manual.showPopover();
+ assert_state_1(true,true,false);
+ manual2.showPopover();
+ assert_state_1(true,true,true);
+ auto.hidePopover();
+ assert_state_1(false,true,true);
+ manual.hidePopover();
+ assert_state_1(false,false,true);
+ manual2.hidePopover();
+ assert_state_1(false,false,false);
+ }, 'manuals do not close popovers');
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-utils.js b/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-utils.js
index 9c6ba77549b..7eb9e6327a2 100644
--- a/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-utils.js
+++ b/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-utils.js
@@ -126,7 +126,7 @@ function assertPopoverVisibility(popover, isPopover, expectedVisibility, message
} else {
assert_equals(window.getComputedStyle(popover).display,'none',`${message}: Non-showing popovers should have display:none`);
assert_false(popover.matches(':open'),`${message}: Non-showing popovers should *not* match :open`);
- assert_true(popover.matches(':closed'),`${message}: Non-showing popovers should match :closed`);
+ assert_equals(popover.matches(':closed'),isPopover,`${message}: Non-showing popovers should match :closed`);
}
}
diff --git a/tests/wpt/web-platform-tests/images/cicp.png b/tests/wpt/web-platform-tests/images/cicp.png
new file mode 100644
index 00000000000..8fa0ce2123c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/images/cicp.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/images/trns.png b/tests/wpt/web-platform-tests/images/trns.png
new file mode 100644
index 00000000000..4e309a89a8a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/images/trns.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/inert/inert-computed-style.html b/tests/wpt/web-platform-tests/inert/inert-computed-style.html
index 3c1748de2b4..f1adbab6b7a 100644
--- a/tests/wpt/web-platform-tests/inert/inert-computed-style.html
+++ b/tests/wpt/web-platform-tests/inert/inert-computed-style.html
@@ -15,11 +15,11 @@
left: 0;
background-color: blue;
}
- #non-inert {
+ #nonInert {
background-color: red;
}
</style>
-<div id="non-inert"></div>
+<div id="nonInert"></div>
<div id="inert"></div>
<script>
test(function() {
@@ -32,17 +32,17 @@
inert.inert = true;
assert_equals(
document.elementFromPoint(50, 50),
- document.getElementById("non-inert"),
+ nonInert,
"inert node is transparent to events (as pointer-events: none)",
);
assert_equals(
getComputedStyle(inert).pointerEvents,
- "auto",
+ getComputedStyle(nonInert).pointerEvents,
"inert node doesn't change pointer-events computed value",
);
assert_equals(
getComputedStyle(inert).userSelect,
- "auto",
+ getComputedStyle(nonInert).userSelect,
"inert node doesn't change user-select computed value",
);
});
diff --git a/tests/wpt/web-platform-tests/inert/inert-iframe-hittest.html b/tests/wpt/web-platform-tests/inert/inert-iframe-hittest.html
index bcc542d35ed..8d7facf1723 100644
--- a/tests/wpt/web-platform-tests/inert/inert-iframe-hittest.html
+++ b/tests/wpt/web-platform-tests/inert/inert-iframe-hittest.html
@@ -93,7 +93,6 @@ promise_test(async function() {
"wrapper got enter and over events");
}
- assert_true(target.matches(":focus"), "target is focused");
assert_true(target.matches(":active"), "target is active");
assert_true(target.matches(":hover"), "target is hovered");
assert_true(wrapper.matches(":hover"), "wrapper is hovered");
diff --git a/tests/wpt/web-platform-tests/infrastructure/assumptions/non-local-ports.sub.window.js b/tests/wpt/web-platform-tests/infrastructure/assumptions/non-local-ports.sub.window.js
index 8c9eb33c4f7..06ecb3ab21b 100644
--- a/tests/wpt/web-platform-tests/infrastructure/assumptions/non-local-ports.sub.window.js
+++ b/tests/wpt/web-platform-tests/infrastructure/assumptions/non-local-ports.sub.window.js
@@ -3,10 +3,10 @@
// See the corresponding WPT RFC:
// https://github.com/web-platform-tests/rfcs/blob/master/rfcs/address_space_overrides.md
//
-// These ports are used to test the Private Network Access specification:
-// https://wicg.github.io/private-network-access/
+// These ports are used to test the Local Network Access specification:
+// https://wicg.github.io/local-network-access/
//
-// More tests can be found in `fetch/private-network-access/`.
+// More tests can be found in `fetch/local-network-access/`.
const alternatePorts = {
httpPrivate: "{{ports[http-private][0]}}",
diff --git a/tests/wpt/web-platform-tests/lint.ignore b/tests/wpt/web-platform-tests/lint.ignore
index 3b6106fbfc3..743986b66ee 100644
--- a/tests/wpt/web-platform-tests/lint.ignore
+++ b/tests/wpt/web-platform-tests/lint.ignore
@@ -834,8 +834,8 @@ TESTHARNESS-IN-OTHER-TYPE: svg/svg-in-svg/svg-in-svg-circular-filter-reference-c
# Adding the testharnessreport.js script causes the test to never complete.
MISSING-TESTHARNESSREPORT: accessibility/crashtests/computed-node-checked.html
-PRINT STATEMENT: webdriver/tests/print/printcmd.py
-PRINT STATEMENT: webdriver/tests/print/user_prompts.py
+PRINT STATEMENT: webdriver/tests/print/*
+PRINT STATEMENT: webdriver/tests/bidi/browsing_context/print/*
DUPLICATE-BASENAME-PATH: acid/acid3/empty.html
DUPLICATE-BASENAME-PATH: acid/acid3/empty.xml
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-basic.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-basic.html
index d289f0dd342..c6d3f8e32a2 100644
--- a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-basic.html
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-basic.html
@@ -29,6 +29,7 @@ promise_test(async t => {
}));
}, t);
+ assert_not_equals(entry, "timeout");
assert_greater_than_equal(entry.renderStart - entry.startTime, segment_duration);
}, 'A long busy wait split between a task and a requestAnimationFrame is a long animation frame');
@@ -47,6 +48,8 @@ promise_test(async t => {
busy_wait(segment_duration);
}).observe(element);
}, t);
+
+ assert_not_equals(entry, "timeout");
assert_greater_than_equal(entry.renderStart - entry.startTime, segment_duration);
assert_greater_than_equal(entry.styleAndLayoutStart - entry.renderStart, segment_duration);
}, 'ResizeObservers should create a long-frame and affect layoutStartTime');
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-desired-exec-time.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-desired-exec-time.html
new file mode 100644
index 00000000000..5fecb20fb40
--- /dev/null
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-desired-exec-time.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Long Animation Frame Timing: queue time</title>
+<meta name="timeout" content="long">
+<script src=/resources/testdriver.js></script>
+<script src=/resources/testdriver-actions.js></script>
+<script src=/resources/testdriver-vendor.js></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<body>
+<h1>Long Animation Frame: queue time</h1>
+<div id="log"></div>
+<script>
+
+promise_test(async t => {
+ const button = document.createElement("button");
+ button.innerText = "Click";
+ document.body.appendChild(button);
+ t.add_cleanup(() => button.remove());
+ const eventPromise = new Promise(resolve => button.addEventListener("click", event => {
+ busy_wait();
+ resolve(event);
+ }));
+ const entryPromise = new Promise(resolve => new PerformanceObserver(
+ (entryList, observer) => {
+ const scriptPredicate = s => s.name === "BUTTON.onclick";
+ const entry = entryList.getEntries().find(
+ e => e.scripts.length && e.scripts.find(scriptPredicate));
+ if (entry) {
+ resolve([entry, entry.scripts.find(scriptPredicate)]);
+ observer.disconnect();
+ }
+ }).observe({entryTypes: ["long-animation-frame"]}));
+ test_driver.click(button);
+ await new Promise(resolve => t.step_timeout(resolve, 0));
+ const event = await eventPromise;
+ const [entry, script] = await entryPromise;
+ assert_equals(script.desiredExecutionStart, event.timeStamp);
+}, "event-listener entries desiredExecutionStart is the eventTimestamp");
+
+promise_test(async t => {
+ const entryPromise = loaf_promise(t);
+ let timeBeforeSetup, timeAfterSetup;
+ const delay = 100;
+ const timeoutPromise = new Promise(resolve => {
+ timeBeforeSetup = performance.now();
+ t.step_timeout(() => {
+ busy_wait();
+ resolve();
+ }, delay);
+ timeAfterSetup = performance.now();
+ });
+ const entry = await entryPromise;
+ const script = entry.scripts.find(s => s.name === "Window.setTimeout");
+ assert_greater_than_equal(script.desiredExecutionStart, timeBeforeSetup + delay);
+ assert_less_than_equal(script.desiredExecutionStart, timeAfterSetup + delay);
+}, "desiredExecutionStart for setTimeout should be the setup time + delay");
+
+promise_test(async t => {
+ const entryPromise = loaf_promise(t);
+ let timeBeforeSetup, timeAfterSetup;
+ const timeoutPromise = new Promise(resolve => {
+ timeBeforeSetup = performance.now();
+ scheduler.postTask(t.step_func(() => {
+ busy_wait();
+ resolve();
+ }));
+ timeAfterSetup = performance.now();
+ });
+ const entry = await entryPromise;
+ const script = entry.scripts.find(s => s.name === "Scheduler.postTask");
+ assert_greater_than_equal(script.desiredExecutionStart, timeBeforeSetup);
+ assert_less_than_equal(script.desiredExecutionStart, timeAfterSetup);
+}, "desiredExecutionStart for Scheduler.postTask should be the time it was called");
+
+promise_test(async t => {
+ const entryPromise = loaf_promise(t);
+ const rafPromise = new Promise(resolve => {
+ // We fire two rAFs to ensure both of them receive the same
+ // desiredExecutionStart
+ requestAnimationFrame(rafTime => {
+ busy_wait();
+ })
+ requestAnimationFrame(rafTime => {
+ busy_wait();
+ resolve(rafTime);
+ })
+ });
+ const entry = await entryPromise;
+ const rafTime = await rafPromise;
+ const scripts = entry.scripts.filter(
+ s => s.name === "Window.requestAnimationFrame");
+ for (const script of scripts) {
+ assert_less_than_equal(Math.abs(script.desiredExecutionStart - rafTime), 1);
+ }
+ assert_less_than_equal(Math.abs(entry.desiredRenderStart - rafTime), 1);
+}, "desiredExecutionStart & desiredRenderStart for requestAnimationFrame " +
+ "should be the same as the rAF argument");
+
+promise_test(async t => {
+ const entryPromise = loaf_promise(t);
+ const timeBeforeWait = performance.now();
+ let timeAfterWait;
+ const rafPromise = new Promise(resolve => t.step_timeout(() => {
+ requestAnimationFrame(rafTime => {
+ busy_wait(very_long_frame_duration / 2);
+ resolve(rafTime);
+ });
+
+ busy_wait(very_long_frame_duration / 2);
+ timeAfterWait = performance.now();
+ }), 0);
+ const [entry, rafTime] = await Promise.all([entryPromise, rafPromise]);
+ assert_less_than_equal(Math.abs(entry.desiredRenderStart - rafTime), 1);
+}, "desiredRenderStart and renderStart should reflect main thread delays");
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-event-listener.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-event-listener.html
new file mode 100644
index 00000000000..6349c28b320
--- /dev/null
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-event-listener.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Long Animation Frame Timing: basic</title>
+<meta name="timeout" content="long">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<body>
+<h1>Long Animation Frame: event handlers</h1>
+<div id="log"></div>
+<script>
+
+test_self_event_listener(t => {
+ const img = document.createElement("img");
+ img.src = "/images/green.png";
+ img.addEventListener("load", () => {
+ busy_wait();
+ });
+ document.body.appendChild(img);
+ t.add_cleanup(() => img.remove());
+}, "IMG.onload");
+
+test_self_event_listener(t => {
+ const xhr = new XMLHttpRequest();
+ xhr.open("GET", "/common/dummy.xml");
+ xhr.addEventListener("load", () => {
+ busy_wait();
+ });
+ xhr.send();
+}, "XMLHttpRequest.onload");
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-idle.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-idle.html
new file mode 100644
index 00000000000..bc9f910bb14
--- /dev/null
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-idle.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Long Animation Frame Timing: requestIdleCallback</title>
+<meta name="timeout" content="long">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<body>
+<h1>Long Animation Frame: requestIdleCallback</h1>
+<div id="log"></div>
+<script>
+setup(() =>
+ assert_implements(window.requestIdleCallback,
+ 'requestIdleCallback is not supported.'));
+
+/*
+promise_test(async t => {
+ await expect_no_long_frame(() => requestIdleCallback(busy_wait), t);
+}, 'A long busy wait in an idle callback is not a long animation frame');
+*/
+
+promise_test(async t => {
+ const segment_duration = very_long_frame_duration / 2;
+ requestIdleCallback(() => {
+ busy_wait(segment_duration);
+ requestAnimationFrame(() => {
+ busy_wait(segment_duration);
+ });
+ });
+ await expect_long_frame(() => {}, t);
+}, 'A long busy wait split between an idle callback and a ' +
+ 'requestAnimationFrame is a long animation frame');
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-iframe-popup.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-iframe-popup.html
index 83def572998..565273b6c6a 100644
--- a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-iframe-popup.html
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-iframe-popup.html
@@ -15,7 +15,7 @@ const host_info = get_host_info();
const {ORIGIN, REMOTE_ORIGIN, HTTP_NOTSAMESITE_ORIGIN} = host_info;
promise_test(async t => {
- const executor = await prepare_exec_iframe(t, ORIGIN);
+ const [executor] = await prepare_exec_iframe(t, ORIGIN);
await expect_no_long_frame(() => executor.execute_script((duration) => {
const deadline = performance.now() + duration;
while (performance.now() < deadline) {}
@@ -23,7 +23,7 @@ promise_test(async t => {
}, 'A long busy wait without render in a same-origin iframe is not a long animation frame');
promise_test(async t => {
- const executor = await prepare_exec_iframe(t, HTTP_NOTSAMESITE_ORIGIN);
+ const [executor] = await prepare_exec_iframe(t, HTTP_NOTSAMESITE_ORIGIN);
await expect_no_long_frame(() => executor.execute_script((duration) => {
const deadline = performance.now() + duration;
while (performance.now() < deadline) {}
@@ -31,7 +31,7 @@ promise_test(async t => {
}, 'A long busy wait in a cross-origin iframe is not a long animation frame');
promise_test(async t => {
- const executor = await prepare_exec_iframe(t, ORIGIN);
+ const [executor] = await prepare_exec_iframe(t, ORIGIN);
await expect_long_frame(() => executor.execute_script(async (duration) => {
await new Promise(resolve => window.requestAnimationFrame(resolve));
const deadline = performance.now() + duration;
@@ -40,7 +40,7 @@ promise_test(async t => {
}, 'A long busy wait in a same-origin requestAnimationFrame is a long animation frame');
promise_test(async t => {
- const executor = await prepare_exec_popup(t, ORIGIN);
+ const [executor] = await prepare_exec_popup(t, ORIGIN);
await expect_no_long_frame(() => executor.execute_script((duration) => {
const deadline = performance.now() + duration;
while (performance.now() < deadline) {}
@@ -49,7 +49,7 @@ promise_test(async t => {
for (const origin of ["ORIGIN", "REMOTE_ORIGIN", "HTTP_NOTSAMESITE_ORIGIN"]) {
promise_test(async t => {
- const executor = await prepare_exec_iframe(t, host_info[origin]);
+ const [executor] = await prepare_exec_iframe(t, host_info[origin]);
const entry = await executor.execute_script(async (duration) => {
const entryPromise = new Promise(resolve => new PerformanceObserver(list => {
resolve(list.getEntries(0));
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-promise.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-promise.html
new file mode 100644
index 00000000000..226d06a8303
--- /dev/null
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-promise.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Long Animation Frame Timing: basic</title>
+<meta name="timeout" content="long">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/utils.js"></script>
+
+<body>
+<h1>Long Animation Frame: promise resolvers</h1>
+<div id="log"></div>
+<script type="module">
+
+const {REMOTE_ORIGIN} = get_host_info();
+
+test_promise_script(async t => {
+ await fetch("/common/dummy.xml");
+ busy_wait(very_long_frame_duration);
+}, "resolve", "Window.fetch.then");
+
+test_promise_script(async t => {
+ const response = await fetch("/common/dummy.xml");
+ await response.text();
+ busy_wait(very_long_frame_duration);
+}, "resolve", "Response.text.then");
+
+test_promise_script(async t => {
+ const response = await fetch("/common/dummy.xml");
+ await response.arrayBuffer();
+ busy_wait(very_long_frame_duration);
+}, "resolve", "Response.arrayBuffer.then");
+
+test_promise_script(async t => {
+ const response = await fetch("/fetch/api/resources/data.json");
+ await response.json();
+ busy_wait(very_long_frame_duration);
+}, "resolve", "Response.json.then");
+
+test_promise_script(async t => {
+ const response = await import("/loading/resources/dummy.js");
+ busy_wait(very_long_frame_duration);
+}, "resolve", "import.then");
+
+test_promise_script(async t => {
+ fetch(new URL("/common/dummy.xml", REMOTE_ORIGIN).href, {mode: "cors"})
+ .catch(() => {
+ busy_wait(very_long_frame_duration);
+ })
+}, "reject", "Window.fetch.catch" );
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-block.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-block.html
new file mode 100644
index 00000000000..f896a737ce7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-block.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Long Animation Frame Timing: basic</title>
+<meta name="timeout" content="long">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<body>
+<h1>Long Animation Frame: script blocks</h1>
+<div id="log"></div>
+<script>
+test_self_script_block(t => {
+ const script = document.createElement("script");
+ script.innerHTML = `(${busy_wait.toString()})()`;
+ document.body.appendChild(script);
+}, location.href, "classic-script");
+
+test_self_script_block(t => {
+ const script = document.createElement("script");
+ script.type = "module";
+ script.innerHTML = `(${busy_wait.toString()})()`;
+ document.body.appendChild(script);
+}, location.href, "module-script");
+
+test_self_script_block(t => {
+ const script = document.createElement("script");
+ script.src = "resources/busy.js";
+ document.body.appendChild(script);
+}, new URL("resources/busy.js", location.href).href, "classic-script");
+
+test_self_script_block(t => {
+ const script = document.createElement("script");
+ script.src = "resources/busy.js";
+ script.type = "module";
+ document.body.appendChild(script);
+}, new URL("resources/busy.js", location.href).href, "module-script");
+
+test_self_script_block(t => {
+ const script = document.createElement("script");
+ script.type = "module";
+ script.innerHTML = `import("./resources/busy.js?import");`;
+ document.body.appendChild(script);
+}, new URL("resources/busy.js?import", location.href).href, "execute-script");
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-window-attribution.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-window-attribution.html
new file mode 100644
index 00000000000..001bb537f79
--- /dev/null
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-window-attribution.html
@@ -0,0 +1,62 @@
+
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Long Animation Frame Timing: window attribution</title>
+<meta name="timeout" content="long">
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="resources/utils.js"></script>
+<div id="log"></div>
+<script>
+
+const host_info = get_host_info();
+const {ORIGIN, REMOTE_ORIGIN, HTTP_NOTSAMESITE_ORIGIN} = host_info;
+
+promise_test (async t => {
+ const [entry, script] = await expect_long_frame_with_script(() => {
+ requestAnimationFrame(() => busy_wait());
+ }, () => true, t);
+ assert_equals(script.windowAttribution, "self");
+ assert_equals(script.window, window);
+}, 'Scripts in this window should be self-attributed');
+
+promise_test (async t => {
+ const [executor, iframe] = await prepare_exec_iframe(t, ORIGIN);
+ const [entry, script] = await expect_long_frame_with_script(() =>
+ executor.execute_script(async (duration) => {
+ await new Promise(resolve => window.requestAnimationFrame(resolve));
+ const deadline = performance.now() + duration;
+ while (performance.now() < deadline) {}
+ }, [very_long_frame_duration]), () => true, t);
+ assert_equals(script.windowAttribution, "descendant");
+ assert_equals(script.window, iframe.contentWindow);
+}, 'Scripts in subframes should be descendant-attributed');
+
+promise_test (async t => {
+ const [executor1, iframe1] = await prepare_exec_iframe(t, ORIGIN);
+ const [executor2, iframe2] = await prepare_exec_iframe(t, ORIGIN);
+ const [entry, script] = await expect_long_frame_with_script(() =>
+ executor1.execute_script(async (duration) => {
+ await new Promise(resolve => window.requestAnimationFrame(resolve));
+ const deadline = performance.now() + duration;
+ while (performance.now() < deadline) {}
+ }, [very_long_frame_duration]), () => true, t);
+ const find_entry = win =>
+ win.performance.getEntriesByType("long-animation-frame").find(
+ e => e.duration >= very_long_frame_duration &&
+ e.scripts.length).scripts[0];
+
+ const iframe1_entry = find_entry(iframe1.contentWindow);
+ const iframe2_entry = find_entry(iframe2.contentWindow);
+ assert_equals(iframe1_entry.windowAttribution, "self");
+ assert_equals(iframe2_entry.windowAttribution, "same-page");
+ assert_equals(iframe1_entry.window, iframe1.contentWindow);
+ assert_equals(iframe2_entry.window, iframe1.contentWindow);
+}, 'Scripts in subframes should be same-page-attributed to other subframes');
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-supportedEntryTypes.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-supportedEntryTypes.html
new file mode 100644
index 00000000000..efa01481fa1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-supportedEntryTypes.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Long Animation Frame Timing: supportedEntryTypes</title>
+<meta name="timeout" content="long">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<body>
+<h1>Long Animation Frame: supportedEntryTypes</h1>
+<div id="log"></div>
+<script>
+
+setup(() =>
+ assert_implements(window.PerformanceLongAnimationFrameTiming,
+ 'Long animation frames are not supported.'));
+
+test(() => {
+ assert_true(PerformanceObserver.supportedEntryTypes.includes("long-animation-frame"));
+}, 'supportedEntryTypes should include long-animation-frame');
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-user-callback.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-user-callback.html
new file mode 100644
index 00000000000..bc8fdd05e10
--- /dev/null
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-user-callback.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Long Animation Frame Timing: basic</title>
+<meta name="timeout" content="long">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<body>
+<h1>Long Animation Frame: user callbacks</h1>
+<div id="log"></div>
+<script>
+
+
+test_self_user_callback(t =>
+ t.step_timeout(() => busy_wait()), "Window.setTimeout");
+
+test_self_user_callback(() => {
+ const interval = setInterval(() => {
+ busy_wait();
+ clearInterval(interval);
+ }, 10);
+}, "Window.setInterval");
+test_self_user_callback(() =>
+ requestAnimationFrame(() => busy_wait()), "Window.requestAnimationFrame");
+
+test_self_user_callback(t => {
+ const element = document.createElement("div");
+ document.body.appendChild(element);
+ t.add_cleanup(() => element.remove());
+ new ResizeObserver((entries, observer) => {
+ busy_wait(very_long_frame_duration);
+ observer.disconnect();
+ }).observe(element);
+}, "ResizeObserver.callback");
+
+test_self_user_callback(t => {
+ const element = document.createElement("div");
+ element.innerText = "123";
+ t.add_cleanup(() => element.remove());
+ new IntersectionObserver((entries, observer) => {
+ busy_wait(very_long_frame_duration);
+ observer.disconnect();
+ }).observe(element);
+ document.body.appendChild(element);
+}, "IntersectionObserver.callback");
+
+test_self_user_callback(t =>
+ scheduler.postTask(() => busy_wait()), "Scheduler.postTask");
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-window-only.worker.js b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-window-only.worker.js
new file mode 100644
index 00000000000..c1f0439c4bd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-window-only.worker.js
@@ -0,0 +1,11 @@
+importScripts("/resources/testharness.js");
+
+test(() => {
+ assert_false(PerformanceObserver.supportedEntryTypes.includes("long-animation-frame"));
+}, 'PerformanceObserver should not include "long-animation-frame" in workers');
+
+test(() => {
+ assert_false("PerformanceLongAnimationFrameTiming" in self);
+}, 'PerformanceLongAnimationFrameTiming should not be exposed in workers');
+
+done();
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/busy.js b/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/busy.js
new file mode 100644
index 00000000000..9d761b6de5e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/busy.js
@@ -0,0 +1,4 @@
+(() => {
+ const deadline = performance.now() + 360;
+ while (performance.now() < deadline) {}
+})();
diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/utils.js b/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/utils.js
index 47c138b1e62..3a121a5a9b5 100644
--- a/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/utils.js
+++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/utils.js
@@ -5,14 +5,18 @@ setup(() =>
const very_long_frame_duration = 360;
-function loaf_promise() {
+function loaf_promise(t) {
return new Promise(resolve => {
const observer = new PerformanceObserver(entries => {
const entry = entries.getEntries()[0];
- if (entry.duration >= very_long_frame_duration)
+ if (entry.duration >= very_long_frame_duration) {
+ observer.disconnect();
resolve(entry);
+ }
});
+ t.add_cleanup(() => observer.disconnect());
+
observer.observe({entryTypes: ['long-animation-frame']});
});
}
@@ -28,9 +32,9 @@ async function expect_long_frame(cb, t) {
await windowLoaded;
await new Promise(resolve => t.step_timeout(resolve, 0));
const timeout = new Promise((resolve, reject) =>
- t.step_timeout(() => reject("timeout"), no_long_frame_timeout));
- const receivedLongFrame = loaf_promise();
- await cb();
+ t.step_timeout(() => resolve("timeout"), no_long_frame_timeout));
+ const receivedLongFrame = loaf_promise(t);
+ await cb(t);
const entry = await Promise.race([
receivedLongFrame,
timeout
@@ -38,10 +42,24 @@ async function expect_long_frame(cb, t) {
return entry;
}
+async function expect_long_frame_with_script(cb, predicate, t) {
+ for (let i = 0; i < 10; ++i) {
+ const entry = await expect_long_frame(cb, t);
+ if (entry === "timeout" || !entry.scripts.length)
+ continue;
+ for (const script of entry.scripts) {
+ if (predicate(script))
+ return [entry, script];
+ }
+ }
+
+ return [];
+}
+
async function expect_no_long_frame(cb, t) {
await windowLoaded;
for (let i = 0; i < 5; ++i) {
- const receivedLongFrame = loaf_promise();
+ const receivedLongFrame = loaf_promise(t);
await cb();
const result = await Promise.race([receivedLongFrame,
new Promise(resolve => t.step_timeout(() => resolve("timeout"),
@@ -62,7 +80,7 @@ async function prepare_exec_iframe(t, origin) {
iframe.src = url.href;
document.body.appendChild(iframe);
await new Promise(resolve => iframe.addEventListener("load", resolve));
- return new RemoteContext(uuid);
+ return [new RemoteContext(uuid), iframe];
}
@@ -72,5 +90,38 @@ async function prepare_exec_popup(t, origin) {
url.searchParams.set("uuid", uuid);
const popup = window.open(url);
t.add_cleanup(() => popup.close());
- return new RemoteContext(uuid);
+ return [new RemoteContext(uuid), popup];
+}
+function test_loaf_script(cb, name, type, label) {
+ promise_test(async t => {
+ const [entry, script] = await expect_long_frame_with_script(cb,
+ script => (script.type === type && script.duration >= very_long_frame_duration), t);
+
+ assert_true(!!entry, "Entry detected");
+ assert_equals(script.name, name);
+ assert_greater_than_equal(script.duration, very_long_frame_duration);
+ assert_greater_than_equal(entry.duration, script.duration);
+ assert_greater_than_equal(script.executionStart, script.startTime);
+ assert_greater_than_equal(script.startTime, entry.startTime)
+ assert_equals(script.window, window);
+ assert_equals(script.forcedStyleAndLayoutDuration, 0);
+ assert_equals(script.windowAttribution, "self");
+}, `LoAF script: ${name} ${type},${label ? ` ${label}` : ''}`);
+
+}
+
+function test_self_user_callback(cb, name) {
+ test_loaf_script(cb, name, "user-callback");
+}
+
+function test_self_event_listener(cb, name) {
+ test_loaf_script(cb, name, "event-listener");
+}
+
+function test_promise_script(cb, resolve_or_reject, name, label) {
+ test_loaf_script(cb, name, `${resolve_or_reject}-promise`, label);
+}
+
+function test_self_script_block(cb, name, type) {
+ test_loaf_script(cb, name, type);
}
diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html
index d65f8928186..169843a7423 100644
--- a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html
+++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html
@@ -1,46 +1,52 @@
<!DOCTYPE HTML>
-<meta charset=utf-8>
-<title>LongTask Timing: long task in rAF</title>
+<head>
+ <meta charset=utf-8>
+ <title>LongTask Timing: long task in rAF</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="resources/utils.js"></script>
+</head>
<body>
+ <h1>Long Task: requestAnimationFrame</h1>
+ <div id="log"></div>
+ <script>
+ promise_test(async () => {
+ assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.');
+ await new Promise(resolve => {
+ window.addEventListener('load', resolve);
+ });
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/utils.js"></script>
+ let entries = await new Promise(resolve => {
+ new PerformanceObserver(
+ entryList => {
+ const entries = entryList.getEntries().filter(
+ e => e.name == 'self' && e.attribution[0].containerType == 'window');
+ if (entries) {
+ resolve(entries);
+ }
+ }).observe({ entryTypes: ['longtask'] });
-<h1>Long Task: requestAnimationFrame</h1>
-<div id="log"></div>
-<script>
- async_test(function (t) {
- assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.');
- const observer = new PerformanceObserver(
- t.step_func(function (entryList) {
- const entries = entryList.getEntries();
- assert_equals(entries.length, 1,
- 'Exactly one entry is expected.');
- const longtask = entries[0];
- checkLongTaskEntry(longtask);
- // Assert the TaskAttributionTiming entry in attribution.
- assert_equals(longtask.attribution.length, 1,
- 'Exactly one attribution entry is expected');
- const attribution = longtask.attribution[0];
- assert_equals(attribution.entryType, 'taskattribution');
- assert_equals(attribution.name, 'unknown');
- assert_equals(attribution.duration, 0);
- assert_equals(attribution.startTime, 0);
- assert_equals(attribution.containerType, 'window');
- assert_equals(attribution.containerId, '');
- assert_equals(attribution.containerName, '');
- assert_equals(attribution.containerSrc, '');
- observer.disconnect();
- t.done();
- })
- );
- observer.observe({entryTypes: ['longtask']});
- window.onload = () => {
const script = document.createElement('script');
script.src = 'resources/raflongtask.js';
document.body.appendChild(script);
- };
-}, 'Performance longtask entries are observable.');
-</script>
+ });
+
+ assert_equals(entries.length, 1,
+ 'Exactly one entry is expected.');
+ const longtask = entries[0];
+ checkLongTaskEntry(longtask);
+ // Assert the TaskAttributionTiming entry in attribution.
+ assert_equals(longtask.attribution.length, 1,
+ 'Exactly one attribution entry is expected');
+ const attribution = longtask.attribution[0];
+ assert_equals(attribution.entryType, 'taskattribution');
+ assert_equals(attribution.name, 'unknown');
+ assert_equals(attribution.duration, 0);
+ assert_equals(attribution.startTime, 0);
+ assert_equals(attribution.containerType, 'window');
+ assert_equals(attribution.containerId, '');
+ assert_equals(attribution.containerName, '');
+ assert_equals(attribution.containerSrc, '');
+ }, 'Performance longtask entries are observable.');
+ </script>
</body>
diff --git a/tests/wpt/web-platform-tests/longtask-timing/resources/utils.js b/tests/wpt/web-platform-tests/longtask-timing/resources/utils.js
index 36bd6c7bc28..7bb37bab32c 100644
--- a/tests/wpt/web-platform-tests/longtask-timing/resources/utils.js
+++ b/tests/wpt/web-platform-tests/longtask-timing/resources/utils.js
@@ -1,11 +1,11 @@
-function checkLongTaskEntry(longtask, name='self') {
- assert_equals(longtask.entryType, 'longtask');
- assert_equals(longtask.name, name);
- assert_true(Number.isInteger(longtask.duration));
- assert_greater_than_equal(longtask.duration, 50);
- assert_greater_than_equal(longtask.startTime, 0);
+function checkLongTaskEntry(longtask, name = 'self') {
+ assert_equals(longtask.entryType, 'longtask', 'The entryType should be longtask');
+ assert_equals(longtask.name, name, 'Name should be ' + name + '.');
+ assert_true(Number.isInteger(longtask.duration, 'The duration should be an integer.'));
+ assert_greater_than_equal(longtask.duration, 50, 'The Duration should be greater than or equal to 50.');
+ assert_greater_than_equal(longtask.startTime, 0, 'The startTime should be greater than or equal to 0.');
const currentTime = performance.now();
- assert_less_than_equal(longtask.startTime, currentTime);
+ assert_less_than_equal(longtask.startTime, currentTime, 'The startTime should be less than or equal to current time.');
}
function hasUnrelatedTaskName(taskName, expectedTaskName) {
diff --git a/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html b/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html
index a1495dcb0c7..84efe52e06b 100644
--- a/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html
+++ b/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html
@@ -57,10 +57,11 @@
"Should have gotten expected events");
}, "MediaRecorder handles pause() and resume() calls appropriately in state and events");
- promise_test(async () => {
- let video = createVideoStream();
- let recorder = new MediaRecorder(video);
- let events = recordEvents(recorder,
+ promise_test(async t => {
+ const {stream: video, control} = createVideoStream(t);
+ control.addVideoFrame();
+ const recorder = new MediaRecorder(video);
+ const events = recordEvents(recorder,
["start", "stop", "dataavailable", "pause", "resume", "error"]);
recorder.start();
diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html
index d68b11fa7cc..463746e8f79 100644
--- a/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html
+++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html
@@ -27,12 +27,9 @@ promise_test(async t => {
assert_equals(e.filename, location.href);
top_navigateerror_fired = true;
});
- let iframe_navigateerror_fired = false;
- i.contentWindow.navigation.onnavigateerror = t.step_func(e => {
- assert_equals(e.constructor, i.contentWindow.ErrorEvent);
- assert_equals(e.filename, i.contentWindow.location.href);
- iframe_navigateerror_fired = true;
- });
+
+ i.contentWindow.navigation.onnavigate = t.unreached_func("navigate event should not fire in the iframe, because the traversal was cancelled in the top window");
+ i.contentWindow.navigation.onnavigateerror = t.unreached_func("navigateerror event should not fire in the iframe, because the navigate event was not fired");
// When the top window blocks the traversal, it should be blocked in the
// iframe as well, and the traversal promises in the iframe should be rejected.
@@ -40,7 +37,6 @@ promise_test(async t => {
const iDOMException = iWindow.DOMException;
await assertBothRejectDOM(t, i.contentWindow.navigation.traverseTo(i.contentWindow.navigation.entries()[0].key), "AbortError", iWindow, iDOMException);
assert_true(top_navigateerror_fired);
- assert_true(iframe_navigateerror_fired);
assert_equals(navigation.currentEntry.index, 1);
assert_equals(i.contentWindow.navigation.currentEntry.index, 1);
}, "navigation.traverseTo() in an iframe with same-document preventDefault in its parent");
diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document-before-navigate-event.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document-before-navigate-event.html
new file mode 100644
index 00000000000..ed319f62239
--- /dev/null
+++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document-before-navigate-event.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/helpers.js"></script>
+
+<iframe id="i" src="/common/blank.html"></iframe>
+
+<script>
+promise_test(async t => {
+ // Wait for after the load event so that the navigation doesn't get converted
+ // into a replace navigation.
+ await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0));
+
+ assert_equals(i.contentWindow.navigation.entries().length, 1);
+ let key = i.contentWindow.navigation.currentEntry.key;
+
+ i.contentWindow.navigation.navigate("?1");
+ await new Promise(resolve => i.onload = resolve);
+
+ assert_equals(i.contentWindow.navigation.entries().length, 2);
+ assert_equals(i.contentWindow.navigation.currentEntry, i.contentWindow.navigation.entries()[1]);
+
+ const iWindow = i.contentWindow;
+ const iDOMException = iWindow.DOMException;
+ i.contentWindow.navigation.onnavigate = t.unreached_func("navigate should not fire");
+ i.contentWindow.navigation.onnavigateerror = t.unreached_func("navigateerror should not fire");
+
+ let promises = i.contentWindow.navigation.traverseTo(key);
+ i.remove();
+ await assertBothRejectDOM(t, promises, "AbortError", iWindow, iDOMException);
+}, "traverseTo() promise rejections when detaching an iframe before onnavigate (cross-document)");
+</script>
diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-same-document-before-navigate-event.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-same-document-before-navigate-event.html
new file mode 100644
index 00000000000..592ac6f1990
--- /dev/null
+++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-same-document-before-navigate-event.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/helpers.js"></script>
+
+<iframe id="i" src="/common/blank.html"></iframe>
+
+<script>
+promise_test(async t => {
+ // Wait for after the load event so that the navigation doesn't get converted
+ // into a replace navigation.
+ await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0));
+
+ assert_equals(i.contentWindow.navigation.entries().length, 1);
+ let key = i.contentWindow.navigation.currentEntry.key;
+
+ await i.contentWindow.navigation.navigate("#1").committed;
+
+ assert_equals(i.contentWindow.navigation.entries().length, 2);
+ assert_equals(i.contentWindow.navigation.currentEntry, i.contentWindow.navigation.entries()[1]);
+
+ const iWindow = i.contentWindow;
+ const iDOMException = iWindow.DOMException;
+ i.contentWindow.navigation.onnavigate = t.unreached_func("navigate should not fire");
+ i.contentWindow.navigation.onnavigateerror = t.unreached_func("navigateerror should not fire");
+
+ let promises = i.contentWindow.navigation.traverseTo(key);
+ i.remove();
+ await assertBothRejectDOM(t, promises, "AbortError", iWindow, iDOMException);
+}, "traverseTo() promise rejections when detaching an iframe before onnavigate (same-document)");
+</script>
diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-parent.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-parent.html
index bc3d4e2e9fb..6eee3f917cd 100644
--- a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-parent.html
+++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-parent.html
@@ -29,6 +29,7 @@ promise_test(async t => {
await new Promise(resolve => window.onhashchange = resolve);
navigation.onnavigate = t.unreached_func("navigate must not fire");
+ navigation.onnavigateerror = t.unreached_func("navigateerror must not fire");
window.onpopstate = t.unreached_func("popstate must not fire");
window.onhashchange = t.unreached_func("hashchange must not fire");
diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-sibling.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-sibling.html
index 718ea6d3dda..97c03ea0c2f 100644
--- a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-sibling.html
+++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-sibling.html
@@ -33,6 +33,7 @@ promise_test(async t => {
await new Promise(resolve => i.onload = resolve);
i.contentWindow.navigation.onnavigate = t.unreached_func("navigate must not fire");
+ i.contentWindow.navigation.onnavigateerror = t.unreached_func("navigateerror must not fire");
i.contentWindow.onbeforeunload = t.unreached_func("beforeunload must not fire");
i.contentWindow.onunload = t.unreached_func("unload must not fire");
i.contentWindow.onpagehide = t.unreached_func("pagehide must not fire");
diff --git a/tests/wpt/web-platform-tests/png/META.yml b/tests/wpt/web-platform-tests/png/META.yml
new file mode 100644
index 00000000000..da174ac614d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/png/META.yml
@@ -0,0 +1,4 @@
+spec: https://www.w3.org/TR/png/
+suggested_reviewers:
+ - programmax
+ - svgeesus
diff --git a/tests/wpt/web-platform-tests/png/cicp-chunk.html b/tests/wpt/web-platform-tests/png/cicp-chunk.html
new file mode 100644
index 00000000000..4afc262dcf5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/png/cicp-chunk.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<title>PNG test: cICP chunk</title>
+<link rel="help" href="https://w3c.github.io/PNG-spec/#cICP-chunk">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/html/canvas/resources/canvas-tests.js"></script>
+<body>
+
+<h1>cICP chunk</h1>
+<p class="desc">test pixel values of a display-p3 PNG</p>
+
+<p class="output">Actual output:</p>
+<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
+
+<ul id="d"></ul>
+<script>
+var t = async_test("test pixel values of a display-p3 PNG");
+const img = new Image();
+img.onload = () => {
+ _addTest(function(canvas, ctx) {
+ ctx.drawImage(img, 0, 0);
+
+ var pixel = ctx.getImageData(5, 5, 1, 1, {colorSpace: "srgb", storageFormat: "uint8"}).data;
+
+ // The pixel values stored are (51 red, 102 green, 153 blue).
+ // These numbers are chosen because 0.2 * 255 = 51.
+ // The image has a cICP chunk indicating the Display P3 color space.
+ // This results in decoded pixel values of (27 red, 104 green, 157 blue).
+ const pixel_expected = [27, 104, 157, 255];
+ const epsilon = 2;
+
+ _assertSame(pixel.length, pixel_expected.length, "pixel.length", "pixel_expected.length");
+ assert_approx_equals(pixel[0], pixel_expected[0], epsilon);
+ assert_approx_equals(pixel[1], pixel_expected[1], epsilon);
+ assert_approx_equals(pixel[2], pixel_expected[2], epsilon);
+ assert_approx_equals(pixel[3], pixel_expected[3], epsilon);
+ }, {colorSpace: "display-p3"});
+};
+img.src = "./images/cicp.png";
+</script>
diff --git a/tests/wpt/web-platform-tests/png/trns-chunk.html b/tests/wpt/web-platform-tests/png/trns-chunk.html
new file mode 100644
index 00000000000..652cda0e320
--- /dev/null
+++ b/tests/wpt/web-platform-tests/png/trns-chunk.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<title>PNG test: tRNS chunk</title>
+<link rel="help" href="https://w3c.github.io/PNG-spec/#11tRNS">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/html/canvas/resources/canvas-tests.js"></script>
+<body>
+
+<h1>tRNS chunk handling</h1>
+<p class="desc">test ignored high bits on lower bit depth tRNS</p>
+
+<p class="output">Actual output:</p>
+<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
+
+<ul id="d"></ul>
+<script>
+var t = async_test("test ignored high bits on lower bit depth tRNS");
+const img = new Image();
+img.onload = () => {
+ _addTest(function(canvas, ctx) {
+ ctx.drawImage(img, 0, 0);
+
+ var pixel = ctx.getImageData(5, 5, 1, 1, {colorSpace: "srgb", storageFormat: "uint8"}).data;
+
+ const pixel_expected = [255, 0, 0, 0];
+ const epsilon = 2;
+
+ _assertSame(pixel.length, pixel_expected.length, "pixel.length", "pixel_expected.length");
+ // Ignore the color channel comparisons.
+ // The image itself stores 255 red, 0 green, 0 blue.
+ // But there may not be a requirement that this be preserved
+ // while decoding or through canvas processing.
+ assert_approx_equals(pixel[3], pixel_expected[3], epsilon);
+ });
+};
+img.src = "../images/trns.png";
+</script>
diff --git a/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault-passive.html b/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault-passive.html
new file mode 100644
index 00000000000..57da0968660
--- /dev/null
+++ b/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault-passive.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML>
+<title>Canceling passive pointerevents does not affect compat mouseevents</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="../pointerevent_support.js"></script>
+<style>
+ div {
+ margin: 20px;
+ padding: 20px;
+ background-color: green;
+ user-select: none; // Prevents text selection on drag.
+ }
+</style>
+<div id="logger" draggable="false"></div>
+<div id="done"></div>
+
+<script>
+ 'use strict';
+
+ const logger = document.getElementById("logger");
+ const done = document.getElementById("done");
+
+ let received_events = [];
+
+ const logged_pointer_events = ["pointerdown", "pointermove", "pointerup",
+ "pointerenter", "pointerleave", "pointerover", "pointerout"];
+ const logged_mouse_events = ["mousedown", "mousemove", "mouseup",
+ "mouseenter", "mouseleave", "mouseover", "mouseout"];
+
+ const expected_pointer_events = [
+ "pointerover", "pointerenter",
+ "pointermove", "pointerdown", "pointermove", "pointerup",
+ "pointerout", "pointerleave"
+ ];
+
+ const expected_mouse_events = [
+ "mouseover", "mouseenter",
+ "mousemove", "mousedown", "mousemove", "mouseup",
+ "mouseout", "mouseleave"
+ ];
+
+ logged_pointer_events.forEach(ename => logger.addEventListener(ename, e => {
+ received_events.push(e.type);
+ e.preventDefault();
+ }, { passive: true }));
+
+ logged_mouse_events.forEach(ename => logger.addEventListener(ename, e =>
+ received_events.push(e.type)));
+
+ promise_test(async () => {
+ received_events = [];
+
+ let click_on_done = getEvent("click", done);
+
+ let actions = new test_driver.Actions()
+ // Start outside all event listeners
+ .pointerMove(0, 0)
+ .pointerDown()
+ .pointerUp()
+ // Drag within "logger"
+ .pointerMove(0, 0, { origin: logger })
+ .pointerDown()
+ .pointerMove(15, 15, { origin: logger })
+ .pointerUp()
+ // Click "done"
+ .pointerMove(0, 0, { origin: done })
+ .pointerDown()
+ .pointerUp()
+ .send();
+
+ await actions;
+ await click_on_done;
+
+ assert_array_equals(received_events.filter(isPointerEvent),
+ expected_pointer_events, "expected pointer events");
+ assert_array_equals(received_events.filter(isMouseEvent),
+ expected_mouse_events, "expected mouse events");
+ assert_true(arePointerEventsBeforeCompatMouseEvents(received_events),
+ "pairing of pointer/mouse events");
+ }, "Canceling passive pointerevents does not affect compat mouseevents");
+</script>
diff --git a/tests/wpt/web-platform-tests/scroll-animations/crashtests/invalid-animation-range.html b/tests/wpt/web-platform-tests/scroll-animations/crashtests/invalid-animation-range.html
new file mode 100644
index 00000000000..43b23c93b60
--- /dev/null
+++ b/tests/wpt/web-platform-tests/scroll-animations/crashtests/invalid-animation-range.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<title>Invalid animation range</title>
+<body onload="runTest()">
+ <div id="target"></div>
+</body>
+<script src="../../web-animations/testcommon.js"></script>
+<script>
+ async function runTest() {
+ const anim = target.animate(undefined, {rangeStart: "initial" });
+ await waitForNextFrame();
+ await waitForNextFrame();
+ }
+</script>
diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/animation-shorthand.html b/tests/wpt/web-platform-tests/scroll-animations/css/animation-shorthand.html
index 60d6c766467..87e66d0f532 100644
--- a/tests/wpt/web-platform-tests/scroll-animations/css/animation-shorthand.html
+++ b/tests/wpt/web-platform-tests/scroll-animations/css/animation-shorthand.html
@@ -40,4 +40,53 @@ test_shorthand_value('animation',
'animation-name': 'anim1, anim2, anim3',
'animation-timeline': 'auto, auto, auto'
});
+
+test((t) => {
+ t.add_cleanup(() => {
+ target.style = '';
+ });
+
+ target.style.animation = 'anim 1s';
+ target.style.animationTimeline = 'timeline';
+ assert_equals(target.style.animation, '');
+ assert_equals(target.style.animationName, 'anim');
+ assert_equals(target.style.animationDuration, '1s');
+}, 'Animation shorthand can not represent non-initial timelines (specified)');
+
+test((t) => {
+ t.add_cleanup(() => {
+ target.style = '';
+ });
+
+ target.style.animation = 'anim 1s';
+ target.style.animationTimeline = 'timeline';
+ assert_equals(getComputedStyle(target).animation, '');
+ assert_equals(getComputedStyle(target).animationName, 'anim');
+ assert_equals(getComputedStyle(target).animationDuration, '1s');
+}, 'Animation shorthand can not represent non-initial timelines (computed)');
+
+test((t) => {
+ t.add_cleanup(() => {
+ target.style = '';
+ });
+
+ target.style.animation = 'anim 1s';
+ target.style.animationDelayEnd = '42s';
+ assert_equals(target.style.animation, '');
+ assert_equals(target.style.animationName, 'anim');
+ assert_equals(target.style.animationDuration, '1s');
+}, 'Animation shorthand can not represent non-initial animation-delay-end (specified)');
+
+test((t) => {
+ t.add_cleanup(() => {
+ target.style = '';
+ });
+
+ target.style.animation = 'anim 1s';
+ target.style.animationDelayEnd = '42s';
+ assert_equals(getComputedStyle(target).animation, '');
+ assert_equals(getComputedStyle(target).animationName, 'anim');
+ assert_equals(getComputedStyle(target).animationDuration, '1s');
+}, 'Animation shorthand can not represent non-initial animation-delay-end (computed)');
+
</script>
diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-named-scroll-progress-timeline.tentative.html b/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-named-scroll-progress-timeline.tentative.html
index 9f55e2d2c91..30461723386 100644
--- a/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-named-scroll-progress-timeline.tentative.html
+++ b/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-named-scroll-progress-timeline.tentative.html
@@ -655,8 +655,25 @@ promise_test(async t => {
assert_equals(getComputedStyle(target).translate, '100px');
}, 'scroll-timeline-axis is vertical');
-// TODO: Add more tests which change scroll-timeline-axis property.
-// Those animations which use this timeline should be restyled properly.
+promise_test(async t => {
+ let [scroller, target] = createScrollerAndTarget(t);
+
+ document.body.appendChild(scroller);
+ document.body.appendChild(target);
+
+ scroller.style.scrollTimeline = 'timeline block';
+ target.style.animation = "anim 10s linear";
+ target.style.animationTimeline = 'timeline';
+
+ scroller.scrollTop = 50;
+ scroller.scrollLeft = 25;
+ await waitForNextFrame();
+ assert_equals(getComputedStyle(target).translate, '100px');
+
+ scroller.style.scrollTimelineAxis = 'inline';
+ await waitForNextFrame();
+ assert_equals(getComputedStyle(target).translate, '75px');
+}, 'scroll-timeline-axis is mutated');
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/import-scripts-data-url.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/import-scripts-data-url.https.html
new file mode 100644
index 00000000000..f0922193dd0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/import-scripts-data-url.https.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Tests for importScripts: data: URL</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/test-helpers.sub.js"></script>
+<body>
+<script>
+promise_test(async t => {
+ const scope = 'resources/import-scripts-data-url';
+ await service_worker_unregister(t, scope);
+ let reg = await navigator.serviceWorker.register(
+ 'resources/import-scripts-data-url-worker.js', { scope: scope });
+ t.add_cleanup(_ => reg.unregister());
+ assert_not_equals(reg.installing, null, 'worker is installing');
+ }, 'importScripts() supports data URLs');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-data-url-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-data-url-worker.js
new file mode 100644
index 00000000000..fdabdafc630
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-data-url-worker.js
@@ -0,0 +1 @@
+importScripts('data:text/javascript,');
diff --git a/tests/wpt/web-platform-tests/storage-access-api/helpers.js b/tests/wpt/web-platform-tests/storage-access-api/helpers.js
index ddc638434ae..f718f637cd9 100644
--- a/tests/wpt/web-platform-tests/storage-access-api/helpers.js
+++ b/tests/wpt/web-platform-tests/storage-access-api/helpers.js
@@ -126,11 +126,11 @@ async function DeleteCookieInFrame(frame, name, params) {
}
// Tests whether the frame can write cookies via document.cookie. Note that this
-// overwrites, then deletes, cookies named "cookie" and "foo".
+// overwrites, then optionally deletes, cookies named "cookie" and "foo".
//
// This function requires the caller to have included
// /cookies/resources/cookie-helper.sub.js.
-async function CanFrameWriteCookies(frame) {
+async function CanFrameWriteCookies(frame, keep_after_writing = false) {
const cookie_suffix = "Secure;SameSite=None;Path=/";
await DeleteCookieInFrame(frame, "cookie", cookie_suffix);
await DeleteCookieInFrame(frame, "foo", cookie_suffix);
@@ -142,8 +142,10 @@ async function CanFrameWriteCookies(frame) {
const can_write = cookieStringHasCookie("cookie", "monster", cookies) &&
cookieStringHasCookie("foo", "bar", cookies);
- await DeleteCookieInFrame(frame, "cookie", cookie_suffix);
- await DeleteCookieInFrame(frame, "foo", cookie_suffix);
+ if (!keep_after_writing) {
+ await DeleteCookieInFrame(frame, "cookie", cookie_suffix);
+ await DeleteCookieInFrame(frame, "foo", cookie_suffix);
+ }
return can_write;
}
diff --git a/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js b/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js
index 67906708aed..24595ed3408 100644
--- a/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js
+++ b/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js
@@ -30,7 +30,7 @@
assert_true(await RequestStorageAccessInFrame(frame), "requestStorageAccess resolves without requiring a gesture.");
assert_true(await FrameHasStorageAccess(frame), "frame has storage access after request.");
- assert_true(await CanFrameWriteCookies(frame), "frame can write cookies via JS after request.");
+ assert_true(await CanFrameWriteCookies(frame, /* keep_after_writing=*/true), "frame can write cookies via JS after request.");
return frame;
}
@@ -42,6 +42,7 @@
await FrameInitiatedReload(frame);
+ assert_true(cookieStringHasCookie('cookie', 'monster', await GetHTTPCookiesFromFrame(frame)), "The frame's navigation request included cookies.");
assert_true(await FrameHasStorageAccess(frame), "frame has storage access after refresh.");
assert_true(await CanFrameWriteCookies(frame), "frame can write cookies via JS after refresh.");
}, "Self-initiated reloads preserve storage access");
@@ -53,6 +54,7 @@
await FrameInitiatedNavigation(frame, altWwwResponder);
+ assert_true(cookieStringHasCookie('cookie', 'monster', await GetHTTPCookiesFromFrame(frame)), "The frame's navigation request included cookies.");
assert_true(await FrameHasStorageAccess(frame), "frame has storage access after refresh.");
assert_true(await CanFrameWriteCookies(frame), "frame can write cookies via JS after refresh.");
}, "Self-initiated same-origin navigations preserve storage access");
diff --git a/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js b/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js
index 4222051c10b..82794061bd0 100644
--- a/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js
+++ b/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js
@@ -62,10 +62,10 @@
const permission = await navigator.permissions.query({name: "storage-access"});
assert_equals(permission.name, "storage-access");
- assert_equals(permission.state, "denied");
+ assert_equals(permission.state, "prompt");
await test_driver.set_permission({ name: 'storage-access' }, 'prompt');
- }, "Permission denied state can be queried");
+ }, "Permission denied state is hidden");
promise_test(async t => {
t.add_cleanup(async () => {
diff --git a/tests/wpt/web-platform-tests/tools/third_party/tooltool/tooltool.py b/tests/wpt/web-platform-tests/tools/third_party/tooltool/tooltool.py
index 53929fce880..5abc98a09d8 100755
--- a/tests/wpt/web-platform-tests/tools/third_party/tooltool/tooltool.py
+++ b/tests/wpt/web-platform-tests/tools/third_party/tooltool/tooltool.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# tooltool is a lookaside cache implemented in Python
# Copyright (C) 2011 John H. Ford <john@johnford.info>
@@ -22,8 +22,6 @@
# in which the manifest file resides and it should be called
# 'manifest.tt'
-from __future__ import print_function
-
import base64
import calendar
import hashlib
@@ -36,72 +34,180 @@ import os
import pprint
import re
import shutil
+import stat
import sys
import tarfile
import tempfile
import threading
import time
import zipfile
+from contextlib import closing, contextmanager
+from functools import wraps
+from io import BytesIO, open
+from random import random
+from subprocess import PIPE, Popen
-from io import open
-from io import BytesIO
-from subprocess import PIPE
-from subprocess import Popen
-
-__version__ = '1'
+__version__ = "1.4.0"
# Allowed request header characters:
# !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9, \, "
REQUEST_HEADER_ATTRIBUTE_CHARS = re.compile(
- r"^[ a-zA-Z0-9_\!#\$%&'\(\)\*\+,\-\./\:;<\=>\?@\[\]\^`\{\|\}~]*$")
-DEFAULT_MANIFEST_NAME = 'manifest.tt'
-TOOLTOOL_PACKAGE_SUFFIX = '.TOOLTOOL-PACKAGE'
+ r"^[ a-zA-Z0-9_\!#\$%&'\(\)\*\+,\-\./\:;<\=>\?@\[\]\^`\{\|\}~]*$"
+)
+DEFAULT_MANIFEST_NAME = "manifest.tt"
+TOOLTOOL_PACKAGE_SUFFIX = ".TOOLTOOL-PACKAGE"
HAWK_VER = 1
PY3 = sys.version_info[0] == 3
if PY3:
- open_attrs = dict(mode='w', encoding='utf-8')
six_binary_type = bytes
- six_text_type = str
- unicode = str # Silence `pyflakes` from reporting `undefined name 'unicode'` in Python 3.
+ unicode = (
+ str # Silence `pyflakes` from reporting `undefined name 'unicode'` in Python 3.
+ )
import urllib.request as urllib2
- from http.client import HTTPSConnection, HTTPConnection
- from urllib.parse import urlparse, urljoin
- from urllib.request import Request
+ from http.client import HTTPConnection, HTTPSConnection
from urllib.error import HTTPError, URLError
+ from urllib.parse import urljoin, urlparse
+ from urllib.request import Request
else:
- open_attrs = dict(mode='wb')
six_binary_type = str
- six_text_type = unicode
import urllib2
- from httplib import HTTPSConnection, HTTPConnection
- from urllib2 import Request, HTTPError, URLError
- from urlparse import urlparse, urljoin
+ from httplib import HTTPConnection, HTTPSConnection
+ from urllib2 import HTTPError, Request, URLError
+ from urlparse import urljoin, urlparse
log = logging.getLogger(__name__)
-def request_has_data(req):
- if PY3:
- return req.data is not None
- return req.has_data()
+# Vendored code from `redo` module
+def retrier(attempts=5, sleeptime=10, max_sleeptime=300, sleepscale=1.5, jitter=1):
+ """
+ This function originates from redo 2.0.3 https://github.com/mozilla-releng/redo
+ A generator function that sleeps between retries, handles exponential
+ backoff and jitter. The action you are retrying is meant to run after
+ retrier yields.
+ """
+ jitter = jitter or 0 # py35 barfs on the next line if jitter is None
+ if jitter > sleeptime:
+ # To prevent negative sleep times
+ raise Exception(
+ "jitter ({}) must be less than sleep time ({})".format(jitter, sleeptime)
+ )
+ sleeptime_real = sleeptime
+ for _ in range(attempts):
+ log.debug("attempt %i/%i", _ + 1, attempts)
-def to_binary(val):
- if isinstance(val, six_text_type):
- return val.encode('utf-8')
- return val
+ yield sleeptime_real
+ if jitter:
+ sleeptime_real = sleeptime + random.uniform(-jitter, jitter)
+ # our jitter should scale along with the sleeptime
+ jitter = jitter * sleepscale
+ else:
+ sleeptime_real = sleeptime
-def to_text(val):
- if isinstance(val, six_binary_type):
- return val.decode('utf-8')
- return val
+ sleeptime *= sleepscale
+
+ if sleeptime_real > max_sleeptime:
+ sleeptime_real = max_sleeptime
+
+ # Don't need to sleep the last time
+ if _ < attempts - 1:
+ log.debug(
+ "sleeping for %.2fs (attempt %i/%i)", sleeptime_real, _ + 1, attempts
+ )
+ time.sleep(sleeptime_real)
+
+
+def retry(
+ action,
+ attempts=5,
+ sleeptime=60,
+ max_sleeptime=5 * 60,
+ sleepscale=1.5,
+ jitter=1,
+ retry_exceptions=(Exception,),
+ cleanup=None,
+ args=(),
+ kwargs={},
+ log_args=True,
+):
+ """
+ This function originates from redo 2.0.3 https://github.com/mozilla-releng/redo
+ Calls an action function until it succeeds, or we give up.
+ """
+ assert callable(action)
+ assert not cleanup or callable(cleanup)
+
+ action_name = getattr(action, "__name__", action)
+ if log_args and (args or kwargs):
+ log_attempt_args = (
+ "retry: calling %s with args: %s," " kwargs: %s, attempt #%d",
+ action_name,
+ args,
+ kwargs,
+ )
+ else:
+ log_attempt_args = ("retry: calling %s, attempt #%d", action_name)
+
+ if max_sleeptime < sleeptime:
+ log.debug("max_sleeptime %d less than sleeptime %d", max_sleeptime, sleeptime)
+
+ n = 1
+ for _ in retrier(
+ attempts=attempts,
+ sleeptime=sleeptime,
+ max_sleeptime=max_sleeptime,
+ sleepscale=sleepscale,
+ jitter=jitter,
+ ):
+ try:
+ logfn = log.info if n != 1 else log.debug
+ logfn_args = log_attempt_args + (n,)
+ logfn(*logfn_args)
+ return action(*args, **kwargs)
+ except retry_exceptions:
+ log.debug("retry: Caught exception: ", exc_info=True)
+ if cleanup:
+ cleanup()
+ if n == attempts:
+ log.info("retry: Giving up on %s", action_name)
+ raise
+ continue
+ finally:
+ n += 1
+
+
+def retriable(*retry_args, **retry_kwargs):
+ """
+ This function originates from redo 2.0.3 https://github.com/mozilla-releng/redo
+ A decorator factory for retry(). Wrap your function in @retriable(...) to
+ give it retry powers!
+ """
+
+ def _retriable_factory(func):
+ @wraps(func)
+ def _retriable_wrapper(*args, **kwargs):
+ return retry(func, args=args, kwargs=kwargs, *retry_args, **retry_kwargs)
+
+ return _retriable_wrapper
+
+ return _retriable_factory
+
+
+# end of vendored code from redo module
+
+
+def request_has_data(req):
+ if PY3:
+ return req.data is not None
+ return req.has_data()
def get_hexdigest(val):
- return hashlib.sha512(to_binary(val)).hexdigest()
+ return hashlib.sha512(val).hexdigest()
class FileRecordJSONEncoderException(Exception):
@@ -113,7 +219,6 @@ class InvalidManifest(Exception):
class ExceptionWithFilename(Exception):
-
def __init__(self, filename):
Exception.__init__(self)
self.filename = filename
@@ -142,22 +247,24 @@ class BadHeaderValue(Exception):
def parse_url(url):
url_parts = urlparse(url)
url_dict = {
- 'scheme': url_parts.scheme,
- 'hostname': url_parts.hostname,
- 'port': url_parts.port,
- 'path': url_parts.path,
- 'resource': url_parts.path,
- 'query': url_parts.query,
+ "scheme": url_parts.scheme,
+ "hostname": url_parts.hostname,
+ "port": url_parts.port,
+ "path": url_parts.path,
+ "resource": url_parts.path,
+ "query": url_parts.query,
}
- if len(url_dict['query']) > 0:
- url_dict['resource'] = '%s?%s' % (url_dict['resource'], # pragma: no cover
- url_dict['query'])
+ if len(url_dict["query"]) > 0:
+ url_dict["resource"] = "%s?%s" % (
+ url_dict["resource"], # pragma: no cover
+ url_dict["query"],
+ )
if url_parts.port is None:
- if url_parts.scheme == 'http':
- url_dict['port'] = 80
- elif url_parts.scheme == 'https': # pragma: no cover
- url_dict['port'] = 443
+ if url_parts.scheme == "http":
+ url_dict["port"] = 80
+ elif url_parts.scheme == "https": # pragma: no cover
+ url_dict["port"] = 443
return url_dict
@@ -171,110 +278,119 @@ def random_string(length):
def prepare_header_val(val):
if isinstance(val, six_binary_type):
- val = val.decode('utf-8')
+ val = val.decode("utf-8")
if not REQUEST_HEADER_ATTRIBUTE_CHARS.match(val):
raise BadHeaderValue( # pragma: no cover
- 'header value value={val} contained an illegal character'.format(val=repr(val)))
+ "header value value={val} contained an illegal character".format(
+ val=repr(val)
+ )
+ )
return val
def parse_content_type(content_type): # pragma: no cover
if content_type:
- return content_type.split(';')[0].strip().lower()
+ return content_type.split(";")[0].strip().lower()
else:
- return ''
+ return ""
def calculate_payload_hash(algorithm, payload, content_type): # pragma: no cover
parts = [
- part if isinstance(part, six_binary_type) else part.encode('utf8')
- for part in ['hawk.' + str(HAWK_VER) + '.payload\n',
- parse_content_type(content_type) + '\n',
- payload or '',
- '\n',
- ]
+ part if isinstance(part, six_binary_type) else part.encode("utf8")
+ for part in [
+ "hawk." + str(HAWK_VER) + ".payload\n",
+ parse_content_type(content_type) + "\n",
+ payload or "",
+ "\n",
+ ]
]
p_hash = hashlib.new(algorithm)
- p_hash.update(''.join(parts))
+ for p in parts:
+ p_hash.update(p)
- log.debug('calculating payload hash from:\n{parts}'.format(parts=pprint.pformat(parts)))
+ log.debug(
+ "calculating payload hash from:\n{parts}".format(parts=pprint.pformat(parts))
+ )
return base64.b64encode(p_hash.digest())
def validate_taskcluster_credentials(credentials):
- if not hasattr(credentials, '__getitem__'):
- raise InvalidCredentials('credentials must be a dict-like object') # pragma: no cover
+ if not hasattr(credentials, "__getitem__"):
+ raise InvalidCredentials(
+ "credentials must be a dict-like object"
+ ) # pragma: no cover
try:
- credentials['clientId']
- credentials['accessToken']
+ credentials["clientId"]
+ credentials["accessToken"]
except KeyError: # pragma: no cover
etype, val, tb = sys.exc_info()
- raise InvalidCredentials('{etype}: {val}'.format(etype=etype, val=val))
+ raise InvalidCredentials("{etype}: {val}".format(etype=etype, val=val))
def normalize_header_attr(val):
if isinstance(val, six_binary_type):
- return val.decode('utf-8')
+ return val.decode("utf-8")
return val # pragma: no cover
-def normalize_string(mac_type,
- timestamp,
- nonce,
- method,
- name,
- host,
- port,
- content_hash,
- ):
- return '\n'.join([
- normalize_header_attr(header)
- # The blank lines are important. They follow what the Node Hawk lib does.
- for header in ['hawk.' + str(HAWK_VER) + '.' + mac_type,
- timestamp,
- nonce,
- method or '',
- name or '',
- host,
- port,
- content_hash or '',
- '', # for ext which is empty in this case
- '', # Add trailing new line.
- ]
- ])
-
-
-def calculate_mac(mac_type,
- access_token,
- algorithm,
- timestamp,
- nonce,
- method,
- name,
- host,
- port,
- content_hash,
- ):
- normalized = normalize_string(mac_type,
- timestamp,
- nonce,
- method,
- name,
- host,
- port,
- content_hash)
- log.debug(u'normalized resource for mac calc: {norm}'.format(norm=normalized))
+def normalize_string(
+ mac_type,
+ timestamp,
+ nonce,
+ method,
+ name,
+ host,
+ port,
+ content_hash,
+):
+ return "\n".join(
+ [
+ normalize_header_attr(header)
+ # The blank lines are important. They follow what the Node Hawk lib does.
+ for header in [
+ "hawk." + str(HAWK_VER) + "." + mac_type,
+ timestamp,
+ nonce,
+ method or "",
+ name or "",
+ host,
+ port,
+ content_hash or "",
+ "", # for ext which is empty in this case
+ "", # Add trailing new line.
+ ]
+ ]
+ )
+
+
+def calculate_mac(
+ mac_type,
+ access_token,
+ algorithm,
+ timestamp,
+ nonce,
+ method,
+ name,
+ host,
+ port,
+ content_hash,
+):
+ normalized = normalize_string(
+ mac_type, timestamp, nonce, method, name, host, port, content_hash
+ )
+ log.debug(u"normalized resource for mac calc: {norm}".format(norm=normalized))
digestmod = getattr(hashlib, algorithm)
if not isinstance(normalized, six_binary_type):
- normalized = normalized.encode('utf8')
+ normalized = normalized.encode("utf8")
if not isinstance(access_token, six_binary_type):
- access_token = access_token.encode('ascii')
+ access_token = access_token.encode("ascii")
result = hmac.new(access_token, normalized, digestmod)
return base64.b64encode(result.digest())
@@ -285,31 +401,36 @@ def make_taskcluster_header(credentials, req):
url = req.get_full_url()
method = req.get_method()
- algorithm = 'sha256'
+ algorithm = "sha256"
timestamp = str(utc_now())
nonce = random_string(6)
url_parts = parse_url(url)
content_hash = None
if request_has_data(req):
+ if PY3:
+ data = req.data
+ else:
+ data = req.get_data()
content_hash = calculate_payload_hash( # pragma: no cover
algorithm,
- req.get_data(),
+ data,
# maybe we should detect this from req.headers but we anyway expect json
- content_type='application/json',
+ content_type="application/json",
)
- mac = calculate_mac('header',
- credentials['accessToken'],
- algorithm,
- timestamp,
- nonce,
- method,
- url_parts['resource'],
- url_parts['hostname'],
- str(url_parts['port']),
- content_hash,
- )
+ mac = calculate_mac(
+ "header",
+ credentials["accessToken"],
+ algorithm,
+ timestamp,
+ nonce,
+ method,
+ url_parts["resource"],
+ url_parts["hostname"],
+ str(url_parts["port"]),
+ content_hash,
+ )
header = u'Hawk mac="{}"'.format(prepare_header_val(mac))
@@ -318,24 +439,32 @@ def make_taskcluster_header(credentials, req):
header = u'{header}, id="{id}", ts="{ts}", nonce="{nonce}"'.format(
header=header,
- id=prepare_header_val(credentials['clientId']),
+ id=prepare_header_val(credentials["clientId"]),
ts=prepare_header_val(timestamp),
nonce=prepare_header_val(nonce),
)
- log.debug('Hawk header for URL={} method={}: {}'.format(url, method, header))
+ log.debug("Hawk header for URL={} method={}: {}".format(url, method, header))
return header
class FileRecord(object):
-
- def __init__(self, filename, size, digest, algorithm, unpack=False,
- version=None, visibility=None):
+ def __init__(
+ self,
+ filename,
+ size,
+ digest,
+ algorithm,
+ unpack=False,
+ version=None,
+ visibility=None,
+ ):
object.__init__(self)
- if '/' in filename or '\\' in filename:
+ if "/" in filename or "\\" in filename:
log.error(
- "The filename provided contains path information and is, therefore, invalid.")
+ "The filename provided contains path information and is, therefore, invalid."
+ )
raise BadFilenameException(filename=filename)
self.filename = filename
self.size = size
@@ -348,12 +477,14 @@ class FileRecord(object):
def __eq__(self, other):
if self is other:
return True
- if self.filename == other.filename and \
- self.size == other.size and \
- self.digest == other.digest and \
- self.algorithm == other.algorithm and \
- self.version == other.version and \
- self.visibility == other.visibility:
+ if (
+ self.filename == other.filename
+ and self.size == other.size
+ and self.digest == other.digest
+ and self.algorithm == other.algorithm
+ and self.version == other.version
+ and self.visibility == other.visibility
+ ):
return True
else:
return False
@@ -365,9 +496,18 @@ class FileRecord(object):
return repr(self)
def __repr__(self):
- return "%s.%s(filename='%s', size=%s, digest='%s', algorithm='%s', visibility=%r)" % (
- __name__, self.__class__.__name__, self.filename, self.size,
- self.digest, self.algorithm, self.visibility)
+ return (
+ "%s.%s(filename='%s', size=%s, digest='%s', algorithm='%s', visibility=%r)"
+ % (
+ __name__,
+ self.__class__.__name__,
+ self.filename,
+ self.size,
+ self.digest,
+ self.algorithm,
+ self.visibility,
+ )
+ )
def present(self):
# Doesn't check validity
@@ -377,17 +517,15 @@ class FileRecord(object):
if self.present():
return self.size == os.path.getsize(self.filename)
else:
- log.debug(
- "trying to validate size on a missing file, %s", self.filename)
+ log.debug("trying to validate size on a missing file, %s", self.filename)
raise MissingFileException(filename=self.filename)
def validate_digest(self):
if self.present():
- with open(self.filename, 'rb') as f:
+ with open(self.filename, "rb") as f:
return self.digest == digest_file(f, self.algorithm)
else:
- log.debug(
- "trying to validate digest on a missing file, %s', self.filename")
+ log.debug("trying to validate digest on a missing file, %s', self.filename")
raise MissingFileException(filename=self.filename)
def validate(self):
@@ -406,35 +544,40 @@ class FileRecord(object):
def create_file_record(filename, algorithm):
- fo = open(filename, 'rb')
+ fo = open(filename, "rb")
stored_filename = os.path.split(filename)[1]
- fr = FileRecord(stored_filename, os.path.getsize(
- filename), digest_file(fo, algorithm), algorithm)
+ fr = FileRecord(
+ stored_filename,
+ os.path.getsize(filename),
+ digest_file(fo, algorithm),
+ algorithm,
+ )
fo.close()
return fr
class FileRecordJSONEncoder(json.JSONEncoder):
-
def encode_file_record(self, obj):
if not issubclass(type(obj), FileRecord):
- err = "FileRecordJSONEncoder is only for FileRecord and lists of FileRecords, " \
- "not %s" % obj.__class__.__name__
+ err = (
+ "FileRecordJSONEncoder is only for FileRecord and lists of FileRecords, "
+ "not %s" % obj.__class__.__name__
+ )
log.warn(err)
raise FileRecordJSONEncoderException(err)
else:
rv = {
- 'filename': obj.filename,
- 'size': obj.size,
- 'algorithm': obj.algorithm,
- 'digest': obj.digest,
+ "filename": obj.filename,
+ "size": obj.size,
+ "algorithm": obj.algorithm,
+ "digest": obj.digest,
}
if obj.unpack:
- rv['unpack'] = True
+ rv["unpack"] = True
if obj.version:
- rv['version'] = obj.version
+ rv["version"] = obj.version
if obj.visibility is not None:
- rv['visibility'] = obj.visibility
+ rv["visibility"] = obj.visibility
return rv
def default(self, f):
@@ -452,6 +595,7 @@ class FileRecordJSONDecoder(json.JSONDecoder):
"""I help the json module materialize a FileRecord from
a JSON file. I understand FileRecords and lists of
FileRecords. I ignore things that I don't expect for now"""
+
# TODO: make this more explicit in what it's looking for
# and error out on unexpected things
@@ -464,10 +608,10 @@ class FileRecordJSONDecoder(json.JSONDecoder):
record_list.append(record)
return record_list
required_fields = [
- 'filename',
- 'size',
- 'algorithm',
- 'digest',
+ "filename",
+ "size",
+ "algorithm",
+ "digest",
]
if isinstance(obj, dict):
missing = False
@@ -477,12 +621,18 @@ class FileRecordJSONDecoder(json.JSONDecoder):
break
if not missing:
- unpack = obj.get('unpack', False)
- version = obj.get('version', None)
- visibility = obj.get('visibility', None)
+ unpack = obj.get("unpack", False)
+ version = obj.get("version", None)
+ visibility = obj.get("visibility", None)
rv = FileRecord(
- obj['filename'], obj['size'], obj['digest'], obj['algorithm'],
- unpack, version, visibility)
+ obj["filename"],
+ obj["size"],
+ obj["digest"],
+ obj["algorithm"],
+ unpack,
+ version,
+ visibility,
+ )
log.debug("materialized %s" % rv)
return rv
return obj
@@ -495,7 +645,7 @@ class FileRecordJSONDecoder(json.JSONDecoder):
class Manifest(object):
- valid_formats = ('json',)
+ valid_formats = ("json",)
def __init__(self, file_records=None):
self.file_records = file_records or []
@@ -504,7 +654,7 @@ class Manifest(object):
if self is other:
return True
if len(self.file_records) != len(other.file_records):
- log.debug('Manifests differ in number of files')
+ log.debug("Manifests differ in number of files")
return False
# sort the file records by filename before comparing
mine = sorted((fr.filename, fr) for fr in self.file_records)
@@ -536,39 +686,44 @@ class Manifest(object):
def validate(self):
return all(i.validate() for i in self.file_records)
- def load(self, data_file, fmt='json'):
+ def load(self, data_file, fmt="json"):
assert fmt in self.valid_formats
- if fmt == 'json':
+ if fmt == "json":
try:
self.file_records.extend(
- json.load(data_file, cls=FileRecordJSONDecoder))
+ json.load(data_file, cls=FileRecordJSONDecoder)
+ )
except ValueError:
raise InvalidManifest("trying to read invalid manifest file")
- def loads(self, data_string, fmt='json'):
+ def loads(self, data_string, fmt="json"):
assert fmt in self.valid_formats
- if fmt == 'json':
+ if fmt == "json":
try:
self.file_records.extend(
- json.loads(data_string, cls=FileRecordJSONDecoder))
+ json.loads(data_string, cls=FileRecordJSONDecoder)
+ )
except ValueError:
raise InvalidManifest("trying to read invalid manifest file")
- def dump(self, output_file, fmt='json'):
+ def dump(self, output_file, fmt="json"):
assert fmt in self.valid_formats
- if fmt == 'json':
+ if fmt == "json":
return json.dump(
- self.file_records, output_file,
- indent=2, separators=(',', ': '),
+ self.file_records,
+ output_file,
+ indent=2,
+ separators=(",", ": "),
cls=FileRecordJSONEncoder,
)
- def dumps(self, fmt='json'):
+ def dumps(self, fmt="json"):
assert fmt in self.valid_formats
- if fmt == 'json':
+ if fmt == "json":
return json.dumps(
self.file_records,
- indent=2, separators=(',', ': '),
+ indent=2,
+ separators=(",", ": "),
cls=FileRecordJSONEncoder,
)
@@ -582,8 +737,8 @@ def digest_file(f, a):
while data:
h.update(data)
data = f.read(chunk_size)
- name = repr(f.name) if hasattr(f, 'name') else 'a file'
- log.debug('hashed %s with %s to be %s', name, a, h.hexdigest())
+ name = repr(f.name) if hasattr(f, "name") else "a file"
+ log.debug("hashed %s with %s to be %s", name, a, h.hexdigest())
return h.hexdigest()
@@ -594,7 +749,7 @@ def execute(cmd):
line = process.stdout.readline()
if not line:
break
- log.info(line.replace('\n', ' '))
+ log.info(line.replace("\n", " "))
return process.wait() == 0
@@ -602,14 +757,13 @@ def open_manifest(manifest_file):
"""I know how to take a filename and load it into a Manifest object"""
if os.path.exists(manifest_file):
manifest = Manifest()
- with open(manifest_file, "rb") as f:
+ with open(manifest_file, "r" if PY3 else "rb") as f:
manifest.load(f)
log.debug("loaded manifest from file '%s'" % manifest_file)
return manifest
else:
log.debug("tried to load absent file '%s' as manifest" % manifest_file)
- raise InvalidManifest(
- "manifest file '%s' does not exist" % manifest_file)
+ raise InvalidManifest("manifest file '%s' does not exist" % manifest_file)
def list_manifest(manifest_file):
@@ -617,15 +771,22 @@ def list_manifest(manifest_file):
try:
manifest = open_manifest(manifest_file)
except InvalidManifest as e:
- log.error("failed to load manifest file at '%s': %s" % (
- manifest_file,
- str(e),
- ))
+ log.error(
+ "failed to load manifest file at '%s': %s"
+ % (
+ manifest_file,
+ str(e),
+ )
+ )
return False
for f in manifest.file_records:
- print("{}\t{}\t{}".format("P" if f.present() else "-",
- "V" if f.present() and f.validate() else "-",
- f.filename))
+ print(
+ "{}\t{}\t{}".format(
+ "P" if f.present() else "-",
+ "V" if f.present() and f.validate() else "-",
+ f.filename,
+ )
+ )
return True
@@ -635,10 +796,13 @@ def validate_manifest(manifest_file):
try:
manifest = open_manifest(manifest_file)
except InvalidManifest as e:
- log.error("failed to load manifest file at '%s': %s" % (
- manifest_file,
- str(e),
- ))
+ log.error(
+ "failed to load manifest file at '%s': %s"
+ % (
+ manifest_file,
+ str(e),
+ )
+ )
return False
invalid_files = []
absent_files = []
@@ -677,13 +841,17 @@ def add_files(manifest_file, algorithm, filenames, version, visibility, unpack):
log.debug("appending a new file record to manifest file")
add = True
for fr in old_manifest.file_records:
- log.debug("manifest file has '%s'" % "', ".join(
- [x.filename for x in old_manifest.file_records]))
+ log.debug(
+ "manifest file has '%s'"
+ % "', ".join([x.filename for x in old_manifest.file_records])
+ )
if new_fr == fr:
log.info("file already in old_manifest")
add = False
elif filename == fr.filename:
- log.error("manifest already contains a different file named %s" % filename)
+ log.error(
+ "manifest already contains a different file named %s" % filename
+ )
add = False
if add:
new_manifest.file_records.append(new_fr)
@@ -695,8 +863,12 @@ def add_files(manifest_file, algorithm, filenames, version, visibility, unpack):
for old_fr in old_manifest.file_records:
if old_fr.filename not in new_filenames:
new_manifest.file_records.append(old_fr)
- with open(manifest_file, **open_attrs) as output:
- new_manifest.dump(output, fmt='json')
+ if PY3:
+ with open(manifest_file, mode="w") as output:
+ new_manifest.dump(output, fmt="json")
+ else:
+ with open(manifest_file, mode="wb") as output:
+ new_manifest.dump(output, fmt="json")
return all_files_added
@@ -706,7 +878,17 @@ def touch(f):
try:
os.utime(f, None)
except OSError:
- log.warn('impossible to update utime of file %s' % f)
+ log.warn("impossible to update utime of file %s" % f)
+
+
+@contextmanager
+@retriable(sleeptime=2)
+def request(url, auth_file=None):
+ req = Request(url)
+ _authorize(req, auth_file)
+ with closing(urllib2.urlopen(req)) as f:
+ log.debug("opened %s for reading" % url)
+ yield f
def fetch_file(base_urls, file_record, grabchunk=1024 * 4, auth_file=None, region=None):
@@ -717,42 +899,41 @@ def fetch_file(base_urls, file_record, grabchunk=1024 * 4, auth_file=None, regio
fetched_path = None
for base_url in base_urls:
# Generate the URL for the file on the server side
- url = urljoin(base_url,
- '%s/%s' % (file_record.algorithm, file_record.digest))
+ url = urljoin(base_url, "%s/%s" % (file_record.algorithm, file_record.digest))
if region is not None:
- url += '?region=' + region
+ url += "?region=" + region
log.info("Attempting to fetch from '%s'..." % base_url)
# Well, the file doesn't exist locally. Let's fetch it.
try:
- req = Request(url)
- _authorize(req, auth_file)
- f = urllib2.urlopen(req)
- log.debug("opened %s for reading" % url)
- with open(temp_path, **open_attrs) as out:
+ with request(url, auth_file) as f, open(temp_path, mode="wb") as out:
k = True
size = 0
while k:
# TODO: print statistics as file transfers happen both for info and to stop
# buildbot timeouts
indata = f.read(grabchunk)
- if PY3:
- indata = to_text(indata)
out.write(indata)
size += len(indata)
if len(indata) == 0:
k = False
- log.info("File %s fetched from %s as %s" %
- (file_record.filename, base_url, temp_path))
+ log.info(
+ "File %s fetched from %s as %s"
+ % (file_record.filename, base_url, temp_path)
+ )
fetched_path = temp_path
break
except (URLError, HTTPError, ValueError):
- log.info("...failed to fetch '%s' from %s" %
- (file_record.filename, base_url), exc_info=True)
+ log.info(
+ "...failed to fetch '%s' from %s" % (file_record.filename, base_url),
+ exc_info=True,
+ )
except IOError: # pragma: no cover
- log.info("failed to write to temporary file for '%s'" %
- file_record.filename, exc_info=True)
+ log.info(
+ "failed to write to temporary file for '%s'" % file_record.filename,
+ exc_info=True,
+ )
# cleanup temp file in case of issues
if fetched_path:
@@ -768,16 +949,43 @@ def fetch_file(base_urls, file_record, grabchunk=1024 * 4, auth_file=None, regio
def clean_path(dirname):
"""Remove a subtree if is exists. Helper for unpack_file()."""
if os.path.exists(dirname):
- log.info('rm tree: %s' % dirname)
+ log.info("rm tree: %s" % dirname)
shutil.rmtree(dirname)
CHECKSUM_SUFFIX = ".checksum"
+def validate_tar_member(member, path):
+ def _is_within_directory(directory, target):
+ real_directory = os.path.realpath(directory)
+ real_target = os.path.realpath(target)
+ prefix = os.path.commonprefix([real_directory, real_target])
+ return prefix == real_directory
+
+ member_path = os.path.join(path, member.name)
+ if not _is_within_directory(path, member_path):
+ raise Exception("Attempted path traversal in tar file: " + member.name)
+ if member.issym():
+ link_path = os.path.join(os.path.dirname(member_path), member.linkname)
+ if not _is_within_directory(path, link_path):
+ raise Exception("Attempted link path traversal in tar file: " + member.name)
+ if member.mode & (stat.S_ISUID | stat.S_ISGID):
+ raise Exception("Attempted setuid or setgid in tar file: " + member.name)
+
+
+def safe_extract(tar, path=".", *, numeric_owner=False):
+ def _files(tar, path):
+ for member in tar:
+ validate_tar_member(member, path)
+ yield member
+
+ tar.extractall(path, members=_files(tar, path), numeric_owner=numeric_owner)
+
+
def unpack_file(filename):
"""Untar `filename`, assuming it is uncompressed or compressed with bzip2,
- xz, gzip, or unzip a zip file. The file is assumed to contain a single
+ xz, gzip, zst, or unzip a zip file. The file is assumed to contain a single
directory with a name matching the base of the given filename.
Xz support is handled by shelling out to 'tar'."""
if os.path.isfile(filename) and tarfile.is_tarfile(filename):
@@ -785,26 +993,34 @@ def unpack_file(filename):
base_file, tar_ext = os.path.splitext(tar_file)
clean_path(base_file)
log.info('untarring "%s"' % filename)
- tar = tarfile.open(filename)
- tar.extractall()
- tar.close()
- elif os.path.isfile(filename) and filename.endswith('.tar.xz'):
- base_file = filename.replace('.tar.xz', '')
+ with tarfile.open(filename) as tar:
+ safe_extract(tar)
+ elif os.path.isfile(filename) and filename.endswith(".tar.xz"):
+ base_file = filename.replace(".tar.xz", "")
clean_path(base_file)
log.info('untarring "%s"' % filename)
# Not using tar -Jxf because it fails on Windows for some reason.
- process = Popen(['xz', '-d', '-c', filename], stdout=PIPE)
+ process = Popen(["xz", "-d", "-c", filename], stdout=PIPE)
stdout, stderr = process.communicate()
if process.returncode != 0:
return False
fileobj = BytesIO()
fileobj.write(stdout)
fileobj.seek(0)
- tar = tarfile.open(fileobj=fileobj, mode='r|')
- tar.extractall()
- tar.close()
+ with tarfile.open(fileobj=fileobj, mode="r|") as tar:
+ safe_extract(tar)
+ elif os.path.isfile(filename) and filename.endswith(".tar.zst"):
+ import zstandard
+
+ base_file = filename.replace(".tar.zst", "")
+ clean_path(base_file)
+ log.info('untarring "%s"' % filename)
+ dctx = zstandard.ZstdDecompressor()
+ with dctx.stream_reader(open(filename, "rb")) as fileobj:
+ with tarfile.open(fileobj=fileobj, mode="r|") as tar:
+ safe_extract(tar)
elif os.path.isfile(filename) and zipfile.is_zipfile(filename):
- base_file = filename.replace('.zip', '')
+ base_file = filename.replace(".zip", "")
clean_path(base_file)
log.info('unzipping "%s"' % filename)
z = zipfile.ZipFile(filename)
@@ -816,16 +1032,25 @@ def unpack_file(filename):
return True
-def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None,
- auth_file=None, region=None):
+def fetch_files(
+ manifest_file,
+ base_urls,
+ filenames=[],
+ cache_folder=None,
+ auth_file=None,
+ region=None,
+):
# Lets load the manifest file
try:
manifest = open_manifest(manifest_file)
except InvalidManifest as e:
- log.error("failed to load manifest file at '%s': %s" % (
- manifest_file,
- str(e),
- ))
+ log.error(
+ "failed to load manifest file at '%s': %s"
+ % (
+ manifest_file,
+ str(e),
+ )
+ )
return False
# we want to track files already in current working directory AND valid
@@ -852,21 +1077,27 @@ def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None,
# we have an invalid file here, better to cleanup!
# this invalid file needs to be replaced with a good one
# from the local cash or fetched from a tooltool server
- log.info("File %s is present locally but it is invalid, so I will remove it "
- "and try to fetch it" % f.filename)
+ log.info(
+ "File %s is present locally but it is invalid, so I will remove it "
+ "and try to fetch it" % f.filename
+ )
os.remove(os.path.join(os.getcwd(), f.filename))
# check if file is already in cache
if cache_folder and f.filename not in present_files:
try:
- shutil.copy(os.path.join(cache_folder, f.digest),
- os.path.join(os.getcwd(), f.filename))
- log.info("File %s retrieved from local cache %s" %
- (f.filename, cache_folder))
+ shutil.copy(
+ os.path.join(cache_folder, f.digest),
+ os.path.join(os.getcwd(), f.filename),
+ )
+ log.info(
+ "File %s retrieved from local cache %s" % (f.filename, cache_folder)
+ )
touch(os.path.join(cache_folder, f.digest))
filerecord_for_validation = FileRecord(
- f.filename, f.size, f.digest, f.algorithm)
+ f.filename, f.size, f.digest, f.algorithm
+ )
if filerecord_for_validation.validate():
present_files.append(f.filename)
if f.unpack:
@@ -874,13 +1105,17 @@ def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None,
else:
# the file copied from the cache is invalid, better to
# clean up the cache version itself as well
- log.warn("File %s retrieved from cache is invalid! I am deleting it from the "
- "cache as well" % f.filename)
+ log.warn(
+ "File %s retrieved from cache is invalid! I am deleting it from the "
+ "cache as well" % f.filename
+ )
os.remove(os.path.join(os.getcwd(), f.filename))
os.remove(os.path.join(cache_folder, f.digest))
except IOError:
- log.info("File %s not present in local cache folder %s" %
- (f.filename, cache_folder))
+ log.info(
+ "File %s not present in local cache folder %s"
+ % (f.filename, cache_folder)
+ )
# now I will try to fetch all files which are not already present and
# valid, appending a suffix to avoid race conditions
@@ -889,9 +1124,13 @@ def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None,
# is a non empty list it can be used to filter if filename is in
# present_files, it means that I have it already because it was already
# either in the working dir or in the cache
- if (f.filename in filenames or len(filenames) == 0) and f.filename not in present_files:
+ if (
+ f.filename in filenames or len(filenames) == 0
+ ) and f.filename not in present_files:
log.debug("fetching %s" % f.filename)
- temp_file_name = fetch_file(base_urls, f, auth_file=auth_file, region=region)
+ temp_file_name = fetch_file(
+ base_urls, f, auth_file=auth_file, region=region
+ )
if temp_file_name:
fetched_files.append((f, temp_file_name))
else:
@@ -905,15 +1144,20 @@ def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None,
# this is why filerecord_for_validation is created
filerecord_for_validation = FileRecord(
- temp_file_name, localfile.size, localfile.digest, localfile.algorithm)
+ temp_file_name, localfile.size, localfile.digest, localfile.algorithm
+ )
if filerecord_for_validation.validate():
# great!
# I can rename the temp file
- log.info("File integrity verified, renaming %s to %s" %
- (temp_file_name, localfile.filename))
- os.rename(os.path.join(os.getcwd(), temp_file_name),
- os.path.join(os.getcwd(), localfile.filename))
+ log.info(
+ "File integrity verified, renaming %s to %s"
+ % (temp_file_name, localfile.filename)
+ )
+ os.rename(
+ os.path.join(os.getcwd(), temp_file_name),
+ os.path.join(os.getcwd(), localfile.filename),
+ )
if localfile.unpack:
unpack_files.append(localfile.filename)
@@ -926,14 +1170,21 @@ def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None,
if not os.path.exists(cache_folder):
log.info("Creating cache in %s..." % cache_folder)
os.makedirs(cache_folder, 0o0700)
- shutil.copy(os.path.join(os.getcwd(), localfile.filename),
- os.path.join(cache_folder, localfile.digest))
- log.info("Local cache %s updated with %s" % (cache_folder,
- localfile.filename))
+ shutil.copy(
+ os.path.join(os.getcwd(), localfile.filename),
+ os.path.join(cache_folder, localfile.digest),
+ )
+ log.info(
+ "Local cache %s updated with %s"
+ % (cache_folder, localfile.filename)
+ )
touch(os.path.join(cache_folder, localfile.digest))
except (OSError, IOError):
- log.warning('Impossible to add file %s to cache folder %s' %
- (localfile.filename, cache_folder), exc_info=True)
+ log.warning(
+ "Impossible to add file %s to cache folder %s"
+ % (localfile.filename, cache_folder),
+ exc_info=True,
+ )
else:
failed_files.append(localfile.filename)
log.error("'%s'" % filerecord_for_validation.describe())
@@ -946,20 +1197,18 @@ def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None,
# If we failed to fetch or validate a file, we need to fail
if len(failed_files) > 0:
- log.error("The following files failed: '%s'" %
- "', ".join(failed_files))
+ log.error("The following files failed: '%s'" % "', ".join(failed_files))
return False
return True
def freespace(p):
"Returns the number of bytes free under directory `p`"
- if sys.platform == 'win32': # pragma: no cover
+ if sys.platform == "win32": # pragma: no cover
# os.statvfs doesn't work on Windows
import win32file
- secsPerClus, bytesPerSec, nFreeClus, totClus = win32file.GetDiskFreeSpace(
- p)
+ secsPerClus, bytesPerSec, nFreeClus, totClus = win32file.GetDiskFreeSpace(p)
return secsPerClus * bytesPerSec * nFreeClus
else:
r = os.statvfs(p)
@@ -1000,94 +1249,102 @@ def purge(folder, gigs):
def _log_api_error(e):
- if hasattr(e, 'hdrs') and e.hdrs['content-type'] == 'application/json':
+ if hasattr(e, "hdrs") and e.hdrs["content-type"] == "application/json":
json_resp = json.load(e.fp)
- log.error("%s: %s" % (json_resp['error']['name'],
- json_resp['error']['description']))
+ log.error(
+ "%s: %s" % (json_resp["error"]["name"], json_resp["error"]["description"])
+ )
else:
log.exception("Error making RelengAPI request:")
def _authorize(req, auth_file):
- if not auth_file:
- return
-
is_taskcluster_auth = False
- with open(auth_file) as f:
- auth_file_content = f.read().strip()
+
+ if not auth_file:
try:
- auth_file_content = json.loads(auth_file_content)
+ taskcluster_env_keys = {
+ "clientId": "TASKCLUSTER_CLIENT_ID",
+ "accessToken": "TASKCLUSTER_ACCESS_TOKEN",
+ }
+ auth_content = {k: os.environ[v] for k, v in taskcluster_env_keys.items()}
is_taskcluster_auth = True
- except Exception:
- pass
+ except KeyError:
+ return
+ else:
+ with open(auth_file) as f:
+ auth_content = f.read().strip()
+ try:
+ auth_content = json.loads(auth_content)
+ is_taskcluster_auth = True
+ except Exception:
+ pass
if is_taskcluster_auth:
- taskcluster_header = make_taskcluster_header(auth_file_content, req)
+ taskcluster_header = make_taskcluster_header(auth_content, req)
log.debug("Using taskcluster credentials in %s" % auth_file)
- req.add_unredirected_header('Authorization', taskcluster_header)
+ req.add_unredirected_header("Authorization", taskcluster_header)
else:
log.debug("Using Bearer token in %s" % auth_file)
- req.add_unredirected_header('Authorization', 'Bearer %s' % auth_file_content)
+ req.add_unredirected_header("Authorization", "Bearer %s" % auth_content)
def _send_batch(base_url, auth_file, batch, region):
- url = urljoin(base_url, 'upload')
+ url = urljoin(base_url, "upload")
if region is not None:
url += "?region=" + region
+ data = json.dumps(batch)
if PY3:
- data = to_binary(json.dumps(batch))
- else:
- data = json.dumps(batch)
- req = Request(url, data, {'Content-Type': 'application/json'})
+ data = data.encode("utf-8")
+ req = Request(url, data, {"Content-Type": "application/json"})
_authorize(req, auth_file)
try:
resp = urllib2.urlopen(req)
except (URLError, HTTPError) as e:
_log_api_error(e)
return None
- return json.load(resp)['result']
+ return json.load(resp)["result"]
def _s3_upload(filename, file):
# urllib2 does not support streaming, so we fall back to good old httplib
- url = urlparse(file['put_url'])
- cls = HTTPSConnection if url.scheme == 'https' else HTTPConnection
- host, port = url.netloc.split(':') if ':' in url.netloc else (url.netloc, 443)
+ url = urlparse(file["put_url"])
+ cls = HTTPSConnection if url.scheme == "https" else HTTPConnection
+ host, port = url.netloc.split(":") if ":" in url.netloc else (url.netloc, 443)
port = int(port)
conn = cls(host, port)
try:
req_path = "%s?%s" % (url.path, url.query) if url.query else url.path
- with open(filename, 'rb') as f:
+ with open(filename, "rb") as f:
content = f.read()
content_length = len(content)
f.seek(0)
conn.request(
- 'PUT',
+ "PUT",
req_path,
f,
{
- 'Content-Type': 'application/octet-stream',
- 'Content-Length': str(content_length),
+ "Content-Type": "application/octet-stream",
+ "Content-Length": str(content_length),
},
)
resp = conn.getresponse()
resp_body = resp.read()
conn.close()
if resp.status != 200:
- raise RuntimeError("Non-200 return from AWS: %s %s\n%s" %
- (resp.status, resp.reason, resp_body))
+ raise RuntimeError(
+ "Non-200 return from AWS: %s %s\n%s"
+ % (resp.status, resp.reason, resp_body)
+ )
except Exception:
- file['upload_exception'] = sys.exc_info()
- file['upload_ok'] = False
+ file["upload_exception"] = sys.exc_info()
+ file["upload_ok"] = False
else:
- file['upload_ok'] = True
+ file["upload_ok"] = True
def _notify_upload_complete(base_url, auth_file, file):
- req = Request(
- urljoin(
- base_url,
- 'upload/complete/%(algorithm)s/%(digest)s' % file))
+ req = Request(urljoin(base_url, "upload/complete/%(algorithm)s/%(digest)s" % file))
_authorize(req, auth_file)
try:
urllib2.urlopen(req)
@@ -1097,7 +1354,7 @@ def _notify_upload_complete(base_url, auth_file, file):
return
# 409 indicates that the upload URL hasn't expired yet and we
# should retry after a delay
- to_wait = int(e.headers.get('X-Retry-After', 60))
+ to_wait = int(e.headers.get("X-Retry-After", 60))
log.warning("Waiting %d seconds for upload URLs to expire" % to_wait)
time.sleep(to_wait)
_notify_upload_complete(base_url, auth_file, file)
@@ -1114,39 +1371,38 @@ def upload(manifest, message, base_urls, auth_file, region):
# verify the manifest, since we'll need the files present to upload
if not manifest.validate():
- log.error('manifest is invalid')
+ log.error("manifest is invalid")
return False
if any(fr.visibility is None for fr in manifest.file_records):
- log.error('All files in a manifest for upload must have a visibility set')
+ log.error("All files in a manifest for upload must have a visibility set")
# convert the manifest to an upload batch
batch = {
- 'message': message,
- 'files': {},
+ "message": message,
+ "files": {},
}
for fr in manifest.file_records:
- batch['files'][fr.filename] = {
- 'size': fr.size,
- 'digest': fr.digest,
- 'algorithm': fr.algorithm,
- 'visibility': fr.visibility,
+ batch["files"][fr.filename] = {
+ "size": fr.size,
+ "digest": fr.digest,
+ "algorithm": fr.algorithm,
+ "visibility": fr.visibility,
}
# make the upload request
resp = _send_batch(base_urls[0], auth_file, batch, region)
if not resp:
return None
- files = resp['files']
+ files = resp["files"]
# Upload the files, each in a thread. This allows us to start all of the
# uploads before any of the URLs expire.
threads = {}
for filename, file in files.items():
- if 'put_url' in file:
+ if "put_url" in file:
log.info("%s: starting upload" % (filename,))
- thd = threading.Thread(target=_s3_upload,
- args=(filename, file))
+ thd = threading.Thread(target=_s3_upload, args=(filename, file))
thd.daemon = 1
thd.start()
threads[filename] = thd
@@ -1161,11 +1417,12 @@ def upload(manifest, message, base_urls, auth_file, region):
# _s3_upload has annotated file with result information
file = files[filename]
thread.join()
- if file['upload_ok']:
+ if file["upload_ok"]:
log.info("%s: uploaded" % filename)
else:
- log.error("%s: failed" % filename,
- exc_info=file['upload_exception'])
+ log.error(
+ "%s: failed" % filename, exc_info=file["upload_exception"]
+ )
success = False
del threads[filename]
@@ -1173,54 +1430,120 @@ def upload(manifest, message, base_urls, auth_file, region):
# fails, we don't consider that an error (the server will notice
# eventually)
for filename, file in files.items():
- if 'put_url' in file and file['upload_ok']:
+ if "put_url" in file and file["upload_ok"]:
log.info("notifying server of upload completion for %s" % (filename,))
_notify_upload_complete(base_urls[0], auth_file, file)
return success
+def send_operation_on_file(data, base_urls, digest, auth_file):
+ url = base_urls[0]
+ url = urljoin(url, "file/sha512/" + digest)
+
+ data = json.dumps(data)
+
+ req = Request(url, data, {"Content-Type": "application/json"})
+ req.get_method = lambda: "PATCH"
+
+ _authorize(req, auth_file)
+
+ try:
+ urllib2.urlopen(req)
+ except (URLError, HTTPError) as e:
+ _log_api_error(e)
+ return False
+ return True
+
+
+def change_visibility(base_urls, digest, visibility, auth_file):
+ data = [
+ {
+ "op": "set_visibility",
+ "visibility": visibility,
+ }
+ ]
+ return send_operation_on_file(data, base_urls, digest, auth_file)
+
+
+def delete_instances(base_urls, digest, auth_file):
+ data = [
+ {
+ "op": "delete_instances",
+ }
+ ]
+ return send_operation_on_file(data, base_urls, digest, auth_file)
+
+
def process_command(options, args):
- """ I know how to take a list of program arguments and
+ """I know how to take a list of program arguments and
start doing the right thing with them"""
cmd = args[0]
cmd_args = args[1:]
- log.debug("processing '%s' command with args '%s'" %
- (cmd, '", "'.join(cmd_args)))
+ log.debug("processing '%s' command with args '%s'" % (cmd, '", "'.join(cmd_args)))
log.debug("using options: %s" % options)
- if cmd == 'list':
- return list_manifest(options['manifest'])
- if cmd == 'validate':
- return validate_manifest(options['manifest'])
- elif cmd == 'add':
- return add_files(options['manifest'], options['algorithm'], cmd_args,
- options['version'], options['visibility'],
- options['unpack'])
- elif cmd == 'purge':
- if options['cache_folder']:
- purge(folder=options['cache_folder'], gigs=options['size'])
+ if cmd == "list":
+ return list_manifest(options["manifest"])
+ if cmd == "validate":
+ return validate_manifest(options["manifest"])
+ elif cmd == "add":
+ return add_files(
+ options["manifest"],
+ options["algorithm"],
+ cmd_args,
+ options["version"],
+ options["visibility"],
+ options["unpack"],
+ )
+ elif cmd == "purge":
+ if options["cache_folder"]:
+ purge(folder=options["cache_folder"], gigs=options["size"])
else:
- log.critical('please specify the cache folder to be purged')
+ log.critical("please specify the cache folder to be purged")
return False
- elif cmd == 'fetch':
+ elif cmd == "fetch":
return fetch_files(
- options['manifest'],
- options['base_url'],
+ options["manifest"],
+ options["base_url"],
cmd_args,
- cache_folder=options['cache_folder'],
+ cache_folder=options["cache_folder"],
auth_file=options.get("auth_file"),
- region=options.get('region'))
- elif cmd == 'upload':
- if not options.get('message'):
- log.critical('upload command requires a message')
+ region=options.get("region"),
+ )
+ elif cmd == "upload":
+ if not options.get("message"):
+ log.critical("upload command requires a message")
return False
return upload(
- options.get('manifest'),
- options.get('message'),
- options.get('base_url'),
- options.get('auth_file'),
- options.get('region'))
+ options.get("manifest"),
+ options.get("message"),
+ options.get("base_url"),
+ options.get("auth_file"),
+ options.get("region"),
+ )
+ elif cmd == "change-visibility":
+ if not options.get("digest"):
+ log.critical("change-visibility command requires a digest option")
+ return False
+ if not options.get("visibility"):
+ log.critical("change-visibility command requires a visibility option")
+ return False
+ return change_visibility(
+ options.get("base_url"),
+ options.get("digest"),
+ options.get("visibility"),
+ options.get("auth_file"),
+ )
+ elif cmd == "delete":
+ if not options.get("digest"):
+ log.critical("change-visibility command requires a digest option")
+ return False
+ return delete_instances(
+ options.get("base_url"),
+ options.get("digest"),
+ options.get("auth_file"),
+ )
else:
log.critical('command "%s" is not implemented' % cmd)
return False
@@ -1229,62 +1552,127 @@ def process_command(options, args):
def main(argv, _skip_logging=False):
# Set up option parsing
parser = optparse.OptionParser()
- parser.add_option('-q', '--quiet', default=logging.INFO,
- dest='loglevel', action='store_const', const=logging.ERROR)
- parser.add_option('-v', '--verbose',
- dest='loglevel', action='store_const', const=logging.DEBUG)
- parser.add_option('-m', '--manifest', default=DEFAULT_MANIFEST_NAME,
- dest='manifest', action='store',
- help='specify the manifest file to be operated on')
- parser.add_option('-d', '--algorithm', default='sha512',
- dest='algorithm', action='store',
- help='hashing algorithm to use (only sha512 is allowed)')
- parser.add_option('--visibility', default=None,
- dest='visibility', choices=['internal', 'public'],
- help='Visibility level of this file; "internal" is for '
- 'files that cannot be distributed out of the company '
- 'but not for secrets; "public" files are available to '
- 'anyone without restriction')
- parser.add_option('--unpack', default=False,
- dest='unpack', action='store_true',
- help='Request unpacking this file after fetch.'
- ' This is helpful with tarballs.')
- parser.add_option('--version', default=None,
- dest='version', action='store',
- help='Version string for this file. This annotates the '
- 'manifest entry with a version string to help '
- 'identify the contents.')
- parser.add_option('-o', '--overwrite', default=False,
- dest='overwrite', action='store_true',
- help='UNUSED; present for backward compatibility')
- parser.add_option('--url', dest='base_url', action='append',
- help='RelengAPI URL ending with /tooltool/; default '
- 'is appropriate for Mozilla')
- parser.add_option('-c', '--cache-folder', dest='cache_folder',
- help='Local cache folder')
- parser.add_option('-s', '--size',
- help='free space required (in GB)', dest='size',
- type='float', default=0.)
- parser.add_option('-r', '--region', help='Preferred AWS region for upload or fetch; '
- 'example: --region=us-west-2')
- parser.add_option('--message',
- help='The "commit message" for an upload; format with a bug number '
- 'and brief comment',
- dest='message')
- parser.add_option('--authentication-file',
- help='Use the RelengAPI token found in the given file to '
- 'authenticate to the RelengAPI server.',
- dest='auth_file')
+ parser.add_option(
+ "-q",
+ "--quiet",
+ default=logging.INFO,
+ dest="loglevel",
+ action="store_const",
+ const=logging.ERROR,
+ )
+ parser.add_option(
+ "-v", "--verbose", dest="loglevel", action="store_const", const=logging.DEBUG
+ )
+ parser.add_option(
+ "-m",
+ "--manifest",
+ default=DEFAULT_MANIFEST_NAME,
+ dest="manifest",
+ action="store",
+ help="specify the manifest file to be operated on",
+ )
+ parser.add_option(
+ "-d",
+ "--algorithm",
+ default="sha512",
+ dest="algorithm",
+ action="store",
+ help="hashing algorithm to use (only sha512 is allowed)",
+ )
+ parser.add_option(
+ "--digest",
+ default=None,
+ dest="digest",
+ action="store",
+ help="digest hash to change visibility for",
+ )
+ parser.add_option(
+ "--visibility",
+ default=None,
+ dest="visibility",
+ choices=["internal", "public"],
+ help='Visibility level of this file; "internal" is for '
+ "files that cannot be distributed out of the company "
+ 'but not for secrets; "public" files are available to '
+ "anyone without restriction",
+ )
+ parser.add_option(
+ "--unpack",
+ default=False,
+ dest="unpack",
+ action="store_true",
+ help="Request unpacking this file after fetch."
+ " This is helpful with tarballs.",
+ )
+ parser.add_option(
+ "--version",
+ default=None,
+ dest="version",
+ action="store",
+ help="Version string for this file. This annotates the "
+ "manifest entry with a version string to help "
+ "identify the contents.",
+ )
+ parser.add_option(
+ "-o",
+ "--overwrite",
+ default=False,
+ dest="overwrite",
+ action="store_true",
+ help="UNUSED; present for backward compatibility",
+ )
+ parser.add_option(
+ "--url",
+ dest="base_url",
+ action="append",
+ help="RelengAPI URL ending with /tooltool/; default "
+ "is appropriate for Mozilla",
+ )
+ parser.add_option(
+ "-c", "--cache-folder", dest="cache_folder", help="Local cache folder"
+ )
+ parser.add_option(
+ "-s",
+ "--size",
+ help="free space required (in GB)",
+ dest="size",
+ type="float",
+ default=0.0,
+ )
+ parser.add_option(
+ "-r",
+ "--region",
+ help="Preferred AWS region for upload or fetch; " "example: --region=us-west-2",
+ )
+ parser.add_option(
+ "--message",
+ help='The "commit message" for an upload; format with a bug number '
+ "and brief comment",
+ dest="message",
+ )
+ parser.add_option(
+ "--authentication-file",
+ help="Use the RelengAPI token found in the given file to "
+ "authenticate to the RelengAPI server.",
+ dest="auth_file",
+ )
(options_obj, args) = parser.parse_args(argv[1:])
- # default the options list if not provided
if not options_obj.base_url:
- options_obj.base_url = ['https://tooltool.mozilla-releng.net/']
+ tooltool_host = os.environ.get("TOOLTOOL_HOST", "tooltool.mozilla-releng.net")
+ taskcluster_proxy_url = os.environ.get("TASKCLUSTER_PROXY_URL")
+ if taskcluster_proxy_url:
+ tooltool_url = "{}/{}".format(taskcluster_proxy_url, tooltool_host)
+ else:
+ tooltool_url = "https://{}".format(tooltool_host)
+
+ options_obj.base_url = [tooltool_url]
# ensure all URLs have a trailing slash
def add_slash(url):
- return url if url.endswith('/') else (url + '/')
+ return url if url.endswith("/") else (url + "/")
+
options_obj.base_url = [add_slash(u) for u in options_obj.base_url]
# expand ~ in --authentication-file
@@ -1294,7 +1682,7 @@ def main(argv, _skip_logging=False):
# Dictionaries are easier to work with
options = vars(options_obj)
- log.setLevel(options['loglevel'])
+ log.setLevel(options["loglevel"])
# Set up logging, for now just to the console
if not _skip_logging: # pragma: no cover
@@ -1303,11 +1691,11 @@ def main(argv, _skip_logging=False):
ch.setFormatter(cf)
log.addHandler(ch)
- if options['algorithm'] != 'sha512':
- parser.error('only --algorithm sha512 is supported')
+ if options["algorithm"] != "sha512":
+ parser.error("only --algorithm sha512 is supported")
if len(args) < 1:
- parser.error('You must specify a command')
+ parser.error("You must specify a command")
return 0 if process_command(options, args) else 1
diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/error.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/error.py
index 1b65d225fae..81910a63eb2 100644
--- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/error.py
+++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/error.py
@@ -39,6 +39,10 @@ class NoSuchFrameException(BidiException):
error_code = "no such frame"
+class NoSuchNodeException(BidiException):
+ error_code = "no such node"
+
+
class NoSuchScriptException(BidiException):
error_code = "no such script"
diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py
index 033929d5ff5..abaf569f928 100644
--- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py
+++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py
@@ -1,5 +1,5 @@
import base64
-from typing import Any, Optional, Mapping, MutableMapping
+from typing import Any, List, Mapping, MutableMapping, Optional
from ._module import BidiModule, command
@@ -80,3 +80,41 @@ class BrowsingContext(BidiModule):
assert isinstance(result["url"], str)
return result
+
+ @command
+ def print(
+ self,
+ context: str,
+ background: Optional[bool] = None,
+ margin: Optional[Mapping[str, Any]] = None,
+ orientation: Optional[str] = None,
+ page: Optional[Mapping[str, Any]] = None,
+ page_ranges: Optional[List[str]] = None,
+ scale: Optional[float] = None,
+ shrink_to_fit: Optional[bool] = None
+ ) -> Mapping[str, Any]:
+ params: MutableMapping[str, Any] = {
+ "context": context
+ }
+
+ if background is not None:
+ params["background"] = background
+ if margin is not None:
+ params["margin"] = margin
+ if orientation is not None:
+ params["orientation"] = orientation
+ if page is not None:
+ params["page"] = page
+ if page_ranges is not None:
+ params["pageRanges"] = page_ranges
+ if scale is not None:
+ params["scale"] = scale
+ if shrink_to_fit is not None:
+ params["shrinkToFit"] = shrink_to_fit
+
+ return params
+
+ @print.result
+ def _print(self, result: Mapping[str, Any]) -> Any:
+ assert result["data"] is not None
+ return result["data"]
diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py
index ba01e1fe866..851c6722fc2 100644
--- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py
+++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py
@@ -807,13 +807,12 @@ class Element:
"""
identifier = "element-6066-11e4-a52e-4f735466cecf"
- def __init__(self, id, session):
+ def __init__(self, session, id):
"""
Construct a new web element representation.
- :param id: Web element UUID which must be unique across
- all browsing contexts.
:param session: Current ``webdriver.Session``.
+ :param id: Web element UUID which must be unique across all browsing contexts.
"""
self.id = id
self.session = session
@@ -828,7 +827,7 @@ class Element:
@classmethod
def from_json(cls, json, session):
uuid = json[Element.identifier]
- return cls(uuid, session)
+ return cls(session, uuid)
def send_element_command(self, method, uri, body=None):
url = "element/%s/%s" % (self.id, uri)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py
index 93e2a87826c..78e05264d4d 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py
@@ -164,10 +164,8 @@ class TagFilter:
def __init__(self, tags):
self.tags = set(tags)
- def __call__(self, test_iter):
- for test in test_iter:
- if test.tags & self.tags:
- yield test
+ def __call__(self, test):
+ return test.tags & self.tags
class ManifestLoader:
@@ -214,6 +212,7 @@ class TestLoader:
test_types,
run_info,
manifest_filters=None,
+ test_filters=None,
chunk_type="none",
total_chunks=1,
chunk_number=1,
@@ -228,6 +227,7 @@ class TestLoader:
self.run_info = run_info
self.manifest_filters = manifest_filters if manifest_filters is not None else []
+ self.test_filters = test_filters if test_filters is not None else []
self.manifests = test_manifests
self.tests = None
@@ -310,7 +310,9 @@ class TestLoader:
inherit_metadata, test_metadata = self.load_metadata(manifest_file, metadata_path, test_path)
for test in tests:
- yield test_path, test_type, self.get_test(manifest_file, test, inherit_metadata, test_metadata)
+ wpt_test = self.get_test(manifest_file, test, inherit_metadata, test_metadata)
+ if all(f(wpt_test) for f in self.test_filters):
+ yield test_path, test_type, wpt_test
def _load_tests(self):
"""Read in the tests from the manifest file and add them to a queue"""
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_testloader.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_testloader.py
index 0936c54ea97..8c8d02a22b9 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_testloader.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_testloader.py
@@ -7,7 +7,7 @@ import tempfile
import pytest
from mozlog import structured
-from ..testloader import TestFilter as Filter, TestLoader as Loader
+from ..testloader import TestFilter, TestLoader, TagFilter
from ..testloader import read_include_from_file
from .test_wpttest import make_mock_manifest
@@ -46,19 +46,20 @@ def test_loader_h2_tests():
manifest = WPTManifest.from_json("/", manifest_json)
# By default, the loader should include the h2 test.
- loader = Loader({manifest: {"metadata_path": ""}}, ["testharness"], None)
+ loader = TestLoader({manifest: {"metadata_path": ""}}, ["testharness"], None)
assert "testharness" in loader.tests
assert len(loader.tests["testharness"]) == 2
assert len(loader.disabled_tests) == 0
# We can also instruct it to skip them.
- loader = Loader({manifest: {"metadata_path": ""}}, ["testharness"], None, include_h2=False)
+ loader = TestLoader({manifest: {"metadata_path": ""}}, ["testharness"], None, include_h2=False)
assert "testharness" in loader.tests
assert len(loader.tests["testharness"]) == 1
assert "testharness" in loader.disabled_tests
assert len(loader.disabled_tests["testharness"]) == 1
assert loader.disabled_tests["testharness"][0].url == "/a/bar.h2.html"
+
@pytest.mark.xfail(sys.platform == "win32",
reason="NamedTemporaryFile cannot be reopened on Win32")
def test_include_file():
@@ -82,6 +83,7 @@ def test_include_file():
assert "/foo/idlharness.https.any.html" in include
assert "/foo/idlharness.https.any.worker.html" in include
+
@pytest.mark.xfail(sys.platform == "win32",
reason="NamedTemporaryFile cannot be reopened on Win32")
def test_filter_unicode():
@@ -92,4 +94,44 @@ def test_filter_unicode():
f.write(include_ini.encode('utf-8'))
f.flush()
- Filter(manifest_path=f.name, test_manifests=tests)
+ TestFilter(manifest_path=f.name, test_manifests=tests)
+
+
+def test_loader_filter_tags():
+ manifest_json = {
+ "items": {
+ "testharness": {
+ "a": {
+ "foo.html": [
+ "abcdef123456",
+ [None, {}],
+ ],
+ "bar.html": [
+ "uvwxyz987654",
+ [None, {}],
+ ],
+ }
+ }
+ },
+ "url_base": "/",
+ "version": 8,
+ }
+ manifest = WPTManifest.from_json("/", manifest_json)
+
+ tmpdir_kwargs = {}
+ if sys.version_info.major >= 3 and sys.version_info.minor >= 10:
+ tmpdir_kwargs["ignore_cleanup_errors"] = True
+ with tempfile.TemporaryDirectory(**tmpdir_kwargs) as metadata_path:
+ a_path = os.path.join(metadata_path, "a")
+ os.makedirs(a_path)
+ with open(os.path.join(a_path, "bar.html.ini"), "w") as f:
+ f.write("tags: [test-include]\n")
+
+ loader = TestLoader({manifest: {"metadata_path": metadata_path}}, ["testharness"], None)
+ assert len(loader.tests["testharness"]) == 2
+
+ loader = TestLoader({manifest: {"metadata_path": metadata_path}}, ["testharness"], None,
+ test_filters=[TagFilter({"test-include"})])
+ assert len(loader.tests["testharness"]) == 1
+ assert loader.tests["testharness"][0].id == "/a/bar.html"
+ assert loader.tests["testharness"][0].tags == {"dir:a", "test-include"}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
index 224a4fde4df..740bb7e9f42 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
@@ -62,10 +62,12 @@ def get_loader(test_paths, product, debug=None, run_info_extras=None, chunker_kw
device_serials=kwargs.get("device_serial"),
adb_binary=kwargs.get("adb_binary"))
- test_manifests = testloader.ManifestLoader(test_paths, force_manifest_update=kwargs["manifest_update"],
+ test_manifests = testloader.ManifestLoader(test_paths,
+ force_manifest_update=kwargs["manifest_update"],
manifest_download=kwargs["manifest_download"]).load()
manifest_filters = []
+ test_filters = []
include = kwargs["include"]
if kwargs["include_file"]:
@@ -74,6 +76,9 @@ def get_loader(test_paths, product, debug=None, run_info_extras=None, chunker_kw
if test_groups:
include = testloader.update_include_for_groups(test_groups, include)
+ if kwargs["tags"]:
+ test_filters.append(testloader.TagFilter(kwargs["tags"]))
+
if include or kwargs["exclude"] or kwargs["include_manifest"] or kwargs["default_exclude"]:
manifest_filters.append(testloader.TestFilter(include=include,
exclude=kwargs["exclude"],
@@ -87,6 +92,7 @@ def get_loader(test_paths, product, debug=None, run_info_extras=None, chunker_kw
kwargs["test_types"],
run_info,
manifest_filters=manifest_filters,
+ test_filters=test_filters,
chunk_type=kwargs["chunk_type"],
total_chunks=kwargs["total_chunks"],
chunk_number=kwargs["this_chunk"],
diff --git a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js
index 76e5bf83b1e..6fff9e9189e 100644
--- a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js
+++ b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js
@@ -58,6 +58,7 @@ test(
promise_setup(async () => {
await test_driver.set_permission(
{ name: 'top-level-storage-access', requestedOrigin }, 'prompt');
+ await test_driver.set_permission({name: 'storage-access'}, 'prompt');
});
promise_test(
@@ -110,6 +111,29 @@ if (topLevelDocument) {
'[' + testPrefix +
'] document.requestStorageAccessForOrigin() should be resolved without a user gesture with an existing permission');
+ promise_test(
+ async t => {
+ const altOrigin = 'https://{{hosts[alt][www]}}:{{ports[https][0]}}';
+ t.add_cleanup(async () => {
+ await test_driver.set_permission(
+ {name: 'top-level-storage-access', requestedOrigin: altOrigin},
+ 'prompt');
+ await test_driver.set_permission({name: 'storage-access'}, 'prompt');
+ });
+ await test_driver.set_permission(
+ {name: 'top-level-storage-access', requestedOrigin: altOrigin},
+ 'granted');
+
+ await RunCallbackWithGesture(() => {
+ document.requestStorageAccessForOrigin(altOrigin).then(() => {
+ RunTestsInIFrame(
+ 'https://{{hosts[alt][www]}}:{{ports[https][0]}}/top-level-storage-access-api/tentative/resources/requestStorageAccess-integration-iframe.https.html');
+ });
+ });
+ },
+ '[' + testPrefix +
+ '] document.requestStorageAccess() should be resolved without a user gesture after a successful requestStorageAccessForOrigin() call');
+
// Create a test with a single-child same-origin iframe.
// This will validate that calls to requestStorageAccessForOrigin are rejected
// in non-top-level contexts.
diff --git a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccess-integration-iframe.https.html b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccess-integration-iframe.https.html
new file mode 100644
index 00000000000..f4db5cf65ec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccess-integration-iframe.https.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<meta charset=utf-8>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<!-- no testharnessreport.js -->
+<script src="../../storage-access-api/helpers.js"></script>
+<div id=log></div>
+<script>
+ promise_test(
+ async t => document.requestStorageAccess(),
+ '[request-storage-access-integration] ' +
+ 'document.requestStorageAccess() should be resolved without a user gesture with an existing top-level-storage-access permission');
+</script>
diff --git a/tests/wpt/web-platform-tests/wai-aria/README.md b/tests/wpt/web-platform-tests/wai-aria/manual/README.md
index 4e1a7706e33..4e1a7706e33 100644
--- a/tests/wpt/web-platform-tests/wai-aria/README.md
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/README.md
diff --git a/tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/alertdialog_modal_false-manual.html
index ee64c9dbf0d..ee64c9dbf0d 100644
--- a/tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/alertdialog_modal_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/alertdialog_modal_true-manual.html
index 4affe2fd5e6..4affe2fd5e6 100644
--- a/tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/alertdialog_modal_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/application_activedescendant-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/application_activedescendant-manual.html
index a6ef85ac3dd..a6ef85ac3dd 100644
--- a/tests/wpt/web-platform-tests/wai-aria/application_activedescendant-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/application_activedescendant-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/application_activedescendant_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/application_activedescendant_value_changes-manual.html
index d923c84dea7..d923c84dea7 100644
--- a/tests/wpt/web-platform-tests/wai-aria/application_activedescendant_value_changes-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/application_activedescendant_value_changes-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_not_declared-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_not_declared-manual.html
index ecf95bb64fc..ecf95bb64fc 100644
--- a/tests/wpt/web-platform-tests/wai-aria/aria-current_not_declared-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_not_declared-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_changes-manual.html
index d3f1eae0052..d3f1eae0052 100644
--- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_changes-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_changes-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_date-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_date-manual.html
index b15f5ec13ad..b15f5ec13ad 100644
--- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_date-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_date-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_location-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_location-manual.html
index e8cf762c0e7..e8cf762c0e7 100644
--- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_location-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_location-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_page-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_page-manual.html
index ba48b738cc0..ba48b738cc0 100644
--- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_page-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_page-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_step-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_step-manual.html
index 6f4d5986c61..6f4d5986c61 100644
--- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_step-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_step-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_time-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_time-manual.html
index 046fb817695..046fb817695 100644
--- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_time-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_time-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_true-manual.html
index 3ce799f8b2c..3ce799f8b2c 100644
--- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_unspecified-manual.html
index c017a000a11..c017a000a11 100644
--- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-details_pointing_to_details_element-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-details_pointing_to_details_element-manual.html
index 6a0d9d776a6..6a0d9d776a6 100644
--- a/tests/wpt/web-platform-tests/wai-aria/aria-details_pointing_to_details_element-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-details_pointing_to_details_element-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-details_pointing_to_div_element-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-details_pointing_to_div_element-manual.html
index 8a46e78d971..8a46e78d971 100644
--- a/tests/wpt/web-platform-tests/wai-aria/aria-details_pointing_to_div_element-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-details_pointing_to_div_element-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/article_in_feed_posinset_and_setsize-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/article_in_feed_posinset_and_setsize-manual.html
index 9c89dc3fa99..9c89dc3fa99 100644
--- a/tests/wpt/web-platform-tests/wai-aria/article_in_feed_posinset_and_setsize-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/article_in_feed_posinset_and_setsize-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/article_in_feed_setsize_-1-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/article_in_feed_setsize_-1-manual.html
index 0552f926e94..0552f926e94 100644
--- a/tests/wpt/web-platform-tests/wai-aria/article_in_feed_setsize_-1-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/article_in_feed_setsize_-1-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/article_not_in_feed_posinset_and_setsize-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/article_not_in_feed_posinset_and_setsize-manual.html
index 91cb0e0eb48..91cb0e0eb48 100644
--- a/tests/wpt/web-platform-tests/wai-aria/article_not_in_feed_posinset_and_setsize-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/article_not_in_feed_posinset_and_setsize-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_dialog-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_dialog-manual.html
index 8ba0a22a8d4..8ba0a22a8d4 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_dialog-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_dialog-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_emptystring-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_emptystring-manual.html
index e9091489068..e9091489068 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_emptystring-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_emptystring-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_false-manual.html
index 97188995e52..97188995e52 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_foo-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_foo-manual.html
index a09d21c0741..a09d21c0741 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_foo-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_foo-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_grid-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_grid-manual.html
index 57c8efbde24..57c8efbde24 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_grid-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_grid-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_listbox-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_listbox-manual.html
index 4191fc40a3c..4191fc40a3c 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_listbox-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_listbox-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_menu-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_menu-manual.html
index 9378993f558..9378993f558 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_menu-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_menu-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_tree-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_tree-manual.html
index e62b87f59d6..e62b87f59d6 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_tree-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_tree-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_true-manual.html
index a6d94658d27..a6d94658d27 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_unspecified-manual.html
index 96d7095d4de..96d7095d4de 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_roledescription_empty-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_empty-manual.html
index d9eb0fe7cc8..d9eb0fe7cc8 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_roledescription_empty-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_empty-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_roledescription_valid-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_valid-manual.html
index cdcf6071e61..cdcf6071e61 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_roledescription_valid-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_valid-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/button_roledescription_whitespace_only-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_whitespace_only-manual.html
index 59e463778a1..59e463778a1 100644
--- a/tests/wpt/web-platform-tests/wai-aria/button_roledescription_whitespace_only-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_whitespace_only-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/cell-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell-manual.html
index d9f0eafbe07..d9f0eafbe07 100644
--- a/tests/wpt/web-platform-tests/wai-aria/cell-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_div-manual.html
index fa120dc5e43..fa120dc5e43 100644
--- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_div-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_div-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3-manual.html
index a7c65fed3d4..a7c65fed3d4 100644
--- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html
index 057918c6b0c..057918c6b0c 100644
--- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html
index 2c05e6ea71f..2c05e6ea71f 100644
--- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html
index 06212078b74..06212078b74 100644
--- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_div-manual.html
index e94303848da..e94303848da 100644
--- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_div-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_div-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html
index 86ea1a4aec1..86ea1a4aec1 100644
--- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html
index f1572046f29..f1572046f29 100644
--- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html
index 0978186feba..0978186feba 100644
--- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_colindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_colindex_4-manual.html
index 02003065e09..02003065e09 100644
--- a/tests/wpt/web-platform-tests/wai-aria/cell_colindex_4-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_colindex_4-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_rowindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_rowindex_4-manual.html
index ea2937efcbf..ea2937efcbf 100644
--- a/tests/wpt/web-platform-tests/wai-aria/cell_rowindex_4-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_rowindex_4-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_false-manual.html
index 558dc8e3912..558dc8e3912 100644
--- a/tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_true-manual.html
index f3c879038f7..f3c879038f7 100644
--- a/tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_unspecified-manual.html
index 583985f0009..583985f0009 100644
--- a/tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_div-manual.html
index 4789ced84d2..4789ced84d2 100644
--- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_div-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_div-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html
index 2ad8cb4bed9..2ad8cb4bed9 100644
--- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html
index 3ac8701f5d7..3ac8701f5d7 100644
--- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html
index 82c75991885..82c75991885 100644
--- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_div-manual.html
index 00c00683924..00c00683924 100644
--- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_div-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_div-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html
index 256a3d73bde..256a3d73bde 100644
--- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html
index 6327e5fb4ec..6327e5fb4ec 100644
--- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html
index 425eb5b15e0..425eb5b15e0 100644
--- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_colindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_colindex_4-manual.html
index f44e8343fb0..f44e8343fb0 100644
--- a/tests/wpt/web-platform-tests/wai-aria/columnheader_colindex_4-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_colindex_4-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_rowindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_rowindex_4-manual.html
index 7ab7e9c8d0f..7ab7e9c8d0f 100644
--- a/tests/wpt/web-platform-tests/wai-aria/columnheader_rowindex_4-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_rowindex_4-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_selected_false_not_automatically_propagated-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_selected_false_not_automatically_propagated-manual.html
index 7624f2a3b80..7624f2a3b80 100644
--- a/tests/wpt/web-platform-tests/wai-aria/columnheader_selected_false_not_automatically_propagated-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_selected_false_not_automatically_propagated-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_selected_true_not_automatically_propagated-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_selected_true_not_automatically_propagated-manual.html
index 1bc364cb884..1bc364cb884 100644
--- a/tests/wpt/web-platform-tests/wai-aria/columnheader_selected_true_not_automatically_propagated-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_selected_true_not_automatically_propagated-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_controls_an_invalid_id-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_controls_an_invalid_id-manual.html
index 91188d8e3ca..91188d8e3ca 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_controls_an_invalid_id-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_controls_an_invalid_id-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_dialog-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_dialog-manual.html
index d9cf618d9b5..d9cf618d9b5 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_dialog-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_dialog-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_false-manual.html
index 2b0ca94745a..2b0ca94745a 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_grid-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_grid-manual.html
index a3929cf79e7..a3929cf79e7 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_grid-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_grid-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_listbox-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_listbox-manual.html
index e1c9084fd54..e1c9084fd54 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_listbox-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_listbox-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_menu-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_menu-manual.html
index a9439ed496a..a9439ed496a 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_menu-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_menu-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_tree-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_tree-manual.html
index a0602b520f7..a0602b520f7 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_tree-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_tree-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_true-manual.html
index c7548ce5cd3..c7548ce5cd3 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_unspecified-manual.html
index cd61076fb4e..cd61076fb4e 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_horizontal-manual.html
index a5bcc700eca..a5bcc700eca 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_orientation_horizontal-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_horizontal-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_unspecified-manual.html
index 20bd53d8d11..20bd53d8d11 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_orientation_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_vertical-manual.html
index 189345c4151..189345c4151 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_orientation_vertical-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_vertical-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_false-manual.html
index 978ab119484..978ab119484 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_readonly_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_true-manual.html
index 26a4302c24b..26a4302c24b 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_readonly_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_unspecified-manual.html
index 4ad87b2c0a9..4ad87b2c0a9 100644
--- a/tests/wpt/web-platform-tests/wai-aria/combobox_readonly_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_false-manual.html
index 6c906d320f1..6c906d320f1 100644
--- a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_true-manual.html
index 02cbfb5fe89..02cbfb5fe89 100644
--- a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_unspecified-manual.html
index edd4605dad8..edd4605dad8 100644
--- a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/div_element_without_role_roledescription_valid-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/div_element_without_role_roledescription_valid-manual.html
index 68b6cc51c72..68b6cc51c72 100644
--- a/tests/wpt/web-platform-tests/wai-aria/div_element_without_role_roledescription_valid-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/div_element_without_role_roledescription_valid-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/errormessage_object_in_invalid_state-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/errormessage_object_in_invalid_state-manual.html
index 99965682628..99965682628 100644
--- a/tests/wpt/web-platform-tests/wai-aria/errormessage_object_in_invalid_state-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/errormessage_object_in_invalid_state-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/errormessage_object_in_valid_state-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/errormessage_object_in_valid_state-manual.html
index 7c194c6d0ac..7c194c6d0ac 100644
--- a/tests/wpt/web-platform-tests/wai-aria/errormessage_object_in_valid_state-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/errormessage_object_in_valid_state-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/feed-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/feed-manual.html
index 91fc6778dbf..91fc6778dbf 100644
--- a/tests/wpt/web-platform-tests/wai-aria/feed-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/feed-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/figure-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/figure-manual.html
index d60973527a9..d60973527a9 100644
--- a/tests/wpt/web-platform-tests/wai-aria/figure-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/figure-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_aria-readonly_false_automatically_propagated-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_aria-readonly_false_automatically_propagated-manual.html
index d373a3023ef..d373a3023ef 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_aria-readonly_false_automatically_propagated-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_aria-readonly_false_automatically_propagated-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_aria-readonly_true_automatically_propagated-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_aria-readonly_true_automatically_propagated-manual.html
index 7b6a22e2921..7b6a22e2921 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_aria-readonly_true_automatically_propagated-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_aria-readonly_true_automatically_propagated-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_busy_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_false-manual.html
index 48edba5bf76..48edba5bf76 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_busy_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_busy_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_true-manual.html
index ddcdf0198f8..ddcdf0198f8 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_busy_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_busy_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_value_changes-manual.html
index 4891198882a..4891198882a 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_busy_value_changes-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_value_changes-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_colcount_8-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_colcount_8-manual.html
index 0f03b12605d..0f03b12605d 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_colcount_8-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_colcount_8-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_false-manual.html
index bb8dd34a92f..bb8dd34a92f 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_true-manual.html
index a81e4cbdced..a81e4cbdced 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_unspecified-manual.html
index d45d3b9ca71..d45d3b9ca71 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_false-manual.html
index b8f7ae332ca..b8f7ae332ca 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_true-manual.html
index 76155ab905d..76155ab905d 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_unspecified-manual.html
index 491cbed6f2f..491cbed6f2f 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowcount_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowcount_3-manual.html
index 3079b59b4de..3079b59b4de 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_rowcount_3-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowcount_3-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_false-manual.html
index 883918fd043..883918fd043 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_true-manual.html
index 5d53c3624c6..5d53c3624c6 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_unspecified-manual.html
index f9321cac102..f9321cac102 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_false-manual.html
index 4fafba50a98..4fafba50a98 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_true-manual.html
index 0f14d2dea8b..0f14d2dea8b 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_unspecified-manual.html
index 208f0c5e56d..208f0c5e56d 100644
--- a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/gridcell_aria-colspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_aria-colspan_2_on_div-manual.html
index c151087767e..c151087767e 100644
--- a/tests/wpt/web-platform-tests/wai-aria/gridcell_aria-colspan_2_on_div-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_aria-colspan_2_on_div-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/gridcell_aria-rowspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_aria-rowspan_2_on_div-manual.html
index 318709b3609..318709b3609 100644
--- a/tests/wpt/web-platform-tests/wai-aria/gridcell_aria-rowspan_2_on_div-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_aria-rowspan_2_on_div-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/gridcell_colindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_colindex_4-manual.html
index 6ef4fb3a166..6ef4fb3a166 100644
--- a/tests/wpt/web-platform-tests/wai-aria/gridcell_colindex_4-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_colindex_4-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/gridcell_rowindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_rowindex_4-manual.html
index 8b9daaa7030..8b9daaa7030 100644
--- a/tests/wpt/web-platform-tests/wai-aria/gridcell_rowindex_4-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_rowindex_4-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/group_hidden_undefined_element_not_rendered-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/group_hidden_undefined_element_not_rendered-manual.html
index ef947859dba..ef947859dba 100644
--- a/tests/wpt/web-platform-tests/wai-aria/group_hidden_undefined_element_not_rendered-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/group_hidden_undefined_element_not_rendered-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/group_hidden_undefined_element_rendered-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/group_hidden_undefined_element_rendered-manual.html
index 92c067c2160..92c067c2160 100644
--- a/tests/wpt/web-platform-tests/wai-aria/group_hidden_undefined_element_rendered-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/group_hidden_undefined_element_rendered-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/heading_level_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/heading_level_unspecified-manual.html
index 819bc7b60c6..819bc7b60c6 100644
--- a/tests/wpt/web-platform-tests/wai-aria/heading_level_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/heading_level_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/keyshortcuts_multiple_shortcuts-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/keyshortcuts_multiple_shortcuts-manual.html
index ce4074a4f2c..ce4074a4f2c 100644
--- a/tests/wpt/web-platform-tests/wai-aria/keyshortcuts_multiple_shortcuts-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/keyshortcuts_multiple_shortcuts-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/keyshortcuts_one_shortcut-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/keyshortcuts_one_shortcut-manual.html
index d0238dbf20e..d0238dbf20e 100644
--- a/tests/wpt/web-platform-tests/wai-aria/keyshortcuts_one_shortcut-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/keyshortcuts_one_shortcut-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_busy_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_busy_false-manual.html
index 9f6b8b36a88..9f6b8b36a88 100644
--- a/tests/wpt/web-platform-tests/wai-aria/listbox_busy_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_busy_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_busy_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_busy_true-manual.html
index c8388f7addf..c8388f7addf 100644
--- a/tests/wpt/web-platform-tests/wai-aria/listbox_busy_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_busy_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_horizontal-manual.html
index c718a54eafb..c718a54eafb 100644
--- a/tests/wpt/web-platform-tests/wai-aria/listbox_orientation_horizontal-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_horizontal-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_unspecified-manual.html
index 7dd2762d6db..7dd2762d6db 100644
--- a/tests/wpt/web-platform-tests/wai-aria/listbox_orientation_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_vertical-manual.html
index 8bcca037d30..8bcca037d30 100644
--- a/tests/wpt/web-platform-tests/wai-aria/listbox_orientation_vertical-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_vertical-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_false-manual.html
index b3bde923a40..b3bde923a40 100644
--- a/tests/wpt/web-platform-tests/wai-aria/listbox_readonly_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_true-manual.html
index 30213919e48..30213919e48 100644
--- a/tests/wpt/web-platform-tests/wai-aria/listbox_readonly_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_unspecified-manual.html
index 9283ad24046..9283ad24046 100644
--- a/tests/wpt/web-platform-tests/wai-aria/listbox_readonly_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/listitem_setsize_-1-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listitem_setsize_-1-manual.html
index 7537a4bcd72..7537a4bcd72 100644
--- a/tests/wpt/web-platform-tests/wai-aria/listitem_setsize_-1-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/listitem_setsize_-1-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menu_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_horizontal-manual.html
index 184c42052e4..184c42052e4 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menu_orientation_horizontal-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_horizontal-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menu_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_unspecified-manual.html
index 07e8e691b94..07e8e691b94 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menu_orientation_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menu_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_vertical-manual.html
index 10a65e997d5..10a65e997d5 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menu_orientation_vertical-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_vertical-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menubar_busy_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_busy_false-manual.html
index 8224d79b876..8224d79b876 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menubar_busy_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_busy_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menubar_busy_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_busy_true-manual.html
index b1695dcef4c..b1695dcef4c 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menubar_busy_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_busy_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menubar_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_horizontal-manual.html
index e47a68e81af..e47a68e81af 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menubar_orientation_horizontal-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_horizontal-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menubar_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_unspecified-manual.html
index 0e945ae26f2..0e945ae26f2 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menubar_orientation_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menubar_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_vertical-manual.html
index c0830abc7fe..c0830abc7fe 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menubar_orientation_vertical-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_vertical-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitem_expanded_false-manual.html
index 7e5ca5485ba..7e5ca5485ba 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitem_expanded_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitem_expanded_true-manual.html
index a9d9b5df359..a9d9b5df359 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitem_expanded_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitem_posinset_and_setsize-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitem_posinset_and_setsize-manual.html
index ac0ec8871d5..ac0ec8871d5 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitem_posinset_and_setsize-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitem_posinset_and_setsize-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_expanded_false-manual.html
index e05ea1af711..e05ea1af711 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_expanded_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_expanded_true-manual.html
index b2ac5db68f3..b2ac5db68f3 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_expanded_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_posinset_and_setsize-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_posinset_and_setsize-manual.html
index cf867c1cf92..cf867c1cf92 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_posinset_and_setsize-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_posinset_and_setsize-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_false-manual.html
index 59f12ed0fc9..59f12ed0fc9 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_true-manual.html
index faa9703fda3..faa9703fda3 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_unspecified-manual.html
index d9b5dc29807..d9b5dc29807 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_expanded_false-manual.html
index 52c599d90ef..52c599d90ef 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_expanded_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_expanded_true-manual.html
index 601879885fe..601879885fe 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_expanded_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_posinset_and_setsize-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_posinset_and_setsize-manual.html
index d512e95dddb..d512e95dddb 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_posinset_and_setsize-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_posinset_and_setsize-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_false-manual.html
index 164bde7ae17..164bde7ae17 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_true-manual.html
index 70690f372c0..70690f372c0 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_unspecified-manual.html
index a4257c439f8..a4257c439f8 100644
--- a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/none-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/none-manual.html
index ded346faa6d..ded346faa6d 100644
--- a/tests/wpt/web-platform-tests/wai-aria/none-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/none-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/option_selected_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_false-manual.html
index 02b1ec8293d..02b1ec8293d 100644
--- a/tests/wpt/web-platform-tests/wai-aria/option_selected_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/option_selected_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_true-manual.html
index 8bb7dd7ef54..8bb7dd7ef54 100644
--- a/tests/wpt/web-platform-tests/wai-aria/option_selected_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/option_selected_undefined-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_undefined-manual.html
index 5930de9a482..5930de9a482 100644
--- a/tests/wpt/web-platform-tests/wai-aria/option_selected_undefined-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_undefined-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/option_selected_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_value_changes-manual.html
index 2c02a8707d3..2c02a8707d3 100644
--- a/tests/wpt/web-platform-tests/wai-aria/option_selected_value_changes-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_value_changes-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_horizontal-manual.html
index 4943335cf26..4943335cf26 100644
--- a/tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_horizontal-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_horizontal-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_unspecified-manual.html
index 40ceab71ca8..40ceab71ca8 100644
--- a/tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_vertical-manual.html
index def4543652a..def4543652a 100644
--- a/tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_vertical-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_vertical-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_false-manual.html
index 102f51757ba..102f51757ba 100644
--- a/tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_true-manual.html
index 0c97e24a8bf..0c97e24a8bf 100644
--- a/tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_unspecified-manual.html
index 6e8c641ac7b..6e8c641ac7b 100644
--- a/tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/region_with_name-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/region_with_name-manual.html
index ba868a77b2e..ba868a77b2e 100644
--- a/tests/wpt/web-platform-tests/wai-aria/region_with_name-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/region_with_name-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/region_without_name-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/region_without_name-manual.html
index 84ea6658e70..84ea6658e70 100644
--- a/tests/wpt/web-platform-tests/wai-aria/region_without_name-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/region_without_name-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/row_colindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/row_colindex_4-manual.html
index 82ee257d9e5..82ee257d9e5 100644
--- a/tests/wpt/web-platform-tests/wai-aria/row_colindex_4-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/row_colindex_4-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/row_rowindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/row_rowindex_4-manual.html
index 1333219e048..1333219e048 100644
--- a/tests/wpt/web-platform-tests/wai-aria/row_rowindex_4-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/row_rowindex_4-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/rowheader_aria-colspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_aria-colspan_2_on_div-manual.html
index 3d828889597..3d828889597 100644
--- a/tests/wpt/web-platform-tests/wai-aria/rowheader_aria-colspan_2_on_div-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_aria-colspan_2_on_div-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/rowheader_aria-rowspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_aria-rowspan_2_on_div-manual.html
index 4ddf4f5c9ac..4ddf4f5c9ac 100644
--- a/tests/wpt/web-platform-tests/wai-aria/rowheader_aria-rowspan_2_on_div-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_aria-rowspan_2_on_div-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/rowheader_colindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_colindex_4-manual.html
index 8b1eb477e47..8b1eb477e47 100644
--- a/tests/wpt/web-platform-tests/wai-aria/rowheader_colindex_4-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_colindex_4-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/rowheader_rowindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_rowindex_4-manual.html
index 716403cfeb6..716403cfeb6 100644
--- a/tests/wpt/web-platform-tests/wai-aria/rowheader_rowindex_4-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_rowindex_4-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/rowheader_selected_false_not_automatically_propagated-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_selected_false_not_automatically_propagated-manual.html
index 7cd9a559900..7cd9a559900 100644
--- a/tests/wpt/web-platform-tests/wai-aria/rowheader_selected_false_not_automatically_propagated-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_selected_false_not_automatically_propagated-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/rowheader_selected_true_not_automatically_propagated-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_selected_true_not_automatically_propagated-manual.html
index 51b2b68fee3..51b2b68fee3 100644
--- a/tests/wpt/web-platform-tests/wai-aria/rowheader_selected_true_not_automatically_propagated-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_selected_true_not_automatically_propagated-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/scrollbar_all_values_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_all_values_unspecified-manual.html
index 910fe2b1181..910fe2b1181 100644
--- a/tests/wpt/web-platform-tests/wai-aria/scrollbar_all_values_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_all_values_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/scrollbar_only_valuenow_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_only_valuenow_unspecified-manual.html
index 73e31581763..73e31581763 100644
--- a/tests/wpt/web-platform-tests/wai-aria/scrollbar_only_valuenow_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_only_valuenow_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/scrollbar_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_orientation_unspecified-manual.html
index 32791ae1d8d..32791ae1d8d 100644
--- a/tests/wpt/web-platform-tests/wai-aria/scrollbar_orientation_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_orientation_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox-manual.html
index 979bd0fad45..979bd0fad45 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_activedescendant-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_activedescendant-manual.html
index a72cf932636..a72cf932636 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_activedescendant-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_activedescendant-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_activedescendant_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_activedescendant_value_changes-manual.html
index 956f931ae86..956f931ae86 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_activedescendant_value_changes-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_activedescendant_value_changes-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_both-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_both-manual.html
index ea8b6986794..ea8b6986794 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_both-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_both-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_inline-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_inline-manual.html
index 77e707666c5..77e707666c5 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_inline-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_inline-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_list-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_list-manual.html
index 0ce8068ea94..0ce8068ea94 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_list-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_list-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_none-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_none-manual.html
index 341d75c5320..341d75c5320 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_none-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_none-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_unspecified-manual.html
index 59becae655e..59becae655e 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_false-manual.html
index 8f49eb61e93..8f49eb61e93 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_true-manual.html
index 47e6c3aaa97..47e6c3aaa97 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_unspecified-manual.html
index 5c1d7f5185a..5c1d7f5185a 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_placeholder-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_placeholder-manual.html
index da513456d2d..da513456d2d 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_placeholder-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_placeholder-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_false-manual.html
index 574666a0177..574666a0177 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_true-manual.html
index 833f1bc4288..833f1bc4288 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_unspecified-manual.html
index 51b9893595d..51b9893595d 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_required_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_false-manual.html
index 1bfc8953564..1bfc8953564 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_required_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_required_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_true-manual.html
index 7e26e5ab03a..7e26e5ab03a 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_required_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_required_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_unspecified-manual.html
index 13489ad13a0..13489ad13a0 100644
--- a/tests/wpt/web-platform-tests/wai-aria/searchbox_required_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/separator_focusable_all_values_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_all_values_unspecified-manual.html
index fb8e852bb17..fb8e852bb17 100644
--- a/tests/wpt/web-platform-tests/wai-aria/separator_focusable_all_values_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_all_values_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/separator_focusable_only_valuenow_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_only_valuenow_unspecified-manual.html
index 680c2a3605a..680c2a3605a 100644
--- a/tests/wpt/web-platform-tests/wai-aria/separator_focusable_only_valuenow_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_only_valuenow_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/separator_focusable_valuetext-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_valuetext-manual.html
index 5992f15aeb0..5992f15aeb0 100644
--- a/tests/wpt/web-platform-tests/wai-aria/separator_focusable_valuetext-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_valuetext-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/separator_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/separator_orientation_unspecified-manual.html
index 3a3901b4244..3a3901b4244 100644
--- a/tests/wpt/web-platform-tests/wai-aria/separator_orientation_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/separator_orientation_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/separator_unfocusable_all_values_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/separator_unfocusable_all_values_unspecified-manual.html
index 171370f422b..171370f422b 100644
--- a/tests/wpt/web-platform-tests/wai-aria/separator_unfocusable_all_values_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/separator_unfocusable_all_values_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/separator_unfocusable_valuetext-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/separator_unfocusable_valuetext-manual.html
index db8ee6322dd..db8ee6322dd 100644
--- a/tests/wpt/web-platform-tests/wai-aria/separator_unfocusable_valuetext-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/separator_unfocusable_valuetext-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/slider_all_values_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/slider_all_values_unspecified-manual.html
index 0dea62e620f..0dea62e620f 100644
--- a/tests/wpt/web-platform-tests/wai-aria/slider_all_values_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/slider_all_values_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/slider_only_valuenow_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/slider_only_valuenow_unspecified-manual.html
index ffcbc783734..ffcbc783734 100644
--- a/tests/wpt/web-platform-tests/wai-aria/slider_only_valuenow_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/slider_only_valuenow_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/slider_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/slider_orientation_unspecified-manual.html
index 295b0a61960..295b0a61960 100644
--- a/tests/wpt/web-platform-tests/wai-aria/slider_orientation_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/slider_orientation_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/slider_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_false-manual.html
index f5a70984d51..f5a70984d51 100644
--- a/tests/wpt/web-platform-tests/wai-aria/slider_readonly_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/slider_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_true-manual.html
index 2588079d784..2588079d784 100644
--- a/tests/wpt/web-platform-tests/wai-aria/slider_readonly_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/slider_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_unspecified-manual.html
index 271325a47d3..271325a47d3 100644
--- a/tests/wpt/web-platform-tests/wai-aria/slider_readonly_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/spinbutton_all_values_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_all_values_unspecified-manual.html
index 8da69af36d6..8da69af36d6 100644
--- a/tests/wpt/web-platform-tests/wai-aria/spinbutton_all_values_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_all_values_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/spinbutton_only_aria-valuenow_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_only_aria-valuenow_unspecified-manual.html
index bbb94702fe3..bbb94702fe3 100644
--- a/tests/wpt/web-platform-tests/wai-aria/spinbutton_only_aria-valuenow_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_only_aria-valuenow_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_false-manual.html
index 5e9429ca28a..5e9429ca28a 100644
--- a/tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_true-manual.html
index a7a3abe6327..a7a3abe6327 100644
--- a/tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_unspecified-manual.html
index 0976b0737c7..0976b0737c7 100644
--- a/tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_checked_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_false-manual.html
index ac61802bdfb..ac61802bdfb 100644
--- a/tests/wpt/web-platform-tests/wai-aria/switch_checked_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_checked_mixed-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_mixed-manual.html
index a674c7d7bcf..a674c7d7bcf 100644
--- a/tests/wpt/web-platform-tests/wai-aria/switch_checked_mixed-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_mixed-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_checked_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_true-manual.html
index e23e7235616..e23e7235616 100644
--- a/tests/wpt/web-platform-tests/wai-aria/switch_checked_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_checked_undefined-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_undefined-manual.html
index 4f5399e88ce..4f5399e88ce 100644
--- a/tests/wpt/web-platform-tests/wai-aria/switch_checked_undefined-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_undefined-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_checked_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_value_changes-manual.html
index b58e52fefb0..b58e52fefb0 100644
--- a/tests/wpt/web-platform-tests/wai-aria/switch_checked_value_changes-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_value_changes-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_false-manual.html
index e68b6bb0d27..e68b6bb0d27 100644
--- a/tests/wpt/web-platform-tests/wai-aria/switch_readonly_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_true-manual.html
index 605d2d0d9af..605d2d0d9af 100644
--- a/tests/wpt/web-platform-tests/wai-aria/switch_readonly_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_unspecified-manual.html
index 0fd582c0e9b..0fd582c0e9b 100644
--- a/tests/wpt/web-platform-tests/wai-aria/switch_readonly_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/tab_posinset_and_setsize-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tab_posinset_and_setsize-manual.html
index f27f485ac97..f27f485ac97 100644
--- a/tests/wpt/web-platform-tests/wai-aria/tab_posinset_and_setsize-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/tab_posinset_and_setsize-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/table_colcount_-1-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/table_colcount_-1-manual.html
index 2135f6ed8d0..2135f6ed8d0 100644
--- a/tests/wpt/web-platform-tests/wai-aria/table_colcount_-1-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/table_colcount_-1-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/table_colcount_8-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/table_colcount_8-manual.html
index 1b8e0affdd5..1b8e0affdd5 100644
--- a/tests/wpt/web-platform-tests/wai-aria/table_colcount_8-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/table_colcount_8-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/table_rowcount_-1-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/table_rowcount_-1-manual.html
index 5e7b5b8bf49..5e7b5b8bf49 100644
--- a/tests/wpt/web-platform-tests/wai-aria/table_rowcount_-1-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/table_rowcount_-1-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/table_rowcount_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/table_rowcount_3-manual.html
index 5bfad69b240..5bfad69b240 100644
--- a/tests/wpt/web-platform-tests/wai-aria/table_rowcount_3-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/table_rowcount_3-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/tablist_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_horizontal-manual.html
index 104668cbb95..104668cbb95 100644
--- a/tests/wpt/web-platform-tests/wai-aria/tablist_orientation_horizontal-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_horizontal-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/tablist_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_unspecified-manual.html
index 001c2ee77b3..001c2ee77b3 100644
--- a/tests/wpt/web-platform-tests/wai-aria/tablist_orientation_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/tablist_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_vertical-manual.html
index f6fe16e8955..f6fe16e8955 100644
--- a/tests/wpt/web-platform-tests/wai-aria/tablist_orientation_vertical-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_vertical-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/term_role-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/term_role-manual.html
index ac5030df950..ac5030df950 100644
--- a/tests/wpt/web-platform-tests/wai-aria/term_role-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/term_role-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/textbox_placeholder-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/textbox_placeholder-manual.html
index fdf0635be67..fdf0635be67 100644
--- a/tests/wpt/web-platform-tests/wai-aria/textbox_placeholder-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/textbox_placeholder-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_horizontal-manual.html
index 1b8fda8dd60..1b8fda8dd60 100644
--- a/tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_horizontal-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_horizontal-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_unspecified-manual.html
index 4607511874b..4607511874b 100644
--- a/tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_vertical-manual.html
index 792952d323d..792952d323d 100644
--- a/tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_vertical-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_vertical-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/tree_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_horizontal-manual.html
index 15813f5f039..15813f5f039 100644
--- a/tests/wpt/web-platform-tests/wai-aria/tree_orientation_horizontal-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_horizontal-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/tree_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_unspecified-manual.html
index dfc1bdcc587..dfc1bdcc587 100644
--- a/tests/wpt/web-platform-tests/wai-aria/tree_orientation_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/tree_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_vertical-manual.html
index b9afa33ff44..b9afa33ff44 100644
--- a/tests/wpt/web-platform-tests/wai-aria/tree_orientation_vertical-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_vertical-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/treegrid_colcount_8-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_colcount_8-manual.html
index a3e9ea14963..a3e9ea14963 100644
--- a/tests/wpt/web-platform-tests/wai-aria/treegrid_colcount_8-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_colcount_8-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_horizontal-manual.html
index 756153abf3b..756153abf3b 100644
--- a/tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_horizontal-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_horizontal-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_unspecified-manual.html
index d536e9afbed..d536e9afbed 100644
--- a/tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_unspecified-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_unspecified-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_vertical-manual.html
index 62a19d09046..62a19d09046 100644
--- a/tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_vertical-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_vertical-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/treegrid_rowcount_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_rowcount_3-manual.html
index 9d9b8acf447..9d9b8acf447 100644
--- a/tests/wpt/web-platform-tests/wai-aria/treegrid_rowcount_3-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_rowcount_3-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_false-manual.html
index 684fda69b6d..684fda69b6d 100644
--- a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_false-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_false-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_true-manual.html
index b951c54dec6..b951c54dec6 100644
--- a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_true-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_true-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_undefined-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_undefined-manual.html
index dddfd3826f0..dddfd3826f0 100644
--- a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_undefined-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_undefined-manual.html
diff --git a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_value_changes-manual.html
index 69734c82dda..69734c82dda 100644
--- a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_value_changes-manual.html
+++ b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_value_changes-manual.html
diff --git a/tests/wpt/web-platform-tests/webauthn/getcredential-prf.https.html b/tests/wpt/web-platform-tests/webauthn/getcredential-prf.https.html
index 61b52ac5958..40dfc5cad33 100644
--- a/tests/wpt/web-platform-tests/webauthn/getcredential-prf.https.html
+++ b/tests/wpt/web-platform-tests/webauthn/getcredential-prf.https.html
@@ -116,13 +116,21 @@ standardSetup(async function(authenticator) {
byCred["Zm9v"] = {
first: new Uint8Array([1,2,3,4]).buffer,
};
- const assertion = await assert(id, {
+ return promise_rejects_dom(t, "SyntaxError", assert(id, {
evalByCredential: byCred,
- });
- assert_own_property(assertion.getClientExtensionResults(), 'prf');
- assert_not_own_property(assertion.getClientExtensionResults().prf,
- 'results');
- }, "navigator.credentials.get() using wrong credential ID");
+ }));
+ }, "navigator.credentials.get() with credential ID not in allowedCredentials");
+
+ promise_test(async t => {
+ const id = (await credential).rawId;
+ const byCred = {};
+ byCred["Zm9v"] = {
+ first: new Uint8Array([1,2,3,4]),
+ };
+ return promise_rejects_dom(t, "SyntaxError", assert(id, {
+ evalByCredential: byCred,
+ }));
+ }, "navigator.credentials.get() with Uint8Array credential ID not in allowedCredentials");
promise_test(async t => {
const id = (await credential).rawId;
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/__init__.py
new file mode 100644
index 00000000000..d34fef9869a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/__init__.py
@@ -0,0 +1,6 @@
+import pytest
+
+
+def assert_pdf(data):
+ assert data.startswith(b"%PDF-"), "Decoded data starts with the PDF signature"
+ assert data.endswith(b"%%EOF\n"), "Decoded data ends with the EOF flag"
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/context.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/context.py
new file mode 100644
index 00000000000..a73bfee9621
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/context.py
@@ -0,0 +1,26 @@
+from base64 import decodebytes
+
+import pytest
+
+from . import assert_pdf
+from ... import recursive_compare
+
+pytestmark = pytest.mark.asyncio
+
+
+async def test_context(bidi_session, top_context, inline, get_pdf_content):
+ text = "Test"
+ url = inline(text)
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=url, wait="complete"
+ )
+
+ value = await bidi_session.browsing_context.print(context=top_context["context"])
+ pdf = decodebytes(value.encode())
+
+ assert_pdf(pdf)
+
+ pdf_content = await get_pdf_content(value)
+ recursive_compare(
+ {"type": "array", "value": [{"type": "string", "value": text}]}, pdf_content
+ )
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/invalid.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/invalid.py
new file mode 100644
index 00000000000..114aeb62dcc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/invalid.py
@@ -0,0 +1,197 @@
+import pytest
+import webdriver.bidi.error as error
+
+pytestmark = pytest.mark.asyncio
+
+
+@pytest.mark.parametrize("context", [None, False, 42, {}, []])
+async def test_params_context_invalid_type(bidi_session, context):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(context=context)
+
+
+async def test_params_context_invalid_value(bidi_session):
+ with pytest.raises(error.NoSuchFrameException):
+ await bidi_session.browsing_context.print(context="_invalid_")
+
+
+async def test_params_context_closed(bidi_session):
+ new_tab = await bidi_session.browsing_context.create(type_hint="tab")
+ await bidi_session.browsing_context.close(context=new_tab["context"])
+
+ # Try to print the closed context
+ with pytest.raises(error.NoSuchFrameException):
+ await bidi_session.browsing_context.print(context=new_tab["context"])
+
+
+@pytest.mark.parametrize("background", ["foo", 42, {}, []])
+async def test_params_background_invalid_type(bidi_session, top_context, background):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(
+ context=top_context["context"], background=background
+ )
+
+
+@pytest.mark.parametrize(
+ "margin",
+ [
+ False,
+ "foo",
+ 42,
+ [],
+ {"top": False},
+ {"top": "foo"},
+ {"top": []},
+ {"top": {}},
+ {"bottom": False},
+ {"bottom": "foo"},
+ {"bottom": []},
+ {"bottom": {}},
+ {"left": False},
+ {"left": "foo"},
+ {"left": []},
+ {"left": {}},
+ {"right": False},
+ {"right": "foo"},
+ {"right": []},
+ {"right": {}},
+ ],
+)
+async def test_params_margin_invalid_type(bidi_session, top_context, margin):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(
+ context=top_context["context"], margin=margin
+ )
+
+
+@pytest.mark.parametrize(
+ "margin",
+ [
+ {"top": -0.1},
+ {"bottom": -0.1},
+ {"left": -0.1},
+ {"right": -0.1},
+ ],
+)
+async def test_params_margin_invalid_value(bidi_session, top_context, margin):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(
+ context=top_context["context"], margin=margin
+ )
+
+
+@pytest.mark.parametrize("orientation", [False, 42, {}, []])
+async def test_params_orientation_invalid_type(bidi_session, top_context, orientation):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(
+ context=top_context["context"], orientation=orientation
+ )
+
+
+async def test_params_orientation_invalid_value(bidi_session, top_context):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(
+ context=top_context["context"], orientation="foo"
+ )
+
+
+@pytest.mark.parametrize(
+ "page",
+ [
+ False,
+ "foo",
+ 42,
+ [],
+ {"height": False},
+ {"height": "foo"},
+ {"height": []},
+ {"height": {}},
+ {"width": False},
+ {"width": "foo"},
+ {"width": []},
+ {"width": {}},
+ ],
+)
+async def test_params_page_invalid_type(bidi_session, top_context, page):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(
+ context=top_context["context"], page=page
+ )
+
+
+@pytest.mark.parametrize(
+ "page",
+ [
+ {"height": -1},
+ {"width": -1},
+ ],
+)
+async def test_params_page_invalid_value(bidi_session, top_context, page):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(
+ context=top_context["context"], page=page
+ )
+
+
+@pytest.mark.parametrize(
+ "page_ranges",
+ [
+ False,
+ "foo",
+ 42,
+ {},
+ [None],
+ [False],
+ [[]],
+ [{}],
+ ["1-2", {}],
+ ],
+)
+async def test_params_page_ranges_invalid_type(bidi_session, top_context, page_ranges):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(
+ context=top_context["context"], page_ranges=page_ranges
+ )
+
+@pytest.mark.parametrize(
+ "page_ranges",
+ [
+ [4.2],
+ ["4.2"],
+ ["3-2"],
+ ["a-2"],
+ ["1:2"],
+ ["1-2-3"],
+ ],
+)
+async def test_params_page_ranges_invalid_value(bidi_session, top_context, page_ranges):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(
+ context=top_context["context"], page_ranges=page_ranges
+ )
+
+
+@pytest.mark.parametrize("scale", [False, "foo", {}, []])
+async def test_params_scale_invalid_type(bidi_session, top_context, scale):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(
+ context=top_context["context"], scale=scale
+ )
+
+
+@pytest.mark.parametrize("scale", [-1, 0.09, 2.01, 42])
+async def test_params_scale_invalid_value(bidi_session, top_context, scale):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(
+ context=top_context["context"], scale=scale
+ )
+
+
+@pytest.mark.parametrize("shrink_to_fit", ["foo", 42, {}, []])
+async def test_params_shrink_to_fit_invalid_type(
+ bidi_session, top_context, shrink_to_fit
+):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.print(
+ context=top_context["context"], shrink_to_fit=shrink_to_fit
+ )
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/page_ranges.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/page_ranges.py
new file mode 100644
index 00000000000..9e466883b0a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/page_ranges.py
@@ -0,0 +1,140 @@
+# META: timeout=long
+from base64 import decodebytes
+
+import pytest
+
+from . import assert_pdf
+from ... import recursive_compare
+
+pytestmark = pytest.mark.asyncio
+
+
+@pytest.mark.parametrize(
+ "ranges,expected",
+ [
+ (
+ ["2-4"],
+ [
+ {"type": "string", "value": "Page 2"},
+ {"type": "string", "value": "Page 3"},
+ {"type": "string", "value": "Page 4"},
+ ],
+ ),
+ (
+ ["2-4", "2-3"],
+ [
+ {"type": "string", "value": "Page 2"},
+ {"type": "string", "value": "Page 3"},
+ {"type": "string", "value": "Page 4"},
+ ],
+ ),
+ (
+ ["2-4", "3-5"],
+ [
+ {"type": "string", "value": "Page 2"},
+ {"type": "string", "value": "Page 3"},
+ {"type": "string", "value": "Page 4"},
+ {"type": "string", "value": "Page 5"},
+ ],
+ ),
+ (
+ ["9-"],
+ [
+ {"type": "string", "value": "Page 9"},
+ {"type": "string", "value": "Page 10"},
+ ],
+ ),
+ (
+ ["-2"],
+ [
+ {"type": "string", "value": "Page 1"},
+ {"type": "string", "value": "Page 2"},
+ ],
+ ),
+ (
+ [7],
+ [
+ {"type": "string", "value": "Page 7"},
+ ],
+ ),
+ (
+ ["7"],
+ [
+ {"type": "string", "value": "Page 7"},
+ ],
+ ),
+ (
+ ["-2", "9-", "7"],
+ [
+ {"type": "string", "value": "Page 1"},
+ {"type": "string", "value": "Page 2"},
+ {"type": "string", "value": "Page 7"},
+ {"type": "string", "value": "Page 9"},
+ {"type": "string", "value": "Page 10"},
+ ],
+ ),
+ (
+ ["-5", "2-"],
+ [
+ {"type": "string", "value": "Page 1"},
+ {"type": "string", "value": "Page 2"},
+ {"type": "string", "value": "Page 3"},
+ {"type": "string", "value": "Page 4"},
+ {"type": "string", "value": "Page 5"},
+ {"type": "string", "value": "Page 6"},
+ {"type": "string", "value": "Page 7"},
+ {"type": "string", "value": "Page 8"},
+ {"type": "string", "value": "Page 9"},
+ {"type": "string", "value": "Page 10"},
+ ],
+ ),
+ (
+ [],
+ [
+ {"type": "string", "value": "Page 1"},
+ {"type": "string", "value": "Page 2"},
+ {"type": "string", "value": "Page 3"},
+ {"type": "string", "value": "Page 4"},
+ {"type": "string", "value": "Page 5"},
+ {"type": "string", "value": "Page 6"},
+ {"type": "string", "value": "Page 7"},
+ {"type": "string", "value": "Page 8"},
+ {"type": "string", "value": "Page 9"},
+ {"type": "string", "value": "Page 10"},
+ ],
+ ),
+ ],
+)
+async def test_page_ranges_document(
+ bidi_session, inline, top_context, get_pdf_content, ranges, expected
+):
+ url = inline(
+ """
+<style>
+div {page-break-after: always}
+</style>
+
+<div>Page 1</div>
+<div>Page 2</div>
+<div>Page 3</div>
+<div>Page 4</div>
+<div>Page 5</div>
+<div>Page 6</div>
+<div>Page 7</div>
+<div>Page 8</div>
+<div>Page 9</div>
+<div>Page 10</div>"""
+ )
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=url, wait="complete"
+ )
+
+ value = await bidi_session.browsing_context.print(
+ context=top_context["context"], page_ranges=ranges
+ )
+ pdf = decodebytes(value.encode())
+
+ assert_pdf(pdf)
+
+ pdf_content = await get_pdf_content(value)
+ recursive_compare({"type": "array", "value": expected}, pdf_content)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/arguments.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/arguments.py
index 9fbe5fb8110..daf31fc869c 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/arguments.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/arguments.py
@@ -1,44 +1,136 @@
import pytest
+import webdriver.bidi.error as error
from webdriver.bidi.modules.script import ContextTarget
-from ... import recursive_compare
+from ... import any_string, recursive_compare
@pytest.mark.asyncio
-async def test_arguments(bidi_session, top_context):
+async def test_default_arguments(bidi_session, top_context):
result = await bidi_session.script.call_function(
- function_declaration="(...args)=>{return args}",
- arguments=[{
- "type": "string",
- "value": "ARGUMENT_STRING_VALUE"
- }, {
- "type": "number",
- "value": 42}],
+ function_declaration="(...args) => args",
await_promise=False,
target=ContextTarget(top_context["context"]))
recursive_compare({
"type": "array",
- "value": [{
- "type": 'string',
- "value": 'ARGUMENT_STRING_VALUE'
- }, {
- "type": 'number',
- "value": 42}]},
- result)
+ "value": []
+ }, result)
@pytest.mark.asyncio
-async def test_default_arguments(bidi_session, top_context):
+@pytest.mark.parametrize(
+ "argument, expected",
+ [
+ ({"type": "undefined"}, "undefined"),
+ ({"type": "null"}, "null"),
+ ({"type": "string", "value": "foobar"}, "'foobar'"),
+ ({"type": "string", "value": "2"}, "'2'"),
+ ({"type": "number", "value": "-0"}, "-0"),
+ ({"type": "number", "value": "Infinity"}, "Infinity"),
+ ({"type": "number", "value": "-Infinity"}, "-Infinity"),
+ ({"type": "number", "value": 3}, "3"),
+ ({"type": "number", "value": 1.4}, "1.4"),
+ ({"type": "boolean", "value": True}, "true"),
+ ({"type": "boolean", "value": False}, "false"),
+ ({"type": "bigint", "value": "42"}, "42n"),
+ ],
+)
+async def test_primitive_value(bidi_session, top_context, argument, expected):
result = await bidi_session.script.call_function(
- function_declaration="(...args)=>{return args}",
+ function_declaration=f"""(arg) => {{
+ if (arg !== {expected}) {{
+ throw new Error(`Argument should be {expected}, but was ` + arg);
+ }}
+ return arg;
+ }}""",
+ arguments=[argument],
await_promise=False,
- target=ContextTarget(top_context["context"]))
+ target=ContextTarget(top_context["context"]),
+ )
- recursive_compare({
- "type": "array",
- "value": []
- }, result)
+ recursive_compare(argument, result)
+
+
+@pytest.mark.asyncio
+async def test_primitive_value_NaN(bidi_session, top_context):
+ nan_remote_value = {"type": "number", "value": "NaN"}
+ result = await bidi_session.script.call_function(
+ function_declaration="""(arg) => {
+ if (!isNaN(arg)) {
+ throw new Error("Argument should be 'NaN', but was " + arg);
+ }
+ return arg;
+ }""",
+ arguments=[nan_remote_value],
+ await_promise=False,
+ target=ContextTarget(top_context["context"]),
+ )
+
+ recursive_compare(nan_remote_value, result)
+
+
+@pytest.mark.asyncio
+@pytest.mark.parametrize(
+ "argument, expected_type",
+ [
+ ({
+ "type": "array",
+ "value": [
+ {"type": "string", "value": "foobar"},
+ ],
+ },
+ "Array"
+ ),
+ ({"type": "date", "value": "2022-05-31T13:47:29.000Z"},
+ "Date"
+ ),
+ ({
+ "type": "map",
+ "value": [
+ ["foobar", {"type": "string", "value": "foobar"}],
+ ],
+ },
+ "Map"
+ ),
+ ({
+ "type": "object",
+ "value": [
+ ["foobar", {"type": "string", "value": "foobar"}],
+ ],
+ },
+ "Object"
+ ),
+ ({"type": "regexp", "value": {"pattern": "foo", "flags": "g"}},
+ "RegExp"
+ ),
+ ({
+ "type": "set",
+ "value": [
+ {"type": "string", "value": "foobar"},
+ ],
+ },
+ "Set"
+ )
+ ],
+)
+async def test_local_value(bidi_session, top_context, argument, expected_type):
+ result = await bidi_session.script.call_function(
+ function_declaration=f"""(arg) => {{
+ if (!(arg instanceof {expected_type})) {{
+ const type = Object.prototype.toString.call(arg);
+ throw new Error(
+ "Argument type should be {expected_type}, but was " + type
+ );
+ }}
+ return arg;
+ }}""",
+ arguments=[argument],
+ await_promise=False,
+ target=ContextTarget(top_context["context"]),
+ )
+
+ recursive_compare(argument, result)
@pytest.mark.asyncio
@@ -113,11 +205,6 @@ async def test_default_arguments(bidi_session, top_context):
{"type": "boolean", "value": False},
),
(
- "document.createElement('div')",
- "(node) => node.tagName",
- {"type": "string", "value": "DIV"},
- ),
- (
"window.foo = 3; window",
"(window) => window.foo",
{"type": "number", "value": 3},
@@ -134,7 +221,7 @@ async def test_default_arguments(bidi_session, top_context):
),
],
)
-async def test_remote_value_argument(
+async def test_remote_reference_argument(
bidi_session, top_context, setup_expression, function_declaration, expected
):
remote_value_result = await bidi_session.script.evaluate(
@@ -159,116 +246,6 @@ async def test_remote_value_argument(
@pytest.mark.asyncio
@pytest.mark.parametrize(
- "argument, expected",
- [
- ({"type": "undefined"}, "undefined"),
- ({"type": "null"}, "null"),
- ({"type": "string", "value": "foobar"}, "'foobar'"),
- ({"type": "string", "value": "2"}, "'2'"),
- ({"type": "number", "value": "-0"}, "-0"),
- ({"type": "number", "value": "Infinity"}, "Infinity"),
- ({"type": "number", "value": "-Infinity"}, "-Infinity"),
- ({"type": "number", "value": 3}, "3"),
- ({"type": "number", "value": 1.4}, "1.4"),
- ({"type": "boolean", "value": True}, "true"),
- ({"type": "boolean", "value": False}, "false"),
- ({"type": "bigint", "value": "42"}, "42n"),
- ],
-)
-async def test_primitive_values(bidi_session, top_context, argument, expected):
- result = await bidi_session.script.call_function(
- function_declaration=f"""(arg) => {{
- if(arg!=={expected})
- throw Error("Argument should be {expected}, but was "+arg);
- return arg;
- }}""",
- arguments=[argument],
- await_promise=False,
- target=ContextTarget(top_context["context"]),
- )
-
- recursive_compare(argument, result)
-
-
-@pytest.mark.asyncio
-async def test_nan(bidi_session, top_context):
- nan_remote_value = {"type": "number", "value": "NaN"}
- result = await bidi_session.script.call_function(
- function_declaration=f"""(arg) => {{
- if(!isNaN(arg))
- throw Error("Argument should be 'NaN', but was "+arg);
- return arg;
- }}""",
- arguments=[nan_remote_value],
- await_promise=False,
- target=ContextTarget(top_context["context"]),
- )
-
- recursive_compare(nan_remote_value, result)
-
-
-@pytest.mark.asyncio
-@pytest.mark.parametrize(
- "argument, expected_type",
- [
- ({
- "type": "array",
- "value": [
- {"type": "string", "value": "foobar"},
- ],
- },
- "Array"
- ),
- ({"type": "date", "value": "2022-05-31T13:47:29.000Z"},
- "Date"
- ),
- ({
- "type": "map",
- "value": [
- ["foobar", {"type": "string", "value": "foobar"}],
- ],
- },
- "Map"
- ),
- ({
- "type": "object",
- "value": [
- ["foobar", {"type": "string", "value": "foobar"}],
- ],
- },
- "Object"
- ),
- ({"type": "regexp", "value": {"pattern": "foo", "flags": "g"}},
- "RegExp"
- ),
- ({
- "type": "set",
- "value": [
- {"type": "string", "value": "foobar"},
- ],
- },
- "Set"
- )
- ],
-)
-async def test_local_values(bidi_session, top_context, argument, expected_type):
- result = await bidi_session.script.call_function(
- function_declaration=f"""(arg) => {{
- if(! (arg instanceof {expected_type}))
- throw Error("Argument type should be {expected_type}, but was "+
- Object.prototype.toString.call(arg));
- return arg;
- }}""",
- arguments=[argument],
- await_promise=False,
- target=ContextTarget(top_context["context"]),
- )
-
- recursive_compare(argument, result)
-
-
-@pytest.mark.asyncio
-@pytest.mark.parametrize(
"value_fn, function_declaration",
[
(
@@ -293,11 +270,11 @@ async def test_local_values(bidi_session, top_context, argument, expected_type):
),
],
)
-async def test_remote_value_deserialization(
+async def test_remote_reference_deserialization(
bidi_session, top_context, call_function, evaluate, value_fn, function_declaration
):
remote_value = await evaluate(
- "window.SOME_OBJECT = {SOME_PROPERTY:'SOME_VALUE'}; window.SOME_OBJECT",
+ "window.SOME_OBJECT = { SOME_PROPERTY: 'SOME_VALUE' }; window.SOME_OBJECT",
result_ownership="root",
)
@@ -317,6 +294,107 @@ async def test_remote_value_deserialization(
@pytest.mark.asyncio
@pytest.mark.parametrize(
+ "setup_expression, expected_node_type",
+ [
+ ("document.querySelector('img')", 1),
+ ("document.querySelector('input#button').attributes[0]", 2),
+ ("document.querySelector('#with-text-node').childNodes[0]", 3),
+ ("""document.createProcessingInstruction("xml-stylesheet", "href='foo.css'")""", 7),
+ ("document.querySelector('#with-comment').childNodes[0]", 8),
+ ("document", 9),
+ ("document.doctype", 10),
+ ("document.createDocumentFragment()", 11),
+ ("document.querySelector('#custom-element').shadowRoot", 11),
+ ],
+ ids=[
+ "element",
+ "attribute",
+ "text node",
+ "processing instruction",
+ "comment",
+ "document",
+ "doctype",
+ "document fragment",
+ "shadow root",
+ ]
+)
+async def test_remote_reference_node_argument(
+ bidi_session, get_test_page, top_context, setup_expression, expected_node_type
+):
+ await bidi_session.browsing_context.navigate(
+ context=top_context['context'], url=get_test_page(), wait="complete"
+ )
+
+ remote_reference = await bidi_session.script.evaluate(
+ expression=setup_expression,
+ await_promise=False,
+ target=ContextTarget(top_context["context"]),
+ )
+
+ result = await bidi_session.script.call_function(
+ function_declaration="(node) => node.nodeType",
+ arguments=[remote_reference],
+ await_promise=False,
+ target=ContextTarget(top_context["context"]),
+ )
+
+ assert result == {"type": "number", "value": expected_node_type}
+
+
+@pytest.mark.asyncio
+async def test_remote_reference_node_cdata(bidi_session, inline, top_context):
+ xml_page = inline("""<foo>CDATA section: <![CDATA[ < > & ]]>.</foo>""", doctype="xml")
+
+ await bidi_session.browsing_context.navigate(
+ context=top_context['context'], url=xml_page, wait="complete"
+ )
+
+ remote_reference = await bidi_session.script.evaluate(
+ expression="document.querySelector('foo').childNodes[1]",
+ await_promise=False,
+ target=ContextTarget(top_context["context"]),
+ )
+
+ result = await bidi_session.script.call_function(
+ function_declaration="(node) => node.nodeType",
+ arguments=[remote_reference],
+ await_promise=False,
+ target=ContextTarget(top_context["context"]),
+ )
+
+ assert result == {"type": "number", "value": 4}
+
+
+@pytest.mark.asyncio
+async def test_remote_reference_sharedId_precedence_over_handle(
+ bidi_session, get_test_page, top_context
+):
+ await bidi_session.browsing_context.navigate(
+ context=top_context['context'], url=get_test_page(), wait="complete"
+ )
+
+ remote_reference = await bidi_session.script.evaluate(
+ expression="document.querySelector('img')",
+ await_promise=False,
+ result_ownership="root",
+ target=ContextTarget(top_context["context"]),
+ )
+
+ assert "handle" in remote_reference
+ # Invalidate shared reference to trigger a "no such node" error
+ remote_reference["sharedId"] = "foo"
+
+ with pytest.raises(error.NoSuchNodeException):
+ await bidi_session.script.call_function(
+ function_declaration="(node) => node.nodeType",
+ arguments=[remote_reference],
+ await_promise=False,
+ target=ContextTarget(top_context["context"]),
+ )
+
+
+@pytest.mark.asyncio
+@pytest.mark.parametrize(
"expression, function_declaration, expected",
[
(
@@ -324,6 +402,7 @@ async def test_remote_value_deserialization(
"(collection) => collection.item(0)",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
@@ -339,6 +418,7 @@ async def test_remote_value_deserialization(
"(nodeList) => nodeList.item(0)",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
@@ -354,7 +434,7 @@ async def test_remote_value_deserialization(
"nodelist"
]
)
-async def test_remote_value_dom_collection(
+async def test_remote_reference_dom_collection(
bidi_session,
inline,
top_context,
@@ -382,4 +462,4 @@ async def test_remote_value_dom_collection(
arguments=[remote_value],
)
- assert result == expected
+ recursive_compare(expected, result)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/invalid.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/invalid.py
index cf5a07f41b7..d73705c6724 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/invalid.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/invalid.py
@@ -10,7 +10,7 @@ pytestmark = pytest.mark.asyncio
async def test_params_target_invalid_type(bidi_session, target):
with pytest.raises(error.InvalidArgumentException):
await bidi_session.script.call_function(
- function_declaration="1 + 2",
+ function_declaration="(arg) => arg",
await_promise=False,
target=target)
@@ -19,7 +19,7 @@ async def test_params_target_invalid_type(bidi_session, target):
async def test_params_context_invalid_type(bidi_session, context):
with pytest.raises(error.InvalidArgumentException):
await bidi_session.script.call_function(
- function_declaration="1 + 2",
+ function_declaration="(arg) => arg",
await_promise=False,
target=ContextTarget(context))
@@ -28,7 +28,7 @@ async def test_params_context_invalid_type(bidi_session, context):
async def test_params_sandbox_invalid_type(bidi_session, top_context, sandbox):
with pytest.raises(error.InvalidArgumentException):
await bidi_session.script.call_function(
- function_declaration="1 + 2",
+ function_declaration="(arg) => arg",
await_promise=False,
target=ContextTarget(top_context["context"],
sandbox))
@@ -37,7 +37,7 @@ async def test_params_sandbox_invalid_type(bidi_session, top_context, sandbox):
async def test_params_context_unknown(bidi_session):
with pytest.raises(error.NoSuchFrameException):
await bidi_session.script.call_function(
- function_declaration="1 + 2",
+ function_declaration="(arg) => arg",
await_promise=False,
target=ContextTarget("_UNKNOWN_"))
@@ -46,7 +46,7 @@ async def test_params_context_unknown(bidi_session):
async def test_params_realm_invalid_type(bidi_session, realm):
with pytest.raises(error.InvalidArgumentException):
await bidi_session.script.call_function(
- function_declaration="1 + 2",
+ function_declaration="(arg) => arg",
await_promise=False,
target=RealmTarget(realm))
@@ -54,7 +54,7 @@ async def test_params_realm_invalid_type(bidi_session, realm):
async def test_params_realm_unknown(bidi_session):
with pytest.raises(error.NoSuchFrameException):
await bidi_session.script.call_function(
- function_declaration="1 + 2",
+ function_declaration="(arg) => arg",
await_promise=False,
target=RealmTarget("_UNKNOWN_"))
@@ -74,7 +74,7 @@ async def test_params_this_invalid_type(bidi_session, top_context,
this):
with pytest.raises(error.InvalidArgumentException):
await bidi_session.script.call_function(
- function_declaration="1 + 2",
+ function_declaration="(arg) => arg",
this=this,
await_promise=False,
target=ContextTarget(top_context["context"]))
@@ -85,29 +85,61 @@ async def test_params_arguments_invalid_type(bidi_session, top_context,
arguments):
with pytest.raises(error.InvalidArgumentException):
await bidi_session.script.call_function(
- function_declaration="1 + 2",
+ function_declaration="(arg) => arg",
arguments=arguments,
await_promise=False,
target=ContextTarget(top_context["context"]))
@pytest.mark.parametrize("argument", [False, "SOME_STRING", 42, {}, []])
-async def test_params_single_argument_invalid_type(bidi_session, top_context,
+async def test_params_arguments_entry_invalid_type(bidi_session, top_context,
argument):
with pytest.raises(error.InvalidArgumentException):
await bidi_session.script.call_function(
- function_declaration="1 + 2",
+ function_declaration="(arg) => arg",
arguments=[argument],
await_promise=False,
target=ContextTarget(top_context["context"]))
+@pytest.mark.parametrize("value", [None, False, 42, {}, []])
+async def test_params_arguments_handle_invalid_type(
+ bidi_session, top_context, value
+):
+ serialized_value = {
+ "handle": value,
+ }
+
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.script.call_function(
+ function_declaration="(arg) => arg",
+ arguments=[serialized_value],
+ await_promise=False,
+ target=ContextTarget(top_context["context"]))
+
+
+@pytest.mark.parametrize("value", [None, False, 42, {}, []])
+async def test_params_arguments_sharedId_invalid_type(
+ bidi_session, top_context, value
+):
+ serialized_value = {
+ "sharedId": value,
+ }
+
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.script.call_function(
+ function_declaration="(arg) => arg",
+ arguments=[serialized_value],
+ await_promise=False,
+ target=ContextTarget(top_context["context"]))
+
+
@pytest.mark.parametrize("await_promise", [None, "False", 0, 42, {}, []])
async def test_params_await_promise_invalid_type(bidi_session, top_context,
await_promise):
with pytest.raises(error.InvalidArgumentException):
await bidi_session.script.call_function(
- function_declaration="1 + 2",
+ function_declaration="(arg) => arg",
await_promise=await_promise,
target=ContextTarget(top_context["context"]))
@@ -117,7 +149,7 @@ async def test_params_result_ownership_invalid_value(bidi_session, top_context,
result_ownership):
with pytest.raises(error.InvalidArgumentException):
await bidi_session.script.call_function(
- function_declaration="1 + 2",
+ function_declaration="(arg) => arg",
await_promise=False,
target=ContextTarget(top_context["context"]),
result_ownership=result_ownership)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/result_node.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/result_node.py
index 08e47be5f71..e1575374fd5 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/result_node.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/result_node.py
@@ -1,18 +1,7 @@
import pytest
from webdriver.bidi.modules.script import ContextTarget
-
-page_data = """
- <div id="deep"><p><span></span></p><br/></div>
- <div id="text-node"><p></p>Lorem</div>
- <br/>
- <svg id="foo"></svg>
- <div id="comment"><!-- Comment --></div>
- <script>
- var svg = document.querySelector("svg");
- svg.setAttributeNS("http://www.w3.org/2000/svg", "svg:foo", "bar");
- </script>
-"""
+from ... import any_string, recursive_compare
@pytest.mark.asyncio
@@ -25,6 +14,7 @@ page_data = """
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
@@ -41,9 +31,9 @@ page_data = """
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {
- "id": "foo",
"svg:foo": "bar",
},
"childNodeCount": 0,
@@ -56,24 +46,17 @@ page_data = """
),
( # all children including non-element nodes
"""
- () => document.querySelector("div#text-node")
+ () => document.querySelector("#with-text-node")
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
- "attributes": {"id": "text-node"},
- "childNodeCount": 2,
+ "attributes": {"id": "with-text-node"},
+ "childNodeCount": 1,
"children": [{
"type": "node",
- "value": {
- "attributes": {},
- "childNodeCount": 0,
- "localName": "p",
- "namespaceURI": "http://www.w3.org/1999/xhtml",
- "nodeType": 1
- }
- },{
- "type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"nodeType": 3,
@@ -88,15 +71,17 @@ page_data = """
),
( # children limited due to max depth
"""
- () => document.querySelector("div#deep")
+ () => document.querySelector("#with-children")
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
- "attributes": {"id": "deep"},
+ "attributes": {"id": "with-children"},
"childNodeCount": 2,
"children": [{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 1,
@@ -104,8 +89,9 @@ page_data = """
"namespaceURI": "http://www.w3.org/1999/xhtml",
"nodeType": 1
}
- },{
+ }, {
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
@@ -126,6 +112,7 @@ page_data = """
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
@@ -145,10 +132,10 @@ page_data = """
]
)
async def test_element_node(
- bidi_session, inline, top_context, function_declaration, expected
+ bidi_session, get_test_page, top_context, function_declaration, expected
):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.call_function(
@@ -157,7 +144,7 @@ async def test_element_node(
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -166,25 +153,27 @@ async def test_element_node(
[
(
"""
- () => document.querySelector("svg").attributes[0]
+ () => document.querySelector("input#button").attributes[0]
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
"localName": "id",
"namespaceURI": None,
"nodeType": 2,
- "nodeValue": "foo",
+ "nodeValue": "button",
},
},
- ),(
+ ), (
"""
- () => document.querySelector("svg").attributes[1]
+ () => document.querySelector("svg").attributes[0]
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -201,10 +190,10 @@ async def test_element_node(
]
)
async def test_attribute_node(
- bidi_session, inline, top_context, function_declaration, expected
+ bidi_session, get_test_page, top_context, function_declaration, expected
):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.call_function(
@@ -213,7 +202,7 @@ async def test_attribute_node(
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -222,10 +211,11 @@ async def test_attribute_node(
[
(
"""
- () => document.querySelector("div#text-node").childNodes[1]
+ () => document.querySelector("#with-text-node").childNodes[0]
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -238,9 +228,11 @@ async def test_attribute_node(
"basic",
]
)
-async def test_text_node(bidi_session, inline, top_context, function_declaration, expected):
+async def test_text_node(
+ bidi_session, get_test_page, top_context, function_declaration, expected
+):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.call_function(
@@ -249,7 +241,7 @@ async def test_text_node(bidi_session, inline, top_context, function_declaration
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -262,6 +254,7 @@ async def test_text_node(bidi_session, inline, top_context, function_declaration
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -287,7 +280,7 @@ async def test_cdata_node(bidi_session, inline, new_tab, function_declaration, e
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -300,6 +293,7 @@ async def test_cdata_node(bidi_session, inline, new_tab, function_declaration, e
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -321,14 +315,13 @@ async def test_processing_instruction_node(
context=new_tab['context'], url=xml_page, wait="complete"
)
-
result = await bidi_session.script.call_function(
function_declaration=function_declaration,
target=ContextTarget(new_tab["context"]),
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -337,10 +330,11 @@ async def test_processing_instruction_node(
[
(
"""
- () => document.querySelector("div#comment").childNodes[0]
+ () => document.querySelector("#with-comment").childNodes[0]
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -354,10 +348,10 @@ async def test_processing_instruction_node(
]
)
async def test_comment_node(
- bidi_session, inline, top_context, function_declaration, expected
+ bidi_session, get_test_page, top_context, function_declaration, expected
):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.call_function(
@@ -366,7 +360,7 @@ async def test_comment_node(
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -379,16 +373,19 @@ async def test_comment_node(
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 2,
"children": [{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"nodeType": 10
}
}, {
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 2,
@@ -406,10 +403,10 @@ async def test_comment_node(
]
)
async def test_document_node(
- bidi_session, inline, top_context, function_declaration, expected
+ bidi_session, get_test_page, top_context, function_declaration, expected
):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.call_function(
@@ -418,7 +415,7 @@ async def test_document_node(
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -431,6 +428,7 @@ async def test_document_node(
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -443,10 +441,10 @@ async def test_document_node(
]
)
async def test_doctype_node(
- bidi_session, inline, top_context, function_declaration, expected
+ bidi_session, get_test_page, top_context, function_declaration, expected
):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.call_function(
@@ -455,7 +453,7 @@ async def test_doctype_node(
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -464,10 +462,35 @@ async def test_doctype_node(
[
(
"""
- () => new DocumentFragment()
+ () => document.querySelector("#custom-element").shadowRoot
+ """,
+ {
+ "type": "node",
+ "sharedId": any_string,
+ "value": {
+ "childNodeCount": 1,
+ "children": [{
+ "type": "node",
+ "sharedId": any_string,
+ "value": {
+ "attributes": {"id": "in-shadow-dom"},
+ "childNodeCount": 1,
+ "localName": "div",
+ "namespaceURI": "http://www.w3.org/1999/xhtml",
+ "nodeType": 1
+ }
+ }],
+ "nodeType": 11
+ }
+ }
+ ),
+ (
+ """
+ () => document.createDocumentFragment()
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -476,14 +499,15 @@ async def test_doctype_node(
}
),
], ids=[
- "basic",
+ "shadow root",
+ "not connected",
]
)
async def test_document_fragment_node(
- bidi_session, inline, top_context, function_declaration, expected
+ bidi_session, get_test_page, top_context, function_declaration, expected
):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.call_function(
@@ -492,30 +516,31 @@ async def test_document_fragment_node(
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
-async def test_node_within_object(bidi_session, inline, top_context):
+async def test_node_within_object(bidi_session, get_test_page, top_context):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.call_function(
- function_declaration="""() => ({"elem": document.querySelector("span")})""",
+ function_declaration="""() => ({"elem": document.querySelector("img")})""",
target=ContextTarget(top_context["context"]),
await_promise=False,
)
- assert result == {
+ expected = {
"type": "object",
"value": [
["elem", {
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
- "localName": "span",
+ "localName": "img",
"namespaceURI": "http://www.w3.org/1999/xhtml",
"nodeType": 1
}
@@ -523,22 +548,25 @@ async def test_node_within_object(bidi_session, inline, top_context):
]
}
+ recursive_compare(expected, result)
+
@pytest.mark.asyncio
@pytest.mark.parametrize(
"function_declaration, expected",
[
(
- "() => document.getElementsByTagName('span')",
+ "() => document.getElementsByTagName('img')",
{
"type": "htmlcollection",
"value": [
{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
- "localName": "span",
+ "localName": "img",
"namespaceURI": "http://www.w3.org/1999/xhtml",
"nodeType": 1
}
@@ -547,16 +575,17 @@ async def test_node_within_object(bidi_session, inline, top_context):
}
),
(
- "() => document.querySelectorAll('span')",
+ "() => document.querySelectorAll('img')",
{
"type": "nodelist",
"value": [
{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
- "localName": "span",
+ "localName": "img",
"namespaceURI": "http://www.w3.org/1999/xhtml",
"nodeType": 1
}
@@ -571,13 +600,13 @@ async def test_node_within_object(bidi_session, inline, top_context):
)
async def test_node_within_dom_collection(
bidi_session,
- inline,
+ get_test_page,
top_context,
function_declaration,
expected
):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.call_function(
@@ -586,4 +615,4 @@ async def test_node_within_dom_collection(
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/sandbox.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/sandbox.py
index e0a4914d8f6..382ede3c783 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/sandbox.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/sandbox.py
@@ -128,6 +128,23 @@ async def test_sandbox_with_side_effects(bidi_session, new_tab):
@pytest.mark.asyncio
+async def test_sandbox_returns_same_node(bidi_session, new_tab):
+ node = await bidi_session.script.call_function(
+ function_declaration="() => document.querySelector('body')",
+ target=ContextTarget(new_tab["context"]),
+ await_promise=True,
+ )
+ recursive_compare({"type": "node", "sharedId": any_string}, node)
+
+ node_sandbox = await bidi_session.script.call_function(
+ function_declaration="() => document.querySelector('body')",
+ target=ContextTarget(new_tab["context"], sandbox="sandbox_1"),
+ await_promise=True,
+ )
+ assert node_sandbox == node
+
+
+@pytest.mark.asyncio
async def test_arguments(bidi_session, new_tab):
argument = {
"type": "set",
@@ -135,22 +152,40 @@ async def test_arguments(bidi_session, new_tab):
{"type": "string", "value": "foobar"},
],
}
+
result = await bidi_session.script.call_function(
- function_declaration=f"""(arg) => {{
+ function_declaration="""(arg) => {
if(! (arg instanceof Set))
throw Error("Argument type should be Set, but was "+
Object.prototype.toString.call(arg));
return arg;
- }}""",
+ }""",
arguments=[argument],
await_promise=False,
target=ContextTarget(new_tab["context"], "sandbox"),
)
-
recursive_compare(argument, result)
@pytest.mark.asyncio
+async def test_arguments_uses_same_node_in_sandbox(bidi_session, new_tab):
+ node = await bidi_session.script.call_function(
+ function_declaration="() => document.querySelector('body')",
+ target=ContextTarget(new_tab["context"]),
+ await_promise=True,
+ )
+ recursive_compare({"type": "node", "sharedId": any_string}, node)
+
+ result = await bidi_session.script.call_function(
+ function_declaration="""(node) => node.localName""",
+ arguments=[node],
+ await_promise=False,
+ target=ContextTarget(new_tab["context"], "sandbox"),
+ )
+ assert result == {"type": "string", "value": "body"}
+
+
+@pytest.mark.asyncio
@pytest.mark.parametrize("await_promise", [True, False])
async def test_exception_details(bidi_session, new_tab, await_promise):
function_declaration = "()=>{{ throw 1 }}"
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/__init__.py
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/node_shared_id.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/node_shared_id.py
new file mode 100644
index 00000000000..410d029207c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/node_shared_id.py
@@ -0,0 +1,72 @@
+import pytest
+
+from webdriver import Element, ShadowRoot
+from webdriver.bidi.modules.script import ContextTarget
+
+pytestmark = pytest.mark.asyncio
+
+
+@pytest.mark.parametrize(
+ "expression, expected_node_type",
+ [
+ ("""return document.querySelector("div#with-children")""", 1),
+ ("""return document.querySelector("custom-element").shadowRoot""", 11),
+ ],
+ ids=["Element", "ShadowRoot"],
+)
+async def test_web_reference_created_in_classic(
+ bidi_session,
+ current_session,
+ get_test_page,
+ top_context,
+ expression,
+ expected_node_type
+):
+ current_session.url = get_test_page()
+
+ node = current_session.execute_script(expression)
+ shared_id = node.id
+
+ # Use element reference from WebDriver classic in WebDriver BiDi
+ result = await bidi_session.script.call_function(
+ function_declaration="(node)=>{return node.nodeType}",
+ arguments=[{"sharedId": shared_id}],
+ await_promise=False,
+ target=ContextTarget(top_context["context"]),
+ )
+
+ assert result == {"type": "number", "value": expected_node_type}
+
+
+@pytest.mark.parametrize(
+ "expression, expected",
+ [
+ ("""document.querySelector("div#with-children")""", 1),
+ ("""document.querySelector("custom-element").shadowRoot""", 11),
+ ],
+ ids=["Element", "ShadowRoot"],
+)
+async def test_web_reference_created_in_bidi(
+ bidi_session,
+ current_session,
+ get_test_page,
+ top_context,
+ expression,
+ expected
+):
+ current_session.url = get_test_page()
+
+ result = await bidi_session.script.evaluate(
+ expression=expression,
+ target=ContextTarget(top_context["context"]),
+ await_promise=False,
+ )
+
+ nodeType = result["value"]["nodeType"]
+ assert nodeType == expected
+
+ # Use web reference from WebDriver BiDi in WebDriver classic
+ types = {1: Element, 11: ShadowRoot}
+ node = types[nodeType](current_session, result["sharedId"])
+ nodeType = current_session.execute_script("""return arguments[0].nodeType""", args=(node,))
+ assert nodeType == expected
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/__init__.py
index e69de29bb2d..8b137891791 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/__init__.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/__init__.py
@@ -0,0 +1 @@
+
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/result_node.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/result_node.py
index 0d0589a5f38..63915a8f4a4 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/result_node.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/result_node.py
@@ -1,18 +1,7 @@
import pytest
from webdriver.bidi.modules.script import ContextTarget
-
-page_data = """
- <div id="deep"><p><span></span></p><br/></div>
- <div id="text-node"><p></p>Lorem</div>
- <br/>
- <svg id="foo"></svg>
- <div id="comment"><!-- Comment --></div>
- <script>
- var svg = document.querySelector("svg");
- svg.setAttributeNS("http://www.w3.org/2000/svg", "svg:foo", "bar");
- </script>
-"""
+from ... import any_string, recursive_compare
@pytest.mark.asyncio
@@ -25,6 +14,7 @@ page_data = """
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
@@ -41,9 +31,9 @@ page_data = """
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {
- "id": "foo",
"svg:foo": "bar",
},
"childNodeCount": 0,
@@ -56,24 +46,17 @@ page_data = """
),
( # all children including non-element nodes
"""
- document.querySelector("div#text-node")
+ document.querySelector("#with-text-node")
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
- "attributes": {"id": "text-node"},
- "childNodeCount": 2,
+ "attributes": {"id": "with-text-node"},
+ "childNodeCount": 1,
"children": [{
"type": "node",
- "value": {
- "attributes": {},
- "childNodeCount": 0,
- "localName": "p",
- "namespaceURI": "http://www.w3.org/1999/xhtml",
- "nodeType": 1
- }
- },{
- "type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"nodeType": 3,
@@ -88,15 +71,17 @@ page_data = """
),
( # children limited due to max depth
"""
- document.querySelector("div#deep")
+ document.querySelector("#with-children")
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
- "attributes": {"id": "deep"},
+ "attributes": {"id": "with-children"},
"childNodeCount": 2,
"children": [{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 1,
@@ -104,8 +89,9 @@ page_data = """
"namespaceURI": "http://www.w3.org/1999/xhtml",
"nodeType": 1
}
- },{
+ }, {
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
@@ -126,6 +112,7 @@ page_data = """
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
@@ -144,9 +131,9 @@ page_data = """
"not_connected",
]
)
-async def test_element_node(bidi_session, inline, top_context, expression, expected):
+async def test_element_node(bidi_session, get_test_page, top_context, expression, expected):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.evaluate(
@@ -155,7 +142,7 @@ async def test_element_node(bidi_session, inline, top_context, expression, expec
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -164,25 +151,27 @@ async def test_element_node(bidi_session, inline, top_context, expression, expec
[
(
"""
- document.querySelector("svg").attributes[0]
+ document.querySelector("input#button").attributes[0]
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
"localName": "id",
"namespaceURI": None,
"nodeType": 2,
- "nodeValue": "foo",
+ "nodeValue": "button",
},
},
- ),(
+ ), (
"""
- document.querySelector("svg").attributes[1]
+ document.querySelector("svg").attributes[0]
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -195,12 +184,12 @@ async def test_element_node(bidi_session, inline, top_context, expression, expec
),
], ids=[
"basic",
- "namespace",
+ "namespaceURI",
]
)
-async def test_attribute_node(bidi_session, inline, top_context, expression, expected):
+async def test_attribute_node(bidi_session, get_test_page, top_context, expression, expected):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.evaluate(
@@ -209,7 +198,7 @@ async def test_attribute_node(bidi_session, inline, top_context, expression, exp
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -218,10 +207,11 @@ async def test_attribute_node(bidi_session, inline, top_context, expression, exp
[
(
"""
- document.querySelector("div#text-node").childNodes[1]
+ document.querySelector("#with-text-node").childNodes[0]
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -234,9 +224,9 @@ async def test_attribute_node(bidi_session, inline, top_context, expression, exp
"basic",
]
)
-async def test_text_node(bidi_session, inline, top_context, expression, expected):
+async def test_text_node(bidi_session, get_test_page, top_context, expression, expected):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.evaluate(
@@ -245,7 +235,7 @@ async def test_text_node(bidi_session, inline, top_context, expression, expected
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -258,6 +248,7 @@ async def test_text_node(bidi_session, inline, top_context, expression, expected
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -283,7 +274,7 @@ async def test_cdata_node(bidi_session, inline, new_tab, expression, expected):
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -296,6 +287,7 @@ async def test_cdata_node(bidi_session, inline, new_tab, expression, expected):
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -317,14 +309,13 @@ async def test_processing_instruction_node(
context=new_tab['context'], url=xml_page, wait="complete"
)
-
result = await bidi_session.script.evaluate(
expression=expression,
target=ContextTarget(new_tab["context"]),
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -333,10 +324,11 @@ async def test_processing_instruction_node(
[
(
"""
- document.querySelector("div#comment").childNodes[0]
+ document.querySelector("#with-comment").childNodes[0]
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -349,9 +341,9 @@ async def test_processing_instruction_node(
"basic",
]
)
-async def test_comment_node(bidi_session, inline, top_context, expression, expected):
+async def test_comment_node(bidi_session, get_test_page, top_context, expression, expected):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.evaluate(
@@ -360,7 +352,7 @@ async def test_comment_node(bidi_session, inline, top_context, expression, expec
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -373,16 +365,19 @@ async def test_comment_node(bidi_session, inline, top_context, expression, expec
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 2,
"children": [{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"nodeType": 10
}
}, {
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 2,
@@ -399,9 +394,9 @@ async def test_comment_node(bidi_session, inline, top_context, expression, expec
"basic",
]
)
-async def test_document_node(bidi_session, inline, top_context, expression, expected):
+async def test_document_node(bidi_session, get_test_page, top_context, expression, expected):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.evaluate(
@@ -410,7 +405,7 @@ async def test_document_node(bidi_session, inline, top_context, expression, expe
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -423,6 +418,7 @@ async def test_document_node(bidi_session, inline, top_context, expression, expe
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -434,9 +430,9 @@ async def test_document_node(bidi_session, inline, top_context, expression, expe
"basic",
]
)
-async def test_doctype_node(bidi_session, inline, top_context, expression, expected):
+async def test_doctype_node(bidi_session, get_test_page, top_context, expression, expected):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.evaluate(
@@ -445,7 +441,7 @@ async def test_doctype_node(bidi_session, inline, top_context, expression, expec
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
@@ -454,10 +450,35 @@ async def test_doctype_node(bidi_session, inline, top_context, expression, expec
[
(
"""
+ document.querySelector("#custom-element").shadowRoot;
+ """,
+ {
+ "type": "node",
+ "sharedId": any_string,
+ "value": {
+ "childNodeCount": 1,
+ "children": [{
+ "type": "node",
+ "sharedId": any_string,
+ "value": {
+ "attributes": {"id": "in-shadow-dom"},
+ "childNodeCount": 1,
+ "localName": "div",
+ "namespaceURI": "http://www.w3.org/1999/xhtml",
+ "nodeType": 1
+ }
+ }],
+ "nodeType": 11
+ }
+ }
+ ),
+ (
+ """
new DocumentFragment();
""",
{
"type": "node",
+ "sharedId": any_string,
"value": {
"childNodeCount": 0,
"children": [],
@@ -466,14 +487,15 @@ async def test_doctype_node(bidi_session, inline, top_context, expression, expec
}
),
], ids=[
- "basic",
+ "shadowRoot",
+ "not connected"
]
)
async def test_document_fragment_node(
- bidi_session, inline, top_context, expression, expected
+ bidi_session, get_test_page, top_context, expression, expected
):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.evaluate(
@@ -482,30 +504,31 @@ async def test_document_fragment_node(
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
@pytest.mark.asyncio
-async def test_node_within_object(bidi_session, inline, top_context):
+async def test_node_within_object(bidi_session, get_test_page, top_context):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.evaluate(
- expression="""({"elem": document.querySelector("span")})""",
+ expression="""({"elem": document.querySelector("img")})""",
target=ContextTarget(top_context["context"]),
await_promise=False,
)
- assert result == {
+ expected = {
"type": "object",
"value": [
["elem", {
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
- "localName": "span",
+ "localName": "img",
"namespaceURI": "http://www.w3.org/1999/xhtml",
"nodeType": 1
}
@@ -513,22 +536,25 @@ async def test_node_within_object(bidi_session, inline, top_context):
]
}
+ recursive_compare(expected, result)
+
@pytest.mark.asyncio
@pytest.mark.parametrize(
"expression, expected",
[
(
- "document.getElementsByTagName('span')",
+ "document.getElementsByTagName('img')",
{
"type": "htmlcollection",
"value": [
{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
- "localName": "span",
+ "localName": "img",
"namespaceURI": "http://www.w3.org/1999/xhtml",
"nodeType": 1
}
@@ -537,16 +563,17 @@ async def test_node_within_object(bidi_session, inline, top_context):
}
),
(
- "document.querySelectorAll('span')",
+ "document.querySelectorAll('img')",
{
"type": "nodelist",
"value": [
{
"type": "node",
+ "sharedId": any_string,
"value": {
"attributes": {},
"childNodeCount": 0,
- "localName": "span",
+ "localName": "img",
"namespaceURI": "http://www.w3.org/1999/xhtml",
"nodeType": 1
}
@@ -561,13 +588,13 @@ async def test_node_within_object(bidi_session, inline, top_context):
)
async def test_node_within_dom_collection(
bidi_session,
- inline,
+ get_test_page,
top_context,
expression,
expected
):
await bidi_session.browsing_context.navigate(
- context=top_context['context'], url=inline(page_data), wait="complete"
+ context=top_context['context'], url=get_test_page(), wait="complete"
)
result = await bidi_session.script.evaluate(
@@ -576,4 +603,4 @@ async def test_node_within_dom_collection(
await_promise=False,
)
- assert result == expected
+ recursive_compare(expected, result)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/sandbox.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/sandbox.py
index ba4eb732d16..3a6771780d5 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/sandbox.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/sandbox.py
@@ -128,6 +128,23 @@ async def test_sandbox_with_side_effects(bidi_session, new_tab):
@pytest.mark.asyncio
+async def test_sandbox_returns_same_node(bidi_session, new_tab):
+ node = await bidi_session.script.evaluate(
+ expression="document.querySelector('body')",
+ target=ContextTarget(new_tab["context"]),
+ await_promise=True,
+ )
+ recursive_compare({"type": "node", "sharedId": any_string}, node)
+
+ node_sandbox = await bidi_session.script.evaluate(
+ expression="document.querySelector('body')",
+ target=ContextTarget(new_tab["context"], sandbox="sandbox_1"),
+ await_promise=True,
+ )
+ assert node_sandbox == node
+
+
+@pytest.mark.asyncio
@pytest.mark.parametrize("await_promise", [True, False])
async def test_exception_details(bidi_session, new_tab, await_promise):
if await_promise:
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py b/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py
index fa96ed3a58a..9b0d7f2133f 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py
@@ -45,7 +45,7 @@ def test_null_response_value(session, inline):
def test_no_top_browsing_context(session, closed_window):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = element_clear(session, element)
assert_error(response, "no such window")
@@ -59,14 +59,14 @@ def test_no_top_browsing_context(session, closed_window):
def test_no_browsing_context(session, closed_frame):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = element_clear(session, element)
assert_error(response, "no such window")
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = element_clear(session, element)
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py b/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py
index 79be957d1b2..3c3f7d70e6c 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py
@@ -21,7 +21,7 @@ def test_null_response_value(session, inline):
def test_no_top_browsing_context(session, closed_window):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = element_click(session, element)
assert_error(response, "no such window")
@@ -35,14 +35,14 @@ def test_no_top_browsing_context(session, closed_window):
def test_no_browsing_context(session, closed_frame):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = element_click(session, element)
assert_error(response, "no such window")
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = element_click(session, element)
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py
index 854d2af42cc..281c7ad719d 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py
@@ -34,7 +34,7 @@ def test_null_response_value(session, inline):
def test_no_top_browsing_context(session, closed_window):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = element_send_keys(session, element, "foo")
assert_error(response, "no such window")
@@ -48,14 +48,14 @@ def test_no_top_browsing_context(session, closed_window):
def test_no_browsing_context(session, closed_frame):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = element_send_keys(session, element, "foo")
assert_error(response, "no such window")
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = element_send_keys(session, element, "foo")
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py
index 55fd9527aea..ead6e0c186e 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py
@@ -55,7 +55,7 @@ def test_object(session):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
result = execute_async_script(session, """
arguments[1](true);
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py
index 53c49aaa689..b8657ce0efa 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py
@@ -47,7 +47,7 @@ def test_object(session):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
result = execute_script(session, "return true;", args=[element])
assert_error(result, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py
index 8124fee0c9d..0dc00a471a9 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py
@@ -19,7 +19,7 @@ def test_no_browsing_context(session, closed_frame):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
result = get_computed_label(session, element.id)
assert_error(result, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py
index dcfe753f0dc..8d15e8fb90d 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py
@@ -19,7 +19,7 @@ def test_no_browsing_context(session, closed_frame):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
result = get_computed_role(session, element.id)
assert_error(result, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py
index e23d7e4d5ab..375f25032c0 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py
@@ -30,7 +30,7 @@ def test_no_browsing_context(session, closed_frame):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = get_element_attribute(session, element.id, "id")
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py
index f9797c2cff5..6f0a8a56395 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py
@@ -34,7 +34,7 @@ def test_no_browsing_context(session, closed_frame):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = get_element_css_value(session, element.id, "display")
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py
index 072375804e8..84e4e896281 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py
@@ -31,7 +31,7 @@ def test_no_browsing_context(session, closed_frame):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = get_element_property(session, element.id, "id")
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py
index 7f87b44e7e9..942f119f43c 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py
@@ -34,7 +34,7 @@ def test_no_browsing_context(session, closed_frame):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = get_element_rect(session, element.id)
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py
index 61d0d008100..d9adde0b9e3 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py
@@ -30,7 +30,7 @@ def test_no_browsing_context(session, closed_frame):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = get_shadow_root(session, element.id)
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py
index 1bf19309e45..3bb03d79886 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py
@@ -30,7 +30,7 @@ def test_no_browsing_context(session, closed_frame):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = get_element_tag_name(session, element.id)
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py
index aa36c487c80..e8d559cf661 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py
@@ -30,7 +30,7 @@ def test_no_browsing_context(session, closed_frame):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = get_element_text(session, element.id)
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py b/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py
index 34e5cce4197..fccff383a55 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py
@@ -33,7 +33,7 @@ def test_no_browsing_context(session, closed_frame):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = is_element_enabled(session, element.id)
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py b/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py
index b119705e7dd..1fb5b9ce86b 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py
@@ -49,7 +49,7 @@ def test_no_browsing_context(session, closed_frame):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = is_element_selected(session, element.id)
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/print/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/print/__init__.py
index 788c0e1a317..e69de29bb2d 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/print/__init__.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/print/__init__.py
@@ -1,21 +0,0 @@
-def load_pdf_document(session, inline, pdf_data):
- """Load a PDF document in the browser using pdf.js"""
- session.url = inline("""
-<!doctype html>
-<script src="/_pdf_js/pdf.js"></script>
-<canvas></canvas>
-<script>
-async function getText() {
- pages = [];
- let loadingTask = pdfjsLib.getDocument({data: atob("%s")});
- let pdf = await loadingTask.promise;
- for (let pageNumber=1; pageNumber<=pdf.numPages; pageNumber++) {
- let page = await pdf.getPage(pageNumber);
- textContent = await page.getTextContent()
- text = textContent.items.map(x => x.str).join("");
- pages.push(text);
- }
- return pages
-}
-</script>
-""" % pdf_data)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/print/printcmd.py b/tests/wpt/web-platform-tests/webdriver/tests/print/printcmd.py
index 169e2249a99..415786675c5 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/print/printcmd.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/print/printcmd.py
@@ -3,7 +3,6 @@ from base64 import decodebytes
import pytest
-from . import load_pdf_document
from tests.support.asserts import assert_error, assert_success
@@ -91,7 +90,7 @@ def test_large_html_document(session, inline):
(["-5", "2-"], ["Page 1", "Page 2", "Page 3", "Page 4", "Page 5", "Page 6", "Page 7", "Page 8", "Page 9", "Page 10"]),
([], ["Page 1", "Page 2", "Page 3", "Page 4", "Page 5", "Page 6", "Page 7", "Page 8", "Page 9", "Page 10"]),
])
-def test_page_ranges_document(session, inline, ranges, expected):
+def test_page_ranges_document(session, inline, load_pdf_document, ranges, expected):
session.url = inline("""
<style>
div {page-break-after: always}
@@ -116,7 +115,7 @@ div {page-break-after: always}
# TODO: Test that the output is reasonable
assert_pdf(pdf)
- load_pdf_document(session, inline, value)
+ load_pdf_document(value)
pages = session.execute_async_script("""let callback = arguments[arguments.length - 1];
window.getText().then(pages => callback(pages));""")
assert pages == expected
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py
index e63c0d01d26..7fff07bb407 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py
@@ -250,6 +250,118 @@ def iframe(inline):
return iframe
+
+@pytest.fixture
+def get_test_page(iframe, inline):
+ def get_test_page(
+ as_frame=False,
+ frame_doc=None,
+ shadow_doc=None,
+ nested_shadow_dom=False
+ ):
+ if frame_doc is None:
+ frame_doc = """<div id="in-frame"><input type="checkbox"/></div>"""
+
+ if shadow_doc is None:
+ shadow_doc = """<div id="in-shadow-dom"><input type="checkbox"/></div>"""
+
+ definition_inner_shadow_dom = ""
+ if nested_shadow_dom:
+ definition_inner_shadow_dom = f"""
+ customElements.define('inner-custom-element',
+ class extends HTMLElement {{
+ constructor() {{
+ super();
+ this.attachShadow({{mode: "open"}}).innerHTML = `
+ {shadow_doc}
+ `;
+ }}
+ }}
+ );
+ """
+ shadow_doc = """
+ <style>
+ inner-custom-element {
+ display:block; width:20px; height:20px;
+ }
+ </style>
+ <div id="in-nested-shadow-dom">
+ <inner-custom-element></inner-custom-element>
+ </div>
+ """
+
+ page_data = f"""
+ <style>
+ custom-element {{
+ display:block; width:20px; height:20px;
+ }}
+ </style>
+ <div id="with-children"><p><span></span></p><br/></div>
+ <div id="with-text-node">Lorem</div>
+ <div id="with-comment"><!-- Comment --></div>
+
+ <input id="button" type="button"/>
+ <input id="checkbox" type="checkbox"/>
+ <input id="file" type="file"/>
+ <input id="hidden" type="hidden"/>
+ <input id="text" type="text"/>
+
+ {iframe(frame_doc)}
+
+ <img />
+ <svg></svg>
+
+ <custom-element id="custom-element"></custom-element>
+ <script>
+ var svg = document.querySelector("svg");
+ svg.setAttributeNS("http://www.w3.org/2000/svg", "svg:foo", "bar");
+
+ customElements.define("custom-element",
+ class extends HTMLElement {{
+ constructor() {{
+ super();
+ this.attachShadow({{mode: "open"}}).innerHTML = `{shadow_doc}`;
+ }}
+ }}
+ );
+ {definition_inner_shadow_dom}
+ </script>"""
+
+ if as_frame:
+ return inline(iframe(page_data))
+ else:
+ return inline(page_data)
+
+ return get_test_page
+
+
+@pytest.fixture
+def test_page_with_pdf_js(inline):
+ """Prepare an url to load a PDF document in the browser using pdf.js"""
+ def test_page_with_pdf_js(encoded_pdf_data):
+ return inline("""
+<!doctype html>
+<script src="/_pdf_js/pdf.js"></script>
+<canvas></canvas>
+<script>
+async function getText() {
+ pages = [];
+ let loadingTask = pdfjsLib.getDocument({data: atob("%s")});
+ let pdf = await loadingTask.promise;
+ for (let pageNumber=1; pageNumber<=pdf.numPages; pageNumber++) {
+ let page = await pdf.getPage(pageNumber);
+ textContent = await page.getTextContent()
+ text = textContent.items.map(x => x.str).join("");
+ pages.push(text);
+ }
+ return pages
+}
+</script>
+""" % encoded_pdf_data)
+
+ return test_page_with_pdf_js
+
+
@pytest.fixture
async def top_context(bidi_session):
contexts = await bidi_session.browsing_context.get_tree()
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_bidi.py b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_bidi.py
index 6273b8f1575..6f1106373d9 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_bidi.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_bidi.py
@@ -140,3 +140,33 @@ def add_and_remove_iframe(bidi_session, inline):
return frame_id
return closed_frame
+
+
+@pytest.fixture
+def load_pdf(bidi_session, test_page_with_pdf_js, top_context):
+ """Load a PDF document in the browser using pdf.js"""
+ async def load_pdf(encoded_pdf_data, context=top_context["context"]):
+ url = test_page_with_pdf_js(encoded_pdf_data)
+
+ await bidi_session.browsing_context.navigate(
+ context=context, url=url, wait="complete"
+ )
+
+ return load_pdf
+
+
+@pytest.fixture
+def get_pdf_content(bidi_session, top_context, load_pdf):
+ """Load a PDF document in the browser using pdf.js and extract content from the document"""
+ async def get_pdf_content(encoded_pdf_data, context=top_context["context"]):
+ await load_pdf(encoded_pdf_data=encoded_pdf_data, context=context)
+
+ result = await bidi_session.script.call_function(
+ function_declaration="""() => { return window.getText()}""",
+ target=ContextTarget(context),
+ await_promise=True,
+ )
+
+ return result
+
+ return get_pdf_content
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py
index 748fe214a2b..65ea064c519 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py
@@ -178,89 +178,9 @@ def stale_element(current_session, get_test_page):
@pytest.fixture
-def get_test_page(iframe, inline):
- def get_test_page(
- as_frame=False,
- frame_doc=None,
- shadow_doc=None,
- nested_shadow_dom=False
- ):
- if frame_doc is None:
- frame_doc = """<div id="in-frame"><input type="checkbox"/></div>"""
-
- if shadow_doc is None:
- shadow_doc = """
- <div id="in-shadow-dom">
- <input type="checkbox"/>
- </div>
- """
-
- definition_inner_shadow_dom = ""
- if nested_shadow_dom:
- definition_inner_shadow_dom = f"""
- customElements.define('inner-custom-element',
- class extends HTMLElement {{
- constructor() {{
- super();
- this.attachShadow({{mode: "open"}}).innerHTML = `
- {shadow_doc}
- `;
- }}
- }}
- );
- """
- shadow_doc = """
- <style>
- inner-custom-element {
- display:block; width:20px; height:20px;
- }
- </style>
- <div id="in-nested-shadow-dom">
- <inner-custom-element></inner-custom-element>
- </div>
- """
-
- page_data = f"""
- <style>
- custom-element {{
- display:block; width:20px; height:20px;
- }}
- </style>
- <div id="with-children"><p><span></span></p><br/></div>
- <div id="with-text-node">Lorem</div>
- <div id="with-comment"><!-- Comment --></div>
-
- <input id="button" type="button"/>
- <input id="checkbox" type="checkbox"/>
- <input id="file" type="file"/>
- <input id="hidden" type="hidden"/>
- <input id="text" type="text"/>
-
- {iframe(frame_doc)}
-
- <svg></svg>
-
- <custom-element id="custom-element"></custom-element>
- <script>
- var svg = document.querySelector("svg");
- svg.setAttributeNS("http://www.w3.org/2000/svg", "svg:foo", "bar");
-
- customElements.define("custom-element",
- class extends HTMLElement {{
- constructor() {{
- super();
- this.attachShadow({{mode: "open"}}).innerHTML = `
- {shadow_doc}
- `;
- }}
- }}
- );
- {definition_inner_shadow_dom}
- </script>"""
+def load_pdf_document(current_session, test_page_with_pdf_js):
+ """Load a PDF document in the browser using pdf.js"""
+ def load_pdf_document(encoded_pdf_data):
+ current_session.url = test_page_with_pdf_js(encoded_pdf_data)
- if as_frame:
- return inline(iframe(page_data))
- else:
- return inline(page_data)
-
- return get_test_page
+ return load_pdf_document
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py
index deea9514ed4..ea4cc290db4 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py
@@ -33,7 +33,7 @@ def test_no_browsing_context(session, closed_frame, inline):
def test_no_such_element_with_invalid_value(session):
- element = Element("foo", session)
+ element = Element(session, "foo")
response = take_element_screenshot(session, element.id)
assert_error(response, "no such element")
diff --git a/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html b/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html
index 770aa49f052..b6dc7da5d40 100644
--- a/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html
+++ b/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html
@@ -57,10 +57,10 @@ test(function(t) {
const transceiver = pc.addTransceiver('audio');
const capabilities = transceiver.getHeaderExtensionsToNegotiate();
capabilities[0].uri = "4711";
- assert_throws_dom("NotSupportedError", () => {
+ assert_throws_dom('InvalidModificationError', () => {
transceiver.setHeaderExtensionsToNegotiate(capabilities);
- }, 'transceiver should throw NotSupported when setting an unknown URI');
-}, `setHeaderExtensionsToNegotiate throws NotSupported on encountering unknown URI`);
+ }, 'transceiver should throw InvalidModificationError when setting an unknown URI');
+}, `setHeaderExtensionsToNegotiate throws InvalidModificationError on encountering unknown URI`);
test(function(t) {
const pc = new RTCPeerConnection();
@@ -72,7 +72,7 @@ test(function(t) {
});
["sendonly", "recvonly", "inactive", "stopped"].map(direction => {
capability.direction = direction;
- assert_throws_dom("InvalidModificationError", () => {
+ assert_throws_dom('InvalidModificationError', () => {
transceiver.setHeaderExtensionsToNegotiate(capabilities);
}, `transceiver should throw InvalidModificationError when setting a mandatory header extension\'s direction to ${direction}`);
});
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html
index 8062618dd61..96e763985c0 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html
@@ -187,8 +187,8 @@
8.5. The stats selection algorithm
3. If selector is an RTCRtpSender, gather stats for and add the following objects
to result:
- - All RTCOutboundRTPStreamStats objects corresponding to selector.
- - All stats objects referenced directly or indirectly by the RTCOutboundRTPStreamStats
+ - All RTCOutboundRtpStreamStats objects corresponding to selector.
+ - All stats objects referenced directly or indirectly by the RTCOutboundRtpStreamStats
objects added.
*/
promise_test(async t => {
@@ -208,8 +208,8 @@
8.5. The stats selection algorithm
4. If selector is an RTCRtpReceiver, gather stats for and add the following objects
to result:
- - All RTCInboundRTPStreamStats objects corresponding to selector.
- - All stats objects referenced directly or indirectly by the RTCInboundRTPStreamStats
+ - All RTCInboundRtpStreamStats objects corresponding to selector.
+ - All stats objects referenced directly or indirectly by the RTCInboundRtpStreamStats
added.
*/
promise_test(async t => {
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.https.html
index 06d0f0b39bf..b8daf12fc27 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.https.html
@@ -40,8 +40,8 @@
8.5. The stats selection algorithm
4. If selector is an RTCRtpReceiver, gather stats for and add the following objects
to result:
- - All RTCInboundRTPStreamStats objects corresponding to selector.
- - All stats objects referenced directly or indirectly by the RTCInboundRTPStreamStats
+ - All RTCInboundRtpStreamStats objects corresponding to selector.
+ - All stats objects referenced directly or indirectly by the RTCInboundRtpStreamStats
added.
*/
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getStats.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getStats.https.html
index 27ac3e952f1..62c01aafa6a 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getStats.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getStats.https.html
@@ -35,8 +35,8 @@
8.5. The stats selection algorithm
3. If selector is an RTCRtpSender, gather stats for and add the following objects
to result:
- - All RTCOutboundRTPStreamStats objects corresponding to selector.
- - All stats objects referenced directly or indirectly by the RTCOutboundRTPStreamStats
+ - All RTCOutboundRtpStreamStats objects corresponding to selector.
+ - All stats objects referenced directly or indirectly by the RTCOutboundRtpStreamStats
objects added.
*/
diff --git a/tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm b/tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm
index 4768fe70bcb..d2278d3717c 100644
--- a/tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm
+++ b/tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<title>Worker constructor with wrong MIME type scripts</title>
<meta charset="utf-8">
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>