diff --git a/tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini index 282ab0b2525..cdeaf7f7080 100644 --- a/tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini @@ -7,7 +7,7 @@ expected: FAIL [Opening a blob URL in a new window immediately before revoking it works.] - expected: FAIL + expected: TIMEOUT [Opening a blob URL in a noopener about:blank window immediately before revoking it works.] expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-012.html.ini new file mode 100644 index 00000000000..ed92a71ebeb --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-012.html.ini @@ -0,0 +1,2 @@ +[font-size-adjust-012.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-013.html.ini new file mode 100644 index 00000000000..79d3f15005b --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-013.html.ini @@ -0,0 +1,2 @@ +[font-size-adjust-013.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-014.html.ini new file mode 100644 index 00000000000..5972a8c9451 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-014.html.ini @@ -0,0 +1,2 @@ +[font-size-adjust-014.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-size-adjust-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-size-adjust-computed.html.ini index d4055bb93c2..fbec401b991 100644 --- a/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-size-adjust-computed.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-size-adjust-computed.html.ini @@ -43,3 +43,6 @@ [Property font-size-adjust value 'ic-height from-font'] expected: FAIL + + [CSS Fonts Module Level 5: getComputedStyle().fontSizeAdjust] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-position/overlay/overlay-transition-dialog.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/overlay/overlay-transition-dialog.html.ini new file mode 100644 index 00000000000..c2e01775ffe --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-position/overlay/overlay-transition-dialog.html.ini @@ -0,0 +1,2 @@ +[overlay-transition-dialog.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/word-break-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/word-break-computed.html.ini index 3de00d7d68a..5bd5fc8f6fa 100644 --- a/tests/wpt/meta-legacy-layout/css/css-text/parsing/word-break-computed.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-text/parsing/word-break-computed.html.ini @@ -5,3 +5,5 @@ [Property word-break value 'break-word'] expected: FAIL + [Property word-break value 'auto-phrase'] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/word-break-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/word-break-valid.html.ini index 1236b4aed6e..ef2cd5e9fe4 100644 --- a/tests/wpt/meta-legacy-layout/css/css-text/parsing/word-break-valid.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-text/parsing/word-break-valid.html.ini @@ -2,3 +2,5 @@ [e.style['word-break'\] = "break-word" should set the property value] expected: FAIL + [e.style['word-break'\] = "auto-phrase" should set the property value] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-intrinsic-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-intrinsic-001.html.ini new file mode 100644 index 00000000000..5c0879ee3ed --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-intrinsic-001.html.ini @@ -0,0 +1,2 @@ +[word-break-auto-phrase-intrinsic-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-overflow-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-overflow-001.html.ini new file mode 100644 index 00000000000..fdd06184003 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-overflow-001.html.ini @@ -0,0 +1,2 @@ +[word-break-auto-phrase-overflow-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-values/round-mod-rem-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/round-mod-rem-computed.html.ini index 35b8d3387bc..dc53d195dec 100644 --- a/tests/wpt/meta-legacy-layout/css/css-values/round-mod-rem-computed.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-values/round-mod-rem-computed.html.ini @@ -376,3 +376,333 @@ [calc(rem(3px + 0%, 2px + 0%)) should be used-value-equivalent to 1px] expected: FAIL + + [calc(round(to-zero, 105, 10)) should be used-value-equivalent to 100] + expected: FAIL + + [calc(round(to-zero, -105, 10)) should be used-value-equivalent to -100] + expected: FAIL + + [calc(round(-100, 10)) should be used-value-equivalent to -100] + expected: FAIL + + [calc(round(up, -103, 10)) should be used-value-equivalent to -100] + expected: FAIL + + [round(up, 0, 5) should be used-value-equivalent to 0] + expected: FAIL + + [round(down, 0, 5) should be used-value-equivalent to 0] + expected: FAIL + + [round(nearest, 0, 5) should be used-value-equivalent to 0] + expected: FAIL + + [round(to-zero, 0, 5) should be used-value-equivalent to 0] + expected: FAIL + + [round(up, 5, 5) should be used-value-equivalent to 5] + expected: FAIL + + [round(down, 5, 5) should be used-value-equivalent to 5] + expected: FAIL + + [round(nearest, 5, 5) should be used-value-equivalent to 5] + expected: FAIL + + [round(to-zero, 5, 5) should be used-value-equivalent to 5] + expected: FAIL + + [round(up, -5, 5) should be used-value-equivalent to -5] + expected: FAIL + + [round(down, -5, 5) should be used-value-equivalent to -5] + expected: FAIL + + [round(nearest, -5, 5) should be used-value-equivalent to -5] + expected: FAIL + + [round(to-zero, -5, 5) should be used-value-equivalent to -5] + expected: FAIL + + [round(up, 10, 5) should be used-value-equivalent to 10] + expected: FAIL + + [round(down, 10, 5) should be used-value-equivalent to 10] + expected: FAIL + + [round(nearest, 10, 5) should be used-value-equivalent to 10] + expected: FAIL + + [round(to-zero, 10, 5) should be used-value-equivalent to 10] + expected: FAIL + + [round(up, -10, 5) should be used-value-equivalent to -10] + expected: FAIL + + [round(down, -10, 5) should be used-value-equivalent to -10] + expected: FAIL + + [round(nearest, -10, 5) should be used-value-equivalent to -10] + expected: FAIL + + [round(to-zero, -10, 5) should be used-value-equivalent to -10] + expected: FAIL + + [round(up, 20, 5) should be used-value-equivalent to 20] + expected: FAIL + + [round(down, 20, 5) should be used-value-equivalent to 20] + expected: FAIL + + [round(nearest, 20, 5) should be used-value-equivalent to 20] + expected: FAIL + + [round(to-zero, 20, 5) should be used-value-equivalent to 20] + expected: FAIL + + [round(up, -20, 5) should be used-value-equivalent to -20] + expected: FAIL + + [round(down, -20, 5) should be used-value-equivalent to -20] + expected: FAIL + + [round(nearest, -20, 5) should be used-value-equivalent to -20] + expected: FAIL + + [round(to-zero, -20, 5) should be used-value-equivalent to -20] + expected: FAIL + + [round(0, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [round(-0, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [round(Infinity, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [round(-Infinity, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [round(-4, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [round(4, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [round(Infinity, Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [round(-Infinity, -Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [round(Infinity, -Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [round(-Infinity, Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(0, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(-0, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(Infinity, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(-Infinity, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(-4, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(4, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(Infinity, Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(-Infinity, -Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(Infinity, -Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(-Infinity, Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [rem(0, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [rem(-0, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [rem(Infinity, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [rem(-Infinity, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [rem(-4, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [rem(4, 0) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [rem(Infinity, Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [rem(-Infinity, -Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [rem(Infinity, -Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [rem(-Infinity, Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [round(up, Infinity, 4) should be used-value-equivalent to calc(Infinity)] + expected: FAIL + + [round(up, -Infinity, 4) should be used-value-equivalent to calc(-Infinity)] + expected: FAIL + + [round(up, Infinity, -4) should be used-value-equivalent to calc(Infinity)] + expected: FAIL + + [round(up, -Infinity, -4) should be used-value-equivalent to calc(-Infinity)] + expected: FAIL + + [round(down, Infinity, 4) should be used-value-equivalent to calc(Infinity)] + expected: FAIL + + [round(down, -Infinity, 4) should be used-value-equivalent to calc(-Infinity)] + expected: FAIL + + [round(down, Infinity, -4) should be used-value-equivalent to calc(Infinity)] + expected: FAIL + + [round(down, -Infinity, -4) should be used-value-equivalent to calc(-Infinity)] + expected: FAIL + + [round(nearest, Infinity, 4) should be used-value-equivalent to calc(Infinity)] + expected: FAIL + + [round(nearest, -Infinity, 4) should be used-value-equivalent to calc(-Infinity)] + expected: FAIL + + [round(nearest, Infinity, -4) should be used-value-equivalent to calc(Infinity)] + expected: FAIL + + [round(nearest, -Infinity, -4) should be used-value-equivalent to calc(-Infinity)] + expected: FAIL + + [round(to-zero, Infinity, 4) should be used-value-equivalent to calc(Infinity)] + expected: FAIL + + [round(to-zero, -Infinity, 4) should be used-value-equivalent to calc(-Infinity)] + expected: FAIL + + [round(to-zero, Infinity, -4) should be used-value-equivalent to calc(Infinity)] + expected: FAIL + + [round(to-zero, -Infinity, -4) should be used-value-equivalent to calc(-Infinity)] + expected: FAIL + + [round(nearest, 0, Infinity) should be used-value-equivalent to 0] + expected: FAIL + + [round(nearest, 4, Infinity) should be used-value-equivalent to 0] + expected: FAIL + + [round(nearest, -0, Infinity) should be used-value-equivalent to calc(-0)] + expected: FAIL + + [round(nearest, -4, Infinity) should be used-value-equivalent to calc(-0)] + expected: FAIL + + [round(nearest, 0, -Infinity) should be used-value-equivalent to 0] + expected: FAIL + + [round(nearest, 4, -Infinity) should be used-value-equivalent to 0] + expected: FAIL + + [round(nearest, -0, -Infinity) should be used-value-equivalent to calc(-0)] + expected: FAIL + + [round(nearest, -4, -Infinity) should be used-value-equivalent to calc(-0)] + expected: FAIL + + [round(to-zero, 0, Infinity) should be used-value-equivalent to 0] + expected: FAIL + + [round(to-zero, 4, Infinity) should be used-value-equivalent to 0] + expected: FAIL + + [round(to-zero, -0, Infinity) should be used-value-equivalent to calc(-0)] + expected: FAIL + + [round(to-zero, -4, Infinity) should be used-value-equivalent to calc(-0)] + expected: FAIL + + [round(to-zero, 0, -Infinity) should be used-value-equivalent to 0] + expected: FAIL + + [round(to-zero, 4, -Infinity) should be used-value-equivalent to 0] + expected: FAIL + + [round(to-zero, -0, -Infinity) should be used-value-equivalent to calc(-0)] + expected: FAIL + + [round(to-zero, -4, -Infinity) should be used-value-equivalent to calc(-0)] + expected: FAIL + + [round(up, 1, Infinity) should be used-value-equivalent to calc(Infinity)] + expected: FAIL + + [round(up, 0, Infinity) should be used-value-equivalent to 0] + expected: FAIL + + [round(up, -1, Infinity) should be used-value-equivalent to calc(-0)] + expected: FAIL + + [round(up, 1, -Infinity) should be used-value-equivalent to calc(Infinity)] + expected: FAIL + + [round(up, 0, -Infinity) should be used-value-equivalent to 0] + expected: FAIL + + [round(up, -1, -Infinity) should be used-value-equivalent to calc(-0)] + expected: FAIL + + [round(down, 1, Infinity) should be used-value-equivalent to calc(-0)] + expected: FAIL + + [round(down, 0, Infinity) should be used-value-equivalent to 0] + expected: FAIL + + [round(down, -1, Infinity) should be used-value-equivalent to calc(-Infinity)] + expected: FAIL + + [round(down, 1, -Infinity) should be used-value-equivalent to calc(-0)] + expected: FAIL + + [round(down, 0, -Infinity) should be used-value-equivalent to 0] + expected: FAIL + + [round(down, -1, -Infinity) should be used-value-equivalent to calc(-Infinity)] + expected: FAIL + + [mod(-0, Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(0, -Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(-4, Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL + + [mod(4, -Infinity) should be used-value-equivalent to calc(NaN)] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini b/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini deleted file mode 100644 index a3e30250229..00000000000 --- a/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[scroll-behavior-smooth-navigation.html] - [Instant scrolling while doing history navigation.] - expected: FAIL - - [Smooth scrolling while doing history navigation.] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/cssom/idlharness.html.ini b/tests/wpt/meta-legacy-layout/css/cssom/idlharness.html.ini index 1398814cee8..1cc4924bfe4 100644 --- a/tests/wpt/meta-legacy-layout/css/cssom/idlharness.html.ini +++ b/tests/wpt/meta-legacy-layout/css/cssom/idlharness.html.ini @@ -547,3 +547,24 @@ [CSSImportRule interface: sheet.cssRules[0\] must inherit property "supportsText" with the proper type] expected: FAIL + + [CSSStyleRule interface: existence and properties of interface object] + expected: FAIL + + [CSSStyleRule interface: existence and properties of interface prototype object] + expected: FAIL + + [CSSGroupingRule interface: sheet.cssRules[4\] must inherit property "cssRules" with the proper type] + expected: FAIL + + [CSSGroupingRule interface: sheet.cssRules[4\] must inherit property "insertRule(CSSOMString, optional unsigned long)" with the proper type] + expected: FAIL + + [CSSGroupingRule interface: calling insertRule(CSSOMString, optional unsigned long) on sheet.cssRules[4\] with too few arguments must throw TypeError] + expected: FAIL + + [CSSGroupingRule interface: sheet.cssRules[4\] must inherit property "deleteRule(unsigned long)" with the proper type] + expected: FAIL + + [CSSGroupingRule interface: calling deleteRule(unsigned long) on sheet.cssRules[4\] with too few arguments must throw TypeError] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/custom-elements/form-associated/form-disabled-callback.html.ini b/tests/wpt/meta-legacy-layout/custom-elements/form-associated/form-disabled-callback.html.ini index 73ce3fa9a20..56a452afa35 100644 --- a/tests/wpt/meta-legacy-layout/custom-elements/form-associated/form-disabled-callback.html.ini +++ b/tests/wpt/meta-legacy-layout/custom-elements/form-associated/form-disabled-callback.html.ini @@ -20,3 +20,9 @@ [Toggling "disabled" attribute on a
does not trigger a callback on disabled custom element descendant] expected: FAIL + + [Callback triggered during a clone/append operation, with disabled state provided by ancestor] + expected: FAIL + + [Callback triggered during a clone operation, with disabled state provided by ancestor] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini index 0d48169e3cc..f9de5391ad6 100644 --- a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini +++ b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini @@ -146,6 +146,3 @@ [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/meta-legacy-layout/fetch/private-network-access/worker-blob-fetch.tentative.window.js.ini b/tests/wpt/meta-legacy-layout/fetch/private-network-access/worker-blob-fetch.tentative.window.js.ini index 9b8a7f421a2..5238f29ff20 100644 --- a/tests/wpt/meta-legacy-layout/fetch/private-network-access/worker-blob-fetch.tentative.window.js.ini +++ b/tests/wpt/meta-legacy-layout/fetch/private-network-access/worker-blob-fetch.tentative.window.js.ini @@ -5,9 +5,6 @@ [private to local: failure.] expected: FAIL - [private to private: success.] - expected: FAIL - [public to local: failure.] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/range/blob.any.js.ini b/tests/wpt/meta-legacy-layout/fetch/range/blob.any.js.ini index 1de303c8ad7..351a5ed37be 100644 --- a/tests/wpt/meta-legacy-layout/fetch/range/blob.any.js.ini +++ b/tests/wpt/meta-legacy-layout/fetch/range/blob.any.js.ini @@ -83,6 +83,9 @@ [Blob content with short content and a range start matching the content length] expected: FAIL + [A blob range request with no type.] + expected: FAIL + [blob.any.html] [A simple blob range request.] @@ -168,3 +171,6 @@ [Blob content with short content and a range start matching the content length] expected: FAIL + + [A blob range request with no type.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini index ab9ac6e835e..1d68034a37d 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini @@ -1,13 +1,12 @@ [failure-check-sequence.https.html] - expected: TIMEOUT [CSP check precedes COEP check - CSP header first] - expected: NOTRUN + expected: FAIL [COEP check precedes X-Frame-Options check] - expected: NOTRUN + expected: FAIL [CSP check precedes COEP check - COEP header first] - expected: NOTRUN + expected: FAIL [CSP check precedes X-Frame-Options check] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini index c5fc1407992..1bca09f21d6 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini @@ -1,5 +1,4 @@ [iframe-src-aboutblank-navigate-immediately.html] - expected: TIMEOUT [Navigating to a different document with window.open] expected: FAIL @@ -7,4 +6,4 @@ expected: FAIL [Navigating to a different document with form submission] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.js.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.js.ini index bcda478adb1..5a245d61359 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.js.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.js.ini @@ -1,10 +1,6 @@ [javascript-url-referrer.window.html] - expected: TIMEOUT [unsafe-url referrer policy used to create the starting page] expected: FAIL [origin referrer policy used to create the starting page] expected: FAIL - - [no-referrer referrer policy used to create the starting page] - expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini index 8ae58f9f1e2..4b89cb499f8 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini @@ -13,9 +13,3 @@ [0080 00FF 0100 set in href="" targeting a frame and clicked] expected: FAIL - - [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/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini deleted file mode 100644 index 4ecd6d9f753..00000000000 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini +++ /dev/null @@ -1,3 +0,0 @@ -[navigation-unload-cross-origin.sub.window.html] - [Cross-origin navigation started from unload handler must be ignored] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini b/tests/wpt/meta-legacy-layout/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/meta-legacy-layout/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/meta-legacy-layout/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/nav-cancelation-2.sub.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/nav-cancelation-2.sub.html.ini index 9f7f24f662e..0e40ffc0656 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/nav-cancelation-2.sub.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/nav-cancelation-2.sub.html.ini @@ -1,3 +1,4 @@ [nav-cancelation-2.sub.html] + expected: TIMEOUT [grandparent cancels a pending navigation in a cross-origin grandchild] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini index 24c9e5d3926..90eb9ed743b 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini @@ -1,5 +1,4 @@ [cross-origin-objects.html] - expected: TIMEOUT [Basic sanity-checking (cross-origin)] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini b/tests/wpt/meta-legacy-layout/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/meta-legacy-layout/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/meta-legacy-layout/html/canvas/element/layers/2d.layer.beginLayer-options.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.beginLayer-options.html.ini new file mode 100644 index 00000000000..0947bba3788 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.beginLayer-options.html.ini @@ -0,0 +1,3 @@ +[2d.layer.beginLayer-options.html] + [Checks beginLayer works for different option parameter values] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.exceptions-are-no-op.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.exceptions-are-no-op.html.ini new file mode 100644 index 00000000000..0cb6561c09c --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.exceptions-are-no-op.html.ini @@ -0,0 +1,3 @@ +[2d.layer.exceptions-are-no-op.html] + [Checks that the context state is left unchanged if beginLayer throws.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.font.weight.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.font.weight.html.ini new file mode 100644 index 00000000000..fac08bfc9f3 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.font.weight.html.ini @@ -0,0 +1,3 @@ +[2d.text.font.weight.html] + [Canvas test: 2d.text.font.weight] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.beginLayer-options.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.beginLayer-options.html.ini new file mode 100644 index 00000000000..0947bba3788 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.beginLayer-options.html.ini @@ -0,0 +1,3 @@ +[2d.layer.beginLayer-options.html] + [Checks beginLayer works for different option parameter values] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.beginLayer-options.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.beginLayer-options.worker.js.ini new file mode 100644 index 00000000000..3a377acbd03 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.beginLayer-options.worker.js.ini @@ -0,0 +1,3 @@ +[2d.layer.beginLayer-options.worker.html] + [Checks beginLayer works for different option parameter values] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.exceptions-are-no-op.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.exceptions-are-no-op.html.ini new file mode 100644 index 00000000000..0cb6561c09c --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.exceptions-are-no-op.html.ini @@ -0,0 +1,3 @@ +[2d.layer.exceptions-are-no-op.html] + [Checks that the context state is left unchanged if beginLayer throws.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.exceptions-are-no-op.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.exceptions-are-no-op.worker.js.ini new file mode 100644 index 00000000000..c67054512fe --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.exceptions-are-no-op.worker.js.ini @@ -0,0 +1,3 @@ +[2d.layer.exceptions-are-no-op.worker.html] + [Checks that the context state is left unchanged if beginLayer throws.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.font.weight.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.font.weight.html.ini new file mode 100644 index 00000000000..4a41eaa8397 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.font.weight.html.ini @@ -0,0 +1,3 @@ +[2d.text.font.weight.html] + [OffscreenCanvas test: 2d.text.font.weight] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.font.weight.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.font.weight.worker.js.ini new file mode 100644 index 00000000000..374090c0d85 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.font.weight.worker.js.ini @@ -0,0 +1,3 @@ +[2d.text.font.weight.worker.html] + [2d] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/rendering/the-details-element/details-display-type-001.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/the-details-element/details-display-type-001.tentative.html.ini new file mode 100644 index 00000000000..931a0473a98 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/rendering/the-details-element/details-display-type-001.tentative.html.ini @@ -0,0 +1,2 @@ +[details-display-type-001.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini index 6bec7a732b8..76e34322dca 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini @@ -1,4 +1,5 @@ [iframe_sandbox_popups_nonescaping-2.html] type: testharness + expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index d5fd800f09d..ff6467094b8 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -1,4 +1,3 @@ [iframe_sandbox_popups_nonescaping-3.html] - expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini index 7c3591f1bc1..7d2f24a9bb6 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini @@ -181,3 +181,6 @@ [text/plain: 0x00 in name (normal form)] expected: FAIL + + [text/plain: Basic test (formdata event)] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-font-size.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-font-size.tentative.html.ini new file mode 100644 index 00000000000..0f6aac9342b --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-font-size.tentative.html.ini @@ -0,0 +1,2 @@ +[selectmenu-font-size.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-rtl.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-rtl.tentative.html.ini new file mode 100644 index 00000000000..63e50dff351 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-rtl.tentative.html.ini @@ -0,0 +1,2 @@ +[selectmenu-rtl.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-details-element/name-attribute.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-details-element/name-attribute.tentative.html.ini index 671b79580ec..4e44b5ec46f 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-details-element/name-attribute.tentative.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-details-element/name-attribute.tentative.html.ini @@ -13,3 +13,27 @@ [mutation event and toggle event order matches tree order] expected: FAIL + + [exclusivity enforcement with attachment scenario connected] + expected: FAIL + + [exclusivity enforcement with attachment scenario disconnected] + expected: FAIL + + [exclusivity enforcement with attachment scenario shadow] + expected: FAIL + + [exclusivity enforcement with attachment scenario shadow-in-disconnected] + expected: FAIL + + [exclusivity enforcement with attachment scenario template-in-disconnected] + expected: FAIL + + [exclusivity enforcement with attachment scenario connected-in-xhr-response] + expected: FAIL + + [exclusivity enforcement with attachment scenario connected-in-implementation-create-document] + expected: FAIL + + [exclusivity enforcement with attachment scenario connected-in-template] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-2.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-2.html.ini new file mode 100644 index 00000000000..c23c4a2fa4a --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-2.html.ini @@ -0,0 +1,2 @@ +[charset-2.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-bom.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-bom.html.ini new file mode 100644 index 00000000000..50ba04c037f --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-bom.html.ini @@ -0,0 +1,2 @@ +[charset-bom.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset.html.ini new file mode 100644 index 00000000000..c4640fac0fe --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset.html.ini @@ -0,0 +1,2 @@ +[charset.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/content-type-checking.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/content-type-checking.html.ini new file mode 100644 index 00000000000..5dd7ab59bea --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/content-type-checking.html.ini @@ -0,0 +1,16 @@ +[content-type-checking.html] + expected: ERROR + [text/css] + expected: NOTRUN + + [application/css] + expected: NOTRUN + + [text/html+css] + expected: NOTRUN + + [text/css;boundary=something] + expected: NOTRUN + + [text/css;foo=bar] + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/cors-crossorigin-requests.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/cors-crossorigin-requests.html.ini new file mode 100644 index 00000000000..965dfc8a347 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/cors-crossorigin-requests.html.ini @@ -0,0 +1,9 @@ +[cors-crossorigin-requests.html] + [Imported CSS module, cross-origin with CORS] + expected: FAIL + + [Imported CSS module, cross-origin, missing CORS ACAO header] + expected: FAIL + + [Imported CSS module with parse error, cross-origin, with CORS] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/credentials.sub.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/credentials.sub.html.ini new file mode 100644 index 00000000000..af03917cf03 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/credentials.sub.html.ini @@ -0,0 +1,3 @@ +[credentials.sub.html] + [CSS Modules should be loaded with or without the credentials based on the same-origin-ness and the crossOrigin attribute] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/css-module-worker-test.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/css-module-worker-test.html.ini new file mode 100644 index 00000000000..24493e76054 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/css-module-worker-test.html.ini @@ -0,0 +1,7 @@ +[css-module-worker-test.html] + expected: TIMEOUT + [A dynamic import CSS Module within a web worker should not load and should not attempt to fetch the module.] + expected: TIMEOUT + + [An attempt to load a CSS module as a worker should fail.] + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-basic.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-basic.html.ini new file mode 100644 index 00000000000..07b075f3894 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-basic.html.ini @@ -0,0 +1,2 @@ +[import-css-module-basic.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-dynamic.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-dynamic.html.ini new file mode 100644 index 00000000000..e2611f01222 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-dynamic.html.ini @@ -0,0 +1,2 @@ +[import-css-module-dynamic.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/integrity.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/integrity.html.ini new file mode 100644 index 00000000000..dba6afe8012 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/integrity.html.ini @@ -0,0 +1,2 @@ +[integrity.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/load-error-events.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/load-error-events.html.ini new file mode 100644 index 00000000000..95ef1bfcd96 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/load-error-events.html.ini @@ -0,0 +1,25 @@ +[load-error-events.html] + expected: ERROR + [inline, 200, parser-inserted] + expected: NOTRUN + + [inline, 404, parser-inserted] + expected: NOTRUN + + [src, 200, parser-inserted] + expected: FAIL + + [src, 404, parser-inserted] + expected: FAIL + + [src, 200, not parser-inserted] + expected: FAIL + + [src, 404, not parser-inserted] + expected: FAIL + + [inline, 200, not parser-inserted] + expected: NOTRUN + + [inline, 404, not parser-inserted] + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/referrer-policies.sub.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/referrer-policies.sub.html.ini new file mode 100644 index 00000000000..d1bd3ff92f1 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/referrer-policies.sub.html.ini @@ -0,0 +1,2 @@ +[referrer-policies.sub.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/relative-urls.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/relative-urls.html.ini new file mode 100644 index 00000000000..c43a0b852b0 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/relative-urls.html.ini @@ -0,0 +1,2 @@ +[relative-urls.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module/integrity.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module/integrity.html.ini index dba6afe8012..1f2f2cd1ff3 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module/integrity.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module/integrity.html.ini @@ -1,2 +1,3 @@ [integrity.html] - expected: ERROR + [The integrity attribute must be verified on the top-level of a module loading a CSS module and allow it to execute when it matches] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html.ini index 72af29b4be8..be81dcefe3b 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html.ini @@ -1,5 +1,3 @@ [unsupported-assertion.html] - expected: ERROR [Test that no error occurs when an unsupported import assertion is provided.] expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-attributes/dynamic-import-with-attributes-argument.any.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-attributes/dynamic-import-with-attributes-argument.any.js.ini new file mode 100644 index 00000000000..4711a45d68f --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-attributes/dynamic-import-with-attributes-argument.any.js.ini @@ -0,0 +1,8 @@ +[dynamic-import-with-attributes-argument.any.sharedworker.html] + expected: ERROR + +[dynamic-import-with-attributes-argument.any.html] + expected: ERROR + +[dynamic-import-with-attributes-argument.any.worker.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-attributes/empty-attributes-clause.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-attributes/empty-attributes-clause.html.ini new file mode 100644 index 00000000000..6da5c5c6b92 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-attributes/empty-attributes-clause.html.ini @@ -0,0 +1,4 @@ +[empty-attributes-clause.html] + expected: ERROR + [Test that no error occurs when an empty import attributes clause is provided.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-attributes/invalid-type-attribute-error.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-attributes/invalid-type-attribute-error.html.ini new file mode 100644 index 00000000000..324720e8951 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-attributes/invalid-type-attribute-error.html.ini @@ -0,0 +1,3 @@ +[invalid-type-attribute-error.html] + [Test that invalid module type attribute leads to TypeError on window.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-2.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-2.html.ini new file mode 100644 index 00000000000..c23c4a2fa4a --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-2.html.ini @@ -0,0 +1,2 @@ +[charset-2.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.js.ini new file mode 100644 index 00000000000..01d14e7319e --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.js.ini @@ -0,0 +1,8 @@ +[charset-bom.any.worker.html] + expected: ERROR + +[charset-bom.any.sharedworker.html] + expected: ERROR + +[charset-bom.any.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset.html.ini new file mode 100644 index 00000000000..c4640fac0fe --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset.html.ini @@ -0,0 +1,2 @@ +[charset.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/cors-crossorigin-requests.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/cors-crossorigin-requests.html.ini new file mode 100644 index 00000000000..2c72ea94442 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/cors-crossorigin-requests.html.ini @@ -0,0 +1,9 @@ +[cors-crossorigin-requests.html] + [Imported JSON module, cross-origin with CORS] + expected: FAIL + + [Imported JSON module, cross-origin, missing CORS ACAO header] + expected: FAIL + + [Imported JSON module with parse error, cross-origin, with CORS] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials.sub.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials.sub.html.ini new file mode 100644 index 00000000000..52b294d640f --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials.sub.html.ini @@ -0,0 +1,3 @@ +[credentials.sub.html] + [JSON Modules should be loaded with or without the credentials based on the same-origin-ness and the crossOrigin attribute] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity.html.ini new file mode 100644 index 00000000000..dba6afe8012 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity.html.ini @@ -0,0 +1,2 @@ +[integrity.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.js.ini new file mode 100644 index 00000000000..a6808cce7a1 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.js.ini @@ -0,0 +1,8 @@ +[invalid-content-type.any.html] + expected: ERROR + +[invalid-content-type.any.worker.html] + expected: ERROR + +[invalid-content-type.any.sharedworker.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/json-module-service-worker-test.https.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/json-module-service-worker-test.https.html.ini new file mode 100644 index 00000000000..5ac910adced --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/json-module-service-worker-test.https.html.ini @@ -0,0 +1,9 @@ +[json-module-service-worker-test.https.html] + [Javascript importing JSON Module should load within the context of a service worker] + expected: FAIL + + [Trying to register a service worker with a top-level JSON Module should fail] + expected: FAIL + + [JSON Module dynamic import should not load within the context of a service worker] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.html.ini new file mode 100644 index 00000000000..95ef1bfcd96 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.html.ini @@ -0,0 +1,25 @@ +[load-error-events.html] + expected: ERROR + [inline, 200, parser-inserted] + expected: NOTRUN + + [inline, 404, parser-inserted] + expected: NOTRUN + + [src, 200, parser-inserted] + expected: FAIL + + [src, 404, parser-inserted] + expected: FAIL + + [src, 200, not parser-inserted] + expected: FAIL + + [src, 404, not parser-inserted] + expected: FAIL + + [inline, 200, not parser-inserted] + expected: NOTRUN + + [inline, 404, not parser-inserted] + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/module.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/module.html.ini new file mode 100644 index 00000000000..f35e3f413b5 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/module.html.ini @@ -0,0 +1,4 @@ +[module.html] + expected: ERROR + [JSON modules] + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.js.ini new file mode 100644 index 00000000000..e43dccf0dc4 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.js.ini @@ -0,0 +1,8 @@ +[non-object.any.worker.html] + expected: ERROR + +[non-object.any.sharedworker.html] + expected: ERROR + +[non-object.any.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.html.ini new file mode 100644 index 00000000000..9f98a2af558 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.html.ini @@ -0,0 +1,4 @@ +[parse-error.html] + expected: TIMEOUT + [JSON modules: parse error] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-policies.sub.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-policies.sub.html.ini new file mode 100644 index 00000000000..d1bd3ff92f1 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-policies.sub.html.ini @@ -0,0 +1,2 @@ +[referrer-policies.sub.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.js.ini new file mode 100644 index 00000000000..49b84bbf028 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.js.ini @@ -0,0 +1,8 @@ +[repeated-imports.any.sharedworker.html] + expected: ERROR + +[repeated-imports.any.worker.html] + expected: ERROR + +[repeated-imports.any.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/valid-content-type.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/valid-content-type.html.ini new file mode 100644 index 00000000000..e8b972c5790 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/valid-content-type.html.ini @@ -0,0 +1,19 @@ +[valid-content-type.html] + expected: ERROR + [text/json] + expected: NOTRUN + + [application/json] + expected: NOTRUN + + [text/html+json] + expected: NOTRUN + + [image/svg+json] + expected: NOTRUN + + [text/json;boundary=something] + expected: NOTRUN + + [text/json;foo=bar] + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini index aa8e590fb27..31bfd644df0 100644 --- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini +++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini @@ -1,19 +1,18 @@ [promise-job-entry.html] - expected: TIMEOUT [Fulfillment handler on fulfilled promise] - expected: TIMEOUT + expected: FAIL [Rejection handler on pending-then-rejected promise] expected: FAIL [Sanity check: this all works as expected with no promises involved] - expected: TIMEOUT + expected: FAIL [Thenable resolution] expected: FAIL [Rejection handler on rejected promise] - expected: TIMEOUT + expected: FAIL [Fulfillment handler on pending-then-fulfilled promise] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini b/tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini index 39d039a0132..04c2032c723 100644 --- a/tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini +++ b/tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini @@ -1,5 +1,5 @@ [cross-partition.https.tentative.html] - expected: CRASH + expected: TIMEOUT [BroadcastChannel messages aren't received from a cross-partition iframe] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini b/tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini new file mode 100644 index 00000000000..c7946fc91b4 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/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/meta-legacy-layout/webmessaging/with-ports/018.html.ini b/tests/wpt/meta-legacy-layout/webmessaging/without-ports/018.html.ini similarity index 100% rename from tests/wpt/meta-legacy-layout/webmessaging/with-ports/018.html.ini rename to tests/wpt/meta-legacy-layout/webmessaging/without-ports/018.html.ini diff --git a/tests/wpt/meta-legacy-layout/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini b/tests/wpt/meta-legacy-layout/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini deleted file mode 100644 index aa6c9e5b826..00000000000 --- a/tests/wpt/meta-legacy-layout/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/meta-legacy-layout/xhr/blob-range.any.js.ini b/tests/wpt/meta-legacy-layout/xhr/blob-range.any.js.ini new file mode 100644 index 00000000000..e743d94658e --- /dev/null +++ b/tests/wpt/meta-legacy-layout/xhr/blob-range.any.js.ini @@ -0,0 +1,164 @@ +[blob-range.any.worker.html] + [A simple blob range request.] + expected: FAIL + + [A blob range request with no type.] + expected: FAIL + + [A blob range request with no end.] + expected: FAIL + + [A blob range request with no start.] + expected: FAIL + + [A simple blob range request with whitespace.] + expected: FAIL + + [Blob content with short content and a large range end] + expected: FAIL + + [Blob content with short content and a range end matching content length] + expected: FAIL + + [Blob range with whitespace before and after hyphen] + expected: FAIL + + [Blob range with whitespace after hyphen] + expected: FAIL + + [Blob range with whitespace around equals sign] + expected: FAIL + + [Blob range with no value] + expected: FAIL + + [Blob range with incorrect range header] + expected: FAIL + + [Blob range with incorrect range header #2] + expected: FAIL + + [Blob range with incorrect range header #3] + expected: FAIL + + [Blob range request with multiple range values] + expected: FAIL + + [Blob range request with multiple range values and whitespace] + expected: FAIL + + [Blob range request with trailing comma] + expected: FAIL + + [Blob range with no start or end] + expected: FAIL + + [Blob range request with short range end] + expected: FAIL + + [Blob range start should be an ASCII digit] + expected: FAIL + + [Blob range should have a dash] + expected: FAIL + + [Blob range end should be an ASCII digit] + expected: FAIL + + [Blob range should include '-'] + expected: FAIL + + [Blob range should include '='] + expected: FAIL + + [Blob range should include 'bytes='] + expected: FAIL + + [Blob content with short content and a large range start] + expected: FAIL + + [Blob content with short content and a range start matching the content length] + expected: FAIL + + +[blob-range.any.html] + [A simple blob range request.] + expected: FAIL + + [A blob range request with no type.] + expected: FAIL + + [A blob range request with no end.] + expected: FAIL + + [A blob range request with no start.] + expected: FAIL + + [A simple blob range request with whitespace.] + expected: FAIL + + [Blob content with short content and a large range end] + expected: FAIL + + [Blob content with short content and a range end matching content length] + expected: FAIL + + [Blob range with whitespace before and after hyphen] + expected: FAIL + + [Blob range with whitespace after hyphen] + expected: FAIL + + [Blob range with whitespace around equals sign] + expected: FAIL + + [Blob range with no value] + expected: FAIL + + [Blob range with incorrect range header] + expected: FAIL + + [Blob range with incorrect range header #2] + expected: FAIL + + [Blob range with incorrect range header #3] + expected: FAIL + + [Blob range request with multiple range values] + expected: FAIL + + [Blob range request with multiple range values and whitespace] + expected: FAIL + + [Blob range request with trailing comma] + expected: FAIL + + [Blob range with no start or end] + expected: FAIL + + [Blob range request with short range end] + expected: FAIL + + [Blob range start should be an ASCII digit] + expected: FAIL + + [Blob range should have a dash] + expected: FAIL + + [Blob range end should be an ASCII digit] + expected: FAIL + + [Blob range should include '-'] + expected: FAIL + + [Blob range should include '='] + expected: FAIL + + [Blob range should include 'bytes='] + expected: FAIL + + [Blob content with short content and a large range start] + expected: FAIL + + [Blob content with short content and a range start matching the content length] + expected: FAIL diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json index f70d2aa346b..74a86d046c5 100644 --- a/tests/wpt/meta/MANIFEST.json +++ b/tests/wpt/meta/MANIFEST.json @@ -4329,6 +4329,17 @@ ] ] }, + "printing": { + "crashtests": { + "tall-inline-block-in-float-in-table-cell-print.html": [ + "c70dce2160a9c206c850df7dcd518c97a7ec0443", + [ + null, + {} + ] + ] + } + }, "selectors": { "eof-right-after-selector-crash.html": [ "c387c755abe0b5b497052916cd034299b2b2bd96", @@ -5068,6 +5079,13 @@ {} ] ], + "removeformat-from-DOMNodeRemoved.html": [ + "3f78f9943621df75c5192df6b604b4402aff89f8", + [ + null, + {} + ] + ], "removeformat-in-number-input-immediately-after-type-change-and-stepUp.html": [ "d83c2e00790f1a9d825ffa4742bd7504f5cc7f63", [ @@ -6241,6 +6259,27 @@ {} ] ], + "373533-1.xhtml": [ + "247a5cb39a3a490d1e0026ce86946ff141b9756f", + [ + null, + {} + ] + ], + "373533-2.xhtml": [ + "16929262a2fe220ff78b015f3ef029b081878b56", + [ + null, + {} + ] + ], + "373533-3.xhtml": [ + "18c104096ae0f3d485c251cea6f6c7688e9398a6", + [ + null, + {} + ] + ], "375562-1.xhtml": [ "7b00d1f91ad5c7a652d00db0dcbb36272c35fdf5", [ @@ -29539,6 +29578,658 @@ ] ] }, + "css-page": { + "layers-001-print.html": [ + "b097fbb8fc0f540c4701497196ad77a55e0ce818", + [ + null, + [ + [ + "/css/css-page/layers-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "layers-002-print.html": [ + "fb30ba9eb3d063f36439a2f01f8a7d73695e89c2", + [ + null, + [ + [ + "/css/css-page/layers-002-print-ref.html", + "==" + ] + ], + {} + ] + ], + "layers-003-print.html": [ + "ace3d5c8c01e125a334645471482688e970b9e3b", + [ + null, + [ + [ + "/css/css-page/layers-003-print-ref.html", + "==" + ] + ], + {} + ] + ], + "layers-004-print.html": [ + "5e84d2a32266d98c855ec9914aca8609e525eb96", + [ + null, + [ + [ + "/css/css-page/layers-004-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-abspos-001-print.html": [ + "df2f61493580c3273de0f77143a2cba86074f215", + [ + null, + [ + [ + "/css/css-page/page-name-abspos-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-abspos-002-print.html": [ + "f0accb36c2e8124cf6e9cb595901b82c1273bee1", + [ + null, + [ + [ + "/css/css-page/page-name-abspos-002-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-abspos-003-print.html": [ + "0361f669ca989e2ae023b2103eb765a53d233a39", + [ + null, + [ + [ + "/css/css-page/page-name-abspos-003-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-canvas-001-print.html": [ + "64b879efbbc4baa3fa61e9ab10a61d1abd983b82", + [ + null, + [ + [ + "/css/css-page/page-name-canvas-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-canvas-002-print.html": [ + "7a1bc7d9a00a4cb73da45fc50e0f16236e9f9082", + [ + null, + [ + [ + "/css/css-page/page-name-canvas-002-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-canvas-003-print.html": [ + "cbebc42153f9e7b04b87307f34cdfb36ada5d1e3", + [ + null, + [ + [ + "/css/css-page/page-name-canvas-003-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-canvas-004-print.html": [ + "6343a509262d5c0d6e217e924f5009439206332c", + [ + null, + [ + [ + "/css/css-page/page-name-canvas-004-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-display-none-child-print.html": [ + "f42aae35c0a5093ae7c561d717ede2eb22a66a76", + [ + null, + [ + [ + "/css/css-page/page-name-display-none-child-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-fixed-pos-001-print.html": [ + "495c66ce2e8f78509b1ec8557e60fd0b1ff962d3", + [ + null, + [ + [ + "/css/css-page/page-name-fixed-pos-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-flex-001-print.html": [ + "9b932e69d2dd89ecb53f7dc5aa7f56169ad3dc99", + [ + null, + [ + [ + "/css/css-page/page-name-flex-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-flex-002-print.html": [ + "a25e22d6fbd364e9d05421b09447af7f0f2be171", + [ + null, + [ + [ + "/css/css-page/page-name-flex-002-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-flex-003-print.html": [ + "2cfbb6fb7cacd74f23944308b889c8597456388a", + [ + null, + [ + [ + "/css/css-page/page-name-flex-003-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-flex-004-print.html": [ + "aa20ad1cb7d2ab60490086a81120c1c6a9d18fbb", + [ + null, + [ + [ + "/css/css-page/page-name-flex-004-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-float-001-print.html": [ + "4233bac5c06258603e02fd317eee8b767885c7a8", + [ + null, + [ + [ + "/css/css-page/page-name-float-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-float-002-print.html": [ + "db4f0b28ce0c4f5b238f29b2211275b2eab4db4f", + [ + null, + [ + [ + "/css/css-page/page-name-float-002-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-img-001-print.html": [ + "7864b869d9c40facd642ec503b750b636fbab13f", + [ + null, + [ + [ + "/css/css-page/page-name-img-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-img-002-print.html": [ + "3857986ca94cf8fbef558ab73e8b210de3e2c2b5", + [ + null, + [ + [ + "/css/css-page/page-name-img-002-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-img-003-print.html": [ + "26790f0e7a3f51c39368662ed33d4bc1833e3686", + [ + null, + [ + [ + "/css/css-page/page-name-img-003-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-img-004-print.html": [ + "13fbeb01b5c377fcb91fc900bf289b8c9636cf01", + [ + null, + [ + [ + "/css/css-page/page-name-img-004-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-inline-block-001-print.html": [ + "365a24146a4c3cc70ce65eb558846dc24306027b", + [ + null, + [ + [ + "/css/css-page/page-name-inline-block-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-inline-block-002-print.html": [ + "cb65afa924bb5490efa25f2ebd437fb6b18d138c", + [ + null, + [ + [ + "/css/css-page/page-name-inline-block-002-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-inline-block-003-print.html": [ + "994f506999aa4092d330c4c761220c666185a187", + [ + null, + [ + [ + "/css/css-page/page-name-inline-block-003-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-margin-001-print.html": [ + "9514339e4545d3100d5abf1a7a5736b01a188167", + [ + null, + [ + [ + "/css/css-page/page-name-margin-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-margin-002-print.html": [ + "0ab67f306927dca60147d4fd30f9417a8ee5e590", + [ + null, + [ + [ + "/css/css-page/page-name-margin-002-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-orthogonal-writing-001-print.html": [ + "c84b3e5ee96ac0c4ce139c150a8fa412e0bef9c1", + [ + null, + [ + [ + "/css/css-page/page-name-orthogonal-writing-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-orthogonal-writing-002-print.html": [ + "a720090ba6e9301e5a3bbd8150f29634f536a974", + [ + null, + [ + [ + "/css/css-page/page-name-orthogonal-writing-002-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-orthogonal-writing-003-print.html": [ + "6d24c324081c013dd2d83dee8a175ccae06e3f2d", + [ + null, + [ + [ + "/css/css-page/page-name-orthogonal-writing-003-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-orthogonal-writing-004-print.html": [ + "8e6176584ddb7d7b64802eb79bf4cbee4fdfceae", + [ + null, + [ + [ + "/css/css-page/page-name-orthogonal-writing-004-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-propagated-001-print.html": [ + "3efaf7695bebd91a5c0897249dcbc3ec58646162", + [ + null, + [ + [ + "/css/css-page/page-name-propagated-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-propagated-002-print.html": [ + "d88596c1225838701deb42efe22100cf0166256c", + [ + null, + [ + [ + "/css/css-page/page-name-propagated-002-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-propagated-003-print.html": [ + "969bbe6e2d976c022ac464dd0c94849f3dbe5cad", + [ + null, + [ + [ + "/css/css-page/page-name-propagated-003-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-propagated-004-print.html": [ + "49600ef6d5fd908b36db947ae2f6b157cdc1fb71", + [ + null, + [ + [ + "/css/css-page/page-name-propagated-004-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-propagated-005-print.html": [ + "12bd274f2fcd7ac926d4923d274cd6f25b8741c6", + [ + null, + [ + [ + "/css/css-page/page-name-propagated-005-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-propagated-006-print.html": [ + "18be3827ce22609ac2ace1ee435023f1d151e103", + [ + null, + [ + [ + "/css/css-page/page-name-propagated-006-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-propagated-007-print.html": [ + "c27ad9f3263e8bf82814f7abee6bc76c08fd2f3d", + [ + null, + [ + [ + "/css/css-page/page-name-propagated-007-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-propagated-008-print.html": [ + "3f7fab4caa4f51853f7cc5e95f6a3fd884fc1430", + [ + null, + [ + [ + "/css/css-page/page-name-propagated-008-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-propagated-009-print.html": [ + "eb0d1dbe89095037882e7e11da0c380e591081fd", + [ + null, + [ + [ + "/css/css-page/page-name-propagated-009-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-siblings-001-print.html": [ + "b4fa8457e7b6791fc59b88742e1dd2e27375d5f4", + [ + null, + [ + [ + "/css/css-page/page-name-siblings-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-siblings-002-print.html": [ + "28f5e0b571753fafbf77c747e9fc9096752b3295", + [ + null, + [ + [ + "/css/css-page/page-name-siblings-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-siblings-003-print.html": [ + "44346a649ffb73c77a6fb506073b509f65f3d9ac", + [ + null, + [ + [ + "/css/css-page/page-name-siblings-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-siblings-004-print.html": [ + "51e12ba2518e103d65081ef058fef89bc752933c", + [ + null, + [ + [ + "/css/css-page/page-name-siblings-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-siblings-005-print.html": [ + "9ad77ad5dca24d532bb2f9ca08fcc237fb1316e7", + [ + null, + [ + [ + "/css/css-page/page-name-siblings-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-name-zero-height-001-print.html": [ + "8a108c9b4519dd7ce3e7bce596f670a63054f180", + [ + null, + [ + [ + "/css/css-page/page-name-zero-height-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "pseudo-first-margin-001-print.html": [ + "c2c04514f39b0869605ae8bf1b5d3c9ce9435261", + [ + null, + [ + [ + "/css/css-page/pseudo-first-margin-print-ref.html", + "==" + ] + ], + {} + ] + ], + "pseudo-first-margin-002-print.html": [ + "a453b6ba32d721aa081f91e3aeda40ff036f6377", + [ + null, + [ + [ + "/css/css-page/pseudo-first-margin-print-ref.html", + "==" + ] + ], + {} + ] + ], + "pseudo-first-margin-003-print.html": [ + "9bb953bfa0a9f4a30567ada713300dca4508ef17", + [ + null, + [ + [ + "/css/css-page/pseudo-first-margin-print-ref.html", + "==" + ] + ], + {} + ] + ] + }, "css-position": { "position-fixed-overflow-print.html": [ "cf5cf2ea530d7bec477e640356d4e3f2dac42f89", @@ -29882,6 +30573,19 @@ {} ] ], + "media-queries-001-print.html": [ + "01b2a00e470263b6371313b5107c7add544d858c", + [ + null, + [ + [ + "/css/printing/media-queries-001-print-ref.html", + "==" + ] + ], + {} + ] + ], "monolithic-overflow-001-print.html": [ "f4121c3422582aad0bf12837270e696d06e68555", [ @@ -30155,6 +30859,71 @@ {} ] ], + "monolithic-overflow-022-print.html": [ + "d37c74ad8ac33a3f767e962dee71858f491c0071", + [ + null, + [ + [ + "/css/printing/monolithic-overflow-022-print-ref.html", + "==" + ] + ], + {} + ] + ], + "no-resize-event-print.html": [ + "85a44b556cd263d1026f3e6a83b6bfa97263400e", + [ + null, + [ + [ + "/css/printing/no-resize-event-ref.html", + "==" + ] + ], + {} + ] + ], + "page-margin-001-print.html": [ + "c59b3c642760b3eeb548fad799ed147b77e27ff2", + [ + null, + [ + [ + "/css/printing/page-margin-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-margin-002-print.html": [ + "944d7efcfd08fbd2508d4d8d78e9dbb30c210487", + [ + null, + [ + [ + "/css/printing/page-margin-002-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-margin-003-print.html": [ + "e7410c02e09b595ee39ab0dd0ed162827d2469c7", + [ + null, + [ + [ + "/css/printing/page-margin-003-print-ref.html", + "==" + ] + ], + {} + ] + ], "page-name-001-print.html": [ "56281bb4ed5f8b3e34401420b10504ed6c0e00fd", [ @@ -30246,6 +31015,84 @@ {} ] ], + "page-size-004-print.html": [ + "125d7636d265c61eb604dc67811efb1d5df572c3", + [ + null, + [ + [ + "/css/printing/page-size-004-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-size-005-print.html": [ + "37876ae230edae36fa350657da278037aef00709", + [ + null, + [ + [ + "/css/printing/page-size-005-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-size-006-print.html": [ + "1da29d334d7a361c15e9d63718d216d83070df85", + [ + null, + [ + [ + "/css/printing/page-size-006-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-size-007-print.html": [ + "50ab2f4d1090e2fac5c26eaf601985e1ad0f7f1e", + [ + null, + [ + [ + "/css/printing/page-size-007-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-size-008-print.html": [ + "683bdc3a50a45abbac6cada7ff4863a705262ba5", + [ + null, + [ + [ + "/css/printing/page-size-008-print-ref.html", + "==" + ] + ], + {} + ] + ], + "page-size-009-print.html": [ + "48ead4eab3896c7b71bad144aeb2e2c518c81ce2", + [ + null, + [ + [ + "/css/printing/page-size-009-print-ref.html", + "==" + ] + ], + {} + ] + ], "paused-animations-print.html": [ "03ef1bab3c3430891ed9f37ca913c1339d36e682", [ @@ -130827,6 +131674,19 @@ {} ] ], + "background-image-gradient-interpolation-repaint.html": [ + "8f5d0f14bbd47b4bdaa26b453a2834bbc4daaae7", + [ + null, + [ + [ + "/css/css-backgrounds/background-image-gradient-interpolation-repaint-ref.html", + "==" + ] + ], + {} + ] + ], "background-image-large-with-auto.html": [ "a5e487b3e12125d25416da4461253ffc4d9b36ea", [ @@ -148321,6 +149181,19 @@ {} ] ], + "table-cell-border-002.html": [ + "9aa05f2acee001b0fea7b8d8105cc5eb99ab90ed", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "table-cell-expansion-001.html": [ "b10d516787ac03841f8720b2d84d2081fe73f52a", [ @@ -151280,7 +152153,7 @@ ] ], "lab-l-over-100-1.html": [ - "7d6e0387700ac3226ed87402c5e26f4e9341e763", + "287eba982456112335f95f9f5d999698dab4287a", [ null, [ @@ -151293,7 +152166,7 @@ ] ], "lab-l-over-100-2.html": [ - "6674c41ae9667c7f30ce1e7b743abb21e6a398e0", + "e85d289d21fa0b3269b7bfb3ab22f810c79547fe", [ null, [ @@ -151591,6 +152464,32 @@ {} ] ], + "oklab-l-over-1-1.html": [ + "612fe32acb1a8314aca1fff850080edd9e77107b", + [ + null, + [ + [ + "/css/css-color/oklab-l-over-1-ref.html", + "==" + ] + ], + {} + ] + ], + "oklab-l-over-1-2.html": [ + "11948f014bfd279daced1c65571cb9aacd228413", + [ + null, + [ + [ + "/css/css-color/oklab-l-over-1-ref.html", + "==" + ] + ], + {} + ] + ], "oklch-001.html": [ "f32b7fe888b304576790175a0f7e6b5bbe45b354", [ @@ -180481,6 +181380,19 @@ {} ] ], + "font-palette-non-ident-font-family.html": [ + "8d6ec751a3f9f0797205e7d0fd4881a785e5aa3b", + [ + null, + [ + [ + "/css/css-fonts/font-palette-non-ident-font-family-ref.html", + "==" + ] + ], + {} + ] + ], "font-palette-remove-2.html": [ "2cdb070a2cd38561c5ee6ec54f42605fbe38feb9", [ @@ -180638,7 +181550,7 @@ ] ], "font-size-adjust-012.html": [ - "4263495427609a854543b85787b906cba1f0e7b4", + "450a5517fb7177546c46cde99b12bfb6db59cb55", [ null, [ @@ -180651,7 +181563,7 @@ ] ], "font-size-adjust-013.html": [ - "04e4e10e3815fdfa134da92a211564418e42e585", + "9f404ce3559de805d1409f807cc9d66c29b4463e", [ null, [ @@ -180663,6 +181575,19 @@ {} ] ], + "font-size-adjust-014.html": [ + "a6e87ff0edbd422cfc181bfbe26830802535b2e2", + [ + null, + [ + [ + "/css/css-fonts/font-size-adjust-014-ref.html", + "==" + ] + ], + {} + ] + ], "font-size-adjust-metrics-override.html": [ "b7787b93073ac2b287170ca4262f8c4ebcd527db", [ @@ -191811,6 +192736,19 @@ {} ] ], + "percentage-track-sizing.html": [ + "3e62f19a0a3bfb9397b3c1da94ebd2dcdee2ba0c", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "placement-implicit-001.html": [ "738b83f4823c3245893864eecf9983e03c90ac3f", [ @@ -192789,6 +193727,19 @@ {} ] ], + "custom-highlight-painting-prioritization-003.html": [ + "1c7abf47493dbef17da60981617031de9da7d8fa", + [ + null, + [ + [ + "/css/css-highlight-api/painting/custom-highlight-painting-prioritization-003-ref.html", + "==" + ] + ], + {} + ] + ], "custom-highlight-painting-staticrange-001.html": [ "ee81bb89d713b6df203b00a0b92d67b2da7800b1", [ @@ -216963,6 +217914,19 @@ {} ] ], + "overlay-transition-dialog.html": [ + "0e1297cce75dc7ac6ee02d1160531fcbf83c04f9", + [ + null, + [ + [ + "/css/css-position/overlay/overlay-transition-dialog-ref.html", + "==" + ] + ], + {} + ] + ], "overlay-transition-finished.html": [ "7e22cb3cf64b9f4840573f35495aa9ed22918f1b", [ @@ -250359,6 +251323,34 @@ ] }, "word-break": { + "auto-phrase": { + "word-break-auto-phrase-intrinsic-001.html": [ + "a16f9fb0b128d41bfb8714f431b2c63b7c9a6d8f", + [ + null, + [ + [ + "/css/css-text/word-break/auto-phrase/word-break-auto-phrase-intrinsic-001-ref.html", + "==" + ] + ], + {} + ] + ], + "word-break-auto-phrase-overflow-001.html": [ + "7677441c9a82c4f6b39037f5f0cbb21d49ed3e68", + [ + null, + [ + [ + "/css/css-text/word-break/auto-phrase/word-break-auto-phrase-overflow-001-ref.html", + "==" + ] + ], + {} + ] + ] + }, "break-boundary-2-chars-001.html": [ "f270766034c8d6751b697d4547a94ca30187b7ff", [ @@ -282831,7 +283823,7 @@ ] ], "capture-with-opacity-zero-child.html": [ - "adcef1b4c5a528481521edc48b53d0f0b9f8c217", + "d76d6a00dfae272c49d27c05e483ed414d8b2c42", [ null, [ @@ -282840,7 +283832,27 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + [ + "/css/css-view-transitions/capture-with-opacity-zero-child.html", + "/css/css-view-transitions/capture-with-visibility-hidden-child-ref.html", + "==" + ], + [ + [ + 0, + 5 + ], + [ + 0, + 300 + ] + ] + ] + ] + } ] ], "capture-with-visibility-hidden-child.html": [ @@ -304934,7 +305946,7 @@ ] ], "offset-path-ray-001.html": [ - "26b3b11c4e25c1d0df8ebf912109e3f9af8ce98a", + "39c10330f4b7c360629322da8a9e2bccc0d6d3ef", [ null, [ @@ -304947,7 +305959,7 @@ ] ], "offset-path-ray-002.html": [ - "7c023657786ba73f9c905ba1290c773a9a39711c", + "4af6394ef2d53d27b14812d2392772f7a1e19f05", [ null, [ @@ -304960,7 +305972,7 @@ ] ], "offset-path-ray-003.html": [ - "4dc27c47823294a7982470b0fed6abb58811460a", + "cbcbd8b3b3f0949dfb352c369f868034515abb27", [ null, [ @@ -304973,7 +305985,7 @@ ] ], "offset-path-ray-004.html": [ - "e6bf08f0a615edb4ed22fd80f7ff43119759c5bb", + "9b6f5befef9372bcd63e47a26a29b170bf09f65a", [ null, [ @@ -304986,7 +305998,7 @@ ] ], "offset-path-ray-005.html": [ - "a1aa8e110ef612127f6fdaf3c0d693df1db772f4", + "26167b6bc1df5a90ef7d8029ddda1a7459ac5a6b", [ null, [ @@ -304999,7 +306011,7 @@ ] ], "offset-path-ray-006.html": [ - "dbbd12bef0dcda91049e079dbbd4d59e0a7301b6", + "d3bea439798687f2c0a31bd8209f600f30af6a34", [ null, [ @@ -305012,7 +306024,7 @@ ] ], "offset-path-ray-007.html": [ - "1e75771f48ed5f3fdffdaf5b7691e0e3f7596fcd", + "7b9ff1e0ebe0eeae5e926b6a7940d5ca7e2f0e0c", [ null, [ @@ -305025,7 +306037,7 @@ ] ], "offset-path-ray-008.html": [ - "97d9cfb274cdc618743561b35d7b90c85978bd03", + "60713924562f9e9fd0c8d8cf83e579fcf3cb0ae9", [ null, [ @@ -305038,7 +306050,7 @@ ] ], "offset-path-ray-009.html": [ - "c4986eb5f3bc91bd2e89654e9cd2c0a6986633a3", + "8cff3136450df241d69f10b0a877f39cfc6a5de8", [ null, [ @@ -305051,7 +306063,7 @@ ] ], "offset-path-ray-010.html": [ - "d10afe1ab158f0f1b195742ab7b1cc9b09bcf43e", + "da0935019b6a75ba8a949139c209824f1f00b75a", [ null, [ @@ -305168,7 +306180,7 @@ ] ], "offset-path-ray-contain-001.html": [ - "ba03f1115f6e782f558fbe4fcca0a89aa795e5fb", + "dc3cb4d52b1f8a036ebae1e7b0b768e38b16bade", [ null, [ @@ -305181,7 +306193,7 @@ ] ], "offset-path-ray-contain-002.html": [ - "db7710cb4386bcee22bd46039deb4b952ae69c40", + "6825c755d5b7dd490571256e18f19f83c345e01c", [ null, [ @@ -305194,7 +306206,7 @@ ] ], "offset-path-ray-contain-003.html": [ - "08705ad9459e82413bf6b08faf8aff96a9495f83", + "a71c8aa73a068ab3a10ec90e66ecacba60bda6a2", [ null, [ @@ -305207,7 +306219,7 @@ ] ], "offset-path-ray-contain-004.html": [ - "d5c5ecf3c7ca741698e9a89ed5396441d0747851", + "0689ccba6f58eb55d698fbab31d33ced23e7f331", [ null, [ @@ -305236,7 +306248,7 @@ ] ], "offset-path-ray-contain-005.html": [ - "fc747027c6c51288bbbaf8623eaa461c823cb7f6", + "6e44f88f811ab83a397768df22d0beee695d5807", [ null, [ @@ -305278,7 +306290,7 @@ ] ], "offset-path-shape-circle-002.html": [ - "672396186a57b8229457439c003aa9d6b1b62f4d", + "74828fe6f4ba20115fef82a5dfccc1d5b65c28db", [ null, [ @@ -305407,7 +306419,7 @@ ] ], "offset-path-shape-ellipse-002.html": [ - "461838aa8899a8326dc18034fd7c530983749cfc", + "fa647a9c2e5c15c8e38800cf1bebabb899c869a1", [ null, [ @@ -305753,7 +306765,7 @@ ] ], "offset-rotate-001.html": [ - "55147698a7f2f02a57f0fe3adc8b33257d1e212f", + "e5b13fe8a9ab5a4db3acf1c6428c951d1a146da6", [ null, [ @@ -305766,7 +306778,7 @@ ] ], "offset-rotate-002.html": [ - "fb301be24efc2aa2e50da0aabe6009553b92b655", + "1edf38d546dff30e855c6d38342107ae10875903", [ null, [ @@ -310818,7 +311830,7 @@ ], "filters": { "2d.filter.canvasFilterObject.dropShadow.tentative.html": [ - "09eb09473d15d30bfd7faa9f20ae4044c13e122c", + "47bb891b3f88cb0253cc646bc1e649bd4907fa06", [ null, [ @@ -310976,7 +311988,7 @@ ] ], "2d.layer.global-states.filter.alpha.blending.html": [ - "6f92e6d33f036aef7fb97eed1e186103a69fcb35", + "17e0f0c8c5bae2d641ae79c798d14efa47694d1c", [ null, [ @@ -310989,7 +312001,7 @@ ] ], "2d.layer.global-states.filter.alpha.blending.shadow.html": [ - "68bdee684d3e03957553ef7c4709db5a9df7dce7", + "ae320702c2f6dc01caaf08c2b7333b13cf913e62", [ null, [ @@ -311002,7 +312014,7 @@ ] ], "2d.layer.global-states.filter.alpha.composite.html": [ - "72282d6559816e3ca6f830692d0dbec9e00e3f59", + "71a27cf710b2586931378f266cf745995af4019b", [ null, [ @@ -311015,7 +312027,7 @@ ] ], "2d.layer.global-states.filter.alpha.composite.shadow.html": [ - "71c99dba353e7ef318ca4c984cf8e0abccf20f8e", + "050bb5f0e3654976ae145f4c63bf5e3417243bda", [ null, [ @@ -311028,7 +312040,7 @@ ] ], "2d.layer.global-states.filter.alpha.html": [ - "9e687bcaf8a31d8ebb42b26a831dea2b45a0eb4a", + "5133aa170e7e843816a6badfb753ac8d514be238", [ null, [ @@ -311041,7 +312053,7 @@ ] ], "2d.layer.global-states.filter.alpha.shadow.html": [ - "a9564c44a7cfe22f256b77a8c41187d28467b8a7", + "97595444db710c3598daee9cc3a56076be6aa93c", [ null, [ @@ -311054,7 +312066,7 @@ ] ], "2d.layer.global-states.filter.blending.html": [ - "a812563398e00719b3fb4ecca581dc56a69135f2", + "31628812c2ea24d77488b39dc1a2305f83220cb2", [ null, [ @@ -311067,7 +312079,7 @@ ] ], "2d.layer.global-states.filter.blending.shadow.html": [ - "bf30126ff2f8ebff98b58a754784f319aaff6599", + "491bdb377b98c635a0ef4e997cd6c4682b90e58d", [ null, [ @@ -311080,7 +312092,7 @@ ] ], "2d.layer.global-states.filter.composite.html": [ - "a2636d85255a56615e1e769bd2d93c7aacc8859c", + "d7e365422f2528c2c40a96c9757e4677c3b090d7", [ null, [ @@ -311093,7 +312105,7 @@ ] ], "2d.layer.global-states.filter.composite.shadow.html": [ - "85b83b59b906e4268d29258eb3f4ebe35728ea64", + "ce9215eeb1cbe1e342e6d6cf79f5b3bfc92af96c", [ null, [ @@ -311106,7 +312118,7 @@ ] ], "2d.layer.global-states.filter.no-global-states.html": [ - "af495b21cd240aeebe4f55a75d6537194d04706d", + "68f4d5004a2974596cd0d7018dc6cf1fedbc03f0", [ null, [ @@ -311119,7 +312131,7 @@ ] ], "2d.layer.global-states.filter.shadow.html": [ - "2c692d6db76ba7f3d30d083ca124b1b203587dd0", + "f7fc309cc0aefbbc82bcf90af0d2865e455d975c", [ null, [ @@ -311171,7 +312183,7 @@ ] ], "2d.layer.render-opportunities.createImageBitmap.html": [ - "4ffcaa3e3c0defe2355eb9c2d8a6886a5c2e097a", + "9b3d79c9f92954af1a067fc561b586e7ddd4448b", [ null, [ @@ -311184,7 +312196,7 @@ ] ], "2d.layer.render-opportunities.drawImage.html": [ - "4eb0b6f721b974e013e18fabc9d283ce2b13d20c", + "ea669f304f26c31469040c1b9192438fd0383fbb", [ null, [ @@ -311197,7 +312209,7 @@ ] ], "2d.layer.render-opportunities.getImageData.html": [ - "3cf514a03f4f626133733245ce297e2def1d3252", + "fce2e368a219824fbd0224cbcefcdd6f3b2cf4b2", [ null, [ @@ -311210,7 +312222,7 @@ ] ], "2d.layer.render-opportunities.putImageData.html": [ - "8da3dafbb7c1d1c16eb357be595bf6c29f7b4a90", + "6a1215dd604e7c08f3c224cc8f62dcce3018b0a7", [ null, [ @@ -311223,7 +312235,7 @@ ] ], "2d.layer.render-opportunities.requestAnimationFrame.html": [ - "889ff5ba09cdf89ec31cc4fbb2d6fb2475a8c552", + "b2b2605123b35e89d8fd555a7e678693ba08188a", [ null, [ @@ -311236,7 +312248,7 @@ ] ], "2d.layer.render-opportunities.toBlob.html": [ - "908730424a8de315866b819f4f7b3a393a3c0abc", + "f3d5fe904ee03e9e371be08eac483d29759d1595", [ null, [ @@ -311249,7 +312261,7 @@ ] ], "2d.layer.render-opportunities.toDataURL.html": [ - "152f66a12b3d7d1d94c752a364f5ec9adaeb0269", + "d9f433344d55896a6a3e269d7a5e072c53c20114", [ null, [ @@ -311262,7 +312274,7 @@ ] ], "2d.layer.reset.html": [ - "aabf74cc4d1dd216f69658b6e6ab97a29eeab3ae", + "dc50ee76c10bf4cb960aacbb6a74e3bd3bdcfef8", [ null, [ @@ -311346,7 +312358,7 @@ ] ], "2d.layer.unclosed.html": [ - "788889ee7ef1ca5fe1b33dd011dafa10e9d141df", + "3d4530860f3dd053258dcbe38a6cfaa4332df1ac", [ null, [ @@ -311892,7 +312904,7 @@ ], "tentative": { "canvas-filter-object-blur.html": [ - "957d73de2fcb649771d92b1770330a3ec56eff3f", + "9fe7ef120c5cc73f3f3bfd1278d9d7dc025f402f", [ null, [ @@ -311905,7 +312917,7 @@ ] ], "canvas-filter-object-component-transfer.html": [ - "76da185d1361f033f26cd050f9d14312ef9958c7", + "47889c0db232207612394bac925ce06e561c3436", [ null, [ @@ -311918,7 +312930,7 @@ ] ], "canvas-filter-object-convolve-matrix.html": [ - "c02f77b7f91873dfbc43c4f430bd7591697f3655", + "1dfd602d13348b778a2c34d1fe719bcd52fea0d4", [ null, [ @@ -311931,7 +312943,7 @@ ] ], "canvas-filter-object-turbulence.html": [ - "8e1eaf54bc9dc58277552f2e46826e75c23aab3c", + "b5b494825e7a714be3326cd052078c9b5c780a92", [ null, [ @@ -311945,7 +312957,7 @@ ], "idl-conversions": { "canvas-filter-boolean-conversion.html": [ - "16c40e4162feeb3dc783da3e9a2261dee94afbaf", + "97ade79f3794e50940598a5f6a56e57a9be5d6c2", [ null, [ @@ -312476,7 +313488,7 @@ "offscreen": { "filters": { "2d.filter.canvasFilterObject.dropShadow.tentative.html": [ - "18af95c1eebf7b52265943e020416d39d020b555", + "81eb1eae453045c01afd3b74d8e72bd00540c684", [ null, [ @@ -312489,7 +313501,7 @@ ] ], "2d.filter.canvasFilterObject.dropShadow.tentative.w.html": [ - "b94424dd9962c16c76533205c59b6ac18eea2707", + "fe9087244a08f47fbdca8bfd9b844abe56bb984a", [ null, [ @@ -312790,7 +313802,7 @@ ] ], "2d.layer.global-states.filter.alpha.blending.html": [ - "bf483ccc9259c0ea7edb9ee0ba365190e227da93", + "be6f962b3371e743a5ca784bc798327e54a8fec5", [ null, [ @@ -312803,7 +313815,7 @@ ] ], "2d.layer.global-states.filter.alpha.blending.shadow.html": [ - "d914a70867fa8899c8cd2ec81d2130e10f84d98f", + "fd6022c85d27016ba023929fdd15447607d8f3e7", [ null, [ @@ -312816,7 +313828,7 @@ ] ], "2d.layer.global-states.filter.alpha.blending.shadow.w.html": [ - "a1acd0d083a4889f95c09e05dc660643ed9c0fd3", + "00237ef3fb1fb05e3a1dc4c50e17648109f2a2b4", [ null, [ @@ -312829,7 +313841,7 @@ ] ], "2d.layer.global-states.filter.alpha.blending.w.html": [ - "47503d5478bb9605f03776c03cf6f6ca057f36a9", + "2b53ad7c1ee4a0498399a8a11a04f2bb238d0548", [ null, [ @@ -312842,7 +313854,7 @@ ] ], "2d.layer.global-states.filter.alpha.composite.html": [ - "7d4f8ecda52d36836f8ed2ed0db5ab4889a05dc0", + "087fea88af8ca3961f1e302642336dcd0bf42af9", [ null, [ @@ -312855,7 +313867,7 @@ ] ], "2d.layer.global-states.filter.alpha.composite.shadow.html": [ - "f75bd251ac4378b0dace8e77a2cd1932a3c0c485", + "069e5ccf98695a42532ba9d8650ba68d9bf15518", [ null, [ @@ -312868,7 +313880,7 @@ ] ], "2d.layer.global-states.filter.alpha.composite.shadow.w.html": [ - "783a04cafbf837b4dc30e2eea562426e2fcd5de9", + "f58292428159dcd47fd3cd7135d130c88644863b", [ null, [ @@ -312881,7 +313893,7 @@ ] ], "2d.layer.global-states.filter.alpha.composite.w.html": [ - "ed8af9a0f1dff1efbf32076bc5d9e90effef3fdf", + "6aa83a32788057e5fc8a3d0643574c3c000c6cac", [ null, [ @@ -312894,7 +313906,7 @@ ] ], "2d.layer.global-states.filter.alpha.html": [ - "4f8954f978c2971a0b168adbd83092f63427a999", + "f1d631c25ce17402b1a58f341f8e7224ce1e04ec", [ null, [ @@ -312907,7 +313919,7 @@ ] ], "2d.layer.global-states.filter.alpha.shadow.html": [ - "0cfa86a0125fcf17661190dc7d1b7621a8008998", + "aaa2e1cfb1ef8cbb8e6571844b844f4259cbf0a3", [ null, [ @@ -312920,7 +313932,7 @@ ] ], "2d.layer.global-states.filter.alpha.shadow.w.html": [ - "015fe946338aa0ee4dd76a093a08eae22bb76e08", + "ff211ec7beb7337385b030f303a3c45beb799e28", [ null, [ @@ -312933,7 +313945,7 @@ ] ], "2d.layer.global-states.filter.alpha.w.html": [ - "4334fd6c1b067acaf3d2e9fbac52d35d54852f82", + "e75d668ad5489cadec9a6405a715bd980d89410a", [ null, [ @@ -312946,7 +313958,7 @@ ] ], "2d.layer.global-states.filter.blending.html": [ - "7f3d1a2cb3c73488cdeda5752de4d53fe582acaf", + "ce2b04679847a2dcdd06e6eabccdc5260ff9b606", [ null, [ @@ -312959,7 +313971,7 @@ ] ], "2d.layer.global-states.filter.blending.shadow.html": [ - "9b9862e57ffa9022f80d9aa6e5ef38fef117e58d", + "57fbca6d3b7b3caafce1db06643f22051c792b91", [ null, [ @@ -312972,7 +313984,7 @@ ] ], "2d.layer.global-states.filter.blending.shadow.w.html": [ - "1d7e74b64eb53aee1139a399e47f685ee2dfe226", + "674c177bc8fdc34953a122579ed903c3715b672d", [ null, [ @@ -312985,7 +313997,7 @@ ] ], "2d.layer.global-states.filter.blending.w.html": [ - "f5ccee1d858b5931063c7f9fde4d2a0a713136fc", + "bb101cdc0b129ded926b014f9bf7595eba547361", [ null, [ @@ -312998,7 +314010,7 @@ ] ], "2d.layer.global-states.filter.composite.html": [ - "2e8272b2bfa963d25937e14c4892b0e764a7deed", + "32052a11501489c80d2141c57f4be67af68f68ab", [ null, [ @@ -313011,7 +314023,7 @@ ] ], "2d.layer.global-states.filter.composite.shadow.html": [ - "077041a29400d15a867258a6c895309c2d592539", + "0cc84d92cbddc4dda4568e89eb8bc8cc7ec3755a", [ null, [ @@ -313024,7 +314036,7 @@ ] ], "2d.layer.global-states.filter.composite.shadow.w.html": [ - "b162354da44529283e62056500ff0d0e9e008b12", + "cddcc3cdd7d23f6038682a81c44d70fec7ca1f26", [ null, [ @@ -313037,7 +314049,7 @@ ] ], "2d.layer.global-states.filter.composite.w.html": [ - "b4158392660152977a246cb84593f253bbc15ecd", + "41ccdaf5c0d313f52647df20cd2164d2c1ebb450", [ null, [ @@ -313050,7 +314062,7 @@ ] ], "2d.layer.global-states.filter.no-global-states.html": [ - "ccae63a26ab5682ad02897017d6e8dc3c1302b59", + "3effa3ee9dd403a55995e44ddafd2052d74f89ee", [ null, [ @@ -313063,7 +314075,7 @@ ] ], "2d.layer.global-states.filter.no-global-states.w.html": [ - "6ce768ad2678c701e6c53503d6eac169287639fe", + "ec744d7ffe7955a54f42f9330d2d3b2d75d90e6f", [ null, [ @@ -313076,7 +314088,7 @@ ] ], "2d.layer.global-states.filter.shadow.html": [ - "9a20e39fd5a22853717fbb91faab13e5eea12ca5", + "5780181a3f28bf9169b45934fd147caabb3c34e0", [ null, [ @@ -313089,7 +314101,7 @@ ] ], "2d.layer.global-states.filter.shadow.w.html": [ - "26bdf7558762db5139631eee06dcaf4865b19b05", + "99ea29b5dc503d7c1f1775e26c4d79db0a3af1c2", [ null, [ @@ -313180,7 +314192,7 @@ ] ], "2d.layer.render-opportunities.convertToBlob.html": [ - "c1a139a3de8db540284dd7100f11232ccc9aed10", + "c9367532018adffa4cfe38f4d5e3789ebbee2522", [ null, [ @@ -313193,7 +314205,7 @@ ] ], "2d.layer.render-opportunities.convertToBlob.w.html": [ - "404fef3ad6a597ed99a1a66be6e3ff5264644d02", + "c1f9c1e2c0b4412bf905c431c0c41b7f408d12c2", [ null, [ @@ -313206,7 +314218,7 @@ ] ], "2d.layer.render-opportunities.createImageBitmap.html": [ - "876b027170edc6d2021dd233299b4256c73b9a92", + "1523f9f3bb0108f583291d85709e2071495cf679", [ null, [ @@ -313219,7 +314231,7 @@ ] ], "2d.layer.render-opportunities.createImageBitmap.w.html": [ - "9a89492e399222bc9252ec92c3336098dc07e070", + "600287782b135e16ae6035c4a83316274b75bcaa", [ null, [ @@ -313232,7 +314244,7 @@ ] ], "2d.layer.render-opportunities.drawImage.html": [ - "dd178206073801c5e0eafda4abc39f25ef4bac71", + "d7eae8ddd7dfe7307a03ab1f356c97b2035ba7aa", [ null, [ @@ -313245,7 +314257,7 @@ ] ], "2d.layer.render-opportunities.drawImage.w.html": [ - "80fbfbd272ed7ee29497f6a6989a94113c07f5ca", + "457e84d56e00890ff5e43336466119477154bbb5", [ null, [ @@ -313258,7 +314270,7 @@ ] ], "2d.layer.render-opportunities.getImageData.html": [ - "b6f3c1b5626ffb0f7e75eaadea73651baf3b48de", + "fe29b4be1a51c430c5c0afdd56ee69e13fe89dcd", [ null, [ @@ -313271,7 +314283,7 @@ ] ], "2d.layer.render-opportunities.getImageData.w.html": [ - "187eb0fce96bff4c105ce154c1b101a24b3095f1", + "9eceff91dafdd5c7850992c900366110c48cb45b", [ null, [ @@ -313284,7 +314296,7 @@ ] ], "2d.layer.render-opportunities.putImageData.html": [ - "b4600156136c3aadb98db5e6a9de4beb54a95a69", + "2caf797db75fb066f412bac9721865d6fc22bb9e", [ null, [ @@ -313297,7 +314309,7 @@ ] ], "2d.layer.render-opportunities.putImageData.w.html": [ - "9ffac071c36b2e2f85280be0ba511c664e0a42e2", + "be9b4fd454da75f4159207502debdb0b94e98686", [ null, [ @@ -313310,7 +314322,7 @@ ] ], "2d.layer.render-opportunities.transferToImageBitmap.html": [ - "27830644b0553d125995a87055b65b752cfd5b41", + "634d9e3a78c1a585c60de3ab5f6609f22b0c2250", [ null, [ @@ -313323,7 +314335,7 @@ ] ], "2d.layer.render-opportunities.transferToImageBitmap.w.html": [ - "06e016020db2ed99a47b1c8c336b168735a973ca", + "823bfac58b09ee27c788ecad09872efb1ab2326b", [ null, [ @@ -313336,7 +314348,7 @@ ] ], "2d.layer.reset.html": [ - "6fae595a84b7ac40ea0f38eed0edc2102024dec0", + "4b2fe6229fea77fe4c0ffc6c14a2bf379170909a", [ null, [ @@ -313349,7 +314361,7 @@ ] ], "2d.layer.reset.w.html": [ - "d050b90841a2fec48142ea0d69d04cd5bb8b3a04", + "710e56bf46b78e8fa9d90e178b77f6f61f25cd51", [ null, [ @@ -313504,7 +314516,7 @@ ] ], "2d.layer.unclosed.html": [ - "689ee801cf27dcb8b61e9e89c5655a31708d689b", + "d2e599b2b99ffa63825295d8880e4aae0f2b49a1", [ null, [ @@ -313517,7 +314529,7 @@ ] ], "2d.layer.unclosed.w.html": [ - "0c7812e88c7bd34d18ebee8c8730547a4295fe30", + "830dea7e3d1165dd3c6d236448a48779aca794f8", [ null, [ @@ -317549,6 +318561,32 @@ {} ] ], + "details-display-type-001-ref.html": [ + "925ee19f775fd07ac6e679598329d05f609e5335", + [ + null, + [ + [ + "/html/rendering/the-details-element/details-display-type-001-ref2.html", + "==" + ] + ], + {} + ] + ], + "details-display-type-001.tentative.html": [ + "81641355187ae465a02a775b274f7a7903e5d172", + [ + null, + [ + [ + "/html/rendering/the-details-element/details-display-type-001-ref.html", + "==" + ] + ], + {} + ] + ], "details-revert.html": [ "760cc8281e820d2ef256eb22d88d7aa8f090b821", [ @@ -319037,6 +320075,19 @@ {} ] ], + "selectmenu-font-size.tentative.html": [ + "4a4d129cb94e5518f8b08c616184797312ed70af", + [ + null, + [ + [ + "/html/semantics/forms/the-selectmenu-element/selectmenu-font-size-ref.tentative.html", + "==" + ] + ], + {} + ] + ], "selectmenu-marker-end-aligned.tentative.html": [ "a419108e3d2fdd93a1e1d1508a0aa3311fda3a8a", [ @@ -319128,6 +320179,19 @@ {} ] ], + "selectmenu-rtl.tentative.html": [ + "90c06c93d76ef99c3a0e0ee04093f8e8d5147d2b", + [ + null, + [ + [ + "/html/semantics/forms/the-selectmenu-element/selectmenu-rtl-ref.tentative.html", + "==" + ] + ], + {} + ] + ], "selectmenu-selected-value-behavior.tentative.html": [ "799b445114120284e67498c650bb4951496478c2", [ @@ -319899,7 +320963,7 @@ ] ], "modal-dialog-backdrop-opacity.html": [ - "d8356c7837e5a5f8966128a806237b88f5305ac5", + "09c31ce2af95a4fde0024605cc1cdb4453e7d476", [ null, [ @@ -322099,6 +323163,19 @@ {} ] ], + "direction-mpadded.html": [ + "772535171d563634a2928499a3ede212ffb1513a", + [ + null, + [ + [ + "/mathml/presentation-markup/direction/direction-mpadded-ref.html", + "==" + ] + ], + {} + ] + ], "direction-overall.html": [ "6effb94c54b21d09efd29da7c2cb85c1173debf9", [ @@ -322297,7 +323374,7 @@ ] ], "frac-linethickness-001.html": [ - "918d4aba6e690d4548cc1c4aa7e44e9625afb93e", + "99f751026399f5eb9b7ea799dcecf634283a3da2", [ null, [ @@ -322551,6 +323628,227 @@ ] }, "operators": { + "embellished-op-1-2.html": [ + "f8bfb26d4e9ba7af2942733461c40c54ec54165a", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-1-2-ref.html", + "!=" + ] + ], + {} + ] + ], + "embellished-op-1-3.html": [ + "85a21cc50b9809594d5f0c60c0b8bfbee89e14a8", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-1-3-ref.html", + "!=" + ] + ], + {} + ] + ], + "embellished-op-1-4.html": [ + "b6c41256e88847410c85fd1a4d720c515af5cf94", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-1-4-ref.html", + "!=" + ] + ], + {} + ] + ], + "embellished-op-1-5.html": [ + "1623991c79538bfe01b14dd01bac8d4674809665", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-1-5-ref.html", + "!=" + ] + ], + {} + ] + ], + "embellished-op-2-1.html": [ + "a43f65e00e0adea5f73f35703ac2790f3e7be95d", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-2-1-ref.html", + "!=" + ] + ], + {} + ] + ], + "embellished-op-2-2.html": [ + "108353dcb3a4762ba40ed6bf7f45c9c6c3757f99", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-2-2-ref.html", + "!=" + ] + ], + {} + ] + ], + "embellished-op-2-3.html": [ + "e72cb68be309e31a30075f71f551e71429dcc85d", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-2-3-ref.html", + "!=" + ] + ], + {} + ] + ], + "embellished-op-2-4.html": [ + "7e60d5370b7b7b0f0b8a79395c0fd863817e553a", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-2-4-ref.html", + "!=" + ] + ], + {} + ] + ], + "embellished-op-3-2.html": [ + "ff7b1020cbb3e6d7fca9177fdcf06efad37af2d3", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-3-2-ref.html", + "!=" + ] + ], + {} + ] + ], + "embellished-op-3-3.html": [ + "84dec135cac7321e444b2279172310749da79236", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-3-3-ref.html", + "!=" + ] + ], + {} + ] + ], + "embellished-op-3-4.html": [ + "648b0028f462b64d3c5962430b35a45ed463c980", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-3-4-ref.html", + "!=" + ] + ], + {} + ] + ], + "embellished-op-3-5.html": [ + "b6d032a589d8d318e414f6ce9dc6962896c59118", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-3-5-ref.html", + "!=" + ] + ], + {} + ] + ], + "embellished-op-4-1.html": [ + "724d39ceab0ba9a372242ab2ba9874ae0e2b0f2f", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-4-1-ref.html", + "==" + ] + ], + {} + ] + ], + "embellished-op-4-2.html": [ + "1a3724cb9d42d00aca5d23be4cbee4f89b0baa56", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-4-2-ref.html", + "==" + ] + ], + {} + ] + ], + "embellished-op-4-3.html": [ + "1be87b81dd2bebd8262ad544fd8d80f6e26f69ee", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-4-3-ref.html", + "==" + ] + ], + {} + ] + ], + "embellished-op-5-1.html": [ + "946bda0dc718730b0cb26a6514f8575c95c53658", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-5-ref.html", + "==" + ] + ], + {} + ] + ], + "embellished-op-5-2.html": [ + "95bd2694a5070186080ba6cd327fef768d932522", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/embellished-op-5-ref.html", + "==" + ] + ], + {} + ] + ], "embellished-operator-dynamic-001.html": [ "09a7fe412a4ecc291c16e81a5c31ca1a35b7baf8", [ @@ -322564,6 +323862,19 @@ {} ] ], + "mo-dynamic-mozilla-347348.xhtml": [ + "a8471e116a5c2fc249c521c65de9b9487e4734ea", + [ + null, + [ + [ + "/mathml/presentation-markup/operators/mo-dynamic-mozilla-347348-ref.xhtml", + "==" + ] + ], + {} + ] + ], "mo-form-dynamic-002.html": [ "862fc36a20c9876e96e273c1544462a953bc321d", [ @@ -323101,6 +324412,344 @@ {} ] ], + "stretchy-mover-1a.html": [ + "8a87c2387f935361a6330d01676f74854b71bc88", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-mover-1-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-mover-1b.html": [ + "da351235135876de6439bf69324bebc503d31efe", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-mover-1-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-mover-2a.html": [ + "87738363cd3ab941b12a8d53806a85d48860d700", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-mover-2-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-mover-2b.html": [ + "6f44ffe17da159492d7eba3e250ad04ca9b8c1d7", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-mover-2-ref.html", + "!=" + ] + ], + {} + ] + ], + "stretchy-mover-3.html": [ + "9becf31d14ca5c40df2cb3caae07a80ead52f1cb", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-mover-3-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-msup-1a.html": [ + "1abf64aad6ea7034300f99383bb5cf312a846b87", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-msup-1-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-msup-1b.html": [ + "c6e0a8aaabcbdaf76ef56632b61d3d0a2cbcc87b", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-msup-1-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-msup-1c.html": [ + "056000566ac832e7e90e9da99980f04c49e72974", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-msup-1-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-msup-1d.html": [ + "a1ac5772f25bd49ed7e22afedc2bcdac3de892c9", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-msup-1-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-1a.html": [ + "0dfd5ad40bbeb4208495a6ffce65c6e1b375db77", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-1-ref.html", + "!=" + ] + ], + {} + ] + ], + "stretchy-munderover-1b.html": [ + "f4a2c67c58ad813670dd7f8c235f6429709e369a", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-1-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-1c.html": [ + "6430545794a692d877c88244c4523e6d6148ae7f", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-1-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-1d.html": [ + "d2345c5f14427d74def57b5d5a6ce116a11b8b23", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-1-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-1e.html": [ + "ba959a58790ff59cf59e3a0d29182e599ff8d631", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-1-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-2a.html": [ + "54aea8d7c9a61d17046e96f526c487b0cfa06c41", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-2-ref.html", + "!=" + ] + ], + {} + ] + ], + "stretchy-munderover-2b.html": [ + "6420f01dd7ae1dce9f8fae9b0d42b97a8e459f9a", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-2-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-2c.html": [ + "3a77e78078a51e0defef6bf71cdb00f133940add", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-2-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-2d.html": [ + "30a7ca2e728a4bbaa1d41afa15826fa99aedbac2", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-2-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-2e.html": [ + "199c101b6ae592a416fcd4cc2863c6fb5960bf31", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-2-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-2f.html": [ + "5b736fda0a87d4ee1e05592b769344842f0a4448", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-2-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-2g.html": [ + "11cca42de141299c36026669a8318c4c41ad558d", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-2-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-3a.html": [ + "dd41c82def591351b4c5f8e2607a938a95fbc5e7", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-3-ref.html", + "!=" + ] + ], + {} + ] + ], + "stretchy-munderover-3b.html": [ + "b4619bfef90ff4441f1e64c075a7794b97ba5bb3", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-3-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-3c.html": [ + "004349f831941e0367a89c0a22ceb773f38395b8", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-3-ref.html", + "==" + ] + ], + {} + ] + ], + "stretchy-munderover-3d.html": [ + "e5cf01f23e19833edf2a431ee8914b076c4dfd41", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/stretchy-munderover-3-ref.html", + "!=" + ] + ], + {} + ] + ], + "sub-vs-sup-mozilla-345563.xhtml": [ + "5c8d78952f00530b6e853e33a1870992f2d405c9", + [ + null, + [ + [ + "/mathml/presentation-markup/scripts/sub-vs-sup-mozilla-345563-ref.xhtml", + "!=" + ] + ], + {} + ] + ], "subsup-legacy-scriptshift-attributes-001.tentative.html": [ "2f29db401db1370b3a8de2a7ab669181ac6d7cc1", [ @@ -323377,9 +325026,48 @@ ], {} ] + ], + "dynamic-rowspan-mozilla-370692.xhtml": [ + "e16326b1aa9b9005682030ebfc5b1c58a0b1adaf", + [ + null, + [ + [ + "/mathml/presentation-markup/tables/dynamic-rowspan-mozilla-370692-ref.xhtml", + "==" + ] + ], + {} + ] ] }, "tokens": { + "dynamic-mi-mozilla-409125.xhtml": [ + "35b9951dcbc7d97e2f62dd4a917581b522a208ba", + [ + null, + [ + [ + "/mathml/presentation-markup/tokens/dynamic-mi-mozilla-409125-ref.xhtml", + "==" + ] + ], + {} + ] + ], + "dynamic-mi-mozilla-414123.xhtml": [ + "b2d7e2d1667b09d366da0a250e27e66b3b892f82", + [ + null, + [ + [ + "/mathml/presentation-markup/tokens/dynamic-mi-mozilla-414123-ref.xhtml", + "==" + ] + ], + {} + ] + ], "dynamic-mtext-like-001.html": [ "8e42f7fa1797a0429dae47be4859d5c828c9f015", [ @@ -323393,6 +325081,32 @@ {} ] ], + "mi-mathvariant-1.xhtml": [ + "04fe19194ee430cf38f044322f52a39e3355607c", + [ + null, + [ + [ + "/mathml/presentation-markup/tokens/mi-mathvariant-1-ref.xhtml", + "==" + ] + ], + {} + ] + ], + "mi-mathvariant-2.xhtml": [ + "e83a24c5d34a63ff7db2bf1f9868b96bddf6de39", + [ + null, + [ + [ + "/mathml/presentation-markup/tokens/mi-mathvariant-2-ref.xhtml", + "==" + ] + ], + {} + ] + ], "ms-001.html": [ "abac0c8b2ea3ee1a95057a8d8648440f3858bf84", [ @@ -323880,6 +325594,32 @@ {} ] ], + "mozilla-393760-1.xml": [ + "cc2e725f92ae38c4608a195a7b76ac985aee0ba9", + [ + null, + [ + [ + "/mathml/relations/css-styling/mozilla-393760-1-ref.xml", + "==" + ] + ], + {} + ] + ], + "mozilla-393760-2.xml": [ + "c6ebcb5eceea74d5333ebee823e4f53337805508", + [ + null, + [ + [ + "/mathml/relations/css-styling/mozilla-393760-2-ref.xml", + "==" + ] + ], + {} + ] + ], "out-of-flow": { "absolutely-positioned-001.html": [ "9a7851ba239574c3892cda5827cbf4f69d495891", @@ -323975,6 +325715,58 @@ {} ] ], + "table-width-1.xhtml": [ + "c3689adb6f2549e17112d4a328c182dfedfec5b8", + [ + null, + [ + [ + "/mathml/relations/css-styling/table-width-1-ref.xhtml", + "==" + ] + ], + {} + ] + ], + "table-width-2.html": [ + "533a9324b4e4a26f52754c81b7cc3d14919df0c7", + [ + null, + [ + [ + "/mathml/relations/css-styling/table-width-2-ref.html", + "==" + ] + ], + {} + ] + ], + "table-width-3.html": [ + "4847ce430456ef3e60d85c76ac3640c85977525a", + [ + null, + [ + [ + "/mathml/relations/css-styling/table-width-3-ref.html", + "==" + ] + ], + {} + ] + ], + "table-width-4.html": [ + "4a88b84cb2a6e11dd5682b5c3c51abf85a69ea03", + [ + null, + [ + [ + "/mathml/relations/css-styling/table-width-4-ref.html", + "==" + ] + ], + {} + ] + ], "transform.html": [ "c45fda3469b56cf7b0e2fcee9c434e3a5401817a", [ @@ -324174,6 +325966,19 @@ {} ] ], + "dynamic-mozilla-162063.xhtml": [ + "73bb25fd6f6979f5453b7b6c42d11356add5520e", + [ + null, + [ + [ + "about:blank", + "==" + ] + ], + {} + ] + ], "href-click-1.html": [ "c3e605cb72716636ca845cacc820471016992d45", [ @@ -324252,6 +326057,19 @@ {} ] ], + "shadow-dom-mozilla-1066554.html": [ + "563ceb29e50016e04ce2270ecb26344b6a2f26da", + [ + null, + [ + [ + "/mathml/relations/html5-tree/shadow-dom-mozilla-1066554-ref.html", + "==" + ] + ], + {} + ] + ], "unique-identifier-1.html": [ "f5de2757c313a1788c78adcfb04da0b6b6e9ab28", [ @@ -324280,6 +326098,19 @@ ] }, "text-and-math": { + "mi-automatic-italic-with-default-font.html": [ + "501992141076b76b994db5ad9d89819ef91c7ecb", + [ + null, + [ + [ + "/mathml/relations/text-and-math/mi-automatic-italic-with-default-font-ref.html", + "!=" + ] + ], + {} + ] + ], "use-typo-metrics-1.html": [ "1af8fdfde16ae9ec3d85aa7abf325536baed31f7", [ @@ -336119,7 +337950,7 @@ ], "resources": { "helpers.js": [ - "08da0496b3091e9628c577bee20b81da44e6f57b", + "de6433656921d293ac076efe135dcaeb811c8d02", [] ] } @@ -336654,7 +338485,7 @@ }, "compute-pressure": { "README.md": [ - "05bacb7f16db124a998a98ce242775fae91078bd", + "7695c4a33e328a01434196d5fa19af84e04bc57b", [] ], "permissions-policy": { @@ -357361,7 +359192,7 @@ ] }, "fedcm-helper.sub.js": [ - "e548e8e9c9d4d6aa53114368770455420e66f9d4", + "0acb84010b135010d5a3f9d87117a7dee7aefa42", [] ], "fedcm-iframe-level2.html": [ @@ -357369,7 +359200,7 @@ [] ], "fedcm-iframe.html": [ - "f830b4f9124ce9f0f37e98423bd1fbe85ae0a99e", + "ba79c4cf9e955672d94450143dff091a6691a0e2", [] ], "fedcm-mock.js": [ @@ -376458,6 +378289,10 @@ "43e0d1c0652dd9549416c1e4442e2d426a059289", [] ], + "background-image-gradient-interpolation-repaint-ref.html": [ + "a69159609b1ec8040f144c5878e3830a1fc05652", + [] + ], "background-image-shared-stylesheet-ref.html": [ "31d508751a8aa8759920c832b0aae41e0df695be", [] @@ -378998,6 +380833,10 @@ "c71e428aa2a88250fa5a09304885143fe6b9ae29", [] ], + "oklab-l-over-1-ref.html": [ + "eb380dcb750e6fe1eb2a329544dc960cc4b6d891", + [] + ], "oklch-004-ref.html": [ "58117583ee0a2aca2477b210c49dc339fdbe51fa", [] @@ -384482,6 +386321,10 @@ "170cd8baaf88edb1b988df7d758332201e3ec345", [] ], + "font-palette-non-ident-font-family-ref.html": [ + "42915d3a5f5195dd509807cf8bec35c9f4da0995", + [] + ], "font-palette-ref.html": [ "79b3299f758eea095084b8a1e1aa87afeef7ec4f", [] @@ -384507,11 +386350,15 @@ [] ], "font-size-adjust-012-ref.html": [ - "e60769737dadae2e1debd15339a53a1d6860fdd5", + "ac93186a23c74af801aa9d4a8bf75440f4e2e5ce", [] ], "font-size-adjust-013-ref.html": [ - "ad336b943baaef32a4b0e3efc69cca0dceae34f7", + "61b3ae355b73e00ab28598464566f8208876241b", + [] + ], + "font-size-adjust-014-ref.html": [ + "be552aade1b898ed6a803499afdcd9305678a5c5", [] ], "font-size-adjust-metrics-override-ref.html": [ @@ -385024,6 +386871,12 @@ "9b2b10ca280a2cb53215a68b89628ea182979dae", [] ], + "parsing": { + "ahem-ex-500.otf": [ + "9966da1929c09a29a7f69148b988764ad1a44795", + [] + ] + }, "quoted-generic-ignored-ref.html": [ "70e2d50cd83f61017f0f22da14065c7afa76e1d1", [] @@ -393197,6 +395050,10 @@ "2907681b75a7e4f6e446b113d3862ab72113c51f", [] ], + "custom-highlight-painting-prioritization-003-ref.html": [ + "9d3e3b00b08dd3242be7f5b180a5505aeb26354b", + [] + ], "custom-highlight-painting-staticrange-001-ref.html": [ "a89d86dc819c3235846a83a49b58755459098ace", [] @@ -397376,6 +399233,182 @@ "2f9e29e2787e8c41d0a9ebe1df8342a6c52a01a8", [] ], + "layers-001-print-ref.html": [ + "b2dae651d55cc82ae7363c69df416dc5abc9468e", + [] + ], + "layers-002-print-ref.html": [ + "b8b5fc1d152025a72bfc07f54bd1559b2129d389", + [] + ], + "layers-003-print-ref.html": [ + "70e43fb6f50a4f0f7f8943e35c6ad3019a9e8e75", + [] + ], + "layers-004-print-ref.html": [ + "a779b263c7d2d9a4be7109431798d86844694a51", + [] + ], + "page-name-abspos-001-print-ref.html": [ + "dc61a550780bf76cab4d964041db37e187f41bb6", + [] + ], + "page-name-abspos-002-print-ref.html": [ + "c93ee0a31df069abadfbd8c6431b40042f14c240", + [] + ], + "page-name-abspos-003-print-ref.html": [ + "d920fd974a8543ba72ff2d63876735502b3aa6fd", + [] + ], + "page-name-canvas-001-print-ref.html": [ + "245b1c5bdd1042faf1a478a5b68db6737efc86cb", + [] + ], + "page-name-canvas-002-print-ref.html": [ + "76c3f718cd9fb8cb0c086e55dfb395b8a0409af6", + [] + ], + "page-name-canvas-003-print-ref.html": [ + "2aaa9915fa01eccc78a65e2613e958e167a2526c", + [] + ], + "page-name-canvas-004-print-ref.html": [ + "26a5072789b1ad9d80b5e43e7d927ac9f20150ea", + [] + ], + "page-name-display-none-child-print-ref.html": [ + "b7044e0776a8212b84a64e85f7e703e9a5010f4a", + [] + ], + "page-name-fixed-pos-001-print-ref.html": [ + "5c1e91ea85823339ba30fafb8863391090ba9f4c", + [] + ], + "page-name-flex-001-print-ref.html": [ + "8cd606f8040a94d13ed80edbd11ddae376307bea", + [] + ], + "page-name-flex-002-print-ref.html": [ + "dbd9bca9ebf89fc6cfce4a1f15502629b088e573", + [] + ], + "page-name-flex-003-print-ref.html": [ + "6d33db527bc931e907c446518a667600c7b3969e", + [] + ], + "page-name-flex-004-print-ref.html": [ + "85524dfb22a353bde52bfa9c58f36fc7d7a6d71f", + [] + ], + "page-name-float-001-print-ref.html": [ + "15ae3b76eba4f75ec16f314fb007e6bb135f81ec", + [] + ], + "page-name-float-002-print-ref.html": [ + "e703746e558d255887d8edb3d21b565cce4a8ea4", + [] + ], + "page-name-img-001-print-ref.html": [ + "0a51da3948ada730f054f2d026b22d5bf53cc6b3", + [] + ], + "page-name-img-002-print-ref.html": [ + "83cf77bf71ce2fca872ae6003480d658c7c5f600", + [] + ], + "page-name-img-003-print-ref.html": [ + "43a7cc43be13fe811bff41b642089c75c16923ee", + [] + ], + "page-name-img-004-print-ref.html": [ + "fe55758bc017157aa112a252129fd25ae672b581", + [] + ], + "page-name-inline-block-001-print-ref.html": [ + "ffcf2c8964f207117578a183304dac8441ee774c", + [] + ], + "page-name-inline-block-002-print-ref.html": [ + "0cbd721e4cfdd694ee0d452b54e50751c71840e8", + [] + ], + "page-name-inline-block-003-print-ref.html": [ + "35db44b14e12fb1911d95b5034205cedbcba7e59", + [] + ], + "page-name-margin-001-print-ref.html": [ + "60726e6e15454340ac99b39db513c678516f8182", + [] + ], + "page-name-margin-002-print-ref.html": [ + "0e28b4c8b601d8fe657cb1f9cde0c7dd40100777", + [] + ], + "page-name-orthogonal-writing-001-print-ref.html": [ + "60218fbb471887ffb9c1a74b960a52baf1314f61", + [] + ], + "page-name-orthogonal-writing-002-print-ref.html": [ + "176d5abda5eddad17ce5cd67dd8815719a340532", + [] + ], + "page-name-orthogonal-writing-003-print-ref.html": [ + "cae1f8d7d31068880034e72c15f4d250cbb67759", + [] + ], + "page-name-orthogonal-writing-004-print-ref.html": [ + "6d69497386ba4ff5d4f00c35b379eebe52ffce19", + [] + ], + "page-name-propagated-001-print-ref.html": [ + "7cd7b54c231924ab377290d546cdec93a22c9b4e", + [] + ], + "page-name-propagated-002-print-ref.html": [ + "d4191ae70c9dcd3e250c1db95a3b19f0179ecb92", + [] + ], + "page-name-propagated-003-print-ref.html": [ + "2394a1d093627e03c4d268b22b31411951b619dd", + [] + ], + "page-name-propagated-004-print-ref.html": [ + "c405886644abd9ddaa76ef1297626fa7471e4687", + [] + ], + "page-name-propagated-005-print-ref.html": [ + "05cad793c72ece3869082d646137b07ae78a4c15", + [] + ], + "page-name-propagated-006-print-ref.html": [ + "5b45ace9fe5298c716090ccb3a01709bbe2e5096", + [] + ], + "page-name-propagated-007-print-ref.html": [ + "f51d28a574d5328bed3789daaff05e9d0a55bd52", + [] + ], + "page-name-propagated-008-print-ref.html": [ + "dd53a0586a4415ccac9b0e2494fb8dca004d1f50", + [] + ], + "page-name-propagated-009-print-ref.html": [ + "5faa6ea5c94635663e9402c2ff44a2192ba3b6df", + [] + ], + "page-name-siblings-print-ref.html": [ + "fefe86d8b798c7e3fa640d3324adde51ce45cd69", + [] + ], + "page-name-zero-height-001-print-ref.html": [ + "e78cb65df988abff25061a58d96f2ce2525248f7", + [] + ], + "pseudo-first-margin-print-ref.html": [ + "a9c11c23f84d9d583b7f84e986088b7be58f7d2d", + [] + ], "support": { "1x1-green.png": [ "b98ca0ba0a03c580ac339e4a3653539cfa8edc71", @@ -397816,6 +399849,10 @@ "green-ref.html": [ "bef7405e96f8181f88fb073ebd212b4af6382e33", [] + ], + "overlay-transition-dialog-ref.html": [ + "b0b8d52e78e9ee26303f49976b00193d46bed7a1", + [] ] }, "position-absolute-iframe-print-ref.html": [ @@ -399331,6 +401368,24 @@ "13bb0e91ba7d6ecf2804c50b77772c68a42f897e", [] ] + }, + "scroll-start-target": { + "scroll-start-target-with-anchor-navigation-inner-frame.html": [ + "bea0525ecd418128f8fd0b5b20033cbe158fdd60", + [] + ], + "scroll-start-target-with-hash-fragment-navigation-inner-frame.html": [ + "9bf77363d3e60d2d8f4a6d33c4d053aedcd59239", + [] + ], + "scroll-start-target-with-text-fragment-navigation-target.html": [ + "da53e7a566d1424a38a7a33ebc5e0be4a5271744", + [] + ], + "stash.py": [ + "3c65e2b59b3e54f670929ba22a5a21591753dbe9", + [] + ] } }, "css-scrollbars": { @@ -404751,6 +406806,16 @@ } }, "word-break": { + "auto-phrase": { + "word-break-auto-phrase-intrinsic-001-ref.html": [ + "52a743910aa8f28757439111f9de47818d2c06c0", + [] + ], + "word-break-auto-phrase-overflow-001-ref.html": [ + "d75b50d05d88d3c1d88bf9bcfa192072e0587bfe", + [] + ] + }, "reference": { "break-boundary-2-chars-001-ref.html": [ "e0702afce52b2cc3eadbdc200e91180239e8a6b1", @@ -413988,6 +416053,10 @@ "fb5255eddb1cdbdc1b9b610a7813b977d822b7b9", [] ], + "media-queries-001-print-ref.html": [ + "35af04dc3c45b06a092d11569227a9a7014c2068", + [] + ], "monolithic-overflow-001-print-ref.html": [ "9edc5d9ed0d97d40f734396ff54fe6fc69b0492b", [] @@ -414036,6 +416105,26 @@ "112b1ebdccf07881e49c9420cc0f214861126d30", [] ], + "monolithic-overflow-022-print-ref.html": [ + "64572dd6392d79e6bda89e64f8e8f58e08898dc0", + [] + ], + "no-resize-event-ref.html": [ + "1fc00e7e39cd7ed8766df397429c5fef675e244e", + [] + ], + "page-margin-001-print-ref.html": [ + "12ebd76dc91cc2fe9d8991a758085e29eab4d5ec", + [] + ], + "page-margin-002-print-ref.html": [ + "2b56504855863876c308673fa852b41952cc09df", + [] + ], + "page-margin-003-print-ref.html": [ + "52bf73609089087e0310c8a5d0453f88be9d3617", + [] + ], "page-name-001-print-ref.html": [ "69c5c37b5a3cc4ed47fab1f8105e5f2351e2d07b", [] @@ -414060,6 +416149,30 @@ "38ea1508781e6313e9102bf4c307f91b290df4c4", [] ], + "page-size-004-print-ref.html": [ + "0468a745b23855dade0883fd55d8a366e9a621a9", + [] + ], + "page-size-005-print-ref.html": [ + "c2e07daa295c7d0c3337506c4f7dbf817259bfaa", + [] + ], + "page-size-006-print-ref.html": [ + "7167da2ac2681d24dddcf991c3d1c541db2f6788", + [] + ], + "page-size-007-print-ref.html": [ + "9498e2c17b24f3b3f9308f9be6f87e2991d536f6", + [] + ], + "page-size-008-print-ref.html": [ + "f50ad3531e4be209c7858adc238c9d24cc767672", + [] + ], + "page-size-009-print-ref.html": [ + "86ffa278c9306e5a8ddcb8eeb02147dc01c7a266", + [] + ], "paused-animations-print-ref.html": [ "c22ecd174585100fd5faae8402f5a6e141b8264e", [] @@ -415816,7 +417929,7 @@ [] ], "scrollend-user-scroll-common.js": [ - "4bf8f927ff2d7250326b75207831b1aa1e3975b9", + "34af4ce921e72386491149f0f47f754481a3cf3e", [] ] } @@ -418704,28 +420817,12 @@ "6247f6d63211cd39dffca9fc507aefcdee586eba", [] ], - "fledge-bidding-logic-with-size.js": [ - "1a22bcec3d6422e4c5d498fcb93f0a205da32bf0", + "fledge-bidding-logic.py": [ + "73f4895cebe92f44a31051a97a520e024baffb4d", [] ], - "fledge-bidding-logic-with-size.js.headers": [ - "776bf2987b402ebe53f8b6af69992cd641dc5e0f", - [] - ], - "fledge-bidding-logic.js": [ - "ab6685f1842db5b7e76a1c9f8443125c500e5c37", - [] - ], - "fledge-bidding-logic.js.headers": [ - "776bf2987b402ebe53f8b6af69992cd641dc5e0f", - [] - ], - "fledge-decision-logic.js": [ - "dc92f5a5e1a4a0d7ba09b223c223d4ebe6c864d5", - [] - ], - "fledge-decision-logic.js.headers": [ - "776bf2987b402ebe53f8b6af69992cd641dc5e0f", + "fledge-decision-logic.py": [ + "028fe76efc0440716eed988d668d84aa5af4a8d3", [] ], "frame-navigation-inner-create-nested.https.html": [ @@ -419133,7 +421230,7 @@ [] ], "utils.js": [ - "4638f37cbb1576e4b85e98616cf1c159a79e3d95", + "d812736cdc280ecc048fb17c1e9f0af42ac07647", [] ], "web-bluetooth-inner.html": [ @@ -420588,7 +422685,7 @@ [] ], "fledge-util.js": [ - "36fb05615a770cad0ed777ccc718390613140e2d", + "cd7bb7044c30ff58f1ca7f18a491516f88618cde", [] ], "request-tracker.py": [ @@ -424943,31 +427040,31 @@ [] ], "2d.layer.render-opportunities.createImageBitmap-expected.html": [ - "8ce0c51e8e4f8dbea647b19b75b86c0e53415b25", + "de03ea6392a5db71e0cf80e4cc503882de9e98b0", [] ], "2d.layer.render-opportunities.drawImage-expected.html": [ - "1ddc6d1b44964c2fe9708be8a7cc9262eea3273a", + "378f85636b8aec917ba57317a8a30ac0aee4cdc2", [] ], "2d.layer.render-opportunities.getImageData-expected.html": [ - "ea0e78e0f28b02dffada148b1cb0872bfc6b7a26", + "919a75911e701d4fef5508a51f3c5966e3b7745f", [] ], "2d.layer.render-opportunities.putImageData-expected.html": [ - "3d63bbe776672c9af514714ca96446179eb72eb2", + "c73da157b12a2275c7a40d26300febb567e11025", [] ], "2d.layer.render-opportunities.requestAnimationFrame-expected.html": [ - "138f3a7ccbb11c075119245fdbce9e9feba7265f", + "9ec5b605154b6285aee119ff77a8f857fda8fc4f", [] ], "2d.layer.render-opportunities.toBlob-expected.html": [ - "fda8e8d7c6da225d60ef5de884ba4cbd2d5117c1", + "bc4cc28560d6e7840ac276a316d9a296eaa6c293", [] ], "2d.layer.render-opportunities.toDataURL-expected.html": [ - "22a9770331d82a0965e6f06f4f98dfe8c681da09", + "49309991cb52fc7073c0153fe34cbf0b9cd0243b", [] ], "2d.layer.reset-expected.html": [ @@ -424983,7 +427080,7 @@ [] ], "2d.layer.unclosed-expected.html": [ - "c41b253c95ba2b4f970b6ae59b58e444df14d866", + "625630f5e6b1d09adffc4fcbb151da2b1fbe0032", [] ], "2d.layer.unclosed-nested-expected.html": [ @@ -425154,7 +427251,7 @@ ], "idl-conversions": { "canvas-filter-boolean-conversion-expected.html": [ - "f79cdd1eeb75dd291ba558089a1210ab814fdbff", + "f043b0e7624250cb413d6cb20b8d038410fcab94", [] ], "canvas-filter-long-conversion-expected.html": [ @@ -425899,27 +427996,27 @@ [] ], "2d.layer.render-opportunities.convertToBlob-expected.html": [ - "1e61775165527caed9da4cb1cde38f6a09438904", + "12b12519f16c7e908140ae920086aedcff5707e1", [] ], "2d.layer.render-opportunities.createImageBitmap-expected.html": [ - "8ce0c51e8e4f8dbea647b19b75b86c0e53415b25", + "de03ea6392a5db71e0cf80e4cc503882de9e98b0", [] ], "2d.layer.render-opportunities.drawImage-expected.html": [ - "1ddc6d1b44964c2fe9708be8a7cc9262eea3273a", + "378f85636b8aec917ba57317a8a30ac0aee4cdc2", [] ], "2d.layer.render-opportunities.getImageData-expected.html": [ - "ea0e78e0f28b02dffada148b1cb0872bfc6b7a26", + "919a75911e701d4fef5508a51f3c5966e3b7745f", [] ], "2d.layer.render-opportunities.putImageData-expected.html": [ - "3d63bbe776672c9af514714ca96446179eb72eb2", + "c73da157b12a2275c7a40d26300febb567e11025", [] ], "2d.layer.render-opportunities.transferToImageBitmap-expected.html": [ - "2833849da67f06693a228d9d3cec8c5ba56c8a8c", + "36deca50f4a30f47dbadf225d63456cee774c39e", [] ], "2d.layer.reset-expected.html": [ @@ -425935,7 +428032,7 @@ [] ], "2d.layer.unclosed-expected.html": [ - "c41b253c95ba2b4f970b6ae59b58e444df14d866", + "625630f5e6b1d09adffc4fcbb151da2b1fbe0032", [] ], "2d.layer.unclosed-nested-expected.html": [ @@ -426203,11 +428300,11 @@ [] ], "filters.yaml": [ - "a5c2b9864b6becd54f06d0639ddc96d46bfca263", + "6133628335a2388093e87fcc3c7fdab0dbda8dc5", [] ], "layers.yaml": [ - "63edf62e3b83b552d3a9cd0c04b5a29bec544c86", + "babe3a4f5b19e989503cc2bbd941a5617f4f3798", [] ], "line-styles.yaml": [ @@ -426235,7 +428332,7 @@ [] ], "text.yaml": [ - "88a9a281c404434892c68ae1dbfdbc801bc552a4", + "de28898152fd7d0caec4d2cf114a7c9b1154023c", [] ], "the-canvas-state.yaml": [ @@ -431951,6 +434048,10 @@ "6ebed6075de1e8cf62db7bee756b05d3e425e0ab", [] ], + "details-display-type-001-ref2.html": [ + "4349df38d6aabc9bcc98a5a2666139a6d52a8881", + [] + ], "details-revert-ref.html": [ "dc46b159012fd80c39b66e94935c210a11826487", [] @@ -433738,6 +435839,10 @@ "53296f6daac135bfd6a6a5ace7dbb8e102779561", [] ], + "selectmenu-font-size-ref.tentative.html": [ + "a01455aab09955c6ad8146a7846ae96250552ca6", + [] + ], "selectmenu-marker-end-aligned-ref.tentative.html": [ "5985df5936bcece5d206527b9030c60b2a8507f6", [] @@ -433766,6 +435871,10 @@ "8fd33dbc0722c04ff4711cabfd285e392f0071d6", [] ], + "selectmenu-rtl-ref.tentative.html": [ + "42b2541fd516b0a086a8e50b8e7b0c15892d7bf4", + [] + ], "selectmenu-selected-value-behavior-ref.html": [ "bf468c5516cdbdab072983beaf1f506e62ed2251", [] @@ -433788,7 +435897,7 @@ [] ], "fake-selectmenu.js": [ - "f6a99232330c575d1c6c31da4372db6758bcca22", + "2e084450a364ecd44d1a6a023eb0654b0db975d9", [] ], "selectmenu_button_icon.svg": [ @@ -433951,7 +436060,13 @@ "details-add-summary-ref.html": [ "14f2be232fb4aba0afb4542213331995fcb12575", [] - ] + ], + "support": { + "empty-html-document.html": [ + "56415b84762b7a32d805bb691855456c087228c9", + [] + ] + } }, "the-dialog-element": { "backdrop-descendant-selector-ref.html": [ @@ -434274,6 +436389,10 @@ [] ], "the-script-element": { + "README.md": [ + "ab4a4820afa955e02c03019246226f2e3891e57e", + [] + ], "cacheable-script-throw.py": [ "b315afed5639302a099376576cafe07e0b40fc3c", [] @@ -434309,7 +436428,7 @@ [] ], "credentials-iframe.sub.html": [ - "38868dc95d00eafa6a0cd777483b9bba4b7f2974", + "c71b0e4bb7e690a13bf705d1dc13593aadd3f225", [] ], "cross-origin.py": [ @@ -434317,15 +436436,119 @@ [] ], "crossorigin-import-parse-error-with-cors.sub.html": [ - "1774ef36756834da4fa151e49a72f7a8e4cda090", + "59b4afa72111cfc2cb2ea0f45c3589a94add7417", [] ], "crossorigin-import-with-cors.sub.html": [ - "f02a51d5569563c1dafecb1f488843d992dcc8b6", + "2a383d8be98e82a5ca397745271c4a19a01a8183", [] ], "crossorigin-import-without-cors.sub.html": [ - "6236f79bc8f53925a993e28a83be9564d3f17c0d", + "256a76a1d9836d91a1f7cef4bccc187a6b885c67", + [] + ], + "css-module-without-attribute-iframe.html": [ + "3d1be841cee24e90d10be47fb821f9f55937fbfe", + [] + ], + "integrity-matches.js": [ + "4bd004ce963a8a884f72b8f541563d936c11a051", + [] + ], + "integrity-mismatches.js": [ + "7f3bf54762e10835501831ea64871527f5401766", + [] + ], + "load-error-events.py": [ + "490bdc42aac68740f3883e3755f403d432c20c7d", + [] + ], + "load-relative-url.css": [ + "27f298761048b73a6c7229b083a4711434200424", + [] + ], + "malformed.css": [ + "28819bfdf55bff3dd2ab9bd204271bc4114f8c49", + [] + ], + "parse-error.css": [ + "2bee3ff9966cb5a84afba6e3f4fb843d5ad7394b", + [] + ], + "record-fetch.py": [ + "4928cb4acb9eb591a2e1ac80cf8a81982a353313", + [] + ], + "referrer-checker.py": [ + "c1eaed8e468b6e50a8a49d9e2a0cdccf4479c65d", + [] + ], + "utf-8.css": [ + "0a8b46656f1684410692862ae625202b1566cc7f", + [] + ], + "windows-1250.css": [ + "9beac4d618040083435e2a4077cc8c668f1bc00b", + [] + ], + "worker-dynamic-import.sub.js": [ + "30dc8cde85744884e66b2f5570876dedf62e8e7e", + [] + ], + "worker.sub.js": [ + "dc85c13ed91cce92d1cacd6a129855a3366d8d7b", + [] + ] + } + }, + "css-module-assertions": { + "resources": { + "atImported.css": [ + "8629a846d14e60a3596e809b911622f6aecb5a04", + [] + ], + "bad-import.css": [ + "a6e1a0f395d910a604e4b6d6a0afd8a43b94e5f2", + [] + ], + "basic-large.css": [ + "555ab70d2ed80cdb7d528ea6be65755634885e57", + [] + ], + "basic.css": [ + "e034ed9ac7c0a1cde5f0ef9857a639557e1e05fa", + [] + ], + "bom-utf-16be.css": [ + "9e17902a1d3d69e0ebebd039553d2b50ab489d81", + [] + ], + "bom-utf-16le.css": [ + "ef90843d8eda44a5cc3bb82e3ad2f1d862ad2b24", + [] + ], + "bom-utf-8.css": [ + "5cf81232b7aacafc82b1799306cfae0b166df580", + [] + ], + "credentials-iframe.sub.html": [ + "cf1d621ce3a550228ac4e7b50f3f7a18d92fe0b5", + [] + ], + "cross-origin.py": [ + "d744fc9514d397af248c0b1b2d215f452d17ffd5", + [] + ], + "crossorigin-import-parse-error-with-cors.sub.html": [ + "3afb8edeb1421c08ff7113e8aef3a47222678e9e", + [] + ], + "crossorigin-import-with-cors.sub.html": [ + "f8754c2a569b27dd0cabff251b3d3522d9d8de99", + [] + ], + "crossorigin-import-without-cors.sub.html": [ + "ab70b735732dc76f9e8438c578da82f8aa04561c", [] ], "css-module-without-assertion-iframe.html": [ @@ -434598,6 +436821,40 @@ [] ] }, + "import-attributes": { + "empty-attributes-clause.js": [ + "98c45731796fba43ce1425ff165b14e80b9534aa", + [] + ], + "empty-type-attribute.js": [ + "72272b5102e9f6694481ff278b637601553f5a4a", + [] + ], + "export-hello.js": [ + "34b58e6e126c27f840c2ebd092e3b82b095fb374", + [] + ], + "hello.js": [ + "2f348444606435700656725dbcd9a08e8e10775f", + [] + ], + "invalid-type-attribute.js": [ + "10e35b6b56f6d341eafc1b141c9f1b251df3e342", + [] + ], + "javascript-type-attribute.js": [ + "568db181966e236f1dfd7ed7483a96b5f3d8e755", + [] + ], + "js-type-attribute.js": [ + "b7a454b4f20e9cc712203838878f5ffd60ad7809", + [] + ], + "unsupported-attribute.js": [ + "e589fea8305ee708f254ced452c15d802349dfa1", + [] + ] + }, "is-module-goal.mjs": [ "b533fc2e906b4b9a0a912044b19ee523ae5eef7a", [] @@ -434624,7 +436881,7 @@ [] ], "credentials-iframe.sub.html": [ - "dbb9fe6d1a2679bdf716ae13b080dc45cb94c3ec", + "b89edf8d317959456ea7104319697aa097399a95", [] ], "cross-origin.py": [ @@ -434632,15 +436889,113 @@ [] ], "crossorigin-import-parse-error-with-cors.sub.html": [ - "12c6a608832aabc2de231e094c9353b4c4a9a11a", + "9972c53d1b66aca7b8bdf3f7c2988041642c42ca", [] ], "crossorigin-import-with-cors.sub.html": [ - "01663d251693c93948b86f5502659ff1415a24b5", + "95fd156df23944dfdf82d6f1790e0ca6d281ca01", [] ], "crossorigin-import-without-cors.sub.html": [ - "7849c6aeddf539759037165702b3eab3423709b4", + "b9318c8b20ce9ea70a49631689d2568a206b9adb", + [] + ], + "data.json": [ + "14a0526ebb23f65992fa3558613e32df34421136", + [] + ], + "false.json": [ + "c508d5366f70bba37fcc09d128b6537c4adb2c79", + [] + ], + "integrity-matches.js": [ + "20459c17e3bb665ba8fa27d02520a35d862bdb4c", + [] + ], + "integrity-mismatches.js": [ + "0406dbcca5a99a4cec99ae6551f7546d9df8a872", + [] + ], + "load-error-events.py": [ + "244552a6935ac130212145a9931777412359779a", + [] + ], + "module.json": [ + "f834b2a4e8fab045a4b224caa485e0ee666f04c6", + [] + ], + "null.json": [ + "19765bd501b636fce433540d9e6735f51d66151d", + [] + ], + "parse-error.json": [ + "98232c64fce9360c79f119cf6de8f670f69f1c44", + [] + ], + "referrer-checker.py": [ + "e9f0f1789ba18a73e49bae06fcaa5b0f8447350f", + [] + ], + "serviceworker-dynamic-import.js": [ + "cd39c789cbeada5a5c4314b20c13fc97e447ba5d", + [] + ], + "serviceworker.js": [ + "65210fe3e7fee3aa67179dea5a9f9706fa27a08e", + [] + ], + "string.json": [ + "ace2d72d9d3d24dbfaa1462949b0688ff326fc9b", + [] + ], + "true.json": [ + "27ba77ddaf61532f217964734769a42cdabc17dc", + [] + ], + "utf-8.json": [ + "088d98235873d4dd5107ef2f00b10625773fe8db", + [] + ], + "windows-1250.json": [ + "490e752ce93c75afad150e65af9737b7f4d9b3c9", + [] + ] + }, + "json-module-assertions": { + "array.json": [ + "e77e32d3382e0a40e9682d11664a3c0d9f354523", + [] + ], + "bom-utf-16be.json": [ + "d22a45a591079d6caea71404eb0190e7094f321c", + [] + ], + "bom-utf-16le.json": [ + "4d1aa264a697b224eadbfe993cafeaac810acdd2", + [] + ], + "bom-utf-8.json": [ + "07ba933e8608da70bb40645066226b8e95fb2267", + [] + ], + "credentials-iframe.sub.html": [ + "44e6402faa56897075ef298b9079b2f5ddcb1b7c", + [] + ], + "cross-origin.py": [ + "cd56c3628a087d9c8221720f3ceca385117f1c4a", + [] + ], + "crossorigin-import-parse-error-with-cors.sub.html": [ + "7d044f8579b5daf53b000f28a4938b44105a91da", + [] + ], + "crossorigin-import-with-cors.sub.html": [ + "d71938dae4ef688a3c559cc42d54b955b7673182", + [] + ], + "crossorigin-import-without-cors.sub.html": [ + "9d07d6c727c407ee6f301528d4b9f00c5bed0dff", [] ], "data.json": [ @@ -439170,7 +441525,7 @@ [] ], "cssom.idl": [ - "7f5bf17139874ee5fd6d7dfcd835a03e6396dd6b", + "0574f1a771cf45d940b24e9bd9e0cb754786af74", [] ], "custom-state-pseudo-class.idl": [ @@ -440261,7 +442616,7 @@ ] }, "lint.ignore": [ - "8bb009db58a9bf527f212d1ef1ee048f10b4b651", + "489c717cd6a715ce07dea9421863d3b69ad42cc9", [] ], "loading": { @@ -440623,6 +442978,10 @@ "4f595ed49f698a7a70392edb5e72dd1df8471368", [] ], + "direction-mpadded-ref.html": [ + "98208d6849f746c73f65555c4647f8c812951b22", + [] + ], "direction-overall-ref.html": [ "5ce6c5c42bb8068b895cdbe111644c339c4b9676", [] @@ -440686,7 +443045,7 @@ [] ], "frac-linethickness-001-ref.html": [ - "d4be8ea03bfc29506af0e26a3d94d5eeafaaf472", + "4057f93fcc31e019774e9b0faef4e3ac9fa9deb6", [] ], "frac-linethickness-003-notref.html": [ @@ -440769,10 +443128,78 @@ ] }, "operators": { + "embellished-op-1-2-ref.html": [ + "f442a48dfe67567406b3bb22d4976d6fa54041ec", + [] + ], + "embellished-op-1-3-ref.html": [ + "e134bfacebc4bc31f9ba46fb5911fb4eeacf4b56", + [] + ], + "embellished-op-1-4-ref.html": [ + "149eff4b0d2e268f27bbe5c6e491777b14d6ed47", + [] + ], + "embellished-op-1-5-ref.html": [ + "cb4342e708da1b70396a39408c20873faf754a5d", + [] + ], + "embellished-op-2-1-ref.html": [ + "faa37e0d98990d4689ea59c325a4921b5b6fbfd9", + [] + ], + "embellished-op-2-2-ref.html": [ + "903a30cc1f75d67d1cc563275fdd1cc153cee7eb", + [] + ], + "embellished-op-2-3-ref.html": [ + "c40dff710f127ccdec6b6c7eeca577d4c0f354ee", + [] + ], + "embellished-op-2-4-ref.html": [ + "b44f667442cff6e212075d1c979ed01a21e747c7", + [] + ], + "embellished-op-3-2-ref.html": [ + "2df02cf9a99542f016e8cdadf10cf14bc7e907d9", + [] + ], + "embellished-op-3-3-ref.html": [ + "4615e4de229111c411b01d7915a88d8d8959c8c1", + [] + ], + "embellished-op-3-4-ref.html": [ + "e02ff28f18dac1b7eb9b6eb678b9d021c13e8e4e", + [] + ], + "embellished-op-3-5-ref.html": [ + "c2c85f931c91607cc0a840e80f380f3f620bb435", + [] + ], + "embellished-op-4-1-ref.html": [ + "bcf58699ea74da56e62b8fe54cd2de364c47c56c", + [] + ], + "embellished-op-4-2-ref.html": [ + "b226d69a97b8b8c72228830cfb399c112b5c6093", + [] + ], + "embellished-op-4-3-ref.html": [ + "8786076642e32bc942e66c59b214ae0b57b53547", + [] + ], + "embellished-op-5-ref.html": [ + "da9d23877574b7c645fe36def69a2bf56c5fd538", + [] + ], "embellished-operator-dynamic-001-ref.html": [ "b37ce125a73c02095ff9bd808384b8c18a073627", [] ], + "mo-dynamic-mozilla-347348-ref.xhtml": [ + "0deb51d5f23c6810e43eee23401c474e74ae9959", + [] + ], "mo-form-dynamic-002-ref.html": [ "be7f5aa173d233fb5a2477586c78df1f0e027c54", [] @@ -440951,6 +443378,38 @@ "dac4dab553d2910ded75f970cacfa5d19c0a25f3", [] ], + "stretchy-mover-1-ref.html": [ + "96cba038a4d8138d209cdffd27134e1ff01fe297", + [] + ], + "stretchy-mover-2-ref.html": [ + "e9b24785d3fd06a9f2fb4a6951769a4b015c47ea", + [] + ], + "stretchy-mover-3-ref.html": [ + "10e0779b98be8262c6e8439b400fa71eaf9af15f", + [] + ], + "stretchy-msup-1-ref.html": [ + "7b6b6d72adc86ec5884fe33c86ee658d4d997ed8", + [] + ], + "stretchy-munderover-1-ref.html": [ + "587d37163dbacff49af5f3a1c6254b9e88b1c4fa", + [] + ], + "stretchy-munderover-2-ref.html": [ + "f43f659240d1db3b8678ce0c5c03ee365e1c7fdc", + [] + ], + "stretchy-munderover-3-ref.html": [ + "67b3492ec86458a2f2f580bab4cc92511bf89a4b", + [] + ], + "sub-vs-sup-mozilla-345563-ref.xhtml": [ + "dc57aa350667656673164262c102990162f95f40", + [] + ], "subsup-legacy-scriptshift-attributes-001.tentative-ref.html": [ "c1bf2e46954ee28d260371fb4fb981e9030e3051", [] @@ -440994,13 +443453,33 @@ "columnspan-rowspan-ref.html": [ "400f6b01e3c492d69314d29f0edbfaa99edc25b5", [] + ], + "dynamic-rowspan-mozilla-370692-ref.xhtml": [ + "2e01559d274190204cc346c1f29b1557d44a5ea6", + [] ] }, "tokens": { + "dynamic-mi-mozilla-409125-ref.xhtml": [ + "04d9eeba310631da3a88b222e98ce0cb8d4f077f", + [] + ], + "dynamic-mi-mozilla-414123-ref.xhtml": [ + "7ec9cb751cb9a243b551f626b469c59ba46ae548", + [] + ], "dynamic-mtext-like-001-ref.html": [ "a145a8eb5124cfff82f9397af6cea58c39af05d1", [] ], + "mi-mathvariant-1-ref.xhtml": [ + "ec3bb1a83e0219bda8b4f442ef66bb1b541dbd94", + [] + ], + "mi-mathvariant-2-ref.xhtml": [ + "35e6bf6ecd2223ee2d511799ec5e2b95b714065b", + [] + ], "ms-001-ref.html": [ "bbd42a93eedbbabb7aff8fa1aa60f5c954e48210", [] @@ -441155,6 +443634,14 @@ "63e6e2ba9cce50396e66843113a9fbf5e4860a34", [] ], + "mozilla-393760-1-ref.xml": [ + "027bdf1b7d9c357edca3415f8f1bcaf72e8199b6", + [] + ], + "mozilla-393760-2-ref.xml": [ + "58dd5a5d8c39ff86376de7038a22727abe19c4ab", + [] + ], "out-of-flow": { "absolutely-positioned-001-ref.html": [ "447c5b722a540d07365475aab17214ad572cbc0e", @@ -441187,6 +443674,22 @@ "fa22741efe5a8f9424aa7bbac6e6ad507f687fc9", [] ], + "table-width-1-ref.xhtml": [ + "d76a350290d4eef7eee5122d36f7005b149f3c5c", + [] + ], + "table-width-2-ref.html": [ + "dfb9eeca8b76bf852544d75104a871783a75c2c7", + [] + ], + "table-width-3-ref.html": [ + "f06cea4bec0c4c09fc7308df13633484d828228c", + [] + ], + "table-width-4-ref.html": [ + "b31807dee4d993b5b69833650488d00a7325901c", + [] + ], "transform-ref.html": [ "005e8a78828cb2457bfbb1908406d8b13812de5d", [] @@ -441275,6 +443778,10 @@ "dcc5b2b7d337e769299df17a0eacafddc92665c6", [] ], + "shadow-dom-mozilla-1066554-ref.html": [ + "f885eaec428b72e767ee167834e5371c3486476c", + [] + ], "unique-identifier-1-iframe-1.html": [ "6b3ab07f1aa1dcf7edefd39a3e5f5bc4724ff960", [] @@ -441293,6 +443800,10 @@ ] }, "text-and-math": { + "mi-automatic-italic-with-default-font-ref.html": [ + "27a58b9ba00820c44f48ae6e90e682f2488c5748", + [] + ], "use-typo-metrics-1-ref.html": [ "3f7f7640458639ab0b548489e04b63f98cdad40b", [] @@ -447264,7 +449775,7 @@ [] ], "testdriver.js": [ - "a9ab7220aad069de3f6e2bf2c4fe34599658b899", + "a23d6eaf4cf3831601a6f27682b3b86a0fb2336e", [] ], "testdriver.js.headers": [ @@ -450346,7 +452857,7 @@ [] ], "static-router-sw.js": [ - "e698d34c5276e02b68ffec3ab54707eb26401ac3", + "4655ab5321c45cd98e62a2599df5e42825a317bd", [] ], "test-helpers.sub.js": [ @@ -453121,7 +455632,7 @@ [] ], "requirements_build.txt": [ - "2b7e1808552315d973a999293d1294f8ec4fd33d", + "e0443762c3c1721d3545ad7384544a54e71a8e55", [] ], "requirements_macos_color_profile.txt": [ @@ -453129,7 +455640,7 @@ [] ], "requirements_tc.txt": [ - "e577a83fe391977e04b626d28a3bfdb4cd6a1a1f", + "bb9b3f7232d5ed2cf772fef782728f0fb698f733", [] ], "run_tc.py": [ @@ -453530,7 +456041,7 @@ } }, "localpaths.py": [ - "e8095ac69d5a80a9cc407713fc9ccf08ed9b1b46", + "5a2d0be00de90b66ffafdee6a284789dcae4e2d6", [] ], "manifest": { @@ -453640,11 +456151,11 @@ [] ], "requirements_flake8.txt": [ - "949ae9548452582f5503bee37bb0a9965abf1647", + "fc1f92a69f703bfe5e340c44e0c9022f45c97ae2", [] ], "requirements_mypy.txt": [ - "41ab1211b230fe59eed67ebd0ea0004c716d7877", + "45261d0321fea731841a4e219088bd88e21278ed", [] ], "requirements_pytest.txt": [ @@ -453652,7 +456163,7 @@ [] ], "requirements_tests.txt": [ - "8225875c8e5f2eba554ac2847ca53ddcdd8540f0", + "01b56839989e2d70b3c0fa2467510f2b6f1ab0f7", [] ], "runner": { @@ -454300,102 +456811,6 @@ [] ] }, - "funcsigs": { - ".gitignore": [ - "c8d2af85d3c617aa3f2551349af10d61cff65c2a", - [] - ], - ".travis.yml": [ - "c1e7abe0b44a89c167a79cac33cfc9c4c79ed8e4", - [] - ], - "CHANGELOG": [ - "e1366d2668d03de8102d04953c55e4940055cb00", - [] - ], - "LICENSE": [ - "3e563d6fbd4d46abb494cb10986067a95bc4c15f", - [] - ], - "MANIFEST.in": [ - "f0abb42f04a18042635560ed3a656beb24928fba", - [] - ], - "Makefile": [ - "e2329231b564b5a11bb2bc06a090bf401742dbdb", - [] - ], - "README.rst": [ - "5fbca27e6e6b019887ddf1b86faf84b7f7d2ab98", - [] - ], - "docs": { - "Makefile": [ - "f7ab3d16b40599b4eff2566df65f6c0ce50ea25c", - [] - ], - "_templates": { - "page.html": [ - "5e1e00bcafaf1106a78cbb7188da50ec5c5d5e5c", - [] - ] - }, - "conf.py": [ - "c6e4194cc05c6a02745c7ab8a09371162f75dca3", - [] - ], - "index.rst": [ - "5fbca27e6e6b019887ddf1b86faf84b7f7d2ab98", - [] - ] - }, - "funcsigs": { - "__init__.py": [ - "5f5378b42a6d27cf490d66ae2b79c76bb466cedf", - [] - ], - "version.py": [ - "7863915fa5f8f014c64c8abff41a138e9b3cd4d3", - [] - ] - }, - "requirements": { - "development.txt": [ - "40dedd92bf06ac34337fe27ba97422baa481b7e1", - [] - ] - }, - "setup.cfg": [ - "5e4090017a9bec5de60a745d17007a9e95f31a43", - [] - ], - "setup.py": [ - "f3696888f9ebea73153034323e8a16fff6ba829f", - [] - ], - "tests": { - "__init__.py": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", - [] - ], - "test_formatannotation.py": [ - "4b98e6037d8302151a5ae93cc4793be1d49e08e3", - [] - ], - "test_funcsigs.py": [ - "a7b9cca7679f4bb04994c6d0215837adcb21ec95", - [] - ], - "test_inspect.py": [ - "98d6592fcc7222632cd69fdf4889663ae1718d23", - [] - ] - }, - "tox.ini": [ - "1873c744a005e89780e61f37ff6e05a70eb5bbe1", - [] - ] - }, "h2": { "CONTRIBUTORS.rst": [ "5c4849fef0f1074b2765e63fc575f6756456d2b9", @@ -461573,7 +463988,7 @@ [] ], "error.py": [ - "8507a51543dd886a7b8911f913713b298ba0b2f2", + "4a9b4ba9db9155c4838cb6ea335d9111d051036f", [] ], "modules": { @@ -461616,7 +464031,7 @@ [] ], "error.py": [ - "7d5d914a20cb6cd90ff09e651328ce24356eec1d", + "25e4b39ae694f3f252777a726fda0716b67d592f", [] ], "protocol.py": [ @@ -461660,7 +464075,7 @@ [] ], "webtransport_h3_server.py": [ - "0fc367e1ff4271c29ee9dd2d89f6fb93f6ca09e2", + "8c55ba87e0e599bbc52c68bcaed481103fecb744", [] ] }, @@ -461707,7 +464122,7 @@ [] ], "requirements_install.txt": [ - "a299792b2230184017bb67f284f1271a5d485568", + "55bed99f8c594a0cb290aba4df30bdadfdf324d7", [] ], "revlist.py": [ @@ -461871,7 +464286,7 @@ ] }, "requirements.txt": [ - "8e47b2f229a2280bfff37d4b5c7b67dc433c6a8e", + "0b7ccba4fb80fec39be58e6ca587c06b6764906f", [] ], "requirements_chromium.txt": [ @@ -461879,19 +464294,19 @@ [] ], "requirements_edge.txt": [ - "45f93a3bb967744644b556d054f91522f08b319d", + "0ce4d76f8af5118f78294e286353dd6fad1f455e", [] ], "requirements_firefox.txt": [ - "102b74609788f549144fd22079495999a03bd649", + "abbfd9a40a3e5eb1a2ed3e66ca6344e99dbbcbba", [] ], "requirements_ie.txt": [ - "aa272e2bfdd4ce0bccaa9ec9008f2dfa20c1997d", + "90a5512c79fb3fe8f4295fe1ea2d5c6fa88c4982", [] ], "requirements_opera.txt": [ - "aa272e2bfdd4ce0bccaa9ec9008f2dfa20c1997d", + "90a5512c79fb3fe8f4295fe1ea2d5c6fa88c4982", [] ], "requirements_safari.txt": [ @@ -461899,7 +464314,7 @@ [] ], "requirements_sauce.txt": [ - "5740883d35167e6716501aac8ba49cc2a2dfcea4", + "8cf3f1d32c8a27716b88035921f1a6ea46d5d4f7", [] ], "setup.py": [ @@ -461973,7 +464388,7 @@ [] ], "firefox.py": [ - "880c2bd187ad4da475f8812bf8301e00a49b5cad", + "13755932858772a1dbbdbff86e820947e8eb7d1a", [] ], "firefox_android.py": [ @@ -462045,7 +464460,7 @@ [] ], "base.py": [ - "17be0cec39f25e5cc169740eb6c2f632d7454ac7", + "b148365780b20f4bdaa4f9ffca22da78e1bdf6a1", [] ], "executorchrome.py": [ @@ -462155,11 +464570,11 @@ ] }, "wptreport.py": [ - "be6cca2afc4b1841018f4a48124cc5c7b4c25b11", + "21c121158015b9e940e728b85f2a824ce9bd5920", [] ], "wptscreenshot.py": [ - "2b2d1ad49d5a58535ef2a4baa7f15c19a93c6a19", + "989559701a480d813e9e15c77907e9ba2e6e1ad9", [] ] }, @@ -462232,11 +464647,11 @@ [] ], "testloader.py": [ - "8cd24f2f5aecf75cb9f05e41a6fb48c45422a5ff", + "86004b83387a97437be4f013680bf2155fa29627", [] ], "testrunner.py": [ - "b405dabd1dd01237fc1e74f8682489ee70fb9e01", + "7715289a62433895472a08f6886a1c57de07a785", [] ], "tests": { @@ -462291,7 +464706,7 @@ [] ], "test_testloader.py": [ - "cef75e03be10535b7be60c324b04092b52ddaac9", + "6e93a20e02ec9b7a3bfea0da30c14cd724f41f51", [] ], "test_update.py": [ @@ -462338,7 +464753,7 @@ [] ], "wptcommandline.py": [ - "875ba7e66a90738bf763d9abb7d6092abdcffd98", + "6c7294e81e79a17356c4912699ad84a148ca0492", [] ], "wptlogging.py": [ @@ -462408,7 +464823,7 @@ } }, "wptrunner.py": [ - "687a9d46c8e21601e603901803af1ab77ce79547", + "0cb71bcbfad301b0ec0fa7eede71778a8d9805ea", [] ], "wpttest.py": [ @@ -465389,7 +467804,7 @@ ], "browsing_context": { "__init__.py": [ - "8abf012f27643292b42ceef5b963077b1ab0e330", + "e74de268093e1c39ae683dfe0eb08ad6ba2eceb3", [] ], "activate": { @@ -465613,7 +468028,7 @@ }, "script": { "__init__.py": [ - "901b412458b06acbbb462ce9e1586f28f036068f", + "5635a4bbfb0f02450205d6abb997a692259d43ab", [] ], "add_preload_script": { @@ -466158,7 +468573,7 @@ [] ], "fixtures.py": [ - "6033e243552c91f8c9e4b55777232e6c5ac04b41", + "850c654d2a6db38b1e1bdbe6299d6dd1085c9d04", [] ], "fixtures_bidi.py": [ @@ -466199,7 +468614,7 @@ [] ], "test_actions.html": [ - "40e4b5aa37c2f4ebd14d10a476b44ff7dbd6799e", + "e377840672279498ab83202e393e47830df4d2fb", [] ], "test_actions_pointer.html": [ @@ -466217,7 +468632,7 @@ [] ], "authentication.py": [ - "db247af610a9b754920ee782e80330f15f26288c", + "d3c95a948f093c64f2770c79f38de9fca5441014", [] ], "cached.py": [ @@ -466578,7 +468993,7 @@ [] ], "pow.json": [ - "d6c9f592df7b4103ec477dcd2a49cdc482c88672", + "b35a96233d0a5423f4d6fdb23fe5ab27eb534c50", [] ], "prelu.json": [ @@ -494484,7 +496899,7 @@ }, "close-watcher": { "abortsignal.html": [ - "ddd94526ab25c8313515234538808b01d7520fce", + "9229b37cf665d0db49d1a0b42349f00f5a2edcec", [ null, { @@ -494493,7 +496908,7 @@ ] ], "basic.html": [ - "dc2fca5c36bb0cc4850b602bcc979436de93747b", + "9951e54031c794d19bb3a7742e99c063dda89bb8", [ null, { @@ -494502,7 +496917,7 @@ ] ], "esc-key.html": [ - "4d98b3dc318290cced55716fffb31b1eb6934843", + "16fcce691730c686c4191318b819ba9b93756f04", [ null, { @@ -494511,7 +496926,7 @@ ] ], "event-properties.html": [ - "062693e4953c192fcc3be16574742cc97f4c7060", + "6a3dbebad7912b0cde34233ae7546fc8d8aac06c", [ null, { @@ -494527,7 +496942,7 @@ ] ], "inside-event-listeners.html": [ - "26999271799005c9e44a893dec40316153879cb4", + "ac037fc147fa888f4e4bdf923c64076ba04c2922", [ null, { @@ -494536,7 +496951,7 @@ ] ], "popover-closewatcher-multiple-plus-free.html": [ - "2982e29e264fa2f7073f45cab0bdd0b64dc21b58", + "4913b1454ef80fb246983fa100998b2810bf17c6", [ null, { @@ -494545,7 +496960,7 @@ ] ], "popover-closewatcher.html": [ - "6695f2bc4912c8aff87225bb56ec0091c9c129eb", + "b40ea2ec7c56a4ba3a79b7fd9cfe44eb0a4ffef5", [ null, { @@ -494554,7 +496969,7 @@ ] ], "user-activation-multiple-plus-free.html": [ - "8a86624913fc37008fd22263627195c205224474", + "a94b47904a10a9116b69fbc87b8cd78f09d602d2", [ null, { @@ -494563,7 +496978,7 @@ ] ], "user-activation.html": [ - "a2bc575ee91bce4e198bd79f7238a1ed138d5bfd", + "4591f5493b2fd8e7c74d4eafbe9a05322c04ea37", [ null, { @@ -495596,7 +498011,7 @@ }, "compute-pressure": { "compute_pressure_basic.tentative.https.any.js": [ - "18b8985cf51c2c9874af273ceeb38eb697df3345", + "28322ced729af6d919698dabbcb85db2926c387b", [ "compute-pressure/compute_pressure_basic.tentative.https.any.html", { @@ -495765,7 +498180,7 @@ ] ], "compute_pressure_disconnect_idempotent.tentative.https.any.js": [ - "2f6421ee11711f8d1768cc19d233346440f16f7f", + "74d37bd6e5cc75ce317380b42df63b1bdf1352e4", [ "compute-pressure/compute_pressure_disconnect_idempotent.tentative.https.any.html", { @@ -495825,7 +498240,7 @@ ] ], "compute_pressure_disconnect_immediately.tentative.https.any.js": [ - "b96ebd802e666bcd0230406da3435d8969484037", + "9b545fbe1c33bc47017ffaa73ec77234a1f58f6e", [ "compute-pressure/compute_pressure_disconnect_immediately.tentative.https.any.html", { @@ -496483,7 +498898,7 @@ ] ], "idlharness.https.any.js": [ - "1307304fdfea40bb59573017d55c99576b37cbb8", + "e8289962324eee31d2046d4586d16352989da9fa", [ "compute-pressure/idlharness.https.any.html", { @@ -496586,7 +499001,7 @@ ] ], "compute-pressure-supported-by-permissions-policy.html": [ - "931fcb66b487623971bf95ae9ae1e04157e5dda3", + "35f09b7b07ec593fd8f14eeb0cc4a7839f7f3c8c", [ null, {} @@ -505334,8 +507749,44 @@ {} ] ], + "fedcm-abort.https.html": [ + "0f03bff832f800c9ce69de69003c88bbbd471fca", + [ + null, + { + "testdriver": true + } + ] + ], + "fedcm-after-abort.https.html": [ + "3c2f981e82fab32d20303367289180c20e8eb71f", + [ + null, + { + "testdriver": true + } + ] + ], + "fedcm-basic.https.html": [ + "1c2b916103c514333c7e8e3a9c7b20bb3ca3df8e", + [ + null, + { + "testdriver": true + } + ] + ], + "fedcm-client-metadata-not-cached.https.html": [ + "b802369256ab44c793f8c6c340660954de54d078", + [ + null, + { + "testdriver": true + } + ] + ], "fedcm-context.https.html": [ - "67ba8256341a1d95af14a8c83b3e68f568f0e13e", + "bc1f96eafa03c7af9477708e7b1da38058dd4e6b", [ null, { @@ -505344,10 +507795,12 @@ ] ], "fedcm-cross-origin-policy.https.html": [ - "b2a68b00c8e47a00dbc71534504dc89b62e1448f", + "1e3b4c71a839b5f02f19fe68639cd95c0f32c8fc", [ null, - {} + { + "testdriver": true + } ] ], "fedcm-csp.https.html": [ @@ -505357,18 +507810,29 @@ {} ] ], + "fedcm-endpoint-redirects.https.html": [ + "4aebc17f1ba6e7c407d708444708e2bb21bf8459", + [ + null, + { + "testdriver": true + } + ] + ], "fedcm-iframe.https.html": [ - "43fe39f7bcb2f3129d9ac0059f9dd8bda753b70d", + "964ebf4c44df4e8c33474c0cde464be7a7eeee6f", [ null, {} ] ], "fedcm-loginhint.https.html": [ - "6db67138167276547fa54db1976300a5c9fcaebc", + "cb03116dc7aca244f41e681cb961b688c43d312f", [ null, - {} + { + "testdriver": true + } ] ], "fedcm-logout-rps.https.html": [ @@ -505378,6 +507842,15 @@ {} ] ], + "fedcm-manifest-not-in-list.https.html": [ + "8d85d9eb36783af221d030b95e73b397ba1a1b10", + [ + null, + { + "testdriver": true + } + ] + ], "fedcm-multi-idp": { "abort-multiple-gets-through-first-idp.https.html": [ "ed7c1300bd1b95cd3f7d233e7a0ee638829f2990", @@ -505394,88 +507867,148 @@ ] ], "get-before-and-after-onload.https.html": [ - "dc332870abc729eb10069ccae02012278c178abe", + "12e0eb4d813eed1cd358ad072ed1c48ed7e78f36", [ null, - {} + { + "testdriver": true + } ] ], "get-before-and-during-onload.https.html": [ - "6a61891a3027c80d4ee6c360ad5b5f924b70f3ef", + "3e2f134f201aa2d1f6a4461cd4b15f737b8d065b", [ null, - {} + { + "testdriver": true + } ] ], "get-before-onload-and-during-dom-content-loaded.https.html": [ - "65aeb72dcf16f1e14f5720460160f12edb559b7c", + "95495948b77379e0650db2216d6f4b5c2b19915e", [ null, - {} + { + "testdriver": true + } ] ], "multiple-gets-after-abort.https.html": [ - "12f88d3068e5847117242f511230d05e63c0b9fe", + "899302fb221e94a8df562616fd559a2325f8a15d", [ null, - {} + { + "testdriver": true + } ] ], "multiple-gets-after-onload.https.html": [ - "bf8d717381b5c9d1c2864537d67f37ef7d997847", + "1b5d744e8f60fffdc44d720d7b0a6233f181b531", [ null, - {} + { + "testdriver": true + } ] ], "multiple-gets-before-onload.https.html": [ - "e754b86ec65c4b4ea41e3ada4f8e3f6ea51f1f83", + "8c98bf53b0c579a860d05c6229dcd1bbc0429e16", [ null, - {} + { + "testdriver": true + } ] ], "multiple-gets-during-onload.https.html": [ - "252732c9643374b42bc688d65e2ac5d14a5a7de4", + "bcf70a31c74deacb9a661d03db5a951777b31b08", [ null, - {} + { + "testdriver": true + } ] ], "single-get-after-onload.https.html": [ - "a023e3c57fd9fd3319b5bf4681b8f80d880e30e1", + "de6a7c5371cc839a41c89318e5f8b0ad00b107e0", [ null, - {} + { + "testdriver": true + } ] ], "single-get-before-onload.https.html": [ - "be94d17d8f2b69a33e8f68ae455764f947a044c8", + "0ac9b0e920245cfa81810f024190554d2248511f", [ null, - {} + { + "testdriver": true + } ] ], "single-get-during-onload.https.html": [ - "8383c3b9ff848a7395983ae8a45fc4bc9d7c42ff", + "832565744d4629aac869805fef10d135c82a9479", [ null, - {} + { + "testdriver": true + } ] ] }, - "fedcm-network-requests.https.html": [ - "0084c8b0cfee064aea748b51a7758b37d4f91d1f", + "fedcm-nonce-is-optional.https.html": [ + "dafd6c9e983053b50c12b56ce2ef483c61006c77", [ null, - {} + { + "testdriver": true + } + ] + ], + "fedcm-not-observer-by-service-worker.https.html": [ + "072d66966566c939bfa5ba64db1d62e7247dab81", + [ + null, + { + "testdriver": true + } + ] + ], + "fedcm-pending-call-rejected.https.html": [ + "feb3f903d87a32380a2f4e2ef074bf706be6a8d6", + [ + null, + { + "testdriver": true + } + ] + ], + "fedcm-reject-invalid-responses.https.html": [ + "f450d568249ec7d7f2ef6f1229d5781344cfb5c5", + [ + null, + { + "testdriver": true + } + ] + ], + "fedcm-returning-account-auto-reauthn.https.html": [ + "e5b399611242463e100014538ebd3ebe56a1dd44", + [ + null, + { + "testdriver": true + } ] ], "fedcm-userinfo.https.html": [ - "ff5e432c747c73aa9815bc4302a6c0c2927b731a", + "d460d82845282f00e0164590c552bcd73ca15255", [ null, - {} + { + "testdriver": true + } ] ], "federatedcredential-framed-get.sub.https.html": [ @@ -510767,7 +513300,7 @@ ] ], "color-valid-color-mix-function.html": [ - "361f7488a13c3d4f49747d11ab21487f740a490c", + "f11ecc8e4722b974c25a144edc64591b3b178852", [ null, {} @@ -511975,7 +514508,7 @@ ] ], "content-visibility-050.html": [ - "bcc4f5e430c1b5f4de514426ea468a8128496d31", + "474d5c087a66ae5ae46e377898a3759652af32e7", [ null, {} @@ -515532,7 +518065,7 @@ ] ], "font-size-adjust-computed.html": [ - "cec5a0d13ed29e112b92a85462e2ceae9a177685", + "4910ddd2845645b13c2c70fb5d6eae954509b49b", [ null, {} @@ -519738,7 +522271,7 @@ ] ], "highlight-pseudo-computed.html": [ - "e50f1801b0c0d0fb4f357f77f0a6cddd940bf389", + "99212abc3e539a03101b342ca9238666a25716c0", [ null, {} @@ -521883,7 +524416,7 @@ }, "css-nesting": { "cssom.html": [ - "fa22b2fb45368ed37a2f971d58c6ecb8736b7360", + "226fb791b57240c2f47172de6351549a0e59ed9a", [ null, {} @@ -521998,6 +524531,13 @@ {} ] ], + "overflow-clip-margin-hit-testing.html": [ + "c3a67dc0476d7fe74303ea59eade0b43dba2d42c", + [ + null, + {} + ] + ], "overflow-clip-margin-intersection-observer.html": [ "dcc1e6e7edd7d14a96ea4037d459d2f16a1f706b", [ @@ -524791,7 +527331,7 @@ ], "input": { "keyboard.html": [ - "10796f23e7b6a8f1799834022057feb268e8fe1b", + "6f2255446149458d348ef38226b1eb89f90ca0fb", [ null, { @@ -525202,7 +527742,7 @@ ] ], "snap-to-different-targets.html": [ - "7ad659d8a6d1becdcf74305061ed0257e72eea17", + "fb9469ba7317d111513bd6b943836dc79565c324", [ null, {} @@ -525465,6 +528005,100 @@ {} ] ] + }, + "scroll-start-target": { + "scroll-start-target-display-toggled.tentative.html": [ + "527d7502678bab30c64cd351a2f76d56c50dd1f5", + [ + null, + {} + ] + ], + "scroll-start-target-nested-container.tentative.html": [ + "b84803c9417f0313dd7d5a3d081d831a177f07ec", + [ + null, + { + "testdriver": true + } + ] + ], + "scroll-start-target-root.tentative.html": [ + "f2af38bbabcc210f4a6faa18e66cd38d0132004a", + [ + null, + {} + ] + ], + "scroll-start-target-rtl.tentative.html": [ + "5a2fa0a93cad6fd781915ada495302599e8d1007", + [ + null, + {} + ] + ], + "scroll-start-target-with-anchor-navigation.tentative.html": [ + "bc5b75f75f1c32d34b5e5033c25b49d0d5882447", + [ + null, + { + "testdriver": true + } + ] + ], + "scroll-start-target-with-hash-fragment-navigation.tentative.html": [ + "2d291c2ef9ff92e5fdd530dfafb357297243bc72", + [ + null, + {} + ] + ], + "scroll-start-target-with-scroll-snap.tentative.html": [ + "9cb66c01fcefeb15e6657773dd46185cc50f0fe6", + [ + null, + {} + ] + ], + "scroll-start-target-with-scroll-start-root.tentative.html": [ + "af99595f254138e6c8e5367441a3372f6a06c947", + [ + null, + {} + ] + ], + "scroll-start-target-with-scroll-start.tentative.html": [ + "a37c8312887125d18c90e47b6343b3d746953c60", + [ + null, + {} + ] + ], + "scroll-start-target-with-text-fragment-navigation.tentative.html": [ + "f83ea1a036aee2f8e26796df1c27193e9493b052", + [ + null, + { + "testdriver": true + } + ] + ], + "scroll-start-target-with-user-programmatic-scroll.tentative.html": [ + "2d487e9b85cde86898a5dc1893c11bf59f759400", + [ + null, + { + "testdriver": true + } + ] + ], + "scroll-start-target.tentative.html": [ + "2e679c37396646e71e15c5fdf0c1552911de235e", + [ + null, + {} + ] + ] } }, "css-scrollbars": { @@ -530509,7 +533143,7 @@ ] ], "word-break-computed.html": [ - "5fbf0ae77495e581bc7998af78ce57e7ef0730fd", + "5a3b7f66852923a3cc24f1c7f461287cc6eaa9c1", [ null, {} @@ -530523,7 +533157,7 @@ ] ], "word-break-valid.html": [ - "7f558848fb8bb8a0327c7dd5b6efca9e823dda1f", + "40015d9dd36e7c97abc788e39f624e567a02ddba", [ null, {} @@ -532106,7 +534740,7 @@ ] ], "changing-while-transition-004.html": [ - "71038ac11f78b3581645587da205d74b9ee71610", + "29d8e31f667cab2cbdbbbce0515022df7da1f0b3", [ null, {} @@ -534424,7 +537058,7 @@ ] ], "offset-position.html": [ - "fb843bf6822e238cfb94190ca1cab1eb28c076c9", + "ca36226e7694fdf496f86476d1a645c5351fa6fb", [ null, {} @@ -535634,6 +538268,15 @@ ] ] }, + "resize-interactive.html": [ + "2a2332d3ef58184aa55114758fa219a51f8fbd78", + [ + null, + { + "testdriver": true + } + ] + ], "text-overflow-023.html": [ "b9c21ed8f22e5380773a6ebdf620913be7aa77e1", [ @@ -536329,7 +538972,7 @@ ] ], "round-mod-rem-computed.html": [ - "e20315e28f96379d050b7c06cf54d92006b9addc", + "320ab4a11a92ff5b3e567187cbd5f756b8c07a9c", [ null, {} @@ -540480,7 +543123,7 @@ ] }, "inheritance.html": [ - "4a82f32cd58694f43314b6f52fc5e828ddfd8f01", + "508c0cebf1ecd1c654500c01d6091f4f8f997437", [ null, {} @@ -540544,7 +543187,7 @@ ] ], "offset-parsing-valid.html": [ - "7a5d9c94f057f2c20baa68a246e98424967c0d14", + "6358582bfe54ab62cec9e738ae8e00c5198bb33c", [ null, {} @@ -540614,7 +543257,7 @@ ] ], "offset-shorthand.html": [ - "5e38b8c459c0265bfef5a29340608137dae6e54a", + "585e4e6bdb43d51d0cd7ec8d79188b8cd47e73ac", [ null, {} @@ -542479,7 +545122,7 @@ ] ], "form-disabled-callback.html": [ - "c61a7719fc628c21d380e7f16c8c19921e3ceb2b", + "a30b678f13bc83e6c7527eafb86970845436e76e", [ null, {} @@ -547871,7 +550514,7 @@ "editing": { "edit-context": { "edit-context-basics.tentative.html": [ - "27bde6e6ac29763532c744472425878375df1358", + "0ed345806136b9c31d1c4f0d6b304b67419d7646", [ null, {} @@ -565854,7 +568497,7 @@ ] ], "automatic-beacon-click-handler.https.html": [ - "505eb6174f20de38ce6103f76e46dccc8caaa7a2", + "3aac5906ac6004b2b738250c925be882556f5b6a", [ null, { @@ -565863,7 +568506,7 @@ ] ], "automatic-beacon-two-events-clear.https.html": [ - "ae246aaac0ad4b269cf0e86d761d4a34abd14acc", + "61543ffa4856060f2cf48d46e4ccb6158146e4ad", [ null, { @@ -565872,7 +568515,7 @@ ] ], "automatic-beacon-two-events-persist.https.html": [ - "f944d7141d7ee22596c1a98d6895d913cf3c0729", + "0c949ded40b03a90f05c4d48fc1e45f9ec8d8108", [ null, { @@ -566088,6 +568731,13 @@ {} ] ], + "deep-copy-config.https.html": [ + "37b27a742b94f345778cee14fc2013be41d8d15e", + [ + null, + {} + ] + ], "default-enabled-features-allow-all.https.html": [ "00044a4c85664956e3ce2ab10856390b3315cdd9", [ @@ -566802,6 +569452,13 @@ } ] ], + "scroll-into-view.https.html": [ + "5188f39c69fad7b53528c3ad0bffb03591e38602", + [ + null, + {} + ] + ], "selecturl-flexible-size.https.html": [ "6b1a07e73a70744b493fea221fd12f94761242e6", [ @@ -579384,7 +582041,7 @@ }, "range": { "blob.any.js": [ - "1db3b248f6c3657cc7a54bc9f941016ae6787f59", + "7bcd4b9d11f3ebc66ddcaad8196431f5e85c4912", [ "fetch/range/blob.any.html", { @@ -579923,6 +582580,33 @@ {} ] ], + "generate-bid-recency.https.sub.window.js": [ + "ed431820d3058769f3c7dd56c2fbc55dd6d95df9", + [ + "fledge/tentative/generate-bid-recency.https.sub.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ] + ], "insecure-context.window.js": [ "9016277b73139d050e3d688c3f21cb40048464e2", [ @@ -579985,7 +582669,7 @@ ] ], "register-ad-beacon.https.sub.window.js": [ - "2284ac85b41f09fd884fc612c1941a13199b1c51", + "48ce1fa26364ba5157237e34285fc6ba38137a96", [ "fledge/tentative/register-ad-beacon.https.sub.window.html", { @@ -580012,7 +582696,7 @@ ] ], "reporting-arguments.https.sub.window.js": [ - "262e0eb87e67b04fc9d61c0ba9c3d1b9f1dde70c", + "3b03d29bcf50e4a5fe47b621f280d57d1f9d6eaf", [ "fledge/tentative/reporting-arguments.https.sub.window.html", { @@ -580039,7 +582723,7 @@ ] ], "send-report-to.https.sub.window.js": [ - "de22e827a33e195cf6122dc927ff4344de8b23b0", + "087140af3ef51ac69ddcfa3efdf4b5f97bfa44ad", [ "fledge/tentative/send-report-to.https.sub.window.html", { @@ -582159,7 +584843,7 @@ ] ], "fullscreen-reordering.html": [ - "1a286c32c770342d3a6026545dde5213925e2292", + "4b394bc20fc1a3ce9c904eed1c23be00789d3131", [ null, { @@ -584402,7 +587086,7 @@ ] ], "fenced-frame.tentative.https.window.js": [ - "675c136606201f4ba5079a6763cc8b3888780a42", + "a9cdcbbd560298361856aaa5a32081fd46936f20", [ "html/anonymous-iframe/fenced-frame.tentative.https.window.html", { @@ -594002,77 +596686,77 @@ }, "filters": { "2d.filter.canvasFilterObject.blur.exceptions.tentative.html": [ - "2abd7cdee756ce44c04fa06ac1566c01e01f7ff4", + "f43e10703df1eb9e23bc3046dafad698486992dc", [ null, {} ] ], "2d.filter.canvasFilterObject.colorMatrix.tentative.html": [ - "61c0f37591ea8ca8e0873d5ba2728f0157f16941", + "b2f6a6ac97ef2109c9af632be71975b54a8391bd", [ null, {} ] ], "2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html": [ - "0512cac1c9816c7172fe825655457c09467bbd54", + "b392b189f21ef09e1a27f293b71ef9031469ab70", [ null, {} ] ], "2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html": [ - "c6feb50a35d46f327d7ec1358ef5f6257b319498", + "e5bff7e44dfc5afa69788ce7577e154d55be2557", [ null, {} ] ], "2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html": [ - "bb7dc41c3d87d939c0540495a99670198d1879e7", + "ecd3830be3e2e0bf8c9aa7192d4d3c79d0b3082d", [ null, {} ] ], "2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html": [ - "ee4a053961728475ae34ae2c9d73eb7882cb7710", + "8708887f6a511699e8d1132c1e78c754fb5b7ec4", [ null, {} ] ], "2d.filter.canvasFilterObject.componentTransfer.table.tentative.html": [ - "510d1304246059498d02eccc5ab6b7f0b01e9a0e", + "4b296d9fd7d513d96b6f6f63045cebcf057697bc", [ null, {} ] ], "2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html": [ - "4f4a9c17bd182eab31eaa6df8fa7b2e20a42c45a", + "b80600c14175f48e1e871f1fc5893cb0755a4228", [ null, {} ] ], "2d.filter.canvasFilterObject.dropShadow.exceptions.tentative.html": [ - "2a14e30bb75f1de38c3b47351f5cc8802f98cc74", + "8c07a72b2b3ff6675d49c0313e653d2a655401c7", [ null, {} ] ], "2d.filter.canvasFilterObject.tentative.html": [ - "059a71025d5f1342b9c77fb2f9f48fb4f349be32", + "c19bc700880875b8ed4c0ecfbf3f3ca754f93a2b", [ null, {} ] ], "2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html": [ - "7ab62e368d0cd1135df835e21b8b15d64ef0c146", + "c24cfd23981e89809fac0717ce267247a5ca5f14", [ null, {} @@ -594087,6 +596771,20 @@ ] }, "layers": { + "2d.layer.beginLayer-options.html": [ + "34aa57a1926d72c59f3902ba2be4805deeff84b1", + [ + null, + {} + ] + ], + "2d.layer.exceptions-are-no-op.html": [ + "7ab2080fca382babacd8908b1b5ebbddb9f2c2ad", + [ + null, + {} + ] + ], "2d.layer.invalid-calls.beginLayer-reset-endLayer.html": [ "74e05e1e48e7901aa0e2383eb66af0a7e14def3e", [ @@ -594537,7 +597235,7 @@ "tentative": { "idl-conversions": { "canvas-filter-sequence-conversion.html": [ - "8b1a5cdf60d9442812fce61b7d49efab69267a56", + "d48627867e3996873da95c2826622fdb7350760d", [ null, {} @@ -597533,6 +600231,13 @@ {} ] ], + "2d.text.font.weight.html": [ + "05816b7254b2d789630e3df3a1d66e5ba7f24f0b", + [ + null, + {} + ] + ], "2d.text.measure.actualBoundingBox.html": [ "d0672b23dcd3f4902f1ca6375a3be62560f96902", [ @@ -603411,154 +606116,154 @@ }, "filters": { "2d.filter.canvasFilterObject.blur.exceptions.tentative.html": [ - "63f23bc1f710e1210effb4acb10d3d4784dc8985", + "e4d4798a8e8113a9ee9c3e1e4f08f059e7c006ba", [ null, {} ] ], "2d.filter.canvasFilterObject.blur.exceptions.tentative.worker.js": [ - "9a2baad6aba1a3b821c9a1468d3fa2c25a1e3e33", + "75afb17b792251d249e771e143c891e2759d02ba", [ "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.worker.html", {} ] ], "2d.filter.canvasFilterObject.colorMatrix.tentative.html": [ - "778d9fb2f809971c1fd965ca34dc214b8f4f2d45", + "242094d9f9fb8cc500bed216f9ed9d72ef53b66d", [ null, {} ] ], "2d.filter.canvasFilterObject.colorMatrix.tentative.worker.js": [ - "ff5a6711306a81b61fe1139771bc2125ed52069c", + "d214e1d836e0e4dbb1ebeb572a56853c2c0c2cfd", [ "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.worker.html", {} ] ], "2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html": [ - "e91fc5502e0929870e02e63b7d4b481147637ff3", + "ff1de6bc9cf648c47f0f5d45a62fb7030dca0b65", [ null, {} ] ], "2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.worker.js": [ - "0a7752bf1353662ad4d00cefb0944d1abee68851", + "0e68f4899fe7167e28a9804a1aa3c20d034247a8", [ "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.worker.html", {} ] ], "2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html": [ - "6fa1244a1db33d69641895b9bc3c7c3f0d91ff08", + "64c30fc4177e4388b6d5323be1ef0a520b6f1c5f", [ null, {} ] ], "2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.worker.js": [ - "0a72055afb7719e668f13db64852747594530f91", + "d59bc699df90ed04d8cf6fa23fc86ce3a399813c", [ "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.worker.html", {} ] ], "2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html": [ - "552402c556b7b6d55b0adfb07e98361885ff6b82", + "e0d628952e0f01af9c0db1082ec2fee1854e6d86", [ null, {} ] ], "2d.filter.canvasFilterObject.componentTransfer.identity.tentative.worker.js": [ - "861f86beb7ab406597dad732ed6ae1400112c86d", + "1b714b58ff741ca5f025c1863d61722092470edd", [ "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.worker.html", {} ] ], "2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html": [ - "3d842ab5b44dc8c5d4ad46f76a0863092488a8ec", + "adbe557fd96dccfe4e8260ef0a51e745eea7f5c9", [ null, {} ] ], "2d.filter.canvasFilterObject.componentTransfer.linear.tentative.worker.js": [ - "a3a8240906a3d59343e45a66a3eca51b879a60e7", + "fb2e01876fcb270908f80b5e6844308a7fa2dcc0", [ "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.worker.html", {} ] ], "2d.filter.canvasFilterObject.componentTransfer.table.tentative.html": [ - "caef1eaef33daa0a1f1799c9852f4199d2d8eb95", + "47048b68a149d83916023974af2ea45381a8363a", [ null, {} ] ], "2d.filter.canvasFilterObject.componentTransfer.table.tentative.worker.js": [ - "d23534a0145405e5d34a25fd07bca2676861ecd0", + "0799e73a583d20709c630470f6d226b455a29a6e", [ "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.worker.html", {} ] ], "2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html": [ - "fed21c695c93b5aabf8031db74e9ce128ea3a4c2", + "301d11f888cbe584604a9e99c7cbbcd7124d8547", [ null, {} ] ], "2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.worker.js": [ - "02efed9496bbdad3cc78330865a6d61ae5d844da", + "b4ce4d76b24e733495907f9bc0ac9e0a5ae0b6bb", [ "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.worker.html", {} ] ], "2d.filter.canvasFilterObject.dropShadow.exceptions.tentative.html": [ - "4cd0dc8e1cbddfdcacddf46a98b73a0df6c356f4", + "3e55e97e54f8bb7124611ef2c2ece6094dc77800", [ null, {} ] ], "2d.filter.canvasFilterObject.dropShadow.exceptions.tentative.worker.js": [ - "9c30e5633aa1aacf88e9474c9838c73efc25a02c", + "bd18524f28b7e6880d83c74df2a1fc487ed5bce9", [ "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.exceptions.tentative.worker.html", {} ] ], "2d.filter.canvasFilterObject.tentative.html": [ - "6b80005308d3658fdfb8523ef8f9a6d52650c0b4", + "0d057e41050b2b4ef91be59337b5d14f2c696aef", [ null, {} ] ], "2d.filter.canvasFilterObject.tentative.worker.js": [ - "8e2e794c39c82da0d413f0edd1cc7f2afd080ef4", + "22a743877ff32893a022e250f38ead67a3178767", [ "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.worker.html", {} ] ], "2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html": [ - "6392659c947a6e99712c9788d567eb58e383c615", + "040c62a96bbb633dc6bf1602461f08a33fe9ec1a", [ null, {} ] ], "2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.worker.js": [ - "82f4ace50696da4057bce71cbe5fec6ef9891f53", + "1a950a9207b9c3080d69bc7a191d3ebfb4d664e1", [ "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.worker.html", {} @@ -603580,6 +606285,34 @@ ] }, "layers": { + "2d.layer.beginLayer-options.html": [ + "75e73c032b0643c6a2ee1f723c951349b655a21e", + [ + null, + {} + ] + ], + "2d.layer.beginLayer-options.worker.js": [ + "77941270e83036c6ce623a0c9d407f803d568ca7", + [ + "html/canvas/offscreen/layers/2d.layer.beginLayer-options.worker.html", + {} + ] + ], + "2d.layer.exceptions-are-no-op.html": [ + "a047c539cfbda487598412027f441f0794c44c07", + [ + null, + {} + ] + ], + "2d.layer.exceptions-are-no-op.worker.js": [ + "bd1e3760847d1577cd76faf39e4d177195c3af63", + [ + "html/canvas/offscreen/layers/2d.layer.exceptions-are-no-op.worker.html", + {} + ] + ], "2d.layer.invalid-calls.beginLayer-reset-endLayer.html": [ "c0b11aa6115b1526ebac823caace5bd489481223", [ @@ -609563,6 +612296,20 @@ {} ] ], + "2d.text.font.weight.html": [ + "cac9c369b58e9d1d2d7719380e3fc192e010660e", + [ + null, + {} + ] + ], + "2d.text.font.weight.worker.js": [ + "8f653c36566afdf4ab5592ac0cf4c86084b678ac", + [ + "html/canvas/offscreen/text/2d.text.font.weight.worker.html", + {} + ] + ], "2d.text.measure.actualBoundingBox.html": [ "105efc07948a4de537689bb8bbc7ee1548f187bf", [ @@ -626608,6 +629355,15 @@ {} ] ], + "radio-keyboard-navigation-order.html": [ + "d019ca982c8db2378958f44f4aeccd6151fd8721", + [ + null, + { + "testdriver": true + } + ] + ], "radio-morphed.html": [ "b7b8658948d13e403742ae90a62f7f5744eae809", [ @@ -627593,7 +630349,7 @@ ] ], "name-attribute.tentative.html": [ - "48980d0a5e257f7b17422ba4f8d931f9f58d7e0e", + "271577efe5ec074b424837089ad64e3fd01c6258", [ null, {} @@ -628519,6 +631275,15 @@ } ] ], + "popover-light-dismiss-flat-tree.html": [ + "d2792a895cce9acb17d1c0a22ccbd880dcf81588", + [ + null, + { + "testdriver": true + } + ] + ], "popover-light-dismiss-on-scroll.html": [ "382addadef1e046db9c1814c7e5104727525b616", [ @@ -628526,8 +631291,18 @@ {} ] ], + "popover-light-dismiss-with-anchor.tentative.html": [ + "c4e545c4fb97133cf6ad74ed73e2ade827c3721b", + [ + null, + { + "testdriver": true, + "timeout": "long" + } + ] + ], "popover-light-dismiss.html": [ - "eb148941fbf30073d0285be97117185923cfa604", + "4c31bed1635f68774f4368e834b3793d3f857495", [ null, { @@ -628767,28 +631542,28 @@ ], "css-module": { "charset-2.html": [ - "535099b24a67283d6d73e12f543f8637a458adbc", + "fb25b1ffb324b1b13eb0a2c71a77a1e7c4645540", [ null, {} ] ], "charset-bom.html": [ - "e26ee08d31d74414d4c147f92a9e6e94e48b59a8", + "113ae63ea476473f833be7e4356b11c2a6557ba5", [ null, {} ] ], "charset.html": [ - "8b72481814b1f320dfb56d5299d1988455d32b44", + "e7010c2f575664faf307c86c3801d720f5d07dfe", [ null, {} ] ], "content-type-checking.html": [ - "105c53c40d9680ace20d47e765f2080e648c97d0", + "5be0d50c3835c56b95956e58e9dba00943124f43", [ null, {} @@ -628815,6 +631590,106 @@ {} ] ], + "import-css-module-basic.html": [ + "8e9b84691a028bb9d46620f1003fda688591f660", + [ + null, + {} + ] + ], + "import-css-module-dynamic.html": [ + "5774a31cb24058c140cd04031d81f85b6c057ab9", + [ + null, + {} + ] + ], + "integrity.html": [ + "1dd0dad470a319d1fe11e74e997441a7b6e6d0d8", + [ + null, + {} + ] + ], + "load-error-events.html": [ + "703a0734ff5f15a8a5ef9fed45091c82e1f7441f", + [ + null, + {} + ] + ], + "referrer-policies.sub.html": [ + "a507ee52fca4dbb08607e2e4e402c18874f573cf", + [ + null, + {} + ] + ], + "relative-urls.html": [ + "0aafb9aae51ef993a6d499e0b29cfe21f9bec2a2", + [ + null, + {} + ] + ], + "script-element-css-src.html": [ + "231d02db477bde9e33a570e9aa8670b322acf634", + [ + null, + {} + ] + ] + }, + "css-module-assertions": { + "charset-2.html": [ + "aaa2960aafe36b477abaad5d284fcf3bae536cf7", + [ + null, + {} + ] + ], + "charset-bom.html": [ + "e26ee08d31d74414d4c147f92a9e6e94e48b59a8", + [ + null, + {} + ] + ], + "charset.html": [ + "2127ec7280440c8cb08e3fa38b64bb52edda0573", + [ + null, + {} + ] + ], + "content-type-checking.html": [ + "3ade8633058443d2a830a7ac3e87401a976fa54b", + [ + null, + {} + ] + ], + "cors-crossorigin-requests.html": [ + "b9de562b723287c3e84b3499fec99bfd0a04caf0", + [ + null, + {} + ] + ], + "credentials.sub.html": [ + "8c2f0f8073d8249f9505193d1114c89ffa45955a", + [ + null, + {} + ] + ], + "css-module-worker-test.html": [ + "7ff672da6a9274ba7fb6d08c70b81406eeb795d6", + [ + null, + {} + ] + ], "import-css-module-basic.html": [ "4ea1790aabdf2bf420d05eb0c902770b5cef7139", [ @@ -628844,14 +631719,14 @@ ] ], "referrer-policies.sub.html": [ - "efa5340715f3446484ef99519795d499e19fe0c7", + "f078437e09cc7599ab4427cbed4fe011e23fdc7d", [ null, {} ] ], "relative-urls.html": [ - "e84767169642d0013c303b8aecd579e24ba1f273", + "22971d28d9bd259caa1088ec86761eba650b95da", [ null, {} @@ -630109,7 +632984,7 @@ ], "import-assertions": { "dynamic-import-with-assertion-argument.any.js": [ - "ef032d27c572ac53714649dbcf999640d4abd85d", + "7efb2050b72664197f1a2b5dc9efb1a67b7f0b8c", [ "html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.html", { @@ -630159,7 +633034,66 @@ ] ], "unsupported-assertion.html": [ - "edda2d737a3cfa4c39f717f527ed6ad6da6b338d", + "72977347a78c352ef0269d02542b362f4c631f48", + [ + null, + {} + ] + ] + }, + "import-attributes": { + "dynamic-import-with-attributes-argument.any.js": [ + "54008b54405e84f710e2f4b6c1c148673b96781e", + [ + "html/semantics/scripting-1/the-script-element/import-attributes/dynamic-import-with-attributes-argument.any.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ] + ] + } + ], + [ + "html/semantics/scripting-1/the-script-element/import-attributes/dynamic-import-with-attributes-argument.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ] + ] + } + ], + [ + "html/semantics/scripting-1/the-script-element/import-attributes/dynamic-import-with-attributes-argument.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ] + ] + } + ] + ], + "empty-attributes-clause.html": [ + "0a8868b2f4ed1484f567f2dc983cda650d198f8d", + [ + null, + {} + ] + ], + "invalid-type-attribute-error.html": [ + "ac6d61a642640657c0f864177b1e305660465633", + [ + null, + {} + ] + ], + "unsupported-attribute.html": [ + "3656e465ce78238a28f2b6ab2861f2de9bd9ff23", [ null, {} @@ -630168,14 +633102,14 @@ }, "json-module": { "charset-2.html": [ - "1bfd3fc00ae94c77df11c8b5f6a37a8a718d94bf", + "dfadaba4d1b7a1ab7a9145868e4daaf9ae8c4e21", [ null, {} ] ], "charset-bom.any.js": [ - "d2dbe3e468f19017f2d400b059215718f56ce975", + "483936a4f7092127735cb07098f4fa089a63b604", [ "html/semantics/scripting-1/the-script-element/json-module/charset-bom.any.html", { @@ -630223,7 +633157,7 @@ ] ], "charset.html": [ - "de30de8c2e5d4100d39725f8f2d3fe1a94a4fb03", + "ce72f0ef1b2e19ba8cb353e23a64e1f234b14e9d", [ null, {} @@ -630251,7 +633185,7 @@ ] ], "invalid-content-type.any.js": [ - "cbccbd48429bf608fa9dd9eaac0f1fe4a38ddcbb", + "4226c3dc03f2a42d7082d15b8023227a2595b969", [ "html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.any.html", { @@ -630294,21 +633228,21 @@ ] ], "load-error-events.html": [ - "a9dfc1e6917830eb67761d34edb86cf15ca4ae64", + "54c1892540ea32818d4cb548a4501adc0999f753", [ null, {} ] ], "module.html": [ - "a495d4ac186260b6705c56b75d2b1ff1de7722a1", + "05fc264f36a4ad47e2c4d4966885b3cf202cd845", [ null, {} ] ], "non-object.any.js": [ - "37fbcae9fabb6d0fe89ff486fae4e896d5d21db5", + "ae78ddf072b1dbf950ae81ead5c19c1dbe1bdb03", [ "html/semantics/scripting-1/the-script-element/json-module/non-object.any.html", { @@ -630351,14 +633285,14 @@ ] ], "referrer-policies.sub.html": [ - "83e103529dcb95202616fdf1fe7bc51bc67f8463", + "1509c853e29d74c37343e99ebee1dd69076a58c8", [ null, {} ] ], "repeated-imports.any.js": [ - "5cc3ee5b7c4c9fd98ad394a6571172fea9ad506d", + "722251b84d04cf43c67be07bf1dc2fc5116cd45c", [ "html/semantics/scripting-1/the-script-element/json-module/repeated-imports.any.html", { @@ -630413,7 +633347,261 @@ ] ], "valid-content-type.html": [ - "89ccc59817dc845ba95b8780811d71f0eab7805d", + "3232b84d271e0faa49fd600eac9f4394db7f5630", + [ + null, + {} + ] + ] + }, + "json-module-assertions": { + "charset-2.html": [ + "686178bfe1000a61769eeed525362f9a6282ee03", + [ + null, + {} + ] + ], + "charset-bom.any.js": [ + "d2dbe3e468f19017f2d400b059215718f56ce975", + [ + "html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ], + [ + "script", + "/common/utils.js" + ] + ] + } + ], + [ + "html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ], + [ + "script", + "/common/utils.js" + ] + ] + } + ], + [ + "html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ], + [ + "script", + "/common/utils.js" + ] + ] + } + ] + ], + "charset.html": [ + "7c74b9bf6c4bafb61f54805f223857e44c0c5043", + [ + null, + {} + ] + ], + "cors-crossorigin-requests.html": [ + "757af2901c321d414ec6dc0db36a9ae3f238933e", + [ + null, + {} + ] + ], + "credentials.sub.html": [ + "d11d2f9589044d19a15e6d3c787189e7c79f7175", + [ + null, + {} + ] + ], + "integrity.html": [ + "68a794b973359132e8e803bd75f115ffb872d3b5", + [ + null, + {} + ] + ], + "invalid-content-type.any.js": [ + "cbccbd48429bf608fa9dd9eaac0f1fe4a38ddcbb", + [ + "html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ] + ] + } + ], + [ + "html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ] + ] + } + ], + [ + "html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ] + ] + } + ] + ], + "json-module-service-worker-test.https.html": [ + "cc47da1499f13a1233ab71e461b77e7a7b53be26", + [ + null, + {} + ] + ], + "load-error-events.html": [ + "a9dfc1e6917830eb67761d34edb86cf15ca4ae64", + [ + null, + {} + ] + ], + "module.html": [ + "a495d4ac186260b6705c56b75d2b1ff1de7722a1", + [ + null, + {} + ] + ], + "non-object.any.js": [ + "37fbcae9fabb6d0fe89ff486fae4e896d5d21db5", + [ + "html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ] + ] + } + ], + [ + "html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ] + ] + } + ], + [ + "html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ] + ] + } + ] + ], + "parse-error.html": [ + "68d3ef0a9ad3e6d033579c948faf5a8c2b23beb6", + [ + null, + {} + ] + ], + "referrer-policies.sub.html": [ + "655c962ab781fa104fb3be8f9e6998d575cfb375", + [ + null, + {} + ] + ], + "repeated-imports.any.js": [ + "5cc3ee5b7c4c9fd98ad394a6571172fea9ad506d", + [ + "html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ], + [ + "script", + "/common/utils.js" + ] + ] + } + ], + [ + "html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ], + [ + "script", + "/common/utils.js" + ] + ] + } + ], + [ + "html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,sharedworker" + ], + [ + "script", + "/common/utils.js" + ] + ] + } + ] + ], + "script-element-json-src.html": [ + "c6d7c9a76e83b5d110aaa9d93a8fc49d4d714b94", + [ + null, + {} + ] + ], + "valid-content-type.html": [ + "162f2d6afcaf6fb4a23f4736286fe97e8ab05b28", [ null, {} @@ -658371,6 +661559,13 @@ {} ] ], + "preload-nonce.sub.html": [ + "325c8a2e824b6c69b9088fd1c2a6f0c713d9eb33", + [ + null, + {} + ] + ], "preload-referrer-policy.html": [ "0a4fbb0b4a1d4995ae55ca2d76a9655cb14405a6", [ @@ -675539,6 +678734,13 @@ {} ] ], + "unattached-subject-inset.html": [ + "86262db8f88d8930722efaacdfa98690713a9e4d", + [ + null, + {} + ] + ], "view-timeline-get-current-time-range-name.html": [ "25e477e1a97acc56bb692abb8375ab05f9b8e9c9", [ @@ -691184,6 +694386,13 @@ {} ] ], + "custom-events.html": [ + "1c49106b510821b2cd5765908dcb878329929026", + [ + null, + {} + ] + ], "cyclic-syncbase-2.html": [ "7e27f469e877829a63051ecfc17be7a63b125bf1", [ @@ -691233,6 +694442,13 @@ {} ] ], + "event-listeners.html": [ + "ca2b9b72f5bce40e9ded3da72251eccaf73c6995", + [ + null, + {} + ] + ], "eventbase-non-svg-element.html": [ "f4e7f793e41dd3de8b3e1c19da9387edffa62baf", [ @@ -692562,14 +695778,14 @@ ] ], "href-animate-element.html": [ - "f0b99209a80193db0ffe994d18fc2c42e6485ea5", + "5220495d796a3bf6a95ff38db213cdb98aaa5a20", [ null, {} ] ], "href-mpath-element.html": [ - "8fb9f0f1aed6b3f6d7b70ed4cdcd7fdd7a19175f", + "03949b4168c17c97b2f5cbec7965212d2df5405a", [ null, {} @@ -711301,7 +714517,7 @@ ] ], "videoFrame-construction.crossOriginSource.sub.html": [ - "81906d33b7992620f3319395ae2f3003c70bf2ac", + "172580f83cc0283a4d9755600b9973875b843462", [ null, {} @@ -716927,7 +720143,7 @@ ] ], "supported-stats.https.html": [ - "24b4d3f06f04d740d3b45b4813222d97f891cbcc", + "c2319964973762ecf585992e0fb0991226c0c29d", [ null, { @@ -736907,6 +740123,17 @@ {} ] ], + "blob-range.any.js": [ + "2a5c54fc34f38dba40531de24fd565e32741567b", + [ + "xhr/blob-range.any.html", + {} + ], + [ + "xhr/blob-range.any.worker.html", + {} + ] + ], "close-worker-with-xhr-in-progress.html": [ "4d03bea028fbc629b3a8f285478b845dbce432fb", [ @@ -761163,7 +764390,7 @@ "browsing_context": { "activate": { "activate.py": [ - "3d20a4f6464b9d9b4930b3bb2ef0578a2181ad74", + "0abbbbac38e3477b4998892c5e93c940e319e0d4", [ null, {} @@ -761243,14 +764470,14 @@ }, "create": { "background.py": [ - "cf9a167022c1419d6bf51758d0272c361e47eccc", + "f1effe05372af81564c605a2a243a5737c481a75", [ null, {} ] ], "invalid.py": [ - "5de171b1b61dd73d3546acf8e68a9c327bd5bb87", + "bad840172453ec1b1338be664d31875d57c7d197", [ null, {} @@ -761351,7 +764578,7 @@ ] ], "error.py": [ - "b5d9a9d8fe7723ed3cb04c404f4bfbda32b7ef28", + "ba23e77300042ca08878b7887d09e08f747845dd", [ null, {} @@ -761379,7 +764606,7 @@ ] ], "invalid.py": [ - "3ea45f066653f3fd416f3f99f025cca0d1d15570", + "1f33604c4d0081ea6f49c996e89a1a6a88310e0c", [ null, {} @@ -761560,7 +764787,7 @@ ] ], "pointer_mouse.py": [ - "7e262581018e858048466ef38bf08d901a8633d5", + "bb5d78f3013ed643b73b90bbfc4f5b876b21ead1", [ null, {} @@ -761778,7 +765005,7 @@ }, "call_function": { "arguments.py": [ - "32a4a6a2b8f22ab7d5b1bf1ec7485f0a2c379cfb", + "b1b188187ba8d5b326fd68fddd8a21d8ffa155e2", [ null, {} @@ -762192,7 +765419,7 @@ }, "add_cookie": { "add.py": [ - "3a19432fc6a243544bcd6b8d9b13ffc01e185eaf", + "24b71c52fddf529ab89e37ea74202d17cef1329c", [ null, {} @@ -762362,7 +765589,7 @@ ] ], "navigate.py": [ - "e92c11bb13592b35745dbbe9d17bd3768eafd786", + "fa35b7ae6e366557af0dc5c4ddfc79c2b517771d", [ null, {} diff --git a/tests/wpt/meta/css/css-position/overlay/overlay-transition-dialog.html.ini b/tests/wpt/meta/css/css-position/overlay/overlay-transition-dialog.html.ini new file mode 100644 index 00000000000..c2e01775ffe --- /dev/null +++ b/tests/wpt/meta/css/css-position/overlay/overlay-transition-dialog.html.ini @@ -0,0 +1,2 @@ +[overlay-transition-dialog.html] + expected: TIMEOUT diff --git a/tests/wpt/meta/css/cssom/idlharness.html.ini b/tests/wpt/meta/css/cssom/idlharness.html.ini index 68f7b709026..12e21706741 100644 --- a/tests/wpt/meta/css/cssom/idlharness.html.ini +++ b/tests/wpt/meta/css/cssom/idlharness.html.ini @@ -502,3 +502,24 @@ [CSSImportRule interface: sheet.cssRules[0\] must inherit property "supportsText" with the proper type] expected: FAIL + + [CSSStyleRule interface: existence and properties of interface object] + expected: FAIL + + [CSSStyleRule interface: existence and properties of interface prototype object] + expected: FAIL + + [CSSGroupingRule interface: sheet.cssRules[4\] must inherit property "cssRules" with the proper type] + expected: FAIL + + [CSSGroupingRule interface: sheet.cssRules[4\] must inherit property "insertRule(CSSOMString, optional unsigned long)" with the proper type] + expected: FAIL + + [CSSGroupingRule interface: calling insertRule(CSSOMString, optional unsigned long) on sheet.cssRules[4\] with too few arguments must throw TypeError] + expected: FAIL + + [CSSGroupingRule interface: sheet.cssRules[4\] must inherit property "deleteRule(unsigned long)" with the proper type] + expected: FAIL + + [CSSGroupingRule interface: calling deleteRule(unsigned long) on sheet.cssRules[4\] with too few arguments must throw TypeError] + expected: FAIL diff --git a/tests/wpt/tests/close-watcher/abortsignal.html b/tests/wpt/tests/close-watcher/abortsignal.html index ddd94526ab2..9229b37cf66 100644 --- a/tests/wpt/tests/close-watcher/abortsignal.html +++ b/tests/wpt/tests/close-watcher/abortsignal.html @@ -4,11 +4,11 @@ + -
+ -
+ diff --git a/tests/wpt/tests/close-watcher/esc-key.html b/tests/wpt/tests/close-watcher/esc-key.html index 4d98b3dc318..16fcce69173 100644 --- a/tests/wpt/tests/close-watcher/esc-key.html +++ b/tests/wpt/tests/close-watcher/esc-key.html @@ -8,12 +8,12 @@ -
+ -
+ -
+ + @@ -20,8 +21,6 @@ + @@ -20,8 +21,6 @@ diff --git a/tests/wpt/tests/close-watcher/resources/helpers.js b/tests/wpt/tests/close-watcher/resources/helpers.js index 08da0496b30..de643365692 100644 --- a/tests/wpt/tests/close-watcher/resources/helpers.js +++ b/tests/wpt/tests/close-watcher/resources/helpers.js @@ -1,5 +1,3 @@ -// TODO(domenic): consider using these in all test files. - window.createRecordingCloseWatcher = (t, events, name) => { const prefix = name === undefined ? "" : name + " ";; @@ -16,15 +14,16 @@ window.createBlessedRecordingCloseWatcher = (t, events, name) => { }; window.sendEscKey = () => { - // *not* \uu001B; see https://w3c.github.io/webdriver/#keyboard-actions - const ESC = '\uE00C'; - - return test_driver.send_keys(document.getElementById("d"), ESC); + // Esc is \uE00C, *not* \uu001B; see https://w3c.github.io/webdriver/#keyboard-actions. + // + // It's important to target document.body, and not any element that might stop receiving events + // if a popover or dialog is making that element inert. + return test_driver.send_keys(document.body, '\uE00C'); }; -// For now, we always use the Esc keypress as our close signal. In +// For now, we always use the Esc keypress as our close request. In // theory, in the future, we could add a WebDriver command or similar -// for the close signal, which would allow different tests on platforms -// with different close signals. In that case, we'd update this +// for the close request, which would allow different tests on platforms +// with different close requests. In that case, we'd update this // function, but not update the sendEscKey function above. -window.sendCloseSignal = window.sendEscKey; +window.sendCloseRequest = window.sendEscKey; diff --git a/tests/wpt/tests/close-watcher/user-activation-multiple-plus-free.html b/tests/wpt/tests/close-watcher/user-activation-multiple-plus-free.html index 8a86624913f..a94b47904a1 100644 --- a/tests/wpt/tests/close-watcher/user-activation-multiple-plus-free.html +++ b/tests/wpt/tests/close-watcher/user-activation-multiple-plus-free.html @@ -6,7 +6,7 @@ -
+ diff --git a/tests/wpt/tests/close-watcher/user-activation.html b/tests/wpt/tests/close-watcher/user-activation.html index a2bc575ee91..4591f5493b2 100644 --- a/tests/wpt/tests/close-watcher/user-activation.html +++ b/tests/wpt/tests/close-watcher/user-activation.html @@ -6,7 +6,7 @@ -
+ diff --git a/tests/wpt/tests/compute-pressure/README.md b/tests/wpt/tests/compute-pressure/README.md index 05bacb7f16d..7695c4a33e3 100644 --- a/tests/wpt/tests/compute-pressure/README.md +++ b/tests/wpt/tests/compute-pressure/README.md @@ -1,2 +1,2 @@ This directory contains (tentative) tests for the -[Compute Pressure](https://wicg.github.io/compute-pressure/) specification. +[Compute Pressure](https://w3c.github.io/compute-pressure/) specification. diff --git a/tests/wpt/tests/compute-pressure/compute_pressure_basic.tentative.https.any.js b/tests/wpt/tests/compute-pressure/compute_pressure_basic.tentative.https.any.js index 18b8985cf51..28322ced729 100644 --- a/tests/wpt/tests/compute-pressure/compute_pressure_basic.tentative.https.any.js +++ b/tests/wpt/tests/compute-pressure/compute_pressure_basic.tentative.https.any.js @@ -39,7 +39,7 @@ pressure_test((t, mockPressureService) => { mockPressureService.setPressureUpdate('cpu', 'critical'); mockPressureService.startPlatformCollector(/*sampleRate=*/ 5.0); - return promise_rejects_dom(t, 'NotSupportedError', promise); + return promise_rejects_dom(t, 'AbortError', promise); }, 'Removing observer before observe() resolves works'); pressure_test(async (t, mockPressureService) => { diff --git a/tests/wpt/tests/compute-pressure/compute_pressure_disconnect_idempotent.tentative.https.any.js b/tests/wpt/tests/compute-pressure/compute_pressure_disconnect_idempotent.tentative.https.any.js index 2f6421ee117..74d37bd6e5c 100644 --- a/tests/wpt/tests/compute-pressure/compute_pressure_disconnect_idempotent.tentative.https.any.js +++ b/tests/wpt/tests/compute-pressure/compute_pressure_disconnect_idempotent.tentative.https.any.js @@ -14,7 +14,7 @@ pressure_test(async (t, mockPressureService) => { const promise = observer1.observe('cpu'); observer1.disconnect(); observer1.disconnect(); - await promise_rejects_dom(t, 'NotSupportedError', promise); + await promise_rejects_dom(t, 'AbortError', promise); const observer2_changes = []; await new Promise((resolve, reject) => { diff --git a/tests/wpt/tests/compute-pressure/compute_pressure_disconnect_immediately.tentative.https.any.js b/tests/wpt/tests/compute-pressure/compute_pressure_disconnect_immediately.tentative.https.any.js index b96ebd802e6..9b545fbe1c3 100644 --- a/tests/wpt/tests/compute-pressure/compute_pressure_disconnect_immediately.tentative.https.any.js +++ b/tests/wpt/tests/compute-pressure/compute_pressure_disconnect_immediately.tentative.https.any.js @@ -13,7 +13,7 @@ pressure_test(async (t, mockPressureService) => { // Ensure that observer1's schema gets registered before observer2 starts. const promise = observer1.observe('cpu'); observer1.disconnect(); - await promise_rejects_dom(t, 'NotSupportedError', promise); + await promise_rejects_dom(t, 'AbortError', promise); const observer2_changes = []; await new Promise((resolve, reject) => { @@ -53,7 +53,7 @@ pressure_test(async (t, mockPressureService) => { const promise = observer1.observe('cpu'); observer2.observe('cpu'); observer1.disconnect(); - await promise_rejects_dom(t, 'NotSupportedError', promise); + await promise_rejects_dom(t, 'AbortError', promise); mockPressureService.setPressureUpdate('cpu', 'critical'); mockPressureService.startPlatformCollector(/*sampleRate=*/ 5.0); }); diff --git a/tests/wpt/tests/compute-pressure/idlharness.https.any.js b/tests/wpt/tests/compute-pressure/idlharness.https.any.js index 1307304fdfe..e8289962324 100644 --- a/tests/wpt/tests/compute-pressure/idlharness.https.any.js +++ b/tests/wpt/tests/compute-pressure/idlharness.https.any.js @@ -2,7 +2,7 @@ // META: script=/resources/idlharness.js // META: global=window,dedicatedworker,sharedworker -// https://wicg.github.io/compute-pressure/ +// https://w3c.github.io/compute-pressure/ 'use strict'; diff --git a/tests/wpt/tests/compute-pressure/permissions-policy/compute-pressure-supported-by-permissions-policy.html b/tests/wpt/tests/compute-pressure/permissions-policy/compute-pressure-supported-by-permissions-policy.html index 931fcb66b48..35f09b7b07e 100644 --- a/tests/wpt/tests/compute-pressure/permissions-policy/compute-pressure-supported-by-permissions-policy.html +++ b/tests/wpt/tests/compute-pressure/permissions-policy/compute-pressure-supported-by-permissions-policy.html @@ -1,7 +1,7 @@ Test that compute-pressure is advertised in the feature list - + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-after-abort.https.html b/tests/wpt/tests/credential-management/fedcm-after-abort.https.html new file mode 100644 index 00000000000..3c2f981e82f --- /dev/null +++ b/tests/wpt/tests/credential-management/fedcm-after-abort.https.html @@ -0,0 +1,25 @@ + +Federated Credential Management API network request tests. + + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-basic.https.html b/tests/wpt/tests/credential-management/fedcm-basic.https.html new file mode 100644 index 00000000000..1c2b916103c --- /dev/null +++ b/tests/wpt/tests/credential-management/fedcm-basic.https.html @@ -0,0 +1,21 @@ + +Federated Credential Management API network request tests. + + + + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-client-metadata-not-cached.https.html b/tests/wpt/tests/credential-management/fedcm-client-metadata-not-cached.https.html new file mode 100644 index 00000000000..b802369256a --- /dev/null +++ b/tests/wpt/tests/credential-management/fedcm-client-metadata-not-cached.https.html @@ -0,0 +1,41 @@ + +Federated Credential Management API network request tests. + + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-context.https.html b/tests/wpt/tests/credential-management/fedcm-context.https.html index 67ba8256341..bc1f96eafa0 100644 --- a/tests/wpt/tests/credential-management/fedcm-context.https.html +++ b/tests/wpt/tests/credential-management/fedcm-context.https.html @@ -15,26 +15,34 @@ import {request_options_with_mediation_required, fedcm_test} from './support/fedcm-helper.sub.js'; fedcm_test(async t => { - navigator.credentials.get(request_options_with_mediation_required()); + let p = navigator.credentials.get(request_options_with_mediation_required()); const title = await fedcm_get_title_promise(t); assert_true(title.toLowerCase().includes('sign in')); + window.test_driver.select_fedcm_account(0); + return p; }, "FedCM call defaults to 'signin' context."); fedcm_test(async t => { - navigator.credentials.get(request_options_with_context("manifest.py", "signup")); + let p = navigator.credentials.get(request_options_with_context("manifest.py", "signup")); const title = await fedcm_get_title_promise(t); assert_true(title.toLowerCase().includes('sign up')); + window.test_driver.select_fedcm_account(0); + return p; }, "FedCM with 'signup' context."); fedcm_test(async t => { - navigator.credentials.get(request_options_with_context("manifest.py", "use")); + let p = navigator.credentials.get(request_options_with_context("manifest.py", "use")); const title = await fedcm_get_title_promise(t); assert_true(title.toLowerCase().includes('use')); + window.test_driver.select_fedcm_account(0); + return p; }, "FedCM with 'use' context."); fedcm_test(async t => { - navigator.credentials.get(request_options_with_context("manifest.py", "continue")); + let p = navigator.credentials.get(request_options_with_context("manifest.py", "continue")); const title = await fedcm_get_title_promise(t); assert_true(title.toLowerCase().includes('continue')); + window.test_driver.select_fedcm_account(0); + return p; }, "FedCM with 'continue' context."); diff --git a/tests/wpt/tests/credential-management/fedcm-cross-origin-policy.https.html b/tests/wpt/tests/credential-management/fedcm-cross-origin-policy.https.html index b2a68b00c8e..1e3b4c71a83 100644 --- a/tests/wpt/tests/credential-management/fedcm-cross-origin-policy.https.html +++ b/tests/wpt/tests/credential-management/fedcm-cross-origin-policy.https.html @@ -3,15 +3,18 @@ + + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-iframe.https.html b/tests/wpt/tests/credential-management/fedcm-iframe.https.html index 43fe39f7bcb..964ebf4c44d 100644 --- a/tests/wpt/tests/credential-management/fedcm-iframe.https.html +++ b/tests/wpt/tests/credential-management/fedcm-iframe.https.html @@ -10,9 +10,11 @@ import {fedcm_test, set_fedcm_cookie} from './support/fedcm-helper.sub.js'; const host = get_host_info(); -const remoteBaseURL = - host.HTTPS_REMOTE_ORIGIN + - window.location.pathname.replace(/\/[^\/]*$/, '/'); +// This regex removes the filename from the path so that we just get +// the directory. +const basePath = window.location.pathname.replace(/\/[^\/]*$/, '/'); +const remoteBaseURL = host.HTTPS_REMOTE_ORIGIN + basePath; +const localhostBaseURL = "http://localhost:" + host.HTTP_PORT + basePath; async function createIframeAndWaitForMessage(test, iframeUrl, setPermissionPolicy) { const messageWatcher = new EventWatcher(test, window, "message"); @@ -58,4 +60,14 @@ fedcm_test(async t => { assert_equals(message.errorType, "NotAllowedError"); }, "FedCM disabled in 2 level deep nested iframe where innermost iframe does not have permission policy"); +fedcm_test(async t => { + // This is only an iframe because there's no other way to have this URL + // loaded from localhost. + const message = await createIframeAndWaitForMessage( + t, localhostBaseURL + "support/fedcm-iframe.html", + /*setPermissionPolicy=*/true); + assert_equals(message.result, "Pass"); + assert_equals(message.token, "token"); +}, "FedCM should work in non-HTTPS URLs on localhost"); + diff --git a/tests/wpt/tests/credential-management/fedcm-loginhint.https.html b/tests/wpt/tests/credential-management/fedcm-loginhint.https.html index 6db67138167..cb03116dc7a 100644 --- a/tests/wpt/tests/credential-management/fedcm-loginhint.https.html +++ b/tests/wpt/tests/credential-management/fedcm-loginhint.https.html @@ -3,23 +3,26 @@ + + diff --git a/tests/wpt/tests/credential-management/fedcm-manifest-not-in-list.https.html b/tests/wpt/tests/credential-management/fedcm-manifest-not-in-list.https.html new file mode 100644 index 00000000000..8d85d9eb367 --- /dev/null +++ b/tests/wpt/tests/credential-management/fedcm-manifest-not-in-list.https.html @@ -0,0 +1,19 @@ + +Federated Credential Management API network request tests. + + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-multi-idp/get-before-and-after-onload.https.html b/tests/wpt/tests/credential-management/fedcm-multi-idp/get-before-and-after-onload.https.html index dc332870abc..12e0eb4d813 100644 --- a/tests/wpt/tests/credential-management/fedcm-multi-idp/get-before-and-after-onload.https.html +++ b/tests/wpt/tests/credential-management/fedcm-multi-idp/get-before-and-after-onload.https.html @@ -3,11 +3,16 @@ + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-multi-idp/get-before-onload-and-during-dom-content-loaded.https.html b/tests/wpt/tests/credential-management/fedcm-multi-idp/get-before-onload-and-during-dom-content-loaded.https.html index 65aeb72dcf1..95495948b77 100644 --- a/tests/wpt/tests/credential-management/fedcm-multi-idp/get-before-onload-and-during-dom-content-loaded.https.html +++ b/tests/wpt/tests/credential-management/fedcm-multi-idp/get-before-onload-and-during-dom-content-loaded.https.html @@ -3,20 +3,27 @@ + + diff --git a/tests/wpt/tests/credential-management/fedcm-multi-idp/multiple-gets-after-abort.https.html b/tests/wpt/tests/credential-management/fedcm-multi-idp/multiple-gets-after-abort.https.html index 12f88d3068e..899302fb221 100644 --- a/tests/wpt/tests/credential-management/fedcm-multi-idp/multiple-gets-after-abort.https.html +++ b/tests/wpt/tests/credential-management/fedcm-multi-idp/multiple-gets-after-abort.https.html @@ -3,13 +3,16 @@ + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-multi-idp/multiple-gets-during-onload.https.html b/tests/wpt/tests/credential-management/fedcm-multi-idp/multiple-gets-during-onload.https.html index 252732c9643..bcf70a31c74 100644 --- a/tests/wpt/tests/credential-management/fedcm-multi-idp/multiple-gets-during-onload.https.html +++ b/tests/wpt/tests/credential-management/fedcm-multi-idp/multiple-gets-during-onload.https.html @@ -3,11 +3,17 @@ + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-multi-idp/single-get-during-onload.https.html b/tests/wpt/tests/credential-management/fedcm-multi-idp/single-get-during-onload.https.html index 8383c3b9ff8..832565744d4 100644 --- a/tests/wpt/tests/credential-management/fedcm-multi-idp/single-get-during-onload.https.html +++ b/tests/wpt/tests/credential-management/fedcm-multi-idp/single-get-during-onload.https.html @@ -3,19 +3,24 @@ + + - - - - - - diff --git a/tests/wpt/tests/credential-management/fedcm-nonce-is-optional.https.html b/tests/wpt/tests/credential-management/fedcm-nonce-is-optional.https.html new file mode 100644 index 00000000000..dafd6c9e983 --- /dev/null +++ b/tests/wpt/tests/credential-management/fedcm-nonce-is-optional.https.html @@ -0,0 +1,21 @@ + +Federated Credential Management API network request tests. + + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-not-observer-by-service-worker.https.html b/tests/wpt/tests/credential-management/fedcm-not-observer-by-service-worker.https.html new file mode 100644 index 00000000000..072d6696656 --- /dev/null +++ b/tests/wpt/tests/credential-management/fedcm-not-observer-by-service-worker.https.html @@ -0,0 +1,53 @@ + +Federated Credential Management API network request tests. + + + + + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-pending-call-rejected.https.html b/tests/wpt/tests/credential-management/fedcm-pending-call-rejected.https.html new file mode 100644 index 00000000000..feb3f903d87 --- /dev/null +++ b/tests/wpt/tests/credential-management/fedcm-pending-call-rejected.https.html @@ -0,0 +1,29 @@ + +Federated Credential Management API network request tests. + + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-reject-invalid-responses.https.html b/tests/wpt/tests/credential-management/fedcm-reject-invalid-responses.https.html new file mode 100644 index 00000000000..f450d568249 --- /dev/null +++ b/tests/wpt/tests/credential-management/fedcm-reject-invalid-responses.https.html @@ -0,0 +1,48 @@ + +Federated Credential Management API network request tests. + + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-returning-account-auto-reauthn.https.html b/tests/wpt/tests/credential-management/fedcm-returning-account-auto-reauthn.https.html new file mode 100644 index 00000000000..e5b39961124 --- /dev/null +++ b/tests/wpt/tests/credential-management/fedcm-returning-account-auto-reauthn.https.html @@ -0,0 +1,33 @@ + +Federated Credential Management API network request tests. + + + + + + + diff --git a/tests/wpt/tests/credential-management/fedcm-userinfo.https.html b/tests/wpt/tests/credential-management/fedcm-userinfo.https.html index ff5e432c747..d460d828452 100644 --- a/tests/wpt/tests/credential-management/fedcm-userinfo.https.html +++ b/tests/wpt/tests/credential-management/fedcm-userinfo.https.html @@ -3,13 +3,16 @@ + + + diff --git a/tests/wpt/tests/css/css-backgrounds/background-image-gradient-interpolation-repaint-ref.html b/tests/wpt/tests/css/css-backgrounds/background-image-gradient-interpolation-repaint-ref.html new file mode 100644 index 00000000000..a69159609b1 --- /dev/null +++ b/tests/wpt/tests/css/css-backgrounds/background-image-gradient-interpolation-repaint-ref.html @@ -0,0 +1,4 @@ + + +CSS Test Reference +
diff --git a/tests/wpt/tests/css/css-backgrounds/background-image-gradient-interpolation-repaint.html b/tests/wpt/tests/css/css-backgrounds/background-image-gradient-interpolation-repaint.html new file mode 100644 index 00000000000..8f5d0f14bbd --- /dev/null +++ b/tests/wpt/tests/css/css-backgrounds/background-image-gradient-interpolation-repaint.html @@ -0,0 +1,16 @@ + + + +CSS Backgrounds and Borders: Repaint gradient on color-interpolation-method change + + + +
+ diff --git a/tests/wpt/tests/css/css-break/table/table-cell-border-002.html b/tests/wpt/tests/css/css-break/table/table-cell-border-002.html new file mode 100644 index 00000000000..9aa05f2acee --- /dev/null +++ b/tests/wpt/tests/css/css-break/table/table-cell-border-002.html @@ -0,0 +1,13 @@ + + + + + +

Test passes if there is a filled green square and no red.

+
+
+
+
+
+
+
diff --git a/tests/wpt/tests/css/css-color/lab-l-over-100-1.html b/tests/wpt/tests/css/css-color/lab-l-over-100-1.html index 7d6e0387700..287eba98245 100644 --- a/tests/wpt/tests/css/css-color/lab-l-over-100-1.html +++ b/tests/wpt/tests/css/css-color/lab-l-over-100-1.html @@ -1,7 +1,7 @@ CSS Color 4: Verify lightness in Lab is always clamped to a value between 0 to 100 - + + + +

Test passes if you see a single color.

+
+
+ diff --git a/tests/wpt/tests/css/css-color/oklab-l-over-1-2.html b/tests/wpt/tests/css/css-color/oklab-l-over-1-2.html new file mode 100644 index 00000000000..11948f014bf --- /dev/null +++ b/tests/wpt/tests/css/css-color/oklab-l-over-1-2.html @@ -0,0 +1,17 @@ + + +CSS Color 4: Verify lightness in Oklab is always clamped to a value between 0% to 100% + + + + + + +

Test passes if you see a single color.

+
+
+ diff --git a/tests/wpt/tests/css/css-color/oklab-l-over-1-ref.html b/tests/wpt/tests/css/css-color/oklab-l-over-1-ref.html new file mode 100644 index 00000000000..eb380dcb750 --- /dev/null +++ b/tests/wpt/tests/css/css-color/oklab-l-over-1-ref.html @@ -0,0 +1,11 @@ + + +CSS Color 4: Verify lightness in Lab is always clamped to a value between 0 to 100 + + + +

Test passes if you see a single color.

+
+ diff --git a/tests/wpt/tests/css/css-color/parsing/color-valid-color-mix-function.html b/tests/wpt/tests/css/css-color/parsing/color-valid-color-mix-function.html index 361f7488a13..f11ecc8e472 100644 --- a/tests/wpt/tests/css/css-color/parsing/color-valid-color-mix-function.html +++ b/tests/wpt/tests/css/css-color/parsing/color-valid-color-mix-function.html @@ -17,7 +17,7 @@ +
diff --git a/tests/wpt/tests/css/css-grid/subgrid/percentage-track-sizing.html b/tests/wpt/tests/css/css-grid/subgrid/percentage-track-sizing.html new file mode 100644 index 00000000000..3e62f19a0a3 --- /dev/null +++ b/tests/wpt/tests/css/css-grid/subgrid/percentage-track-sizing.html @@ -0,0 +1,27 @@ + + + +CSS Grid Test: Subgrid percentage track sizing + + + + +

Test passes if there is a filled green square and no red.

+
+
+
+
+
+ diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-pseudo-computed.html b/tests/wpt/tests/css/css-highlight-api/highlight-pseudo-computed.html index e50f1801b0c..99212abc3e5 100644 --- a/tests/wpt/tests/css/css-highlight-api/highlight-pseudo-computed.html +++ b/tests/wpt/tests/css/css-highlight-api/highlight-pseudo-computed.html @@ -9,6 +9,7 @@ background-color: green; color: lime; } + #target::highlight(bar) { background-color: cyan; color: fuchsia; @@ -30,12 +31,10 @@ assert_equals(style.color, "rgb(255, 0, 255)", "Color is fuchsia."); }, `Different getComputedStyle() for ${highlightPseudo} and same element`); - for (const illHighlightPseudo of ["::highlight(foo):", "::highlight(foo))", "::highlight(foo)(", "::highlight", "::highlight(foo)(foo)", "::highlight(foo)()", ":::highlight(foo)", "::highlight(foo).", "::highlight(foo,bar)"]) { + for (const illHighlightPseudo of ["::highlight(foo):", "::highlight(foo))", "::highlight(foo)(", "::highlight", "::highlight(foo)(foo)", "::highlight(foo)()", ":::highlight(foo)", "::highlight(foo).", "::highlight(foo,bar)", "::highlight(foo bar)"]) { test(() => { let style = getComputedStyle(target, illHighlightPseudo); - let defaultStyle = getComputedStyle(target); - assert_equals(style.backgroundColor, defaultStyle.backgroundColor, "Background color is element's default."); - assert_equals(style.color, defaultStyle.color, "Color is element's default."); - }, `getComputedStyle() for ${illHighlightPseudo} should be element's default`); + assert_equals(style.length, 0, "Invalid pseudo identifiers should not return a style."); + }, `getComputedStyle() for ${illHighlightPseudo} should not return a style.`); } - + \ No newline at end of file diff --git a/tests/wpt/tests/css/css-highlight-api/painting/custom-highlight-painting-prioritization-003-ref.html b/tests/wpt/tests/css/css-highlight-api/painting/custom-highlight-painting-prioritization-003-ref.html new file mode 100644 index 00000000000..9d3e3b00b08 --- /dev/null +++ b/tests/wpt/tests/css/css-highlight-api/painting/custom-highlight-painting-prioritization-003-ref.html @@ -0,0 +1,15 @@ + + +CSS Highlight API Test: Non-conflicting attributes + + +

This is an example of two overlapping highlights

+ \ No newline at end of file diff --git a/tests/wpt/tests/css/css-highlight-api/painting/custom-highlight-painting-prioritization-003.html b/tests/wpt/tests/css/css-highlight-api/painting/custom-highlight-painting-prioritization-003.html new file mode 100644 index 00000000000..1c7abf47493 --- /dev/null +++ b/tests/wpt/tests/css/css-highlight-api/painting/custom-highlight-painting-prioritization-003.html @@ -0,0 +1,36 @@ + + +CSS Highlight API Test: Non-conflicting attributes + + + + + +

This is an example of two overlapping highlights

+ + \ No newline at end of file diff --git a/tests/wpt/tests/css/css-nesting/cssom.html b/tests/wpt/tests/css/css-nesting/cssom.html index fa22b2fb453..226fb791b57 100644 --- a/tests/wpt/tests/css/css-nesting/cssom.html +++ b/tests/wpt/tests/css/css-nesting/cssom.html @@ -8,6 +8,10 @@ + +
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/layers-001-print-ref.html b/tests/wpt/tests/css/css-page/layers-001-print-ref.html new file mode 100644 index 00000000000..b2dae651d55 --- /dev/null +++ b/tests/wpt/tests/css/css-page/layers-001-print-ref.html @@ -0,0 +1,21 @@ + + + + +
+
+
+
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/layers-001-print.html b/tests/wpt/tests/css/css-page/layers-001-print.html new file mode 100644 index 00000000000..b097fbb8fc0 --- /dev/null +++ b/tests/wpt/tests/css/css-page/layers-001-print.html @@ -0,0 +1,30 @@ + + + + + + +
+
+ + diff --git a/tests/wpt/tests/css/css-page/layers-002-print-ref.html b/tests/wpt/tests/css/css-page/layers-002-print-ref.html new file mode 100644 index 00000000000..b8b5fc1d152 --- /dev/null +++ b/tests/wpt/tests/css/css-page/layers-002-print-ref.html @@ -0,0 +1,21 @@ + + + + +
+
+
+
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/layers-002-print.html b/tests/wpt/tests/css/css-page/layers-002-print.html new file mode 100644 index 00000000000..fb30ba9eb3d --- /dev/null +++ b/tests/wpt/tests/css/css-page/layers-002-print.html @@ -0,0 +1,30 @@ + + + + + + +
+
+ + diff --git a/tests/wpt/tests/css/css-page/layers-003-print-ref.html b/tests/wpt/tests/css/css-page/layers-003-print-ref.html new file mode 100644 index 00000000000..70e43fb6f50 --- /dev/null +++ b/tests/wpt/tests/css/css-page/layers-003-print-ref.html @@ -0,0 +1,21 @@ + + + + +
+
+
+
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/layers-003-print.html b/tests/wpt/tests/css/css-page/layers-003-print.html new file mode 100644 index 00000000000..ace3d5c8c01 --- /dev/null +++ b/tests/wpt/tests/css/css-page/layers-003-print.html @@ -0,0 +1,36 @@ + + + + + + +
+
+ + diff --git a/tests/wpt/tests/css/css-page/layers-004-print-ref.html b/tests/wpt/tests/css/css-page/layers-004-print-ref.html new file mode 100644 index 00000000000..a779b263c7d --- /dev/null +++ b/tests/wpt/tests/css/css-page/layers-004-print-ref.html @@ -0,0 +1,21 @@ + + + + +
+
+
+
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/layers-004-print.html b/tests/wpt/tests/css/css-page/layers-004-print.html new file mode 100644 index 00000000000..5e84d2a3226 --- /dev/null +++ b/tests/wpt/tests/css/css-page/layers-004-print.html @@ -0,0 +1,36 @@ + + + + + + +
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-abspos-001-print-ref.html b/tests/wpt/tests/css/css-page/page-name-abspos-001-print-ref.html new file mode 100644 index 00000000000..dc61a550780 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-abspos-001-print-ref.html @@ -0,0 +1,7 @@ + + + +
a
+
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-abspos-001-print.html b/tests/wpt/tests/css/css-page/page-name-abspos-001-print.html new file mode 100644 index 00000000000..df2f6149358 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-abspos-001-print.html @@ -0,0 +1,9 @@ + + + + + +
a
+
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-abspos-002-print-ref.html b/tests/wpt/tests/css/css-page/page-name-abspos-002-print-ref.html new file mode 100644 index 00000000000..c93ee0a31df --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-abspos-002-print-ref.html @@ -0,0 +1,9 @@ + + + +
+
a
+
b
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-abspos-002-print.html b/tests/wpt/tests/css/css-page/page-name-abspos-002-print.html new file mode 100644 index 00000000000..f0accb36c2e --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-abspos-002-print.html @@ -0,0 +1,11 @@ + + + + + +
+
a
+
b
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-abspos-003-print-ref.html b/tests/wpt/tests/css/css-page/page-name-abspos-003-print-ref.html new file mode 100644 index 00000000000..d920fd974a8 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-abspos-003-print-ref.html @@ -0,0 +1,8 @@ + + + +
a
+
b
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-abspos-003-print.html b/tests/wpt/tests/css/css-page/page-name-abspos-003-print.html new file mode 100644 index 00000000000..0361f669ca9 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-abspos-003-print.html @@ -0,0 +1,10 @@ + + + + + +
a
+
b
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-canvas-001-print-ref.html b/tests/wpt/tests/css/css-page/page-name-canvas-001-print-ref.html new file mode 100644 index 00000000000..245b1c5bdd1 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-canvas-001-print-ref.html @@ -0,0 +1,7 @@ + + + + +
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-canvas-001-print.html b/tests/wpt/tests/css/css-page/page-name-canvas-001-print.html new file mode 100644 index 00000000000..64b879efbbc --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-canvas-001-print.html @@ -0,0 +1,9 @@ + + + + + + +
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-canvas-002-print-ref.html b/tests/wpt/tests/css/css-page/page-name-canvas-002-print-ref.html new file mode 100644 index 00000000000..76c3f718cd9 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-canvas-002-print-ref.html @@ -0,0 +1,7 @@ + + + +
a
+ + + diff --git a/tests/wpt/tests/css/css-page/page-name-canvas-002-print.html b/tests/wpt/tests/css/css-page/page-name-canvas-002-print.html new file mode 100644 index 00000000000..7a1bc7d9a00 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-canvas-002-print.html @@ -0,0 +1,9 @@ + + + + + +
a
+ + + diff --git a/tests/wpt/tests/css/css-page/page-name-canvas-003-print-ref.html b/tests/wpt/tests/css/css-page/page-name-canvas-003-print-ref.html new file mode 100644 index 00000000000..2aaa9915fa0 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-canvas-003-print-ref.html @@ -0,0 +1,7 @@ + + + + +
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-canvas-003-print.html b/tests/wpt/tests/css/css-page/page-name-canvas-003-print.html new file mode 100644 index 00000000000..cbebc42153f --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-canvas-003-print.html @@ -0,0 +1,9 @@ + + + + + + +
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-canvas-004-print-ref.html b/tests/wpt/tests/css/css-page/page-name-canvas-004-print-ref.html new file mode 100644 index 00000000000..26a5072789b --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-canvas-004-print-ref.html @@ -0,0 +1,7 @@ + + + + +
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-canvas-004-print.html b/tests/wpt/tests/css/css-page/page-name-canvas-004-print.html new file mode 100644 index 00000000000..6343a509262 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-canvas-004-print.html @@ -0,0 +1,9 @@ + + + + + + +
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-display-none-child-print-ref.html b/tests/wpt/tests/css/css-page/page-name-display-none-child-print-ref.html new file mode 100644 index 00000000000..b7044e0776a --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-display-none-child-print-ref.html @@ -0,0 +1,9 @@ + + + +
a
+ +
+
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-display-none-child-print.html b/tests/wpt/tests/css/css-page/page-name-display-none-child-print.html new file mode 100644 index 00000000000..f42aae35c0a --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-display-none-child-print.html @@ -0,0 +1,12 @@ + + + + + +
a
+
+
c
+
+
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-fixed-pos-001-print-ref.html b/tests/wpt/tests/css/css-page/page-name-fixed-pos-001-print-ref.html new file mode 100644 index 00000000000..5c1e91ea858 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-fixed-pos-001-print-ref.html @@ -0,0 +1,21 @@ + + + + +
fixed
+
a
+
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-fixed-pos-001-print.html b/tests/wpt/tests/css/css-page/page-name-fixed-pos-001-print.html new file mode 100644 index 00000000000..495c66ce2e8 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-fixed-pos-001-print.html @@ -0,0 +1,24 @@ + + + + + + +
fixed
+
a
+
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-flex-001-print-ref.html b/tests/wpt/tests/css/css-page/page-name-flex-001-print-ref.html new file mode 100644 index 00000000000..8cd606f8040 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-flex-001-print-ref.html @@ -0,0 +1,11 @@ + + + +
a
+
+
b
+
c
+
+
d
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-flex-001-print.html b/tests/wpt/tests/css/css-page/page-name-flex-001-print.html new file mode 100644 index 00000000000..9b932e69d2d --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-flex-001-print.html @@ -0,0 +1,13 @@ + + + + + +
a
+
+
b
+
c
+
+
d
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-flex-002-print-ref.html b/tests/wpt/tests/css/css-page/page-name-flex-002-print-ref.html new file mode 100644 index 00000000000..dbd9bca9ebf --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-flex-002-print-ref.html @@ -0,0 +1,11 @@ + + + +
a
+
+
b
+
c
+
+
d
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-flex-002-print.html b/tests/wpt/tests/css/css-page/page-name-flex-002-print.html new file mode 100644 index 00000000000..a25e22d6fbd --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-flex-002-print.html @@ -0,0 +1,13 @@ + + + + + +
a
+
+
b
+
c
+
+
d
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-flex-003-print-ref.html b/tests/wpt/tests/css/css-page/page-name-flex-003-print-ref.html new file mode 100644 index 00000000000..6d33db527bc --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-flex-003-print-ref.html @@ -0,0 +1,11 @@ + + + +
a
+
+
b
+
c
+
+
d
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-flex-003-print.html b/tests/wpt/tests/css/css-page/page-name-flex-003-print.html new file mode 100644 index 00000000000..2cfbb6fb7ca --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-flex-003-print.html @@ -0,0 +1,13 @@ + + + + + +
a
+
+
b
+
c
+
+
d
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-flex-004-print-ref.html b/tests/wpt/tests/css/css-page/page-name-flex-004-print-ref.html new file mode 100644 index 00000000000..85524dfb22a --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-flex-004-print-ref.html @@ -0,0 +1,13 @@ + + + +
a
+
+
+
b
+
c
+
+
+
d
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-flex-004-print.html b/tests/wpt/tests/css/css-page/page-name-flex-004-print.html new file mode 100644 index 00000000000..aa20ad1cb7d --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-flex-004-print.html @@ -0,0 +1,17 @@ + + + + + +
a
+
+
+
+
b
+
c
+
+
+
+
d
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-float-001-print-ref.html b/tests/wpt/tests/css/css-page/page-name-float-001-print-ref.html new file mode 100644 index 00000000000..15ae3b76eba --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-float-001-print-ref.html @@ -0,0 +1,7 @@ + + + +
a
+
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-float-001-print.html b/tests/wpt/tests/css/css-page/page-name-float-001-print.html new file mode 100644 index 00000000000..4233bac5c06 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-float-001-print.html @@ -0,0 +1,9 @@ + + + + + +
a
+
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-float-002-print-ref.html b/tests/wpt/tests/css/css-page/page-name-float-002-print-ref.html new file mode 100644 index 00000000000..e703746e558 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-float-002-print-ref.html @@ -0,0 +1,8 @@ + + + +
a
+
b
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-float-002-print.html b/tests/wpt/tests/css/css-page/page-name-float-002-print.html new file mode 100644 index 00000000000..db4f0b28ce0 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-float-002-print.html @@ -0,0 +1,10 @@ + + + + + +
a
+
b
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-img-001-print-ref.html b/tests/wpt/tests/css/css-page/page-name-img-001-print-ref.html new file mode 100644 index 00000000000..0a51da3948a --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-img-001-print-ref.html @@ -0,0 +1,7 @@ + + + + +
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-img-001-print.html b/tests/wpt/tests/css/css-page/page-name-img-001-print.html new file mode 100644 index 00000000000..7864b869d9c --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-img-001-print.html @@ -0,0 +1,9 @@ + + + + + + +
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-img-002-print-ref.html b/tests/wpt/tests/css/css-page/page-name-img-002-print-ref.html new file mode 100644 index 00000000000..83cf77bf71c --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-img-002-print-ref.html @@ -0,0 +1,7 @@ + + + +
a
+ + + diff --git a/tests/wpt/tests/css/css-page/page-name-img-002-print.html b/tests/wpt/tests/css/css-page/page-name-img-002-print.html new file mode 100644 index 00000000000..3857986ca94 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-img-002-print.html @@ -0,0 +1,9 @@ + + + + + +
a
+ + + diff --git a/tests/wpt/tests/css/css-page/page-name-img-003-print-ref.html b/tests/wpt/tests/css/css-page/page-name-img-003-print-ref.html new file mode 100644 index 00000000000..43a7cc43be1 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-img-003-print-ref.html @@ -0,0 +1,7 @@ + + + + +
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-img-003-print.html b/tests/wpt/tests/css/css-page/page-name-img-003-print.html new file mode 100644 index 00000000000..26790f0e7a3 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-img-003-print.html @@ -0,0 +1,9 @@ + + + + + + +
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-img-004-print-ref.html b/tests/wpt/tests/css/css-page/page-name-img-004-print-ref.html new file mode 100644 index 00000000000..fe55758bc01 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-img-004-print-ref.html @@ -0,0 +1,7 @@ + + + +
a
+ + + diff --git a/tests/wpt/tests/css/css-page/page-name-img-004-print.html b/tests/wpt/tests/css/css-page/page-name-img-004-print.html new file mode 100644 index 00000000000..13fbeb01b5c --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-img-004-print.html @@ -0,0 +1,9 @@ + + + + + +
a
+ + + diff --git a/tests/wpt/tests/css/css-page/page-name-inline-block-001-print-ref.html b/tests/wpt/tests/css/css-page/page-name-inline-block-001-print-ref.html new file mode 100644 index 00000000000..ffcf2c8964f --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-inline-block-001-print-ref.html @@ -0,0 +1,9 @@ + + + +
+
a
+
b
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-inline-block-001-print.html b/tests/wpt/tests/css/css-page/page-name-inline-block-001-print.html new file mode 100644 index 00000000000..365a24146a4 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-inline-block-001-print.html @@ -0,0 +1,11 @@ + + + + + +
+
a
+
b
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-inline-block-002-print-ref.html b/tests/wpt/tests/css/css-page/page-name-inline-block-002-print-ref.html new file mode 100644 index 00000000000..0cbd721e4cf --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-inline-block-002-print-ref.html @@ -0,0 +1,10 @@ + + + +
+
a
+
b
+
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-inline-block-002-print.html b/tests/wpt/tests/css/css-page/page-name-inline-block-002-print.html new file mode 100644 index 00000000000..cb65afa924b --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-inline-block-002-print.html @@ -0,0 +1,12 @@ + + + + + +
+
a
+
b
+
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-inline-block-003-print-ref.html b/tests/wpt/tests/css/css-page/page-name-inline-block-003-print-ref.html new file mode 100644 index 00000000000..35db44b14e1 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-inline-block-003-print-ref.html @@ -0,0 +1,7 @@ + + + +
a
+
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-inline-block-003-print.html b/tests/wpt/tests/css/css-page/page-name-inline-block-003-print.html new file mode 100644 index 00000000000..994f506999a --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-inline-block-003-print.html @@ -0,0 +1,9 @@ + + + + + +
a
+
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-margin-001-print-ref.html b/tests/wpt/tests/css/css-page/page-name-margin-001-print-ref.html new file mode 100644 index 00000000000..60726e6e154 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-margin-001-print-ref.html @@ -0,0 +1,24 @@ + + + + +
+
+
+
+
+
+
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-margin-001-print.html b/tests/wpt/tests/css/css-page/page-name-margin-001-print.html new file mode 100644 index 00000000000..9514339e454 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-margin-001-print.html @@ -0,0 +1,26 @@ + + + + + + +
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-margin-002-print-ref.html b/tests/wpt/tests/css/css-page/page-name-margin-002-print-ref.html new file mode 100644 index 00000000000..0e28b4c8b60 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-margin-002-print-ref.html @@ -0,0 +1,19 @@ + + + + +
+
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-margin-002-print.html b/tests/wpt/tests/css/css-page/page-name-margin-002-print.html new file mode 100644 index 00000000000..0ab67f30692 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-margin-002-print.html @@ -0,0 +1,22 @@ + + + + + + +
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-001-print-ref.html b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-001-print-ref.html new file mode 100644 index 00000000000..60218fbb471 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-001-print-ref.html @@ -0,0 +1,9 @@ + + + +
+
a
+
b
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-001-print.html b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-001-print.html new file mode 100644 index 00000000000..c84b3e5ee96 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-001-print.html @@ -0,0 +1,11 @@ + + + + + +
+
a
+
b
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-002-print-ref.html b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-002-print-ref.html new file mode 100644 index 00000000000..176d5abda5e --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-002-print-ref.html @@ -0,0 +1,7 @@ + + + +
a
+
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-002-print.html b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-002-print.html new file mode 100644 index 00000000000..a720090ba6e --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-002-print.html @@ -0,0 +1,9 @@ + + + + + +
a
+
b
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-003-print-ref.html b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-003-print-ref.html new file mode 100644 index 00000000000..cae1f8d7d31 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-003-print-ref.html @@ -0,0 +1,9 @@ + + + +
+
a
+
b
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-003-print.html b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-003-print.html new file mode 100644 index 00000000000..6d24c324081 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-003-print.html @@ -0,0 +1,11 @@ + + + + + +
+
a
+
b
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-004-print-ref.html b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-004-print-ref.html new file mode 100644 index 00000000000..6d69497386b --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-004-print-ref.html @@ -0,0 +1,11 @@ + + + +
+
+
a
+
b
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-004-print.html b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-004-print.html new file mode 100644 index 00000000000..8e6176584dd --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-orthogonal-writing-004-print.html @@ -0,0 +1,13 @@ + + + + + +
+
+
a
+
b
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-001-print-ref.html b/tests/wpt/tests/css/css-page/page-name-propagated-001-print-ref.html new file mode 100644 index 00000000000..7cd7b54c231 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-001-print-ref.html @@ -0,0 +1,11 @@ + + + +
a
+
+
+
b
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-001-print.html b/tests/wpt/tests/css/css-page/page-name-propagated-001-print.html new file mode 100644 index 00000000000..3efaf7695be --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-001-print.html @@ -0,0 +1,13 @@ + + + + + +
a
+
+
+
b
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-002-print-ref.html b/tests/wpt/tests/css/css-page/page-name-propagated-002-print-ref.html new file mode 100644 index 00000000000..d4191ae70c9 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-002-print-ref.html @@ -0,0 +1,13 @@ + + + +
a
+
+
+
b
+
+
c
+
+
d
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-002-print.html b/tests/wpt/tests/css/css-page/page-name-propagated-002-print.html new file mode 100644 index 00000000000..d88596c1225 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-002-print.html @@ -0,0 +1,15 @@ + + + + + +
a
+
+
+
b
+
+
c
+
+
d
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-003-print-ref.html b/tests/wpt/tests/css/css-page/page-name-propagated-003-print-ref.html new file mode 100644 index 00000000000..2394a1d0936 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-003-print-ref.html @@ -0,0 +1,8 @@ + + + +
a
+
b
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-003-print.html b/tests/wpt/tests/css/css-page/page-name-propagated-003-print.html new file mode 100644 index 00000000000..969bbe6e2d9 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-003-print.html @@ -0,0 +1,14 @@ + + + + + +
a
+
+
+
b
+
c
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-004-print-ref.html b/tests/wpt/tests/css/css-page/page-name-propagated-004-print-ref.html new file mode 100644 index 00000000000..c405886644a --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-004-print-ref.html @@ -0,0 +1,12 @@ + + + +
a
+
+
+
b
+
c
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-004-print.html b/tests/wpt/tests/css/css-page/page-name-propagated-004-print.html new file mode 100644 index 00000000000..49600ef6d5f --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-004-print.html @@ -0,0 +1,14 @@ + + + + + +
a
+
+
+
b
+
c
+
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-005-print-ref.html b/tests/wpt/tests/css/css-page/page-name-propagated-005-print-ref.html new file mode 100644 index 00000000000..05cad793c72 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-005-print-ref.html @@ -0,0 +1,12 @@ + + + +
+
+
a
+
b
+
+
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-005-print.html b/tests/wpt/tests/css/css-page/page-name-propagated-005-print.html new file mode 100644 index 00000000000..12bd274f2fc --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-005-print.html @@ -0,0 +1,14 @@ + + + + + +
+
+
a
+
b
+
+
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-006-print-ref.html b/tests/wpt/tests/css/css-page/page-name-propagated-006-print-ref.html new file mode 100644 index 00000000000..5b45ace9fe5 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-006-print-ref.html @@ -0,0 +1,12 @@ + + + +
+
+
a
+
b
+
+
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-006-print.html b/tests/wpt/tests/css/css-page/page-name-propagated-006-print.html new file mode 100644 index 00000000000..18be3827ce2 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-006-print.html @@ -0,0 +1,14 @@ + + + + + +
+
+
a
+
b
+
+
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-007-print-ref.html b/tests/wpt/tests/css/css-page/page-name-propagated-007-print-ref.html new file mode 100644 index 00000000000..f51d28a574d --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-007-print-ref.html @@ -0,0 +1,9 @@ + + + +
a
+
b
+
c
+
d
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-007-print.html b/tests/wpt/tests/css/css-page/page-name-propagated-007-print.html new file mode 100644 index 00000000000..c27ad9f3263 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-007-print.html @@ -0,0 +1,13 @@ + + + + + +
a
+
+
b
+
c
+
+
d
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-008-print-ref.html b/tests/wpt/tests/css/css-page/page-name-propagated-008-print-ref.html new file mode 100644 index 00000000000..dd53a0586a4 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-008-print-ref.html @@ -0,0 +1,8 @@ + + + +
a
+
b
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-008-print.html b/tests/wpt/tests/css/css-page/page-name-propagated-008-print.html new file mode 100644 index 00000000000..3f7fab4caa4 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-008-print.html @@ -0,0 +1,12 @@ + + + + + +
+
a
+
b
+
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-009-print-ref.html b/tests/wpt/tests/css/css-page/page-name-propagated-009-print-ref.html new file mode 100644 index 00000000000..5faa6ea5c94 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-009-print-ref.html @@ -0,0 +1,8 @@ + + + +
a
+
b
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-propagated-009-print.html b/tests/wpt/tests/css/css-page/page-name-propagated-009-print.html new file mode 100644 index 00000000000..eb0d1dbe890 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-propagated-009-print.html @@ -0,0 +1,12 @@ + + + + + +
+
a
+
b
+
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-siblings-001-print.html b/tests/wpt/tests/css/css-page/page-name-siblings-001-print.html new file mode 100644 index 00000000000..b4fa8457e7b --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-siblings-001-print.html @@ -0,0 +1,10 @@ + + + + + +
a
+
b
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-siblings-002-print.html b/tests/wpt/tests/css/css-page/page-name-siblings-002-print.html new file mode 100644 index 00000000000..28f5e0b5717 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-siblings-002-print.html @@ -0,0 +1,12 @@ + + + + + +
a
+
+
b
+
c
+
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-siblings-003-print.html b/tests/wpt/tests/css/css-page/page-name-siblings-003-print.html new file mode 100644 index 00000000000..44346a649ff --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-siblings-003-print.html @@ -0,0 +1,12 @@ + + + + + +
+
a
+
+
b
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-siblings-004-print.html b/tests/wpt/tests/css/css-page/page-name-siblings-004-print.html new file mode 100644 index 00000000000..51e12ba2518 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-siblings-004-print.html @@ -0,0 +1,10 @@ + + + + + +
a
+
b
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-siblings-005-print.html b/tests/wpt/tests/css/css-page/page-name-siblings-005-print.html new file mode 100644 index 00000000000..9ad77ad5dca --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-siblings-005-print.html @@ -0,0 +1,10 @@ + + + + + +
a
+
b
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-siblings-print-ref.html b/tests/wpt/tests/css/css-page/page-name-siblings-print-ref.html new file mode 100644 index 00000000000..fefe86d8b79 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-siblings-print-ref.html @@ -0,0 +1,8 @@ + + + +
a
+
b
+
c
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-zero-height-001-print-ref.html b/tests/wpt/tests/css/css-page/page-name-zero-height-001-print-ref.html new file mode 100644 index 00000000000..e78cb65df98 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-zero-height-001-print-ref.html @@ -0,0 +1,12 @@ + + + + +
a
+
b
+
c
+
d
+
e
+
f
+ + diff --git a/tests/wpt/tests/css/css-page/page-name-zero-height-001-print.html b/tests/wpt/tests/css/css-page/page-name-zero-height-001-print.html new file mode 100644 index 00000000000..8a108c9b451 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-name-zero-height-001-print.html @@ -0,0 +1,14 @@ + + + + + + +
a
+
b
+
c
+
d
+
e
+
f
+ + diff --git a/tests/wpt/tests/css/css-page/pseudo-first-margin-001-print.html b/tests/wpt/tests/css/css-page/pseudo-first-margin-001-print.html new file mode 100644 index 00000000000..c2c04514f39 --- /dev/null +++ b/tests/wpt/tests/css/css-page/pseudo-first-margin-001-print.html @@ -0,0 +1,22 @@ + + + + + + +
+
+ + diff --git a/tests/wpt/tests/css/css-page/pseudo-first-margin-002-print.html b/tests/wpt/tests/css/css-page/pseudo-first-margin-002-print.html new file mode 100644 index 00000000000..a453b6ba32d --- /dev/null +++ b/tests/wpt/tests/css/css-page/pseudo-first-margin-002-print.html @@ -0,0 +1,25 @@ + + + + + + +
+
+ + diff --git a/tests/wpt/tests/css/css-page/pseudo-first-margin-003-print.html b/tests/wpt/tests/css/css-page/pseudo-first-margin-003-print.html new file mode 100644 index 00000000000..9bb953bfa0a --- /dev/null +++ b/tests/wpt/tests/css/css-page/pseudo-first-margin-003-print.html @@ -0,0 +1,25 @@ + + + + + + +
+
+ + diff --git a/tests/wpt/tests/css/css-page/pseudo-first-margin-print-ref.html b/tests/wpt/tests/css/css-page/pseudo-first-margin-print-ref.html new file mode 100644 index 00000000000..a9c11c23f84 --- /dev/null +++ b/tests/wpt/tests/css/css-page/pseudo-first-margin-print-ref.html @@ -0,0 +1,22 @@ + + + + +
+
+
+
+
+
+ + + diff --git a/tests/wpt/tests/css/css-position/overlay/overlay-transition-dialog-ref.html b/tests/wpt/tests/css/css-position/overlay/overlay-transition-dialog-ref.html new file mode 100644 index 00000000000..b0b8d52e78e --- /dev/null +++ b/tests/wpt/tests/css/css-position/overlay/overlay-transition-dialog-ref.html @@ -0,0 +1,6 @@ + +dialog + diff --git a/tests/wpt/tests/css/css-position/overlay/overlay-transition-dialog.html b/tests/wpt/tests/css/css-position/overlay/overlay-transition-dialog.html new file mode 100644 index 00000000000..0e1297cce75 --- /dev/null +++ b/tests/wpt/tests/css/css-position/overlay/overlay-transition-dialog.html @@ -0,0 +1,27 @@ + + + + + + + + +dialog + + + + diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-display-toggled.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-display-toggled.tentative.html new file mode 100644 index 00000000000..527d7502678 --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-display-toggled.tentative.html @@ -0,0 +1,125 @@ + + + + + CSS Scroll Snap 2 Test: scroll-start-target* + + + + + + +
+
+
+
+
+
+
+ + + diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-nested-container.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-nested-container.tentative.html new file mode 100644 index 00000000000..b84803c9417 --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-nested-container.tentative.html @@ -0,0 +1,230 @@ + + + + + CSS Scroll Snap 2 Test: scroll-start-target* + + + + + + + + + + +
+
+
+
+
+
+
+
+ + + diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-root.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-root.tentative.html new file mode 100644 index 00000000000..f2af38bbabc --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-root.tentative.html @@ -0,0 +1,63 @@ + + + + + + CSS Scroll Snap 2 Test: scroll-start-target* + + + + + + + +
+
+
+
+ + + diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-rtl.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-rtl.tentative.html new file mode 100644 index 00000000000..5a2fa0a93ca --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-rtl.tentative.html @@ -0,0 +1,63 @@ + + + + + + CSS Scroll Snap 2 Test: scroll-start-target* + + + + + + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-anchor-navigation-inner-frame.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-anchor-navigation-inner-frame.html new file mode 100644 index 00000000000..bea0525ecd4 --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-anchor-navigation-inner-frame.html @@ -0,0 +1,42 @@ + + + + + + + + +
Anchor Link
+
+
+
+
Anchor Target
+ + + diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-anchor-navigation.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-anchor-navigation.tentative.html new file mode 100644 index 00000000000..bc5b75f75f1 --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-anchor-navigation.tentative.html @@ -0,0 +1,60 @@ + + + + + + CSS Scroll Snap 2 Test: scroll-start-target interaction with anchor navigation + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-hash-fragment-navigation-inner-frame.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-hash-fragment-navigation-inner-frame.html new file mode 100644 index 00000000000..9bf77363d3e --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-hash-fragment-navigation-inner-frame.html @@ -0,0 +1,48 @@ + + + + + + + + +
+
+
+
+
Fragment Target
+ + + diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-hash-fragment-navigation.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-hash-fragment-navigation.tentative.html new file mode 100644 index 00000000000..2d291c2ef9f --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-hash-fragment-navigation.tentative.html @@ -0,0 +1,34 @@ + + + + + + CSS Scroll Snap 2 Test: scroll-start-target interaction with fragment-navigation + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-scroll-snap.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-scroll-snap.tentative.html new file mode 100644 index 00000000000..9cb66c01fce --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-scroll-snap.tentative.html @@ -0,0 +1,79 @@ + + + + + + CSS Scroll Snap 2 Test: scroll-start-target* + + + + + + + +
+
+
+
+
+
+ + \ No newline at end of file diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-scroll-start-root.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-scroll-start-root.tentative.html new file mode 100644 index 00000000000..af99595f254 --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-scroll-start-root.tentative.html @@ -0,0 +1,66 @@ + + + + + + CSS Scroll Snap 2 Test: scroll-start-target* + + + + + + + +
+
+
+
+ + \ No newline at end of file diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-scroll-start.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-scroll-start.tentative.html new file mode 100644 index 00000000000..a37c8312887 --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-scroll-start.tentative.html @@ -0,0 +1,75 @@ + + + + + + CSS Scroll Snap 2 Test: scroll-start-target* + + + + + + + +
+
+
+
+
+
+ + \ No newline at end of file diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-text-fragment-navigation-target.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-text-fragment-navigation-target.html new file mode 100644 index 00000000000..da53e7a566d --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-text-fragment-navigation-target.html @@ -0,0 +1,83 @@ + + + + + +
+
+
+
+
Target
+ + + + \ No newline at end of file diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-text-fragment-navigation.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-text-fragment-navigation.tentative.html new file mode 100644 index 00000000000..f83ea1a036a --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-text-fragment-navigation.tentative.html @@ -0,0 +1,49 @@ + + + + + + CSS Scroll Snap 2 Test: scroll-start-target interaction with text-fragment navigation + + + + + + + + + + + + diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-user-programmatic-scroll.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-user-programmatic-scroll.tentative.html new file mode 100644 index 00000000000..2d487e9b85c --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-user-programmatic-scroll.tentative.html @@ -0,0 +1,125 @@ + + + + + + CSS Scroll Snap 2 Test: scroll-start-target* + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target.tentative.html new file mode 100644 index 00000000000..2e679c37396 --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target.tentative.html @@ -0,0 +1,98 @@ + + + + + + CSS Scroll Snap 2 Test: scroll-start-target* + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/stash.py b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/stash.py new file mode 100644 index 00000000000..3c65e2b59b3 --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/scroll-start-target/stash.py @@ -0,0 +1,27 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +""" +This file allows the different windows created by +css/css-scroll-snap-2/scroll-start-target-with-text-fragment-navigation.html +to store and retrieve data. + +scroll-start-target-with-text-fragment-navigation.html (test file) opens a window to +scroll-start-target-with-text-fragment-navigation-target.html which writes some data +which the test file will eventually read. This file handles the requests from +both windows. +""" + +import time + +def main(request, response): + key = request.GET.first(b"key") + + if request.method == u"POST": + # Received result data from target page + request.server.stash.put(key, request.body, u'/css/css-scroll-snap-2/scroll-start-target/') + return u"ok" + else: + # Request for result data from test page + value = request.server.stash.take(key, u'/css/css-scroll-snap-2/scroll-start-target/') + return value diff --git a/tests/wpt/tests/css/css-scroll-snap/input/keyboard.html b/tests/wpt/tests/css/css-scroll-snap/input/keyboard.html index 10796f23e7b..6f225544614 100644 --- a/tests/wpt/tests/css/css-scroll-snap/input/keyboard.html +++ b/tests/wpt/tests/css/css-scroll-snap/input/keyboard.html @@ -111,12 +111,14 @@ promise_test(async t => { t.add_cleanup(function() { topLeft.style.width = ""; topRight.style.left = "400px"; + topRight.style.scrollSnapStop = ""; }); // Make the snap area cover the snapport. topLeft.style.width = "800px"; // Make the next snap offset closer than the original intended offset. topRight.style.left = "20px"; + topRight.style.scrollSnapStop = "always"; scroller.scrollTo(0, 0); assert_equals(scroller.scrollLeft, 0, "verify test pre-condition"); await keyPress(scroller, "ArrowRight"); @@ -138,9 +140,18 @@ promise_test(async t => { promise_test(async t => { t.add_cleanup(function() { scroller.style.scrollSnapType = "both mandatory"; + scroller.style.width = ""; + topLeft.style.width = ""; }); scroller.style.scrollSnapType = "both proximity"; + + // This test case works only if the scroll amount of pressing "ArrowRight" is + // greater than the scroll snap proximity value of the scroll container. + // "100px" width of the scroll container works on major browsers. + scroller.style.width = "100px"; + topLeft.style.width = "80px"; + scroller.scrollTo(400, 0); assert_equals(scroller.scrollLeft, 400, "verify test pre-condition"); await keyPress(scroller, "ArrowRight"); diff --git a/tests/wpt/tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html b/tests/wpt/tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html index 7ad659d8a6d..fb9469ba731 100644 --- a/tests/wpt/tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html +++ b/tests/wpt/tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html @@ -87,6 +87,5 @@ test(t => { const snapped_to_x = scroller.scrollLeft == 1000 && scroller.scrollTop == 300; const snapped_to_y = scroller.scrollTop == 1000 && scroller.scrollLeft == 300; assert_true(snapped_to_x || snapped_to_y); -}, "Scroller should snap to at least one of the targets if unable to snap to\ -both after a layout change."); +}, "Scroller should snap to at least one of the targets if unable to snap to both after a layout change."); diff --git a/tests/wpt/tests/css/css-text/parsing/word-break-computed.html b/tests/wpt/tests/css/css-text/parsing/word-break-computed.html index 5fbf0ae7749..5a3b7f66852 100644 --- a/tests/wpt/tests/css/css-text/parsing/word-break-computed.html +++ b/tests/wpt/tests/css/css-text/parsing/word-break-computed.html @@ -16,6 +16,7 @@ test_computed_value("word-break", "normal"); test_computed_value("word-break", "keep-all"); test_computed_value("word-break", "break-all"); test_computed_value("word-break", "break-word"); +test_computed_value("word-break", "auto-phrase"); diff --git a/tests/wpt/tests/css/css-text/parsing/word-break-valid.html b/tests/wpt/tests/css/css-text/parsing/word-break-valid.html index 7f558848fb8..40015d9dd36 100644 --- a/tests/wpt/tests/css/css-text/parsing/word-break-valid.html +++ b/tests/wpt/tests/css/css-text/parsing/word-break-valid.html @@ -15,6 +15,7 @@ test_valid_value("word-break", "normal"); test_valid_value("word-break", "keep-all"); test_valid_value("word-break", "break-all"); test_valid_value("word-break", "break-word"); +test_valid_value("word-break", "auto-phrase"); diff --git a/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-intrinsic-001-ref.html b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-intrinsic-001-ref.html new file mode 100644 index 00000000000..52a743910aa --- /dev/null +++ b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-intrinsic-001-ref.html @@ -0,0 +1,15 @@ + + + +
+
+ 楽しいドライブ。
+
+ 楽しい
ドライブ。
+
diff --git a/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-intrinsic-001.html b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-intrinsic-001.html new file mode 100644 index 00000000000..a16f9fb0b12 --- /dev/null +++ b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-intrinsic-001.html @@ -0,0 +1,27 @@ + + + + + + +
+
+ 楽しいドライブ。
+
+ 楽しいドライブ。
+
diff --git a/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-overflow-001-ref.html b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-overflow-001-ref.html new file mode 100644 index 00000000000..d75b50d05d8 --- /dev/null +++ b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-overflow-001-ref.html @@ -0,0 +1,19 @@ + + + +
+
+ 楽しい
ドライブ。
+
+ 楽しい
ドライ
ブ。
+
+ 楽





ブ。
+
+ 楽






+
diff --git a/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-overflow-001.html b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-overflow-001.html new file mode 100644 index 00000000000..7677441c9a8 --- /dev/null +++ b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-overflow-001.html @@ -0,0 +1,35 @@ + + + + + + +
+ +
+ 楽しいドライブ。
+ +
+ 楽しいドライブ。
+ +
+ 楽しいドライブ。
+ +
+ 楽しいドライブ。
+
diff --git a/tests/wpt/tests/css/css-transitions/changing-while-transition-004.html b/tests/wpt/tests/css/css-transitions/changing-while-transition-004.html index 71038ac11f7..29d8e31f667 100644 --- a/tests/wpt/tests/css/css-transitions/changing-while-transition-004.html +++ b/tests/wpt/tests/css/css-transitions/changing-while-transition-004.html @@ -3,13 +3,12 @@ CSS Transitions Test: behavior when transition changes to default while transitioning - + - - - + + + @@ -50,7 +49,7 @@ promise_test(async t => { 50, 'Even in the next frame the updated transition should not apply' ); -}, 'Unsettign transition should not affect in-flight transitions'); +}, 'Unsetting transition should not affect in-flight transitions'); diff --git a/tests/wpt/tests/css/css-typed-om/the-stylepropertymap/properties/offset-position.html b/tests/wpt/tests/css/css-typed-om/the-stylepropertymap/properties/offset-position.html index fb843bf6822..ca36226e769 100644 --- a/tests/wpt/tests/css/css-typed-om/the-stylepropertymap/properties/offset-position.html +++ b/tests/wpt/tests/css/css-typed-om/the-stylepropertymap/properties/offset-position.html @@ -14,6 +14,7 @@ 'use strict'; runPropertyTests('offset-position', [ + { syntax: 'normal' }, { syntax: 'auto' }, { syntax: '' }, ]); diff --git a/tests/wpt/tests/css/css-ui/resize-interactive.html b/tests/wpt/tests/css/css-ui/resize-interactive.html new file mode 100644 index 00000000000..2a2332d3ef5 --- /dev/null +++ b/tests/wpt/tests/css/css-ui/resize-interactive.html @@ -0,0 +1,109 @@ + + +CSS resize: interactive behavior + + + + + + +
+
+
+
+
+
+
+
+
+
+ + + + + + + + diff --git a/tests/wpt/tests/css/css-values/round-mod-rem-computed.html b/tests/wpt/tests/css/css-values/round-mod-rem-computed.html index e20315e28f9..320ab4a11a9 100644 --- a/tests/wpt/tests/css/css-values/round-mod-rem-computed.html +++ b/tests/wpt/tests/css/css-values/round-mod-rem-computed.html @@ -15,16 +15,24 @@ test_math_used('round(10,10)', '10', {type:'number'}); test_math_used('mod(1,1)', '0', {type:'number'}); test_math_used('rem(1,1)', '0', {type:'number'}); -//Test basic round +// Test basic round test_math_used('calc(round(100,10))', '100', {type:'number'}); test_math_used('calc(round(up, 101,10))', '110', {type:'number'}); test_math_used('calc(round(down, 106,10))', '100', {type:'number'}); -test_math_used('calc(round(to-zero,105, 10))', '100', {type:'number'}); -test_math_used('calc(round(to-zero,-105, 10))', '-100', {type:'number'}); -test_math_used('calc(round(-100,10))', '-100', {type:'number'}); -test_math_used('calc(round(up, -103,10))', '-100', {type:'number'}); +test_math_used('calc(round(to-zero, 105, 10))', '100', {type:'number'}); +test_math_used('calc(round(to-zero, -105, 10))', '-100', {type:'number'}); +test_math_used('calc(round(-100, 10))', '-100', {type:'number'}); +test_math_used('calc(round(up, -103, 10))', '-100', {type:'number'}); -//Test basic mod/rem +// Test round when first number is a multiple of the second number. +for (let number of [0, 5, -5, 10, -10, 20, -20]) { + test_math_used(`round(up, ${number}, 5)`, `${number}`, {type:'number'}); + test_math_used(`round(down, ${number}, 5)`, `${number}`, {type:'number'}); + test_math_used(`round(nearest, ${number}, 5)`, `${number}`, {type:'number'}); + test_math_used(`round(to-zero, ${number}, 5)`, `${number}`, {type:'number'}); +} + +// Test basic mod/rem test_math_used('mod(18,5)', '3', {type:'number'}); test_math_used('rem(18,5)', '3', {type:'number'}); test_math_used('mod(-140,-90)', '-50', {type:'number'}); @@ -33,7 +41,7 @@ test_math_used('rem(-18,5)', '-3', {type:'number'}); test_math_used('mod(140,-90)', '-40', {type:'number'}); test_math_used('rem(140,-90)', '50', {type:'number'}); -//Test basic calculations +// Test basic calculations test_math_used('calc(round(round(100,10), 10))', '100', {type:'number'}); test_math_used('calc(round(up, round(100,10) + 1,10))', '110', {type:'number'}); test_math_used('calc(round(down, round(100,10) + 2 * 3,10))', '100', {type:'number'}); @@ -147,4 +155,60 @@ test_math_used('calc(round(1px + 0%, 1px + 0%))', '1px'); test_math_used('calc(mod(3px + 0%, 2px + 0%))', '1px'); test_math_used('calc(rem(3px + 0%, 2px + 0%))', '1px'); +// In round(A, B), if B is 0, the result is NaN. If A and B are both infinite, the result is NaN. +// In mod(A, B) or rem(A, B), if B is 0, the result is NaN. If A is infinite, the result is NaN. +for (let operator of ['round', 'mod', 'rem']) { + test_math_used(`${operator}(0, 0)`, 'calc(NaN)', {type: 'number'}); + test_math_used(`${operator}(-0, 0)`, 'calc(NaN)', {type: 'number'}); + test_math_used(`${operator}(Infinity, 0)`, 'calc(NaN)', {type: 'number'}); + test_math_used(`${operator}(-Infinity, 0)`, 'calc(NaN)', {type: 'number'}); + test_math_used(`${operator}(-4, 0)`, 'calc(NaN)', {type: 'number'}); + test_math_used(`${operator}(4, 0)`, 'calc(NaN)', {type: 'number'}); + test_math_used(`${operator}(Infinity, Infinity)`, 'calc(NaN)', {type: 'number'}); + test_math_used(`${operator}(-Infinity, -Infinity)`, 'calc(NaN)', {type: 'number'}); + test_math_used(`${operator}(Infinity, -Infinity)`, 'calc(NaN)', {type: 'number'}); + test_math_used(`${operator}(-Infinity, Infinity)`, 'calc(NaN)', {type: 'number'}); +} + +// In round(A, B), if A is infinite but B is finite, the result is the same infinity. +for (let roundingStrategy of ['up', 'down', 'nearest', 'to-zero']) { + test_math_used(`round(${roundingStrategy}, Infinity, 4)`, 'calc(Infinity)', {type: 'number'}); + test_math_used(`round(${roundingStrategy}, -Infinity, 4)`, 'calc(-Infinity)', {type: 'number'}); + test_math_used(`round(${roundingStrategy}, Infinity, -4)`, 'calc(Infinity)', {type: 'number'}); + test_math_used(`round(${roundingStrategy}, -Infinity, -4)`, 'calc(-Infinity)', {type: 'number'}); +} + +// If A is finite but B is infinite, the result depends on the and the sign of A: +// nearest & to-zero: If A is positive or 0⁺, return 0⁺. Otherwise, return 0⁻. +for (let roundingStrategy of ['nearest', 'to-zero']) { + test_math_used(`round(${roundingStrategy}, 0, Infinity)`, '0', {type: 'number'}); + test_math_used(`round(${roundingStrategy}, 4, Infinity)`, '0', {type: 'number'}); + test_math_used(`round(${roundingStrategy}, -0, Infinity)`, 'calc(-0)', {type: 'number'}); + test_math_used(`round(${roundingStrategy}, -4, Infinity)`, 'calc(-0)', {type: 'number'}); + test_math_used(`round(${roundingStrategy}, 0, -Infinity)`, '0', {type: 'number'}); + test_math_used(`round(${roundingStrategy}, 4, -Infinity)`, '0', {type: 'number'}); + test_math_used(`round(${roundingStrategy}, -0, -Infinity)`, 'calc(-0)', {type: 'number'}); + test_math_used(`round(${roundingStrategy}, -4, -Infinity)`, 'calc(-0)', {type: 'number'}); +} + +// up: If A is positive (not zero), return +∞. If A is 0⁺, return 0⁺. Otherwise, return 0⁻. +test_math_used('round(up, 1, Infinity)', 'calc(Infinity)', {type: 'number'}); +test_math_used('round(up, 0, Infinity)', '0', {type: 'number'}); +test_math_used('round(up, -1, Infinity)', 'calc(-0)', {type: 'number'}); +test_math_used('round(up, 1, -Infinity)', 'calc(Infinity)', {type: 'number'}); +test_math_used('round(up, 0, -Infinity)', '0', {type: 'number'}); +test_math_used('round(up, -1, -Infinity)', 'calc(-0)', {type: 'number'}); +// down: If A is negative (not zero), return −∞. If A is 0⁻, return 0⁻. Otherwise, return 0⁺. +test_math_used('round(down, 1, Infinity)', 'calc(-0)', {type: 'number'}); +test_math_used('round(down, 0, Infinity)', '0', {type: 'number'}); +test_math_used('round(down, -1, Infinity)', 'calc(-Infinity)', {type: 'number'}); +test_math_used('round(down, 1, -Infinity)', 'calc(-0)', {type: 'number'}); +test_math_used('round(down, 0, -Infinity)', '0', {type: 'number'}); +test_math_used('round(down, -1, -Infinity)', 'calc(-Infinity)', {type: 'number'}); + +// In mod(A, B) only, if B is infinite and A has opposite sign to B (including an oppositely-signed zero), the result is NaN. +test_math_used('mod(-0, Infinity)', 'calc(NaN)', {type: 'number'}); +test_math_used('mod(0, -Infinity)', 'calc(NaN)', {type: 'number'}); +test_math_used('mod(-4, Infinity)', 'calc(NaN)', {type: 'number'}); +test_math_used('mod(4, -Infinity)', 'calc(NaN)', {type: 'number'}); diff --git a/tests/wpt/tests/css/css-view-transitions/capture-with-opacity-zero-child.html b/tests/wpt/tests/css/css-view-transitions/capture-with-opacity-zero-child.html index adcef1b4c5a..d76d6a00dfa 100644 --- a/tests/wpt/tests/css/css-view-transitions/capture-with-opacity-zero-child.html +++ b/tests/wpt/tests/css/css-view-transitions/capture-with-opacity-zero-child.html @@ -4,6 +4,7 @@ + diff --git a/tests/wpt/tests/css/motion/offset-path-ray-002.html b/tests/wpt/tests/css/motion/offset-path-ray-002.html index 7c023657786..4af6394ef2d 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-002.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-002.html @@ -16,6 +16,7 @@ transform-origin: 0px 0px; offset-path: ray(135deg closest-side); offset-distance: 20%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-003.html b/tests/wpt/tests/css/motion/offset-path-ray-003.html index 4dc27c47823..cbcbd8b3b3f 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-003.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-003.html @@ -20,6 +20,7 @@ transform-origin: 0px 0px; offset-path: ray(135deg closest-side); offset-distance: 100%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-004.html b/tests/wpt/tests/css/motion/offset-path-ray-004.html index e6bf08f0a61..9b6f5befef9 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-004.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-004.html @@ -20,6 +20,7 @@ transform-origin: 0px 0px; offset-path: ray(135deg farthest-side); offset-distance: 100%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-005.html b/tests/wpt/tests/css/motion/offset-path-ray-005.html index a1aa8e110ef..26167b6bc1d 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-005.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-005.html @@ -20,6 +20,7 @@ transform-origin: 0px 0px; offset-path: ray(135deg closest-corner); offset-distance: 100%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-006.html b/tests/wpt/tests/css/motion/offset-path-ray-006.html index dbbd12bef0d..d3bea439798 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-006.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-006.html @@ -20,6 +20,7 @@ transform-origin: 0px 0px; offset-path: ray(135deg farthest-corner); offset-distance: 100%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-007.html b/tests/wpt/tests/css/motion/offset-path-ray-007.html index 1e75771f48e..7b9ff1e0ebe 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-007.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-007.html @@ -20,6 +20,7 @@ transform-origin: 0px 0px; offset-path: ray(180deg sides); offset-distance: 100%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-008.html b/tests/wpt/tests/css/motion/offset-path-ray-008.html index 97d9cfb274c..60713924562 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-008.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-008.html @@ -19,6 +19,7 @@ background-color: lime; offset-path: ray(-90deg sides); offset-distance: 100%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-009.html b/tests/wpt/tests/css/motion/offset-path-ray-009.html index c4986eb5f3b..8cff3136450 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-009.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-009.html @@ -19,6 +19,7 @@ background-color: lime; offset-path: ray(180deg closest-side); offset-distance: 100%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-010.html b/tests/wpt/tests/css/motion/offset-path-ray-010.html index d10afe1ab15..da0935019b6 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-010.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-010.html @@ -17,6 +17,7 @@ transform-origin: 0px 0px; offset-path: ray(135deg); offset-distance: 20px; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-contain-001.html b/tests/wpt/tests/css/motion/offset-path-ray-contain-001.html index ba03f1115f6..dc3cb4d52b1 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-contain-001.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-contain-001.html @@ -20,6 +20,7 @@ offset-path: ray(180deg closest-corner contain); offset-rotate: 0deg; offset-distance: 100%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-contain-002.html b/tests/wpt/tests/css/motion/offset-path-ray-contain-002.html index db7710cb438..6825c755d5b 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-contain-002.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-contain-002.html @@ -20,6 +20,7 @@ offset-path: ray(180deg closest-side contain); offset-rotate: 0deg; offset-distance: 100%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-contain-003.html b/tests/wpt/tests/css/motion/offset-path-ray-contain-003.html index 08705ad9459..a71c8aa73a0 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-contain-003.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-contain-003.html @@ -20,6 +20,7 @@ offset-path: ray(45deg closest-side contain); offset-rotate: 0deg; offset-distance: 100%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-contain-004.html b/tests/wpt/tests/css/motion/offset-path-ray-contain-004.html index d5c5ecf3c7c..0689ccba6f5 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-contain-004.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-contain-004.html @@ -21,6 +21,7 @@ offset-path: ray(45deg closest-side contain); offset-rotate: auto; offset-distance: 100%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-ray-contain-005.html b/tests/wpt/tests/css/motion/offset-path-ray-contain-005.html index fc747027c6c..6e44f88f811 100644 --- a/tests/wpt/tests/css/motion/offset-path-ray-contain-005.html +++ b/tests/wpt/tests/css/motion/offset-path-ray-contain-005.html @@ -24,6 +24,7 @@ offset-anchor: 200% -300%; offset-rotate: -90deg; offset-distance: 50%; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-path-shape-circle-002.html b/tests/wpt/tests/css/motion/offset-path-shape-circle-002.html index 672396186a5..74828fe6f4b 100644 --- a/tests/wpt/tests/css/motion/offset-path-shape-circle-002.html +++ b/tests/wpt/tests/css/motion/offset-path-shape-circle-002.html @@ -17,6 +17,7 @@ background-color: green; position: relative; offset-path: circle(); + offset-position: auto; width: 100px; height: 100px; } diff --git a/tests/wpt/tests/css/motion/offset-path-shape-ellipse-002.html b/tests/wpt/tests/css/motion/offset-path-shape-ellipse-002.html index 461838aa889..fa647a9c2e5 100644 --- a/tests/wpt/tests/css/motion/offset-path-shape-ellipse-002.html +++ b/tests/wpt/tests/css/motion/offset-path-shape-ellipse-002.html @@ -17,6 +17,7 @@ background-color: green; position: relative; offset-path: ellipse(); + offset-position: auto; width: 100px; height: 100px; } diff --git a/tests/wpt/tests/css/motion/offset-rotate-001.html b/tests/wpt/tests/css/motion/offset-rotate-001.html index 55147698a7f..e5b13fe8a9a 100644 --- a/tests/wpt/tests/css/motion/offset-rotate-001.html +++ b/tests/wpt/tests/css/motion/offset-rotate-001.html @@ -17,6 +17,7 @@ transform-origin: 0px 0px; offset-path: ray(120deg closest-corner); offset-rotate: auto; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/offset-rotate-002.html b/tests/wpt/tests/css/motion/offset-rotate-002.html index fb301be24ef..1edf38d546d 100644 --- a/tests/wpt/tests/css/motion/offset-rotate-002.html +++ b/tests/wpt/tests/css/motion/offset-rotate-002.html @@ -17,6 +17,7 @@ transform-origin: 0px 0px; offset-path: ray(-120deg closest-corner); offset-rotate: reverse 60deg; + offset-position: auto; } diff --git a/tests/wpt/tests/css/motion/parsing/offset-parsing-valid.html b/tests/wpt/tests/css/motion/parsing/offset-parsing-valid.html index 7a5d9c94f05..6358582bfe5 100644 --- a/tests/wpt/tests/css/motion/parsing/offset-parsing-valid.html +++ b/tests/wpt/tests/css/motion/parsing/offset-parsing-valid.html @@ -14,7 +14,7 @@ diff --git a/tests/wpt/tests/css/printing/no-resize-event-ref.html b/tests/wpt/tests/css/printing/no-resize-event-ref.html new file mode 100644 index 00000000000..1fc00e7e39c --- /dev/null +++ b/tests/wpt/tests/css/printing/no-resize-event-ref.html @@ -0,0 +1,2 @@ + +
PASS
diff --git a/tests/wpt/tests/css/printing/page-margin-001-print-ref.html b/tests/wpt/tests/css/printing/page-margin-001-print-ref.html new file mode 100644 index 00000000000..12ebd76dc91 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-margin-001-print-ref.html @@ -0,0 +1,26 @@ + + + +
+ first page +
+
+ second page +
+
+ third page +
diff --git a/tests/wpt/tests/css/printing/page-margin-001-print.html b/tests/wpt/tests/css/printing/page-margin-001-print.html new file mode 100644 index 00000000000..c59b3c64276 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-margin-001-print.html @@ -0,0 +1,25 @@ + + + + + +
+ first page +
+
+ second page +
+
+ third page +
diff --git a/tests/wpt/tests/css/printing/page-margin-002-print-ref.html b/tests/wpt/tests/css/printing/page-margin-002-print-ref.html new file mode 100644 index 00000000000..2b565048558 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-margin-002-print-ref.html @@ -0,0 +1,29 @@ + + + +
+ first page +
+
+ second page +
+
+ third page +
diff --git a/tests/wpt/tests/css/printing/page-margin-002-print.html b/tests/wpt/tests/css/printing/page-margin-002-print.html new file mode 100644 index 00000000000..944d7efcfd0 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-margin-002-print.html @@ -0,0 +1,28 @@ + + + + + +
+ first page +
+
+ second page +
+
+ third page +
diff --git a/tests/wpt/tests/css/printing/page-margin-003-print-ref.html b/tests/wpt/tests/css/printing/page-margin-003-print-ref.html new file mode 100644 index 00000000000..52bf7360908 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-margin-003-print-ref.html @@ -0,0 +1,29 @@ + + + +
+ first page +
+
+ second page +
+
+ third page +
diff --git a/tests/wpt/tests/css/printing/page-margin-003-print.html b/tests/wpt/tests/css/printing/page-margin-003-print.html new file mode 100644 index 00000000000..e7410c02e09 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-margin-003-print.html @@ -0,0 +1,28 @@ + + + + + +
+ first page +
+
+ second page +
+
+ third page +
diff --git a/tests/wpt/tests/css/printing/page-size-004-print-ref.html b/tests/wpt/tests/css/printing/page-size-004-print-ref.html new file mode 100644 index 00000000000..0468a745b23 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-size-004-print-ref.html @@ -0,0 +1,23 @@ + + + +
+ first page +
+
+ second page +
+
+ third page +
diff --git a/tests/wpt/tests/css/printing/page-size-004-print.html b/tests/wpt/tests/css/printing/page-size-004-print.html new file mode 100644 index 00000000000..125d7636d26 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-size-004-print.html @@ -0,0 +1,25 @@ + + + + + +
+ first page +
+
+ second page +
+
+ third page +
diff --git a/tests/wpt/tests/css/printing/page-size-005-print-ref.html b/tests/wpt/tests/css/printing/page-size-005-print-ref.html new file mode 100644 index 00000000000..c2e07daa295 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-size-005-print-ref.html @@ -0,0 +1,23 @@ + + + +
+ first page +
+
+ second page +
+
+ third page +
diff --git a/tests/wpt/tests/css/printing/page-size-005-print.html b/tests/wpt/tests/css/printing/page-size-005-print.html new file mode 100644 index 00000000000..37876ae230e --- /dev/null +++ b/tests/wpt/tests/css/printing/page-size-005-print.html @@ -0,0 +1,25 @@ + + + + + +
+ first page +
+
+ second page +
+
+ third page +
diff --git a/tests/wpt/tests/css/printing/page-size-006-print-ref.html b/tests/wpt/tests/css/printing/page-size-006-print-ref.html new file mode 100644 index 00000000000..7167da2ac26 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-size-006-print-ref.html @@ -0,0 +1,26 @@ + + + +
+ first page +
+
+ second page +
+
+ third page +
diff --git a/tests/wpt/tests/css/printing/page-size-006-print.html b/tests/wpt/tests/css/printing/page-size-006-print.html new file mode 100644 index 00000000000..1da29d334d7 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-size-006-print.html @@ -0,0 +1,25 @@ + + + + + +
+ first page +
+
+ second page +
+
+ third page +
diff --git a/tests/wpt/tests/css/printing/page-size-007-print-ref.html b/tests/wpt/tests/css/printing/page-size-007-print-ref.html new file mode 100644 index 00000000000..9498e2c17b2 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-size-007-print-ref.html @@ -0,0 +1,54 @@ + + + +
+
first
+
+ second +
+
+
third
+
+ fourth +
+
+
fifth
+
+ sixth +
diff --git a/tests/wpt/tests/css/printing/page-size-007-print.html b/tests/wpt/tests/css/printing/page-size-007-print.html new file mode 100644 index 00000000000..50ab2f4d109 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-size-007-print.html @@ -0,0 +1,83 @@ + + + + + + + +
+
first
+
+
+
+
+
+
+
+
+
+ second +
+
+
third
+
+
+
+
+
+
+
+
+
+ fourth +
+
+
fifth
+
+
+
+
+
+
+
+
+
+ sixth +
diff --git a/tests/wpt/tests/css/printing/page-size-008-print-ref.html b/tests/wpt/tests/css/printing/page-size-008-print-ref.html new file mode 100644 index 00000000000..f50ad3531e4 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-size-008-print-ref.html @@ -0,0 +1,54 @@ + + + +
+
first
+
+ second +
+
+
third
+
+ fourth +
+
+
fifth
+
+ sixth +
diff --git a/tests/wpt/tests/css/printing/page-size-008-print.html b/tests/wpt/tests/css/printing/page-size-008-print.html new file mode 100644 index 00000000000..683bdc3a50a --- /dev/null +++ b/tests/wpt/tests/css/printing/page-size-008-print.html @@ -0,0 +1,83 @@ + + + + + + + +
+
first
+
+
+
+
+
+
+
+
+
+ second +
+
+
third
+
+
+
+
+
+
+
+
+
+ fourth +
+
+
fifth
+
+
+
+
+
+
+
+
+
+ sixth +
diff --git a/tests/wpt/tests/css/printing/page-size-009-print-ref.html b/tests/wpt/tests/css/printing/page-size-009-print-ref.html new file mode 100644 index 00000000000..86ffa278c93 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-size-009-print-ref.html @@ -0,0 +1,16 @@ + + + +There should be a 200x200 square on the next page. +
diff --git a/tests/wpt/tests/css/printing/page-size-009-print.html b/tests/wpt/tests/css/printing/page-size-009-print.html new file mode 100644 index 00000000000..48ead4eab38 --- /dev/null +++ b/tests/wpt/tests/css/printing/page-size-009-print.html @@ -0,0 +1,21 @@ + + + + + + +
+ There should be a 200x200 square on the next page. +
+
diff --git a/tests/wpt/tests/custom-elements/form-associated/form-disabled-callback.html b/tests/wpt/tests/custom-elements/form-associated/form-disabled-callback.html index c61a7719fc6..a30b678f13b 100644 --- a/tests/wpt/tests/custom-elements/form-associated/form-disabled-callback.html +++ b/tests/wpt/tests/custom-elements/form-associated/form-disabled-callback.html @@ -132,5 +132,23 @@ test(() => { fieldset.disabled = false; assert_array_equals(container.querySelector('my-control').disabledHistory(), [true]); }, 'Toggling "disabled" attribute on a
does not trigger a callback on disabled custom element descendant'); + +test(() => { + const template = document.createElement('template'); + template.innerHTML = ''; + const container = document.createElement('fieldset'); + document.body.appendChild(container); + container.disabled = true; + container.appendChild(template.content.cloneNode(true)); + assert_array_equals(container.querySelector('my-control').disabledHistory(), [true]); +}, 'Callback triggered during a clone/append operation, with disabled state provided by ancestor'); + +test(() => { + const container = document.createElement('div'); + document.body.appendChild(container); + container.innerHTML = '
'; + const clone = container.cloneNode(true); + assert_array_equals(container.querySelector('my-control').disabledHistory(), [true]); +}, 'Callback triggered during a clone operation, with disabled state provided by ancestor'); diff --git a/tests/wpt/tests/dom/events/scrolling/scrollend-user-scroll-common.js b/tests/wpt/tests/dom/events/scrolling/scrollend-user-scroll-common.js index 4bf8f927ff2..34af4ce921e 100644 --- a/tests/wpt/tests/dom/events/scrolling/scrollend-user-scroll-common.js +++ b/tests/wpt/tests/dom/events/scrolling/scrollend-user-scroll-common.js @@ -54,7 +54,7 @@ async function test_scrollend_on_scrollbar_gutter_click(t, target_div) { await resetTargetScrollState(t, target_div); await waitForCompositorReady(); - const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div); + const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div, 1000); verifyNoScrollendOnDocument(t); const bounds = target_div.getBoundingClientRect(); diff --git a/tests/wpt/tests/editing/crashtests/removeformat-from-DOMNodeRemoved.html b/tests/wpt/tests/editing/crashtests/removeformat-from-DOMNodeRemoved.html new file mode 100644 index 00000000000..3f78f994362 --- /dev/null +++ b/tests/wpt/tests/editing/crashtests/removeformat-from-DOMNodeRemoved.html @@ -0,0 +1,29 @@ + + + + + + + + + + +
+ +a + +
+ + diff --git a/tests/wpt/tests/editing/edit-context/edit-context-basics.tentative.html b/tests/wpt/tests/editing/edit-context/edit-context-basics.tentative.html index 27bde6e6ac2..0ed34580613 100644 --- a/tests/wpt/tests/editing/edit-context/edit-context-basics.tentative.html +++ b/tests/wpt/tests/editing/edit-context/edit-context-basics.tentative.html @@ -101,7 +101,7 @@ test(function() { const editContext = new EditContext(); assert_not_equals(editContext, null); - editContext.text = "foo"; + editContext.updateText(0, 3, "foo"); assert_equals(editContext.text, "foo"); const test = document.getElementById('test'); // Update the layout of the |EditContext| @@ -115,12 +115,15 @@ editContext.updateSelection(0, 0); assert_equals(editContext.selectionStart, 0); assert_equals(editContext.selectionEnd, 0); - editContext.selectionStart = 1; - assert_equals(editContext.selectionStart, 0); // selectionEnd is still 0 - editContext.selectionEnd = 1; + assert_throws_dom("IndexSizeError", function() { editContext.updateSelection(1, 0); }); + assert_equals(editContext.selectionStart, 0); + assert_equals(editContext.selectionEnd, 0); + editContext.updateSelection(0, 1); + assert_equals(editContext.selectionStart, 0); assert_equals(editContext.selectionEnd, 1); - editContext.selectionStart = 1; + editContext.updateSelection(1, 1); assert_equals(editContext.selectionStart, 1); + assert_equals(editContext.selectionEnd, 1); editContext.updateControlBounds(viewRect); editContext.updateSelectionBounds(caretRect); }, 'Testing EditContext update text, selection and layout'); @@ -151,7 +154,7 @@ test(function() { const editContext = new EditContext(); assert_not_equals(editContext, null); - editContext.text = "foo"; + editContext.updateText(0, 3, "foo"); assert_equals(editContext.text, "foo"); assert_throws_dom("IndexSizeError", function() { editContext.updateSelection(10, 0); }); assert_equals(editContext.selectionStart, 0); diff --git a/tests/wpt/tests/fenced-frame/automatic-beacon-click-handler.https.html b/tests/wpt/tests/fenced-frame/automatic-beacon-click-handler.https.html index 505eb6174f2..3aac5906ac6 100644 --- a/tests/wpt/tests/fenced-frame/automatic-beacon-click-handler.https.html +++ b/tests/wpt/tests/fenced-frame/automatic-beacon-click-handler.https.html @@ -14,7 +14,7 @@ promise_test(async(t) => { const actions = new test_driver.Actions(); const fencedframe = await attachFencedFrameContext( - {generator_api: 'fledge'}); + {generator_api: 'fledge', automatic_beacon: true}); const new_url = new URL("resources/dummy.html", location.href); const beacon_data = "This is the beacon data!"; @@ -41,7 +41,7 @@ promise_test(async(t) => { promise_test(async(t) => { const fencedframe = await attachFencedFrameContext( - {generator_api: 'fledge'}); + {generator_api: 'fledge', automatic_beacon: true}); const new_url = new URL("resources/dummy.html", location.href); const beacon_data = "This is the beacon data!"; diff --git a/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-clear.https.html b/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-clear.https.html index ae246aaac0a..61543ffa485 100644 --- a/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-clear.https.html +++ b/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-clear.https.html @@ -14,7 +14,7 @@ promise_test(async(t) => { const actions = new test_driver.Actions(); const fencedframe = await attachFencedFrameContext( - {generator_api: 'fledge'}); + {generator_api: 'fledge', automatic_beacon: true}); const new_url = new URL("resources/dummy.html", location.href); const beacon_data = "This is the beacon data!"; diff --git a/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-persist.https.html b/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-persist.https.html index f944d7141d7..0c949ded40b 100644 --- a/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-persist.https.html +++ b/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-persist.https.html @@ -14,7 +14,7 @@ promise_test(async(t) => { const actions = new test_driver.Actions(); const fencedframe = await attachFencedFrameContext( - {generator_api: 'fledge'}); + {generator_api: 'fledge', automatic_beacon: true}); const new_url = new URL("resources/dummy.html", location.href); const beacon_data = "This is the beacon data!"; diff --git a/tests/wpt/tests/fenced-frame/deep-copy-config.https.html b/tests/wpt/tests/fenced-frame/deep-copy-config.https.html new file mode 100644 index 00000000000..37b27a742b9 --- /dev/null +++ b/tests/wpt/tests/fenced-frame/deep-copy-config.https.html @@ -0,0 +1,81 @@ + +Test deep copying FencedFrameConfig objects + + + + + + + + + + + diff --git a/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic-with-size.js b/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic-with-size.js deleted file mode 100644 index 1a22bcec3d6..00000000000 --- a/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic-with-size.js +++ /dev/null @@ -1,37 +0,0 @@ -// These functions are used by FLEDGE to determine the logic for the ad buyer. -// For our testing purposes, we only need the minimal amount of boilerplate -// code in place to allow them to be invoked properly and move the FLEDGE -// process along. The tests do not deal with reporting results, so we leave -// `reportWin` empty. See `generateURNFromFledge` in "utils.js" to see how -// these files are used. - -function generateBid(interestGroup, auctionSignals, perBuyerSignals, - trustedBiddingSignals, browserSignals) { - const ad = interestGroup.ads[0]; - - // `auctionSignals` controls whether or not component auctions are allowed. - let allowComponentAuction = - typeof auctionSignals === 'string' && - auctionSignals.includes('bidderAllowsComponentAuction'); - - let result = { - 'ad': ad, - 'bid': 1, - 'render': { url: ad.renderUrl, width: "100px", height: "50px" }, - 'allowComponentAuction': allowComponentAuction - }; - if (interestGroup.adComponents && interestGroup.adComponents.length > 0) - result.adComponents = interestGroup.adComponents.map((component) => { - return { - url: component.renderUrl, - width: "100px", - height: "50px" - }; - }); - return result; -} - -function reportWin( - auctionSignals, perBuyerSignals, sellerSignals, browserSignals) { - return; -} diff --git a/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic-with-size.js.headers b/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic-with-size.js.headers deleted file mode 100644 index 776bf2987b4..00000000000 --- a/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic-with-size.js.headers +++ /dev/null @@ -1,2 +0,0 @@ -Content-Type: Application/Javascript -X-Allow-FLEDGE: true \ No newline at end of file diff --git a/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.js b/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.js deleted file mode 100644 index ab6685f1842..00000000000 --- a/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.js +++ /dev/null @@ -1,34 +0,0 @@ -// These functions are used by FLEDGE to determine the logic for the ad buyer. -// For our testing purposes, we only need the minimal amount of boilerplate -// code in place to allow them to be invoked properly and move the FLEDGE -// process along. The tests do not deal with reporting results, so we leave -// `reportWin` empty. See `generateURNFromFledge` in "utils.js" to see how -// these files are used. - -function generateBid(interestGroup, auctionSignals, perBuyerSignals, - trustedBiddingSignals, browserSignals) { - const ad = interestGroup.ads[0]; - - // `auctionSignals` controls whether or not component auctions are allowed. - let allowComponentAuction = - typeof auctionSignals === 'string' && - auctionSignals.includes('bidderAllowsComponentAuction'); - - let result = {'ad': ad, 'bid': 1, 'render': ad.renderUrl, - 'allowComponentAuction': allowComponentAuction}; - if (interestGroup.adComponents && interestGroup.adComponents.length > 0) - result.adComponents = interestGroup.adComponents.map((component) => { - return component.renderUrl; - }); - return result; -} - -function reportWin( - auctionSignals, perBuyerSignals, sellerSignals, browserSignals) { - registerAdBeacon({ - 'reserved.top_navigation': - browserSignals.interestGroupOwner + - '/fenced-frame/resources/automatic-beacon-store.py' - }); - return; -} diff --git a/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.js.headers b/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.js.headers deleted file mode 100644 index 776bf2987b4..00000000000 --- a/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.js.headers +++ /dev/null @@ -1,2 +0,0 @@ -Content-Type: Application/Javascript -X-Allow-FLEDGE: true \ No newline at end of file diff --git a/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.py b/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.py new file mode 100644 index 00000000000..73f4895cebe --- /dev/null +++ b/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.py @@ -0,0 +1,92 @@ +# These functions are used by FLEDGE to determine the logic for the ad buyer. +# For our testing purposes, we only need the minimal amount of boilerplate +# code in place to allow them to be invoked properly and move the FLEDGE +# process along. The tests generally do usually not deal with reporting results, +# so we leave `reportWin` empty unless we need to call registerAdBeacon(). See +# `generateURNFromFledge` in "utils.js" to see how this file is used. + +def main(request, response): + # Set up response headers. + headers = [ + ('Content-Type', 'Application/Javascript'), + ('X-Allow-FLEDGE', 'true') + ] + + # Parse URL params. + ad_with_size = request.GET.first(b"ad-with-size", None) + automatic_beacon = request.GET.first(b"automatic-beacon", None) + + # Use URL params to modify JS + render_obj = 'ad.renderUrl' + if ad_with_size is not None: + render_obj = '{ url: ad.renderUrl, width: "100px", height: "50px" }' + + component_render_obj = 'component.renderUrl' + if ad_with_size is not None: + component_render_obj = ( + '''{ + url: component.renderUrl, + width: "100px", + height: "50px" + } + ''' + ) + + register_ad_beacon = '' + if automatic_beacon is not None: + register_ad_beacon = ( + '''registerAdBeacon({ + 'reserved.top_navigation': + browserSignals.interestGroupOwner + + '/fenced-frame/resources/automatic-beacon-store.py' + }); + ''' + ) + + # Generate Javascript. + # Note: Python fstrings use double-brackets ( {{, }} ) to insert bracket + # literals instead of substitution sequences. + generate_bid = ( + f'''function generateBid( + interestGroup, + auctionSignals, + perBuyerSignals, + trustedBiddingSignals, + browserSignals) {{ + const ad = interestGroup.ads[0]; + + // `auctionSignals` controls whether or not component auctions are + // allowed. + let allowComponentAuction = (typeof auctionSignals === 'string' && + auctionSignals.includes('bidderAllowsComponentAuction')); + + let result = {{ + 'ad': ad, + 'bid': 1, + 'render': {render_obj}, + 'allowComponentAuction': allowComponentAuction + }}; + if (interestGroup.adComponents && interestGroup.adComponents.length > 0) + result.adComponents = interestGroup.adComponents.map((component) => {{ + return {component_render_obj}; + }}); + return result; + }} + ''' + ) + + report_win = ( + f'''function reportWin( + auctionSignals, + perBuyerSignals, + sellerSignals, + browserSignals) {{ + {register_ad_beacon} + return; + }} + ''' + ) + + content = f'{generate_bid}\n{report_win}' + + return (headers, content) diff --git a/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.js b/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.js deleted file mode 100644 index dc92f5a5e1a..00000000000 --- a/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.js +++ /dev/null @@ -1,15 +0,0 @@ -// These functions are used by FLEDGE to determine the logic for the ad seller. -// For our testing purposes, we only need the minimal amount of boilerplate -// code in place to allow them to be invoked properly and move the FLEDGE -// process along. The tests do not deal with reporting results, so we leave -// `reportResult` empty. See `generateURNFromFledge` in "utils.js" to see how -// these files are used. - -function scoreAd( - adMetadata, bid, auctionConfig, trustedScoringSignals, browserSignals) { - return 2*bid; -} - -function reportResult(auctionConfig, browserSignals) { - return; -} diff --git a/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.js.headers b/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.js.headers deleted file mode 100644 index 776bf2987b4..00000000000 --- a/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.js.headers +++ /dev/null @@ -1,2 +0,0 @@ -Content-Type: Application/Javascript -X-Allow-FLEDGE: true \ No newline at end of file diff --git a/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.py b/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.py new file mode 100644 index 00000000000..028fe76efc0 --- /dev/null +++ b/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.py @@ -0,0 +1,46 @@ +# These functions are used by FLEDGE to determine the logic for the ad seller. +# For our testing purposes, we only need the minimal amount of boilerplate +# code in place to allow them to be invoked properly and move the FLEDGE +# process along. The tests do not deal with reporting results, so we leave +# `reportResult` empty. See `generateURNFromFledge` in "utils.js" to see how +# this file is used. + +def main(request, response): + # Set up response headers. + headers = [ + ('Content-Type', 'Application/Javascript'), + ('X-Allow-FLEDGE', 'true') + ] + + # TODO: Insert any code here that should be mutated based on URL parameters. + # Keep for now as a placeholder/example. + score_ad_content = '' + + # Generate Javascript. + # Note: Python fstrings use double-brackets ( {{, }} ) to insert bracket + # literals instead of substitution sequences. + score_ad = ( + f'''function scoreAd( + adMetadata, + bid, + auctionConfig, + trustedScoringSignals, + browserSignals) {{ + {score_ad_content} + return 2*bid; + }} + ''' + ) + + report_result = ( + '''function reportResult( + auctionConfig, + browserSignals) { + return; + } + ''' + ) + + content = f'{score_ad}\n{report_result}' + + return (headers, content) diff --git a/tests/wpt/tests/fenced-frame/resources/utils.js b/tests/wpt/tests/fenced-frame/resources/utils.js index 4638f37cbb1..d812736cdc2 100644 --- a/tests/wpt/tests/fenced-frame/resources/utils.js +++ b/tests/wpt/tests/fenced-frame/resources/utils.js @@ -1,9 +1,11 @@ const STORE_URL = '/fenced-frame/resources/key-value-store.py'; const BEACON_URL = '/fenced-frame/resources/automatic-beacon-store.py'; const REMOTE_EXECUTOR_URL = '/fenced-frame/resources/remote-context-executor.https.html'; -const FLEDGE_BIDDING_URL = '/fenced-frame/resources/fledge-bidding-logic.js'; -const FLEDGE_BIDDING_WITH_SIZE_URL = '/fenced-frame/resources/fledge-bidding-logic-with-size.js'; -const FLEDGE_DECISION_URL = '/fenced-frame/resources/fledge-decision-logic.js'; + +// If your test needs to modify FLEDGE bidding or decision logic, you should +// update the generated JS in the corresponding handler below. +const FLEDGE_BIDDING_URL = '/fenced-frame/resources/fledge-bidding-logic.py'; +const FLEDGE_DECISION_URL = '/fenced-frame/resources/fledge-decision-logic.py'; // Creates a URL that includes a list of stash key UUIDs that are being used // in the test. This allows us to generate UUIDs on the fly and let anything @@ -68,11 +70,9 @@ async function runSelectURL(href, keylist = [], resolve_to_config = false) { return await runSelectRawURL(full_url, resolve_to_config); } -async function generateURNFromFledgeRawURL(href, - nested_urls, - resolve_to_config = false, - ad_with_size = false, - requested_size = null) { +async function generateURNFromFledgeRawURL( + href, nested_urls, resolve_to_config = false, ad_with_size = false, + requested_size = null, automatic_beacon = false) { const bidding_token = token(); const seller_token = token(); @@ -82,27 +82,29 @@ async function generateURNFromFledgeRawURL(href, { renderUrl: url } }); - const interestGroup = ad_with_size ? - { - name: 'testAd1', - owner: location.origin, - biddingLogicUrl: new URL(FLEDGE_BIDDING_WITH_SIZE_URL, location.origin), - ads: [{ renderUrl: href, sizeGroup: "group1", bid: 1 }], - userBiddingSignals: { biddingToken: bidding_token }, - trustedBiddingSignalsKeys: ['key1'], - adComponents: ad_components_list, - adSizes: { "size1": { width: "100px", height: "50px" } }, - sizeGroups: { "group1": ["size1"] } - } : - { - name: 'testAd1', - owner: location.origin, - biddingLogicUrl: new URL(FLEDGE_BIDDING_URL, location.origin), - ads: [{ renderUrl: href, bid: 1 }], - userBiddingSignals: { biddingToken: bidding_token }, - trustedBiddingSignalsKeys: ['key1'], - adComponents: ad_components_list, - }; + let interestGroup = + { + name: 'testAd1', + owner: location.origin, + biddingLogicUrl: new URL(FLEDGE_BIDDING_URL, location.origin), + ads: [{renderUrl: href, bid: 1}], + userBiddingSignals: {biddingToken: bidding_token}, + trustedBiddingSignalsKeys: ['key1'], + adComponents: ad_components_list, + }; + + let params = new URLSearchParams(interestGroup.biddingLogicUrl.search); + if (ad_with_size) + params.set('ad-with-size', 1); + if (automatic_beacon) + params.set('automatic-beacon', 1); + interestGroup.biddingLogicUrl.search = params; + + if (ad_with_size) { + interestGroup.ads[0].sizeGroup = 'group1'; + interestGroup.adSizes = {'size1': {width: '100px', height: '50px'}}; + interestGroup.sizeGroups = {'group1': ['size1']}; + } // Pick an arbitrarily high duration to guarantee that we never leave the // ad interest group while the test runs. @@ -138,9 +140,16 @@ async function generateURNFromFledgeRawURL(href, // frame config. // @param {boolean} [ad_with_size = false] - Determines whether the auction is // run with ad sizes specified. -async function generateURNFromFledge(href, keylist, nested_urls=[], resolve_to_config = false, ad_with_size = false, requested_size = null) { +// @param {boolean} [automatic_beacon = false] - If true, FLEDGE logic will +// register an automatic beacon +// after completion. +async function generateURNFromFledge( + href, keylist, nested_urls = [], resolve_to_config = false, + ad_with_size = false, requested_size = null, automatic_beacon = false) { const full_url = generateURL(href, keylist); - return generateURNFromFledgeRawURL(full_url, nested_urls, resolve_to_config, ad_with_size, requested_size); + return generateURNFromFledgeRawURL( + full_url, nested_urls, resolve_to_config, ad_with_size, requested_size, + automatic_beacon); } // Extracts a list of UUIDs from the from the current page's URL. @@ -245,23 +254,36 @@ function attachContext(object_constructor, html, headers, origin) { // function. // 1. crbug.com/1372536: resize-lock-input.https.html // 2. crbug.com/1394559: unfenced-top.https.html -async function attachOpaqueContext(generator_api, resolve_to_config, ad_with_size, requested_size, object_constructor, html, headers, origin) { +async function attachOpaqueContext( + generator_api, resolve_to_config, ad_with_size, requested_size, + automatic_beacon, object_constructor, html, headers, origin) { const [uuid, url] = generateRemoteContextURL(headers, origin); - const id = await (generator_api == 'fledge' ? generateURNFromFledge(url, [], [], resolve_to_config, ad_with_size, requested_size) : runSelectURL(url, [], resolve_to_config)); + const id = await ( + generator_api == 'fledge' ? + generateURNFromFledge( + url, [], [], resolve_to_config, ad_with_size, requested_size, + automatic_beacon) : + runSelectURL(url, [], resolve_to_config)); const object = object_constructor(id); return buildRemoteContextForObject(object, uuid, html); } -function attachPotentiallyOpaqueContext(generator_api, resolve_to_config, ad_with_size, requested_size, frame_constructor, html, headers, origin) { +function attachPotentiallyOpaqueContext( + generator_api, resolve_to_config, ad_with_size, requested_size, + automatic_beacon, frame_constructor, html, headers, origin) { generator_api = generator_api.toLowerCase(); if (generator_api == 'fledge' || generator_api == 'sharedstorage') { - return attachOpaqueContext(generator_api, resolve_to_config, ad_with_size, requested_size, frame_constructor, html, headers, origin); + return attachOpaqueContext( + generator_api, resolve_to_config, ad_with_size, requested_size, + automatic_beacon, frame_constructor, html, headers, origin); } else { return attachContext(frame_constructor, html, headers, origin); } } -function attachFrameContext(element_name, generator_api, resolve_to_config, ad_with_size, requested_size, html, headers, attributes, origin) { +function attachFrameContext( + element_name, generator_api, resolve_to_config, ad_with_size, + requested_size, automatic_beacon, html, headers, attributes, origin) { frame_constructor = (id) => { frame = document.createElement(element_name); attributes.forEach(attribute => { @@ -278,10 +300,21 @@ function attachFrameContext(element_name, generator_api, resolve_to_config, ad_w document.body.append(frame); return frame; }; - return attachPotentiallyOpaqueContext(generator_api, resolve_to_config, ad_with_size, requested_size, frame_constructor, html, headers, origin); + return attachPotentiallyOpaqueContext( + generator_api, resolve_to_config, ad_with_size, requested_size, + automatic_beacon, frame_constructor, html, headers, origin); } -function replaceFrameContext(frame_proxy, {generator_api="", resolve_to_config=false, ad_with_size=false, requested_size=null, html="", headers=[], origin=""}={}) { +function replaceFrameContext(frame_proxy, { + generator_api = '', + resolve_to_config = false, + ad_with_size = false, + requested_size = null, + automatic_beacon = false, + html = '', + headers = [], + origin = '' +} = {}) { frame_constructor = (id) => { if (frame_proxy.element.nodeName == "IFRAME") { frame_proxy.element.src = id; @@ -293,7 +326,9 @@ function replaceFrameContext(frame_proxy, {generator_api="", resolve_to_config=f } return frame_proxy.element; }; - return attachPotentiallyOpaqueContext(generator_api, resolve_to_config, ad_with_size, requested_size, frame_constructor, html, headers, origin); + return attachPotentiallyOpaqueContext( + generator_api, resolve_to_config, ad_with_size, requested_size, + automatic_beacon, frame_constructor, html, headers, origin); } // Attach a fenced frame that waits for scripts to execute. @@ -307,21 +342,49 @@ function replaceFrameContext(frame_proxy, {generator_api="", resolve_to_config=f // - ad_with_size: whether an ad auction is run with size specified for the ads // and ad components. (currently only works for FLEDGE) // - requested_size: A 2-element list with the width and height for -// requestedSize in the FLEDGE auction config. +// requestedSize in the FLEDGE auction config. This is different from +// ad_with_size, which refers to size information provided alongside the ads +// themselves. +// - automatic_beacon: If true and generator_api = "fledge", an automatic beacon +// will be registered for a top-level navigation after the FLEDGE auction +// completes. // - html: extra HTML source code to inject into the loaded frame // - headers: an array of header pairs [[key, value], ...] -// - attributes: an array of attribute pairs to set on the frame [[key, value], ...] +// - attributes: an array of attribute pairs to set on the frame [[key, value], +// ...] // - origin: origin of the url, default to location.origin if not set // Returns a proxy that acts like the frame HTML element, but with an extra // function `execute`. See `attachFrameContext` or the README for more details. -function attachFencedFrameContext({generator_api="", resolve_to_config=false, ad_with_size=false, requested_size=null, html = "", headers=[], attributes=[], origin=""}={}) { - return attachFrameContext('fencedframe', generator_api, resolve_to_config, ad_with_size, requested_size, html, headers, attributes, origin); +function attachFencedFrameContext({ + generator_api = '', + resolve_to_config = false, + ad_with_size = false, + requested_size = null, + automatic_beacon = false, + html = '', + headers = [], + attributes = [], + origin = '' +} = {}) { + return attachFrameContext( + 'fencedframe', generator_api, resolve_to_config, ad_with_size, + requested_size, automatic_beacon, html, headers, attributes, origin); } // Attach an iframe that waits for scripts to execute. // See `attachFencedFrameContext` for more details. -function attachIFrameContext({generator_api="", html="", headers=[], attributes=[], origin=""}={}) { - return attachFrameContext('iframe', generator_api, resolve_to_config=false, ad_with_size=false, requested_size=null, html, headers, attributes, origin); +function attachIFrameContext({ + generator_api = '', + automatic_beacon = false, + html = '', + headers = [], + attributes = [], + origin = '' +} = {}) { + return attachFrameContext( + 'iframe', generator_api, resolve_to_config = false, ad_with_size = false, + requested_size = null, automatic_beacon, html, headers, attributes, + origin); } // Open a window that waits for scripts to execute. diff --git a/tests/wpt/tests/fenced-frame/scroll-into-view.https.html b/tests/wpt/tests/fenced-frame/scroll-into-view.https.html new file mode 100644 index 00000000000..5188f39c69f --- /dev/null +++ b/tests/wpt/tests/fenced-frame/scroll-into-view.https.html @@ -0,0 +1,44 @@ + +Test scrollIntoView() inside a fenced frame + + + + + + + + +
+ + diff --git a/tests/wpt/tests/fetch/range/blob.any.js b/tests/wpt/tests/fetch/range/blob.any.js index 1db3b248f6c..7bcd4b9d11f 100644 --- a/tests/wpt/tests/fetch/range/blob.any.js +++ b/tests/wpt/tests/fetch/range/blob.any.js @@ -10,6 +10,15 @@ const supportedBlobRange = [ content_range: "bytes 9-21/30", result: "Hello, World!", }, + { + name: "A blob range request with no type.", + data: ["A simple Hello, World! example"], + type: undefined, + range: "bytes=9-21", + content_length: 13, + content_range: "bytes 9-21/30", + result: "Hello, World!", + }, { name: "A blob range request with no end.", data: ["Range with no end"], @@ -201,7 +210,7 @@ supportedBlobRange.forEach(({ name, data, type, range, content_length, content_r }); assert_equals(resp.status, 206, "HTTP status is 206"); assert_equals(resp.type, "basic", "response type is basic"); - assert_equals(resp.headers.get("Content-Type"), type, "Content-Type is " + resp.headers.get("Content-Type")); + assert_equals(resp.headers.get("Content-Type"), type || "", "Content-Type is " + resp.headers.get("Content-Type")); assert_equals(resp.headers.get("Content-Length"), content_length.toString(), "Content-Length is " + resp.headers.get("Content-Length")); assert_equals(resp.headers.get("Content-Range"), content_range, "Content-Range is " + resp.headers.get("Content-Range")); const text = await resp.text(); diff --git a/tests/wpt/tests/fledge/tentative/generate-bid-recency.https.sub.window.js b/tests/wpt/tests/fledge/tentative/generate-bid-recency.https.sub.window.js new file mode 100644 index 00000000000..ed431820d30 --- /dev/null +++ b/tests/wpt/tests/fledge/tentative/generate-bid-recency.https.sub.window.js @@ -0,0 +1,33 @@ +// META: script=/resources/testdriver.js +// META: script=/common/utils.js +// META: script=resources/fledge-util.js +// META: timeout=long + +"use strict;" + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + { generateBid: + `if (browserSignals.recency === undefined) + throw new Error("Missing recency in browserSignals.") + + if (browserSignals.recency < 0) + throw new Error("Recency is a negative value.") + + if (browserSignals.recency > 30000) + throw new Error("Recency is over 30 seconds threshold.") + + if (browserSignals.recency % 100 !== 0) + throw new Error("Recency is not rounded to multiple of 100 milliseconds.") + + return {'bid': 9, + 'render': interestGroup.ads[0].renderUrl};`, + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, + // expectedReportUrls + [createBidderReportUrl(uuid)] + ); +}, 'Check recency in generateBid() is below a certain threshold and rounded ' + + 'to multiple of 100 milliseconds.'); diff --git a/tests/wpt/tests/fledge/tentative/register-ad-beacon.https.sub.window.js b/tests/wpt/tests/fledge/tentative/register-ad-beacon.https.sub.window.js index 2284ac85b41..48ce1fa2636 100644 --- a/tests/wpt/tests/fledge/tentative/register-ad-beacon.https.sub.window.js +++ b/tests/wpt/tests/fledge/tentative/register-ad-beacon.https.sub.window.js @@ -9,12 +9,10 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`, - // reportWin: - null, - '', + { reportResult: + `registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`, + reportWin: + '' }, // expectedReportUrls: [`${createSellerBeaconUrl(uuid)}, body: `], // renderUrlOverride: @@ -32,12 +30,10 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - '', - // reportWin: - null, - `registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});`, + { reportResult: + '', + reportWin: + `registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});` }, // expectedReportUrls: [`${createBidderBeaconUrl(uuid)}, body: `], // renderUrlOverride: @@ -55,12 +51,10 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`, - // reportWin: - null, - '', + { reportResult: + `registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`, + reportWin: + '' }, // expectedReportUrls: [`${createSellerBeaconUrl(uuid)}, body: body`], // renderUrlOverride: @@ -78,12 +72,10 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - '', - // reportWin: - null, - `registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});`, + { reportResult: + '', + reportWin: + `registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});` }, // expectedReportUrls: [`${createBidderBeaconUrl(uuid)}, body: body`], // renderUrlOverride: @@ -101,12 +93,10 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`, - // reportWin: - null, - '', + { reportResult: + `registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`, + reportWin: + '' }, // expectedReportUrls: [`${createSellerBeaconUrl(uuid)}, body: body1`, `${createSellerBeaconUrl(uuid)}, body: body2`], @@ -130,12 +120,10 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - '', - // reportWin: - null, - `registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});`, + { reportResult: + '', + reportWin: + `registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});` }, // expectedReportUrls: [`${createBidderBeaconUrl(uuid)}, body: body1`, `${createBidderBeaconUrl(uuid)}, body: body2`], @@ -159,13 +147,11 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `registerAdBeacon({beacon1: '${createSellerBeaconUrl(uuid, '1')}', - beacon2: '${createSellerBeaconUrl(uuid, '2')}'});`, - // reportWin: - null, - '', + { reportResult: + `registerAdBeacon({beacon1: '${createSellerBeaconUrl(uuid, '1')}', + beacon2: '${createSellerBeaconUrl(uuid, '2')}'});`, + reportWin: + '' }, // expectedReportUrls: [`${createSellerBeaconUrl(uuid, '1')}, body: body1`, `${createSellerBeaconUrl(uuid, '2')}, body: body2`], @@ -189,13 +175,12 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - '', - // reportWin: - null, - `registerAdBeacon({beacon1: '${createBidderBeaconUrl(uuid, '1')}', - beacon2: '${createBidderBeaconUrl(uuid, '2')}'});`, + { reportResult: + '', + reportWin: + `registerAdBeacon({beacon1: '${createBidderBeaconUrl(uuid, '1')}', + beacon2: '${createBidderBeaconUrl(uuid, '2')}'});` + }, // expectedReportUrls: [`${createBidderBeaconUrl(uuid, '1')}, body: body1`, `${createBidderBeaconUrl(uuid, '2')}, body: body2`], @@ -219,12 +204,10 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`, - // reportWin: - null, - `registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});`, + { reportResult: + `registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`, + reportWin: + `registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});` }, // expectedReportUrls: [`${createSellerBeaconUrl(uuid)}, body: body`, `${createBidderBeaconUrl(uuid)}, body: body`], @@ -243,12 +226,10 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`, - // reportWin: - null, - `registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});`, + { reportResult: + `registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`, + reportWin: + `registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});` }, // expectedReportUrls: [`${createSellerBeaconUrl(uuid)}, body: body1`, `${createBidderBeaconUrl(uuid)}, body: body2`], @@ -272,16 +253,16 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - // Multiple registerAdBeacon() call should result in an exception, - // throwing away all beacons and other types of reports. - `sendReportTo('${createSellerReportUrl(uuid)}'); - registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'}); - registerAdBeacon({beacon1: '${createSellerBeaconUrl(uuid)}'});`, - // reportWin: - 'sellerSignals === null', - `registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});`, + { reportResult: + // Multiple registerAdBeacon() call should result in an exception, + // throwing away all beacons and other types of reports. + `sendReportTo('${createSellerReportUrl(uuid)}'); + registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'}); + registerAdBeacon({beacon1: '${createSellerBeaconUrl(uuid)}'});`, + reportWinSuccessCondition: + 'sellerSignals === null', + reportWin: + `registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});` }, // expectedReportUrls: [`${createBidderBeaconUrl(uuid)}, body: body`], // renderUrlOverride: @@ -299,16 +280,14 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`, - // reportWin: - null, - // Multiple registerAdBeacon() call should result in an exception, - // throwing away all beacons and other types of reports. - `sendReportTo('${createBidderReportUrl(uuid)}'); - registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'}); - registerAdBeacon({beacon1: '${createBidderBeaconUrl(uuid)}'});`, + { reportResult: + `registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`, + reportWin: + // Multiple registerAdBeacon() call should result in an exception, + // throwing away all beacons and other types of reports. + `sendReportTo('${createBidderReportUrl(uuid)}'); + registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'}); + registerAdBeacon({beacon1: '${createBidderBeaconUrl(uuid)}'});` }, // expectedReportUrls: [`${createSellerBeaconUrl(uuid)}, body: body`], // renderUrlOverride: diff --git a/tests/wpt/tests/fledge/tentative/reporting-arguments.https.sub.window.js b/tests/wpt/tests/fledge/tentative/reporting-arguments.https.sub.window.js index 262e0eb87e6..3b03d29bcf5 100644 --- a/tests/wpt/tests/fledge/tentative/reporting-arguments.https.sub.window.js +++ b/tests/wpt/tests/fledge/tentative/reporting-arguments.https.sub.window.js @@ -14,12 +14,14 @@ async function runReportArgumentValidationTest( uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - reportResultSuccessCondition, - `sendReportTo('${createSellerReportUrl(uuid)}');`, - // reportWin: - reportWinSuccessCondition, - `sendReportTo('${createBidderReportUrl(uuid)}');`, + { reportResultSuccessCondition: + reportResultSuccessCondition, + reportResult: + `sendReportTo('${createSellerReportUrl(uuid)}');`, + reportWinSuccessCondition: + reportWinSuccessCondition, + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, [createSellerReportUrl(uuid), createBidderReportUrl(uuid)] ); } @@ -32,13 +34,13 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `sendReportTo('${createSellerReportUrl(uuid)}'); - return 45;`, - // reportWin: - 'sellerSignals === 45', - `sendReportTo('${createBidderReportUrl(uuid)}');`, + { reportResult: + `sendReportTo('${createSellerReportUrl(uuid)}'); + return 45;`, + reportWinSuccessCondition: + 'sellerSignals === 45', + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, // expectedReportUrls: [createSellerReportUrl(uuid), createBidderReportUrl(uuid)] ); @@ -48,13 +50,13 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `sendReportTo('${createSellerReportUrl(uuid)}'); - return 'foo';`, - // reportWin: - 'sellerSignals === "foo"', - `sendReportTo('${createBidderReportUrl(uuid)}');`, + { reportResult: + `sendReportTo('${createSellerReportUrl(uuid)}'); + return 'foo';`, + reportWinSuccessCondition: + 'sellerSignals === "foo"', + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, // expectedReportUrls: [createSellerReportUrl(uuid), createBidderReportUrl(uuid)] ); @@ -64,13 +66,13 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `sendReportTo('${createSellerReportUrl(uuid)}'); - return [3, 1, 2];`, - // reportWin: - 'JSON.stringify(sellerSignals) === "[3,1,2]"', - `sendReportTo('${createBidderReportUrl(uuid)}');`, + { reportResult: + `sendReportTo('${createSellerReportUrl(uuid)}'); + return [3, 1, 2];`, + reportWinSuccessCondition: + 'JSON.stringify(sellerSignals) === "[3,1,2]"', + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, // expectedReportUrls: [createSellerReportUrl(uuid), createBidderReportUrl(uuid)] ); @@ -80,13 +82,13 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `sendReportTo('${createSellerReportUrl(uuid)}'); - return {a: 4, b:['c', null, {}]};`, - // reportWin: - `JSON.stringify(sellerSignals) === '{"a":4,"b":["c",null,{}]}'`, - `sendReportTo('${createBidderReportUrl(uuid)}');`, + { reportResult: + `sendReportTo('${createSellerReportUrl(uuid)}'); + return {a: 4, b:['c', null, {}]};`, + reportWinSuccessCondition: + `JSON.stringify(sellerSignals) === '{"a":4,"b":["c",null,{}]}'`, + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, // expectedReportUrls: [createSellerReportUrl(uuid), createBidderReportUrl(uuid)] ); diff --git a/tests/wpt/tests/fledge/tentative/resources/fledge-util.js b/tests/wpt/tests/fledge/tentative/resources/fledge-util.js index 36fb05615a7..cd7bb7044c3 100644 --- a/tests/wpt/tests/fledge/tentative/resources/fledge-util.js +++ b/tests/wpt/tests/fledge/tentative/resources/fledge-util.js @@ -269,14 +269,35 @@ async function runBasicFledgeTestExpectingNoWinner(test, testConfig = {}) { // the corresponding reporting method, the report is sent to an error URL. // Otherwise, the corresponding 'reportResult' / 'reportWin' values are run. // +// `codeToInsert` is a JS object that contains the following fields to control +// the code generated for the auction worklet: +// scoreAd - function body for scoreAd() seller worklet function +// reportResult - function body for reportResult() seller worklet function +// generateBid - function body for generateBid() buyer worklet function +// reportWin - function body for reportWin() buyer worklet function +// +// Additionally the following fields can be added to check for errors during the +// execution of the corresponding worklets: +// reportWinSuccessCondition - boolean condition added to reportWin() in the +// buyer worklet that triggers a sendReportTo() to an 'error' URL if not met. +// reportResultSuccessCondition - boolean condition added to reportResult() in +// the seller worklet that triggers a sendReportTo() to an 'error' URL if not +// met. +// // `renderUrlOverride` allows the ad URL of the joined InterestGroup to // to be set by the caller. // // Requesting error report URLs causes waitForObservedRequests() to throw // rather than hang. -async function runReportTest(test, uuid, reportResultSuccessCondition, - reportResult, reportWinSuccessCondition, reportWin, - expectedReportUrls, renderUrlOverride) { +async function runReportTest(test, uuid, codeToInsert, expectedReportUrls, + renderUrlOverride) { + let scoreAd = codeToInsert.scoreAd; + let reportResultSuccessCondition = codeToInsert.reportResultSuccessCondition; + let reportResult = codeToInsert.reportResult; + let generateBid = codeToInsert.generateBid; + let reportWinSuccessCondition = codeToInsert.reportWinSuccessCondition; + let reportWin = codeToInsert.reportWin; + if (reportResultSuccessCondition) { reportResult = `if (!(${reportResultSuccessCondition})) { sendReportTo('${createSellerReportUrl(uuid, 'error')}'); @@ -285,6 +306,11 @@ async function runReportTest(test, uuid, reportResultSuccessCondition, ${reportResult}`; } let decisionScriptUrlParams = {}; + + if (scoreAd !== undefined) { + decisionScriptUrlParams.scoreAd = scoreAd; + } + if (reportResult !== null) decisionScriptUrlParams.reportResult = reportResult; else @@ -298,6 +324,11 @@ async function runReportTest(test, uuid, reportResultSuccessCondition, ${reportWin}`; } let biddingScriptUrlParams = {}; + + if (generateBid !== undefined) { + biddingScriptUrlParams.generateBid = generateBid; + } + if (reportWin !== null) biddingScriptUrlParams.reportWin = reportWin; else diff --git a/tests/wpt/tests/fledge/tentative/send-report-to.https.sub.window.js b/tests/wpt/tests/fledge/tentative/send-report-to.https.sub.window.js index de22e827a33..087140af3ef 100644 --- a/tests/wpt/tests/fledge/tentative/send-report-to.https.sub.window.js +++ b/tests/wpt/tests/fledge/tentative/send-report-to.https.sub.window.js @@ -9,12 +9,13 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `sendReportTo('${createSellerReportUrl(uuid)}');`, - // reportWin: - 'sellerSignals === null', - `sendReportTo('${createBidderReportUrl(uuid)}');`, + { reportResult: + `sendReportTo('${createSellerReportUrl(uuid)}');`, + reportWinSuccessCondition: + 'sellerSignals === null', + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, + // expectedReportUrls: [createSellerReportUrl(uuid), createBidderReportUrl(uuid)] ); }, 'Both send reports, seller passes nothing to bidder.'); @@ -23,12 +24,10 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `sendReportTo('${createSellerReportUrl(uuid)}');`, - // reportWin: - null, - '', + { reportResult: + `sendReportTo('${createSellerReportUrl(uuid)}');`, + reportWin: + '' }, // expectedReportUrls: [createSellerReportUrl(uuid)] ); @@ -38,12 +37,10 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `sendReportTo('${createSellerReportUrl(uuid)}');`, - // reportWin: - null, - 'throw new Error("Very serious exception")', + { reportResult: + `sendReportTo('${createSellerReportUrl(uuid)}');`, + reportWin: + 'throw new Error("Very serious exception")' }, // expectedReportUrls: [createSellerReportUrl(uuid)] ); @@ -53,12 +50,8 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `sendReportTo('${createSellerReportUrl(uuid)}');`, - // reportWin: - null, - null, + { reportResult: + `sendReportTo('${createSellerReportUrl(uuid)}');` }, // expectedReportUrls: [createSellerReportUrl(uuid)] ); @@ -68,12 +61,12 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - '', - // reportWin: - 'sellerSignals === null', - `sendReportTo('${createBidderReportUrl(uuid)}');`, + { reportResult: + '', + reportWinSuccessCondition: + 'sellerSignals === null', + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, // expectedReportUrls: [createBidderReportUrl(uuid)] ); @@ -83,12 +76,12 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - 'return "foo";', - // reportWin: - 'sellerSignals === "foo"', - `sendReportTo('${createBidderReportUrl(uuid)}');`, + { reportResult: + 'return "foo";', + reportWinSuccessCondition: + 'sellerSignals === "foo"', + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, // expectedReportUrls: [createBidderReportUrl(uuid)] ); @@ -98,12 +91,12 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - 'throw new Error("Very serious exception")', - // reportWin: - 'sellerSignals === null', - `sendReportTo('${createBidderReportUrl(uuid)}');`, + { reportResult: + 'throw new Error("Very serious exception")', + reportWinSuccessCondition: + 'sellerSignals === null', + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, // expectedReportUrls: [createBidderReportUrl(uuid)] ); @@ -113,12 +106,10 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - null, - // reportWin: - 'sellerSignals === null', - `sendReportTo('${createBidderReportUrl(uuid)}');`, + { reportWinSuccessCondition: + 'sellerSignals === null', + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, // expectedReportUrls: [createBidderReportUrl(uuid)] ); @@ -128,14 +119,14 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `sendReportTo('${createSellerReportUrl(uuid)}'); - sendReportTo('${createSellerReportUrl(uuid)}'); - return 5;`, - // reportWin: - 'sellerSignals === null', - `sendReportTo('${createBidderReportUrl(uuid)}');`, + { reportResult: + `sendReportTo('${createSellerReportUrl(uuid)}'); + sendReportTo('${createSellerReportUrl(uuid)}'); + return 5;`, + reportWinSuccessCondition: + 'sellerSignals === null', + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, // expectedReportUrls: [createBidderReportUrl(uuid)] ); @@ -145,13 +136,11 @@ promise_test(async test => { const uuid = generateUuid(test); await runReportTest( test, uuid, - // reportResult: - null, - `sendReportTo('${createSellerReportUrl(uuid)}');`, - // reportWin: - null, - `sendReportTo('${createBidderReportUrl(uuid)}'); - sendReportTo('${createBidderReportUrl(uuid)}');`, + { reportResult: + `sendReportTo('${createSellerReportUrl(uuid)}');`, + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}'); + sendReportTo('${createBidderReportUrl(uuid)}');` }, // expectedReportUrls: [createSellerReportUrl(uuid)] ); diff --git a/tests/wpt/tests/fullscreen/api/fullscreen-reordering.html b/tests/wpt/tests/fullscreen/api/fullscreen-reordering.html index 1a286c32c77..4b394bc20fc 100644 --- a/tests/wpt/tests/fullscreen/api/fullscreen-reordering.html +++ b/tests/wpt/tests/fullscreen/api/fullscreen-reordering.html @@ -12,9 +12,9 @@ + +
+
before
+
+
summary
+
contents
+
+
after
+
diff --git a/tests/wpt/tests/html/rendering/the-details-element/details-display-type-001-ref2.html b/tests/wpt/tests/html/rendering/the-details-element/details-display-type-001-ref2.html new file mode 100644 index 00000000000..4349df38d6a --- /dev/null +++ b/tests/wpt/tests/html/rendering/the-details-element/details-display-type-001-ref2.html @@ -0,0 +1,37 @@ + +Details and summary and display property (subgrid) + + +
+
before
+
summary
+
contents
+
after
+
diff --git a/tests/wpt/tests/html/rendering/the-details-element/details-display-type-001.tentative.html b/tests/wpt/tests/html/rendering/the-details-element/details-display-type-001.tentative.html new file mode 100644 index 00000000000..81641355187 --- /dev/null +++ b/tests/wpt/tests/html/rendering/the-details-element/details-display-type-001.tentative.html @@ -0,0 +1,51 @@ + +Details and summary and display property (subgrid) + + + + + +
+
+ summary +
contents
+
+
diff --git a/tests/wpt/tests/html/semantics/forms/the-input-element/radio-keyboard-navigation-order.html b/tests/wpt/tests/html/semantics/forms/the-input-element/radio-keyboard-navigation-order.html new file mode 100644 index 00000000000..d019ca982c8 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-input-element/radio-keyboard-navigation-order.html @@ -0,0 +1,70 @@ + + + + +Radio button group keyboard navigation order + + + + + + + +
+ + + +
+
+ + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size-ref.tentative.html new file mode 100644 index 00000000000..a01455aab09 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size-ref.tentative.html @@ -0,0 +1,8 @@ + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size.tentative.html new file mode 100644 index 00000000000..4a4d129cb94 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size.tentative.html @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl-ref.tentative.html new file mode 100644 index 00000000000..42b2541fd51 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl-ref.tentative.html @@ -0,0 +1,9 @@ + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl.tentative.html new file mode 100644 index 00000000000..90c06c93d76 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl.tentative.html @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js index f6a99232330..2e084450a36 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js +++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js @@ -3,24 +3,28 @@ function replaceChildElement(newChild, oldChild) { } function createFakeSelectmenu(selectedValueText) { - const selectmenu = document.createElement('button'); + const selectmenu = document.createElement('div'); selectmenu.classList.add('fake-selectmenu-internal-selectmenu-button'); selectmenu.innerHTML = `
Test passes if you see a green backdrop at half opacity. diff --git a/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-flat-tree.html b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-flat-tree.html new file mode 100644 index 00000000000..d2792a895cc --- /dev/null +++ b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-flat-tree.html @@ -0,0 +1,47 @@ + + + + + Test that popover light dismiss uses the flat tree. + + + +

Test passes if the inner popover opens after clicking the inner toggle.

+ +
+ +
+ + + + + + + + + + diff --git a/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-with-anchor.tentative.html b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-with-anchor.tentative.html new file mode 100644 index 00000000000..c4e545c4fb9 --- /dev/null +++ b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-with-anchor.tentative.html @@ -0,0 +1,90 @@ + + +Popover light dismiss with anchor behavior + + + + + + + + + + + +
+ Inside popover 1 + +
+
+ Inside popover 2 +
+ + diff --git a/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html index eb148941fbf..4c31bed1635 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html @@ -14,15 +14,14 @@ - Outside all popovers -
+
Inside popover 1 Inside popover 1 after button -
-
- Inside popover 2 +
+ Inside popover 2 +
-

This test passes if you see the same fraction four times.

+

This test passes if you see the same fraction eight times.

@@ -37,6 +37,26 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/fractions/frac-linethickness-001.html b/tests/wpt/tests/mathml/presentation-markup/fractions/frac-linethickness-001.html index 918d4aba6e6..99f75102639 100644 --- a/tests/wpt/tests/mathml/presentation-markup/fractions/frac-linethickness-001.html +++ b/tests/wpt/tests/mathml/presentation-markup/fractions/frac-linethickness-001.html @@ -19,7 +19,7 @@ -

This test passes if you see the same fraction four times.

+

This test passes if you see the same fraction eight times.

@@ -40,6 +40,26 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-2-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-2-ref.html new file mode 100644 index 00000000000..f442a48dfe6 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-2-ref.html @@ -0,0 +1,31 @@ + + + + embellished operators 1: mrow + + + + + +
+ + + + abcdef + ¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-2.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-2.html new file mode 100644 index 00000000000..f8bfb26d4e9 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-2.html @@ -0,0 +1,33 @@ + + + + embellished operators 1: mrow + + + + + + + +
+ + + + abcdef + ¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-3-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-3-ref.html new file mode 100644 index 00000000000..e134bfacebc --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-3-ref.html @@ -0,0 +1,31 @@ + + + + embellished operators 1: mstyle + + + + + +
+ + + + abcdef + ¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-3.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-3.html new file mode 100644 index 00000000000..85a21cc50b9 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-3.html @@ -0,0 +1,33 @@ + + + + embellished operators 1: mstyle + + + + + + + +
+ + + + abcdef + ¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-4-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-4-ref.html new file mode 100644 index 00000000000..149eff4b0d2 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-4-ref.html @@ -0,0 +1,31 @@ + + + + embellished operators 1: mpadded + + + + + +
+ + + + abcdef + ¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-4.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-4.html new file mode 100644 index 00000000000..b6c41256e88 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-4.html @@ -0,0 +1,33 @@ + + + + embellished operators 1: mpadded + + + + + + + +
+ + + + abcdef + ¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-5-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-5-ref.html new file mode 100644 index 00000000000..cb4342e708d --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-5-ref.html @@ -0,0 +1,35 @@ + + + + embellished operators 1: mphantom + + + + + +
+ + + + abcdef + + g + ¯ + h + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-5.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-5.html new file mode 100644 index 00000000000..1623991c795 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-1-5.html @@ -0,0 +1,37 @@ + + + + embellished operators 1: mphantom + + + + + + + +
+ + + + abcdef + + g + ¯ + h + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-1-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-1-ref.html new file mode 100644 index 00000000000..faa37e0d989 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-1-ref.html @@ -0,0 +1,31 @@ + + + + embellished operators: ignore space-like children + + + + + +
+ + + + abcdef + g¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-1.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-1.html new file mode 100644 index 00000000000..a43f65e00e0 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-1.html @@ -0,0 +1,33 @@ + + + + embellished operators: ignore space-like children + + + + + + + +
+ + + + abcdef + g¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-2-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-2-ref.html new file mode 100644 index 00000000000..903a30cc1f7 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-2-ref.html @@ -0,0 +1,31 @@ + + + + embellished operators: ignore space-like children + + + + + +
+ + + + abcdef + ¯g + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-2.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-2.html new file mode 100644 index 00000000000..108353dcb3a --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-2.html @@ -0,0 +1,33 @@ + + + + embellished operators: ignore space-like children + + + + + + + +
+ + + + abcdef + ¯g + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-3-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-3-ref.html new file mode 100644 index 00000000000..c40dff710f1 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-3-ref.html @@ -0,0 +1,35 @@ + + + + embellished operators: ignore space-like children + + + + + +
+ + + + abcdef + + g + ¯ + h + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-3.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-3.html new file mode 100644 index 00000000000..e72cb68be30 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-3.html @@ -0,0 +1,33 @@ + + + + embellished operators: ignore space-like children + + + + + + + +
+ + + + abcdef + g¯h + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-4-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-4-ref.html new file mode 100644 index 00000000000..b44f667442c --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-4-ref.html @@ -0,0 +1,39 @@ + + + + embellished operators: ignore space-like children + + + + + +
+ + + + abcdef + + + g + + ¯ + + + h + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-4.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-4.html new file mode 100644 index 00000000000..7e60d5370b7 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-2-4.html @@ -0,0 +1,41 @@ + + + + embellished operators: ignore space-like children + + + + + + + +
+ + + + abcdef + + + g + + ¯ + + + h + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-2-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-2-ref.html new file mode 100644 index 00000000000..2df02cf9a99 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-2-ref.html @@ -0,0 +1,32 @@ + + + + embellished operators: maction and mrow-like as space-like children + + + + + + +
+ + + + abcdef + ¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-2.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-2.html new file mode 100644 index 00000000000..ff7b1020cbb --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-2.html @@ -0,0 +1,34 @@ + + + + embellished operators: maction and mrow-like as space-like children + + + + + + + + +
+ + + + abcdef + ¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-3-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-3-ref.html new file mode 100644 index 00000000000..4615e4de229 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-3-ref.html @@ -0,0 +1,34 @@ + + + + embellished operators: maction and mrow-like as space-like children + + + + + + +
+ + + + abcdef + + ¯ + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-3.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-3.html new file mode 100644 index 00000000000..84dec135cac --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-3.html @@ -0,0 +1,34 @@ + + + + embellished operators: maction and mrow-like as space-like children + + + + + + + + +
+ + + + abcdef + ¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-4-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-4-ref.html new file mode 100644 index 00000000000..e02ff28f18d --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-4-ref.html @@ -0,0 +1,34 @@ + + + + embellished operators: maction and mrow-like as space-like children + + + + + + +
+ + + + abcdef + + ¯ + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-4.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-4.html new file mode 100644 index 00000000000..648b0028f46 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-4.html @@ -0,0 +1,36 @@ + + + + embellished operators: maction and mrow-like as space-like children + + + + + + + + +
+ + + + abcdef + + ¯ + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-5-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-5-ref.html new file mode 100644 index 00000000000..c2c85f931c9 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-5-ref.html @@ -0,0 +1,34 @@ + + + + embellished operators: maction and mrow-like as space-like children + + + + + + +
+ + + + abcdef + + ¯ + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-5.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-5.html new file mode 100644 index 00000000000..b6d032a589d --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-3-5.html @@ -0,0 +1,34 @@ + + + + embellished operators: maction and mrow-like as space-like children + + + + + + + + +
+ + + + abcdef + ¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-1-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-1-ref.html new file mode 100644 index 00000000000..bcf58699ea7 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-1-ref.html @@ -0,0 +1,34 @@ + + + + embellished operators 4-1: some non-space-like children + + + + + +
+ + + + abcdef + + ¯ + ¯ + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-1.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-1.html new file mode 100644 index 00000000000..724d39ceab0 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-1.html @@ -0,0 +1,33 @@ + + + + embellished operators 4-1: some non-space-like children + + + + + + + +
+ + + + abcdef + ¯¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-2-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-2-ref.html new file mode 100644 index 00000000000..b226d69a97b --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-2-ref.html @@ -0,0 +1,31 @@ + + + + embellished operators 4-2: some non-space-like children + + + + + +
+ + + + abcdef + g¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-2.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-2.html new file mode 100644 index 00000000000..1a3724cb9d4 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-2.html @@ -0,0 +1,33 @@ + + + + embellished operators 4-2: some non-space-like children + + + + + + + +
+ + + + abcdef + g¯ + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-3-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-3-ref.html new file mode 100644 index 00000000000..8786076642e --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-3-ref.html @@ -0,0 +1,31 @@ + + + + embellished operators 4-3: some non-space-like children + + + + + +
+ + + + abcdef + ¯g + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-3.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-3.html new file mode 100644 index 00000000000..1be87b81dd2 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-4-3.html @@ -0,0 +1,33 @@ + + + + embellished operators 4-3: some non-space-like children + + + + + + + +
+ + + + abcdef + ¯g + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-5-1.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-5-1.html new file mode 100644 index 00000000000..946bda0dc71 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-5-1.html @@ -0,0 +1,37 @@ + + + + embellished operators 5: vertical stretchy operator + + + + + + + +
+ + + + + | + + + + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-5-2.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-5-2.html new file mode 100644 index 00000000000..95bd2694a50 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-5-2.html @@ -0,0 +1,35 @@ + + + + embellished operators 5: vertical stretchy operator + + + + + + + +
+ + + + | + + + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-5-ref.html b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-5-ref.html new file mode 100644 index 00000000000..da9d2387757 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/embellished-op-5-ref.html @@ -0,0 +1,30 @@ + + + + embellished operators 5: vertical stretchy operator + + + + + +
+ + + | + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/mo-dynamic-mozilla-347348-ref.xhtml b/tests/wpt/tests/mathml/presentation-markup/operators/mo-dynamic-mozilla-347348-ref.xhtml new file mode 100644 index 00000000000..0deb51d5f23 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/mo-dynamic-mozilla-347348-ref.xhtml @@ -0,0 +1,17 @@ + + + + + + + +
+ + x + + y + +
+ + + diff --git a/tests/wpt/tests/mathml/presentation-markup/operators/mo-dynamic-mozilla-347348.xhtml b/tests/wpt/tests/mathml/presentation-markup/operators/mo-dynamic-mozilla-347348.xhtml new file mode 100644 index 00000000000..a8471e116a5 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/operators/mo-dynamic-mozilla-347348.xhtml @@ -0,0 +1,26 @@ + + + + + + + + + + +
+ + x + = + y + +
+ + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-1-ref.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-1-ref.html new file mode 100644 index 00000000000..96cba038a4d --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-1-ref.html @@ -0,0 +1,36 @@ + + + + Stretchy mover + + + + + +
+ + + + BBBBBBBBB + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-1a.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-1a.html new file mode 100644 index 00000000000..8a87c2387f9 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-1a.html @@ -0,0 +1,44 @@ + + + + Stretchy mover + + + + + + + +
+ + + + + + + BBBBBBBBB + + + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-1b.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-1b.html new file mode 100644 index 00000000000..da351235135 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-1b.html @@ -0,0 +1,44 @@ + + + + Stretchy mover + + + + + + + +
+ + + + + + + BBBBBBBBB + + + + + +
+ + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-2-ref.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-2-ref.html new file mode 100644 index 00000000000..e9b24785d3f --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-2-ref.html @@ -0,0 +1,32 @@ + + + + Stretchy mover + + + + + + + + + + + B + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-2a.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-2a.html new file mode 100644 index 00000000000..87738363cd3 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-2a.html @@ -0,0 +1,36 @@ + + + + Stretchy mover + + + + + + + + + + + + + + B + + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-2b.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-2b.html new file mode 100644 index 00000000000..6f44ffe17da --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-2b.html @@ -0,0 +1,36 @@ + + + + Stretchy mover + + + + + + + + + + + + + + B + + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-3-ref.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-3-ref.html new file mode 100644 index 00000000000..10e0779b98b --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-3-ref.html @@ -0,0 +1,28 @@ + + + + Stretchy mover + + + + + + + + + BBBBBBBBB + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-3.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-3.html new file mode 100644 index 00000000000..9becf31d14c --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-mover-3.html @@ -0,0 +1,30 @@ + + + + Stretchy mover + + + + + + + + + + + BBBBBBBBB + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1-ref.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1-ref.html new file mode 100644 index 00000000000..7b6b6d72adc --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1-ref.html @@ -0,0 +1,28 @@ + + + + Non-stretchy msup + + + + + + + + + AAAAAA + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1a.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1a.html new file mode 100644 index 00000000000..1abf64aad6e --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1a.html @@ -0,0 +1,30 @@ + + + + Non-stretchy msup + + + + + + + + + + + AAAAAA + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1b.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1b.html new file mode 100644 index 00000000000..c6e0a8aaabc --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1b.html @@ -0,0 +1,32 @@ + + + + Non-stretchy msup + + + + + + + + + + + + AAAAAA + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1c.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1c.html new file mode 100644 index 00000000000..056000566ac --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1c.html @@ -0,0 +1,34 @@ + + + + Non-stretchy msup + + + + + + + + + + + + + AAAAAA + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1d.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1d.html new file mode 100644 index 00000000000..a1ac5772f25 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-msup-1d.html @@ -0,0 +1,33 @@ + + + + Non-stretchy msup + + + + + + + + + + + + AAAAAA + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1-ref.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1-ref.html new file mode 100644 index 00000000000..587d37163db --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1-ref.html @@ -0,0 +1,31 @@ + + + + Stretchy munderover + + + + + + + + + + AAAAAA + BBBBBB + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1a.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1a.html new file mode 100644 index 00000000000..0dfd5ad40bb --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1a.html @@ -0,0 +1,33 @@ + + + + Stretchy munderover + + + + + + + + + + + + AAAAAA + BBBBBB + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1b.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1b.html new file mode 100644 index 00000000000..f4a2c67c58a --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1b.html @@ -0,0 +1,35 @@ + + + + Stretchy munderover + + + + + + + + + + + + + AAAAAA + BBBBBB + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1c.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1c.html new file mode 100644 index 00000000000..6430545794a --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1c.html @@ -0,0 +1,31 @@ + + + + Stretchy munderover + + + + + + + + + + + AAAAAA + BBBBBB + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1d.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1d.html new file mode 100644 index 00000000000..d2345c5f144 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1d.html @@ -0,0 +1,34 @@ + + + + Stretchy munderover + + + + + + + + + + + + AAAAAA + BBBBBB + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1e.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1e.html new file mode 100644 index 00000000000..ba959a58790 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-1e.html @@ -0,0 +1,34 @@ + + + + Stretchy munderover + + + + + + + + + + + + AAAAAA + BBBBBB + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2-ref.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2-ref.html new file mode 100644 index 00000000000..f43f659240d --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2-ref.html @@ -0,0 +1,34 @@ + + + + Stretchy munderover + + + + + + + + + + + AAAAAA + BBBBBB + + CCCCCC + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2a.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2a.html new file mode 100644 index 00000000000..54aea8d7c9a --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2a.html @@ -0,0 +1,36 @@ + + + + Stretchy munderover + + + + + + + + + + + + + AAAAAA + BBBBBB + + CCCCCC + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2b.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2b.html new file mode 100644 index 00000000000..6420f01dd7a --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2b.html @@ -0,0 +1,38 @@ + + + + Stretchy munderover + + + + + + + + + + + + + + AAAAAA + BBBBBB + + CCCCCC + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2c.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2c.html new file mode 100644 index 00000000000..3a77e78078a --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2c.html @@ -0,0 +1,34 @@ + + + + Stretchy munderover + + + + + + + + + + + + AAAAAA + BBBBBB + + CCCCCC + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2d.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2d.html new file mode 100644 index 00000000000..30a7ca2e728 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2d.html @@ -0,0 +1,36 @@ + + + + Stretchy munderover + + + + + + + + + + + + + AAAAAA + BBBBBB + + CCCCCC + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2e.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2e.html new file mode 100644 index 00000000000..199c101b6ae --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2e.html @@ -0,0 +1,36 @@ + + + + Stretchy munderover + + + + + + + + + + + + + AAAAAA + BBBBBB + + + CCCCCC + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2f.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2f.html new file mode 100644 index 00000000000..5b736fda0a8 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2f.html @@ -0,0 +1,38 @@ + + + + Stretchy munderover + + + + + + + + + + + + + + AAAAAA + BBBBBB + + + + CCCCCC + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2g.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2g.html new file mode 100644 index 00000000000..11cca42de14 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-2g.html @@ -0,0 +1,37 @@ + + + + Stretchy munderover + + + + + + + + + + + + + AAAAAA + BBBBBB + + CCCCCC + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3-ref.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3-ref.html new file mode 100644 index 00000000000..67b3492ec86 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3-ref.html @@ -0,0 +1,31 @@ + + + + Stretchy munderover + + + + + + + + + AAAAAA + + BBBBBB + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3a.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3a.html new file mode 100644 index 00000000000..dd41c82def5 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3a.html @@ -0,0 +1,33 @@ + + + + Stretchy munderover + + + + + + + + + + + AAAAAA + + BBBBBB + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3b.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3b.html new file mode 100644 index 00000000000..b4619bfef90 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3b.html @@ -0,0 +1,31 @@ + + + + Stretchy munderover + + + + + + + + + + AAAAAA + + BBBBBB + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3c.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3c.html new file mode 100644 index 00000000000..004349f8319 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3c.html @@ -0,0 +1,34 @@ + + + + Stretchy munderover + + + + + + + + + + + AAAAAA + + BBBBBB + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3d.html b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3d.html new file mode 100644 index 00000000000..e5cf01f23e1 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/stretchy-munderover-3d.html @@ -0,0 +1,31 @@ + + + + Stretchy munderover + + + + + + + + + + AAAAAA + + BBBBBB + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/sub-vs-sup-mozilla-345563-ref.xhtml b/tests/wpt/tests/mathml/presentation-markup/scripts/sub-vs-sup-mozilla-345563-ref.xhtml new file mode 100644 index 00000000000..dc57aa35066 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/sub-vs-sup-mozilla-345563-ref.xhtml @@ -0,0 +1,22 @@ + + + + + + + + + + +

+ + + x + 2 + + +

+ + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/sub-vs-sup-mozilla-345563.xhtml b/tests/wpt/tests/mathml/presentation-markup/scripts/sub-vs-sup-mozilla-345563.xhtml new file mode 100644 index 00000000000..5c8d78952f0 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/scripts/sub-vs-sup-mozilla-345563.xhtml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + +

+ + + x + 2 + + +

+ + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/tables/dynamic-rowspan-mozilla-370692-ref.xhtml b/tests/wpt/tests/mathml/presentation-markup/tables/dynamic-rowspan-mozilla-370692-ref.xhtml new file mode 100644 index 00000000000..2e01559d274 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/tables/dynamic-rowspan-mozilla-370692-ref.xhtml @@ -0,0 +1,12 @@ + + + + + + + + + +
bar
baz
+ + + diff --git a/tests/wpt/tests/mathml/presentation-markup/tables/dynamic-rowspan-mozilla-370692.xhtml b/tests/wpt/tests/mathml/presentation-markup/tables/dynamic-rowspan-mozilla-370692.xhtml new file mode 100644 index 00000000000..e16326b1aa9 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/tables/dynamic-rowspan-mozilla-370692.xhtml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + +
bar
baz
+ + + diff --git a/tests/wpt/tests/mathml/presentation-markup/tokens/dynamic-mi-mozilla-409125-ref.xhtml b/tests/wpt/tests/mathml/presentation-markup/tokens/dynamic-mi-mozilla-409125-ref.xhtml new file mode 100644 index 00000000000..04d9eeba310 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/tokens/dynamic-mi-mozilla-409125-ref.xhtml @@ -0,0 +1,11 @@ + + +Mozilla bug 409125 + + + + +mi + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/tokens/dynamic-mi-mozilla-409125.xhtml b/tests/wpt/tests/mathml/presentation-markup/tokens/dynamic-mi-mozilla-409125.xhtml new file mode 100644 index 00000000000..35b9951dcbc --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/tokens/dynamic-mi-mozilla-409125.xhtml @@ -0,0 +1,15 @@ + + +Mozilla bug 409125 + + + + + + + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/tokens/dynamic-mi-mozilla-414123-ref.xhtml b/tests/wpt/tests/mathml/presentation-markup/tokens/dynamic-mi-mozilla-414123-ref.xhtml new file mode 100644 index 00000000000..7ec9cb751cb --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/tokens/dynamic-mi-mozilla-414123-ref.xhtml @@ -0,0 +1,32 @@ + + + + + Testcase for bug 414123 + + + + + + M + 2 + + + + + + M + 2 + + + + + + M + 2 + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/tokens/dynamic-mi-mozilla-414123.xhtml b/tests/wpt/tests/mathml/presentation-markup/tokens/dynamic-mi-mozilla-414123.xhtml new file mode 100644 index 00000000000..b2d7e2d1667 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/tokens/dynamic-mi-mozilla-414123.xhtml @@ -0,0 +1,45 @@ + + + + + Testcase for Mozilla bug 414123 + + + + + + + + + + 2 + + + + + + M + 2 + + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/tokens/mi-mathvariant-1-ref.xhtml b/tests/wpt/tests/mathml/presentation-markup/tokens/mi-mathvariant-1-ref.xhtml new file mode 100644 index 00000000000..ec3bb1a83e0 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/tokens/mi-mathvariant-1-ref.xhtml @@ -0,0 +1,9 @@ + + + + cos + + x + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/tokens/mi-mathvariant-1.xhtml b/tests/wpt/tests/mathml/presentation-markup/tokens/mi-mathvariant-1.xhtml new file mode 100644 index 00000000000..04fe19194ee --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/tokens/mi-mathvariant-1.xhtml @@ -0,0 +1,13 @@ + + + + + + + + cos + + x + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/tokens/mi-mathvariant-2-ref.xhtml b/tests/wpt/tests/mathml/presentation-markup/tokens/mi-mathvariant-2-ref.xhtml new file mode 100644 index 00000000000..35e6bf6ecd2 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/tokens/mi-mathvariant-2-ref.xhtml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/tokens/mi-mathvariant-2.xhtml b/tests/wpt/tests/mathml/presentation-markup/tokens/mi-mathvariant-2.xhtml new file mode 100644 index 00000000000..e83a24c5d34 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/tokens/mi-mathvariant-2.xhtml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/wpt/tests/mathml/relations/css-styling/mozilla-393760-1-ref.xml b/tests/wpt/tests/mathml/relations/css-styling/mozilla-393760-1-ref.xml new file mode 100644 index 00000000000..027bdf1b7d9 --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/mozilla-393760-1-ref.xml @@ -0,0 +1,27 @@ + + + + +

+ X + X + X +

+ + +

+ X + X + X +

+ + +

Y

+

Y

+ + +

x

+

x

+ + + diff --git a/tests/wpt/tests/mathml/relations/css-styling/mozilla-393760-1.xml b/tests/wpt/tests/mathml/relations/css-styling/mozilla-393760-1.xml new file mode 100644 index 00000000000..cc2e725f92a --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/mozilla-393760-1.xml @@ -0,0 +1,31 @@ + + + + + + + + +

+ X + X + X +

+ + +

+ X + X + X +

+ + +

Y

+

Y

+ + +

x

+

x

+ + + diff --git a/tests/wpt/tests/mathml/relations/css-styling/mozilla-393760-2-ref.xml b/tests/wpt/tests/mathml/relations/css-styling/mozilla-393760-2-ref.xml new file mode 100644 index 00000000000..58dd5a5d8c3 --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/mozilla-393760-2-ref.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/wpt/tests/mathml/relations/css-styling/mozilla-393760-2.xml b/tests/wpt/tests/mathml/relations/css-styling/mozilla-393760-2.xml new file mode 100644 index 00000000000..c6ebcb5ecee --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/mozilla-393760-2.xml @@ -0,0 +1,15 @@ + + + + + + + + +

This should be invisible.

+ + +

x

+ + + diff --git a/tests/wpt/tests/mathml/relations/css-styling/table-width-1-ref.xhtml b/tests/wpt/tests/mathml/relations/css-styling/table-width-1-ref.xhtml new file mode 100644 index 00000000000..d76a350290d --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/table-width-1-ref.xhtml @@ -0,0 +1,65 @@ + + + + + + + +
+ + + 60 + + + 2 + + + 3 + - + 5 + + + +
+ + +
+ + + + + 8 + 90 + + 61 + + + +
+ + +
+ + + | + { + + 0 + 5 + 9 + + } + | + + +
+ + diff --git a/tests/wpt/tests/mathml/relations/css-styling/table-width-1.xhtml b/tests/wpt/tests/mathml/relations/css-styling/table-width-1.xhtml new file mode 100644 index 00000000000..c3689adb6f2 --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/table-width-1.xhtml @@ -0,0 +1,66 @@ + + + Check that the content box is large enough + + + + + + + +
+ + + 60 + + + 2 + + + 3 + - + 5 + + + +
+ + +
+ + + + 8 + 90 + + 61 + + +
+ + +
+ + + | + { + + 0 + 5 + 9 + + } + | + + +
+ + diff --git a/tests/wpt/tests/mathml/relations/css-styling/table-width-2-ref.html b/tests/wpt/tests/mathml/relations/css-styling/table-width-2-ref.html new file mode 100644 index 00000000000..dfb9eeca8b7 --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/table-width-2-ref.html @@ -0,0 +1,34 @@ + + + + table-width-2 + + + + +

+ + + + | + + | + + + +

+ +

+ + + + | + + | + + + +

+ + + diff --git a/tests/wpt/tests/mathml/relations/css-styling/table-width-2.html b/tests/wpt/tests/mathml/relations/css-styling/table-width-2.html new file mode 100644 index 00000000000..533a9324b4e --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/table-width-2.html @@ -0,0 +1,36 @@ + + + + table-width-2 + + + + + + +

+ + + + | + + | + + + +

+ +

+ + + + | + + | + + + +

+ + + diff --git a/tests/wpt/tests/mathml/relations/css-styling/table-width-3-ref.html b/tests/wpt/tests/mathml/relations/css-styling/table-width-3-ref.html new file mode 100644 index 00000000000..f06cea4bec0 --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/table-width-3-ref.html @@ -0,0 +1,92 @@ + + + + table-width-3 + + + + + + + + + +
+ + + f + + +
+ + + + +
+ + + f + f + f + + +
+ + + + +
+ + + fff + + +
+ + + + +
+ + + fff + + +
+ + + + +
+ + + f + f + f + + +
+ + + + +
+ + + fff + + +
+ + diff --git a/tests/wpt/tests/mathml/relations/css-styling/table-width-3.html b/tests/wpt/tests/mathml/relations/css-styling/table-width-3.html new file mode 100644 index 00000000000..4847ce43045 --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/table-width-3.html @@ -0,0 +1,83 @@ + + + + table-width-3 + + + + + + + + + + + +
+ + f + +
+ + + + +
+ + f + f + f + +
+ + + + +
+ + fff + +
+ + + + +
+ + fff + +
+ + + + +
+ + f + f + f + +
+ + + + +
+ + fff + +
+ + + diff --git a/tests/wpt/tests/mathml/relations/css-styling/table-width-4-ref.html b/tests/wpt/tests/mathml/relations/css-styling/table-width-4-ref.html new file mode 100644 index 00000000000..b31807dee4d --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/table-width-4-ref.html @@ -0,0 +1,41 @@ + + + + table-width-4 + + + + + + + + + +
+ i +
+ + + + +
+ i +
+ + + + +
+ i +
+ + diff --git a/tests/wpt/tests/mathml/relations/css-styling/table-width-4.html b/tests/wpt/tests/mathml/relations/css-styling/table-width-4.html new file mode 100644 index 00000000000..4a88b84cb2a --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/table-width-4.html @@ -0,0 +1,43 @@ + + + + table-width-4 + + + + + + + + + + + +
+ i +
+ + + + +
+ i +
+ + + + +
+ i +
+ + diff --git a/tests/wpt/tests/mathml/relations/html5-tree/dynamic-mozilla-162063.xhtml b/tests/wpt/tests/mathml/relations/html5-tree/dynamic-mozilla-162063.xhtml new file mode 100644 index 00000000000..73bb25fd6f6 --- /dev/null +++ b/tests/wpt/tests/mathml/relations/html5-tree/dynamic-mozilla-162063.xhtml @@ -0,0 +1,45 @@ + + + + + + + + + test for pseudo removal + + + +
+ + + + + a + + + b + + + 2 + + +
+ + diff --git a/tests/wpt/tests/mathml/relations/html5-tree/shadow-dom-mozilla-1066554-ref.html b/tests/wpt/tests/mathml/relations/html5-tree/shadow-dom-mozilla-1066554-ref.html new file mode 100644 index 00000000000..f885eaec428 --- /dev/null +++ b/tests/wpt/tests/mathml/relations/html5-tree/shadow-dom-mozilla-1066554-ref.html @@ -0,0 +1,13 @@ + + + +Test for Mozilla bug 1066554 - Shadow DOM loads MathML stylesheets as needed + + + + X + X + + + + diff --git a/tests/wpt/tests/mathml/relations/html5-tree/shadow-dom-mozilla-1066554.html b/tests/wpt/tests/mathml/relations/html5-tree/shadow-dom-mozilla-1066554.html new file mode 100644 index 00000000000..563ceb29e50 --- /dev/null +++ b/tests/wpt/tests/mathml/relations/html5-tree/shadow-dom-mozilla-1066554.html @@ -0,0 +1,19 @@ + + + +Test for Mozilla bug 1066554 - Shadow DOM loads MathML stylesheets as needed + + +
+ + + diff --git a/tests/wpt/tests/mathml/relations/text-and-math/mi-automatic-italic-with-default-font-ref.html b/tests/wpt/tests/mathml/relations/text-and-math/mi-automatic-italic-with-default-font-ref.html new file mode 100644 index 00000000000..27a58b9ba00 --- /dev/null +++ b/tests/wpt/tests/mathml/relations/text-and-math/mi-automatic-italic-with-default-font-ref.html @@ -0,0 +1,12 @@ + + + + Mathematica Alphanumeric Italic + + + + + X + + + diff --git a/tests/wpt/tests/mathml/relations/text-and-math/mi-automatic-italic-with-default-font.html b/tests/wpt/tests/mathml/relations/text-and-math/mi-automatic-italic-with-default-font.html new file mode 100644 index 00000000000..50199214107 --- /dev/null +++ b/tests/wpt/tests/mathml/relations/text-and-math/mi-automatic-italic-with-default-font.html @@ -0,0 +1,17 @@ + + + + Mathematica Alphanumeric Italic with default font + + + + + + + + + o + + + diff --git a/tests/wpt/tests/preload/preload-nonce.sub.html b/tests/wpt/tests/preload/preload-nonce.sub.html new file mode 100644 index 00000000000..325c8a2e824 --- /dev/null +++ b/tests/wpt/tests/preload/preload-nonce.sub.html @@ -0,0 +1,47 @@ + + +Makes sure that preload requests use their nonce for the CSP + + + + + + + + + + diff --git a/tests/wpt/tests/resources/testdriver.js b/tests/wpt/tests/resources/testdriver.js index a9ab7220aad..a23d6eaf4cf 100644 --- a/tests/wpt/tests/resources/testdriver.js +++ b/tests/wpt/tests/resources/testdriver.js @@ -328,9 +328,9 @@ * to run the call, or null for the current * browsing context. * - * @returns {Promise} fulfilled with the previous {@link - * https://www.w3.org/TR/webdriver/#dfn-windowrect-object|WindowRect} - * value, after the window is minimized. + * @returns {Promise} fulfilled with the previous `WindowRect + * `_ + * value, after the window is minimized. */ minimize_window: function(context=null) { return window.test_driver_internal.minimize_window(context); @@ -343,8 +343,8 @@ * `_ * WebDriver command * - * @param {Object} rect - A {@link - * https://www.w3.org/TR/webdriver/#dfn-windowrect-object|WindowRect} + * @param {Object} rect - A `WindowRect + * `_ * @param {WindowProxy} context - Browsing context in which * to run the call, or null for the current * browsing context. diff --git a/tests/wpt/tests/scroll-animations/view-timelines/unattached-subject-inset.html b/tests/wpt/tests/scroll-animations/view-timelines/unattached-subject-inset.html new file mode 100644 index 00000000000..86262db8f88 --- /dev/null +++ b/tests/wpt/tests/scroll-animations/view-timelines/unattached-subject-inset.html @@ -0,0 +1,59 @@ + + + + + + Test construction of a view timeline with a detached subject + + + + + + +
+
+
+ + + diff --git a/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/static-router-sw.js b/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/static-router-sw.js index e698d34c527..4655ab5321c 100644 --- a/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/static-router-sw.js +++ b/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/static-router-sw.js @@ -4,11 +4,17 @@ var requests = []; self.addEventListener('install', e => { e.registerRouter([ - {condition: {urlPattern: '*.txt'}, source: 'network'}, { - condition: {urlPattern: '*/simple-test-for-condition-main-resource.html'}, + { + condition: {urlPattern: '/**/*.txt??*'}, + // Note: "??*" is for allowing arbitrary query strings. + // Upon my experiment, the URLPattern needs two '?'s for specifying + // a coming string as a query. source: 'network' - } - ]); + }, { + condition: { + urlPattern: '/**/simple-test-for-condition-main-resource.html'}, + source: 'network' + }]); self.skipWaiting(); }); diff --git a/tests/wpt/tests/svg/animations/custom-events.html b/tests/wpt/tests/svg/animations/custom-events.html new file mode 100644 index 00000000000..1c49106b510 --- /dev/null +++ b/tests/wpt/tests/svg/animations/custom-events.html @@ -0,0 +1,75 @@ + +Custom events with the names "end" and "endEvent" and their effects on various types of event listeners + + + + + + + + + + diff --git a/tests/wpt/tests/svg/animations/event-listeners.html b/tests/wpt/tests/svg/animations/event-listeners.html new file mode 100644 index 00000000000..ca2b9b72f5b --- /dev/null +++ b/tests/wpt/tests/svg/animations/event-listeners.html @@ -0,0 +1,62 @@ + +Event handling of endEvent with various types of event listeners + + + + + + + + + + + diff --git a/tests/wpt/tests/svg/linking/scripted/href-animate-element.html b/tests/wpt/tests/svg/linking/scripted/href-animate-element.html index f0b99209a80..5220495d796 100644 --- a/tests/wpt/tests/svg/linking/scripted/href-animate-element.html +++ b/tests/wpt/tests/svg/linking/scripted/href-animate-element.html @@ -29,7 +29,7 @@ promise_test(function(t) { animate.setAttributeNS(XLINKNS, 'xlink:href', '#rect2'); assert_equals(animate.targetElement, rect1); - return waitEvent(animate, 'begin').then(function() { + return waitEvent(animate, 'beginEvent').then(function() { svg.pauseAnimations(); svg.setCurrentTime(5); assert_equals(rect1.x.animVal.value, 50); @@ -58,7 +58,7 @@ promise_test(function(t) { transform.setAttributeNS(XLINKNS, 'xlink:href', '#rect2'); assert_equals(transform.targetElement, rect1); - return waitEvent(transform, 'begin').then(function() { + return waitEvent(transform, 'beginEvent').then(function() { svg.pauseAnimations(); svg.setCurrentTime(5); assert_equals(rect1.getCTM().e, 50); @@ -87,7 +87,7 @@ promise_test(function(t) { animate.setAttributeNS(XLINKNS, 'xlink:href', '#circle2'); assert_equals(animate.targetElement, circle1); - return waitEvent(animate, 'begin').then(function() { + return waitEvent(animate, 'beginEvent').then(function() { svg.pauseAnimations(); svg.setCurrentTime(5); assert_equals(circle1.cx.animVal.value, 100); @@ -121,7 +121,7 @@ promise_test(function(t) { animate.setAttributeNS(XLINKNS, 'xlink:href', '#circle2'); assert_equals(animate.targetElement, circle1); - return waitEvent(animate, 'begin').then(function() { + return waitEvent(animate, 'beginEvent').then(function() { svg.pauseAnimations(); svg.setCurrentTime(5); assert_equals(circle1.cx.animVal.value, 100); diff --git a/tests/wpt/tests/svg/linking/scripted/href-mpath-element.html b/tests/wpt/tests/svg/linking/scripted/href-mpath-element.html index 8fb9f0f1aed..03949b4168c 100644 --- a/tests/wpt/tests/svg/linking/scripted/href-mpath-element.html +++ b/tests/wpt/tests/svg/linking/scripted/href-mpath-element.html @@ -25,7 +25,7 @@ promise_test(function(t) { mpath.setAttributeNS(XLINKNS, 'xlink:href', '#MyPath2'); assert_equals(mpath.href.baseVal, '#MyPath1'); - return waitEvent(animateMotion, 'begin').then(function() { + return waitEvent(animateMotion, 'beginEvent').then(function() { svg.pauseAnimations(); svg.setCurrentTime(1); var ctm = rect.getCTM(); @@ -53,7 +53,7 @@ promise_test(function(t) { mpath.setAttribute('href', '#MyPath1'); mpath.setAttributeNS(XLINKNS, 'xlink:href', '#MyPath2'); - return waitEvent(animateMotion, 'begin').then(function() { + return waitEvent(animateMotion, 'beginEvent').then(function() { svg.pauseAnimations(); svg.setCurrentTime(5); var ctm = rect.getCTM(); @@ -83,7 +83,7 @@ promise_test(function(t) { mpath.setAttribute('href', '#MyPath1'); mpath.setAttributeNS(XLINKNS, 'xlink:href', '#MyPath2'); - return waitEvent(animateMotion, 'begin').then(function() { + return waitEvent(animateMotion, 'beginEvent').then(function() { svg.pauseAnimations(); svg.setCurrentTime(5); var ctm = rect.getCTM(); diff --git a/tests/wpt/tests/tools/ci/requirements_build.txt b/tests/wpt/tests/tools/ci/requirements_build.txt index 2b7e1808552..e0443762c3c 100644 --- a/tests/wpt/tests/tools/ci/requirements_build.txt +++ b/tests/wpt/tests/tools/ci/requirements_build.txt @@ -1,4 +1,4 @@ -cairocffi==1.5.1 +cairocffi==1.6.1 fonttools==4.39.4 genshi==0.7.7 jinja2==3.1.2 diff --git a/tests/wpt/tests/tools/ci/requirements_tc.txt b/tests/wpt/tests/tools/ci/requirements_tc.txt index e577a83fe39..bb9b3f7232d 100644 --- a/tests/wpt/tests/tools/ci/requirements_tc.txt +++ b/tests/wpt/tests/tools/ci/requirements_tc.txt @@ -1,4 +1,4 @@ -pygithub==1.58.2 +pygithub==1.59.1 pyyaml==6.0.1 requests==2.31.0 taskcluster==54.4.1 diff --git a/tests/wpt/tests/tools/localpaths.py b/tests/wpt/tests/tools/localpaths.py index e8095ac69d5..5a2d0be00de 100644 --- a/tests/wpt/tests/tools/localpaths.py +++ b/tests/wpt/tests/tools/localpaths.py @@ -9,7 +9,6 @@ sys.path.insert(0, os.path.join(here, "wptserve")) sys.path.insert(0, os.path.join(here, "third_party", "pywebsocket3")) sys.path.insert(0, os.path.join(here, "third_party", "atomicwrites")) sys.path.insert(0, os.path.join(here, "third_party", "attrs", "src")) -sys.path.insert(0, os.path.join(here, "third_party", "funcsigs")) sys.path.insert(0, os.path.join(here, "third_party", "html5lib")) sys.path.insert(0, os.path.join(here, "third_party", "zipp")) sys.path.insert(0, os.path.join(here, "third_party", "more-itertools")) diff --git a/tests/wpt/tests/tools/requirements_flake8.txt b/tests/wpt/tests/tools/requirements_flake8.txt index 949ae954845..fc1f92a69f7 100644 --- a/tests/wpt/tests/tools/requirements_flake8.txt +++ b/tests/wpt/tests/tools/requirements_flake8.txt @@ -1,7 +1,7 @@ flake8==5.0.4; python_version < '3.9' pycodestyle==2.9.1; python_version < '3.8' pyflakes==2.5.0; python_version < '3.8' -flake8==6.0.0; python_version >= '3.9' -pycodestyle==2.10.0; python_version >= '3.9' -pyflakes==3.0.1; python_version >= '3.9' +flake8==6.1.0; python_version >= '3.9' +pycodestyle==2.11.0; python_version >= '3.9' +pyflakes==3.1.0; python_version >= '3.9' pep8-naming==0.13.3 diff --git a/tests/wpt/tests/tools/requirements_mypy.txt b/tests/wpt/tests/tools/requirements_mypy.txt index 41ab1211b23..45261d0321f 100644 --- a/tests/wpt/tests/tools/requirements_mypy.txt +++ b/tests/wpt/tests/tools/requirements_mypy.txt @@ -2,7 +2,7 @@ mypy==1.4.1 mypy-extensions==1.0.0 toml==0.10.2 tomli==2.0.1 -typed-ast==1.5.4 +typed-ast==1.5.5 types-atomicwrites==1.4.5.1 types-python-dateutil==2.8.19.14 types-PyYAML==6.0.12.11 diff --git a/tests/wpt/tests/tools/requirements_tests.txt b/tests/wpt/tests/tools/requirements_tests.txt index 8225875c8e5..01b56839989 100644 --- a/tests/wpt/tests/tools/requirements_tests.txt +++ b/tests/wpt/tests/tools/requirements_tests.txt @@ -1,5 +1,5 @@ httpx[http2]==0.24.1 -json-e==4.5.2 +json-e==4.5.3 jsonschema==4.17.3 pyyaml==6.0.1 taskcluster==54.4.1 diff --git a/tests/wpt/tests/tools/third_party/funcsigs/.coveragerc b/tests/wpt/tests/tools/third_party/funcsigs/.coveragerc deleted file mode 100644 index d83bfc220b1..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/.coveragerc +++ /dev/null @@ -1,6 +0,0 @@ -[run] -source=funcsigs -omit=funcsigs/odict* - -[report] -include=funcsigs* diff --git a/tests/wpt/tests/tools/third_party/funcsigs/.gitignore b/tests/wpt/tests/tools/third_party/funcsigs/.gitignore deleted file mode 100644 index c8d2af85d3c..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -*~ -*.egg -*.egg-info -*.pyc -*.pyo -*.swp -.DS_Store -.coverage -.tox/ -MANIFEST -build/ -docs/.build/ -dist/ -env*/ -htmlcov/ -tmp/ -coverage.xml -junit.xml -.eggs/ diff --git a/tests/wpt/tests/tools/third_party/funcsigs/.travis.yml b/tests/wpt/tests/tools/third_party/funcsigs/.travis.yml deleted file mode 100644 index c1e7abe0b44..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/.travis.yml +++ /dev/null @@ -1,18 +0,0 @@ -language: python -python: - - 2.6 - - 2.7 - - 3.3 - - 3.4 - - 3.5 - - nightly - - pypy -# - pypy3 -install: - - pip install -U pip setuptools wheel - - pip install -r requirements/development.txt . -script: - - coverage run setup.py test - - coverage report --show-missing -after_success: - - coveralls diff --git a/tests/wpt/tests/tools/third_party/funcsigs/CHANGELOG b/tests/wpt/tests/tools/third_party/funcsigs/CHANGELOG deleted file mode 100644 index e1366d2668d..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/CHANGELOG +++ /dev/null @@ -1,24 +0,0 @@ -Changelog ---------- - -0.5 -``` - -* Fix binding with self as a kwarg. (Robert Collins #14) - -0.4 (2013-12-20) -```````````````` -* Fix unbound methods getting their first parameter curried -* Publish Python wheel packages - -0.3 (2013-05-29) -```````````````` -* Fix annotation formatting of builtin types on Python 2.x - -0.2 (2012-01-07) -```````````````` -* PyPy compatability - -0.1 (2012-01-06) -```````````````` -* Initial release diff --git a/tests/wpt/tests/tools/third_party/funcsigs/LICENSE b/tests/wpt/tests/tools/third_party/funcsigs/LICENSE deleted file mode 100644 index 3e563d6fbd4..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2013 Aaron Iles - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/tests/wpt/tests/tools/third_party/funcsigs/MANIFEST.in b/tests/wpt/tests/tools/third_party/funcsigs/MANIFEST.in deleted file mode 100644 index f0abb42f04a..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/MANIFEST.in +++ /dev/null @@ -1,7 +0,0 @@ -recursive-include docs * -recursive-include tests *.py -include *.py -include CHANGELOG -include LICENSE -include MANIFEST.in -include README.rst diff --git a/tests/wpt/tests/tools/third_party/funcsigs/Makefile b/tests/wpt/tests/tools/third_party/funcsigs/Makefile deleted file mode 100644 index e2329231b56..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -SHELL := /bin/bash - -deps: - pip install --upgrade \ - -r requirements/development.txt \ - -r requirements/production.txt - -sdist: - python setup.py sdist - python setup.py bdist_wheel - -register: - python setup.py register - python setup.py sdist upload - python setup.py bdist_wheel upload - -site: - cd docs; make html - -test: - coverage run setup.py test - -unittest: - coverage run -m unittest discover - -lint: - flake8 --exit-zero funcsigs tests - -coverage: - coverage report --show-missing - -clean: - python setup.py clean --all - find . -type f -name "*.pyc" -exec rm '{}' + - find . -type d -name "__pycache__" -exec rmdir '{}' + - rm -rf *.egg-info .coverage - cd docs; make clean - -docs: site diff --git a/tests/wpt/tests/tools/third_party/funcsigs/README.rst b/tests/wpt/tests/tools/third_party/funcsigs/README.rst deleted file mode 100644 index 5fbca27e6e6..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/README.rst +++ /dev/null @@ -1,353 +0,0 @@ -.. funcsigs documentation master file, created by - sphinx-quickstart on Fri Apr 20 20:27:52 2012. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Introducing funcsigs -==================== - -The Funcsigs Package --------------------- - -``funcsigs`` is a backport of the `PEP 362`_ function signature features from -Python 3.3's `inspect`_ module. The backport is compatible with Python 2.6, 2.7 -as well as 3.3 and up. 3.2 was supported by version 0.4, but with setuptools and -pip no longer supporting 3.2, we cannot make any statement about 3.2 -compatibility. - -Compatibility -````````````` - -The ``funcsigs`` backport has been tested against: - -* CPython 2.6 -* CPython 2.7 -* CPython 3.3 -* CPython 3.4 -* CPython 3.5 -* CPython nightlies -* PyPy and PyPy3(currently failing CI) - -Continuous integration testing is provided by `Travis CI`_. - -Under Python 2.x there is a compatibility issue when a function is assigned to -the ``__wrapped__`` property of a class after it has been constructed. -Similiarily there under PyPy directly passing the ``__call__`` method of a -builtin is also a compatibility issues. Otherwise the functionality is -believed to be uniform between both Python2 and Python3. - -Issues -`````` - -Source code for ``funcsigs`` is hosted on `GitHub`_. Any bug reports or feature -requests can be made using GitHub's `issues system`_. |build_status| |coverage| - -Example -------- - -To obtain a `Signature` object, pass the target function to the -``funcsigs.signature`` function. - -.. code-block:: python - - >>> from funcsigs import signature - >>> def foo(a, b=None, *args, **kwargs): - ... pass - ... - >>> sig = signature(foo) - >>> sig - - >>> sig.parameters - OrderedDict([('a', ), ('b', ), ('args', ), ('kwargs', )]) - >>> sig.return_annotation - - -Introspecting callables with the Signature object -------------------------------------------------- - -.. note:: - - This section of documentation is a direct reproduction of the Python - standard library documentation for the inspect module. - -The Signature object represents the call signature of a callable object and its -return annotation. To retrieve a Signature object, use the :func:`signature` -function. - -.. function:: signature(callable) - - Return a :class:`Signature` object for the given ``callable``:: - - >>> from funcsigs import signature - >>> def foo(a, *, b:int, **kwargs): - ... pass - - >>> sig = signature(foo) - - >>> str(sig) - '(a, *, b:int, **kwargs)' - - >>> str(sig.parameters['b']) - 'b:int' - - >>> sig.parameters['b'].annotation - - - Accepts a wide range of python callables, from plain functions and classes to - :func:`functools.partial` objects. - - .. note:: - - Some callables may not be introspectable in certain implementations of - Python. For example, in CPython, built-in functions defined in C provide - no metadata about their arguments. - - -.. class:: Signature - - A Signature object represents the call signature of a function and its return - annotation. For each parameter accepted by the function it stores a - :class:`Parameter` object in its :attr:`parameters` collection. - - Signature objects are *immutable*. Use :meth:`Signature.replace` to make a - modified copy. - - .. attribute:: Signature.empty - - A special class-level marker to specify absence of a return annotation. - - .. attribute:: Signature.parameters - - An ordered mapping of parameters' names to the corresponding - :class:`Parameter` objects. - - .. attribute:: Signature.return_annotation - - The "return" annotation for the callable. If the callable has no "return" - annotation, this attribute is set to :attr:`Signature.empty`. - - .. method:: Signature.bind(*args, **kwargs) - - Create a mapping from positional and keyword arguments to parameters. - Returns :class:`BoundArguments` if ``*args`` and ``**kwargs`` match the - signature, or raises a :exc:`TypeError`. - - .. method:: Signature.bind_partial(*args, **kwargs) - - Works the same way as :meth:`Signature.bind`, but allows the omission of - some required arguments (mimics :func:`functools.partial` behavior.) - Returns :class:`BoundArguments`, or raises a :exc:`TypeError` if the - passed arguments do not match the signature. - - .. method:: Signature.replace(*[, parameters][, return_annotation]) - - Create a new Signature instance based on the instance replace was invoked - on. It is possible to pass different ``parameters`` and/or - ``return_annotation`` to override the corresponding properties of the base - signature. To remove return_annotation from the copied Signature, pass in - :attr:`Signature.empty`. - - :: - - >>> def test(a, b): - ... pass - >>> sig = signature(test) - >>> new_sig = sig.replace(return_annotation="new return anno") - >>> str(new_sig) - "(a, b) -> 'new return anno'" - - -.. class:: Parameter - - Parameter objects are *immutable*. Instead of modifying a Parameter object, - you can use :meth:`Parameter.replace` to create a modified copy. - - .. attribute:: Parameter.empty - - A special class-level marker to specify absence of default values and - annotations. - - .. attribute:: Parameter.name - - The name of the parameter as a string. Must be a valid python identifier - name (with the exception of ``POSITIONAL_ONLY`` parameters, which can have - it set to ``None``). - - .. attribute:: Parameter.default - - The default value for the parameter. If the parameter has no default - value, this attribute is set to :attr:`Parameter.empty`. - - .. attribute:: Parameter.annotation - - The annotation for the parameter. If the parameter has no annotation, - this attribute is set to :attr:`Parameter.empty`. - - .. attribute:: Parameter.kind - - Describes how argument values are bound to the parameter. Possible values - (accessible via :class:`Parameter`, like ``Parameter.KEYWORD_ONLY``): - - +------------------------+----------------------------------------------+ - | Name | Meaning | - +========================+==============================================+ - | *POSITIONAL_ONLY* | Value must be supplied as a positional | - | | argument. | - | | | - | | Python has no explicit syntax for defining | - | | positional-only parameters, but many built-in| - | | and extension module functions (especially | - | | those that accept only one or two parameters)| - | | accept them. | - +------------------------+----------------------------------------------+ - | *POSITIONAL_OR_KEYWORD*| Value may be supplied as either a keyword or | - | | positional argument (this is the standard | - | | binding behaviour for functions implemented | - | | in Python.) | - +------------------------+----------------------------------------------+ - | *VAR_POSITIONAL* | A tuple of positional arguments that aren't | - | | bound to any other parameter. This | - | | corresponds to a ``*args`` parameter in a | - | | Python function definition. | - +------------------------+----------------------------------------------+ - | *KEYWORD_ONLY* | Value must be supplied as a keyword argument.| - | | Keyword only parameters are those which | - | | appear after a ``*`` or ``*args`` entry in a | - | | Python function definition. | - +------------------------+----------------------------------------------+ - | *VAR_KEYWORD* | A dict of keyword arguments that aren't bound| - | | to any other parameter. This corresponds to a| - | | ``**kwargs`` parameter in a Python function | - | | definition. | - +------------------------+----------------------------------------------+ - - Example: print all keyword-only arguments without default values:: - - >>> def foo(a, b, *, c, d=10): - ... pass - - >>> sig = signature(foo) - >>> for param in sig.parameters.values(): - ... if (param.kind == param.KEYWORD_ONLY and - ... param.default is param.empty): - ... print('Parameter:', param) - Parameter: c - - .. method:: Parameter.replace(*[, name][, kind][, default][, annotation]) - - Create a new Parameter instance based on the instance replaced was invoked - on. To override a :class:`Parameter` attribute, pass the corresponding - argument. To remove a default value or/and an annotation from a - Parameter, pass :attr:`Parameter.empty`. - - :: - - >>> from funcsigs import Parameter - >>> param = Parameter('foo', Parameter.KEYWORD_ONLY, default=42) - >>> str(param) - 'foo=42' - - >>> str(param.replace()) # Will create a shallow copy of 'param' - 'foo=42' - - >>> str(param.replace(default=Parameter.empty, annotation='spam')) - "foo:'spam'" - - -.. class:: BoundArguments - - Result of a :meth:`Signature.bind` or :meth:`Signature.bind_partial` call. - Holds the mapping of arguments to the function's parameters. - - .. attribute:: BoundArguments.arguments - - An ordered, mutable mapping (:class:`collections.OrderedDict`) of - parameters' names to arguments' values. Contains only explicitly bound - arguments. Changes in :attr:`arguments` will reflect in :attr:`args` and - :attr:`kwargs`. - - Should be used in conjunction with :attr:`Signature.parameters` for any - argument processing purposes. - - .. note:: - - Arguments for which :meth:`Signature.bind` or - :meth:`Signature.bind_partial` relied on a default value are skipped. - However, if needed, it is easy to include them. - - :: - - >>> def foo(a, b=10): - ... pass - - >>> sig = signature(foo) - >>> ba = sig.bind(5) - - >>> ba.args, ba.kwargs - ((5,), {}) - - >>> for param in sig.parameters.values(): - ... if param.name not in ba.arguments: - ... ba.arguments[param.name] = param.default - - >>> ba.args, ba.kwargs - ((5, 10), {}) - - - .. attribute:: BoundArguments.args - - A tuple of positional arguments values. Dynamically computed from the - :attr:`arguments` attribute. - - .. attribute:: BoundArguments.kwargs - - A dict of keyword arguments values. Dynamically computed from the - :attr:`arguments` attribute. - - The :attr:`args` and :attr:`kwargs` properties can be used to invoke - functions:: - - def test(a, *, b): - ... - - sig = signature(test) - ba = sig.bind(10, b=20) - test(*ba.args, **ba.kwargs) - - -.. seealso:: - - :pep:`362` - Function Signature Object. - The detailed specification, implementation details and examples. - -Copyright ---------- - -*funcsigs* is a derived work of CPython under the terms of the `PSF License -Agreement`_. The original CPython inspect module, its unit tests and -documentation are the copyright of the Python Software Foundation. The derived -work is distributed under the `Apache License Version 2.0`_. - -.. _PSF License Agreement: http://docs.python.org/3/license.html#terms-and-conditions-for-accessing-or-otherwise-using-python -.. _Apache License Version 2.0: http://opensource.org/licenses/Apache-2.0 -.. _GitHub: https://github.com/testing-cabal/funcsigs -.. _PSF License Agreement: http://docs.python.org/3/license.html#terms-and-conditions-for-accessing-or-otherwise-using-python -.. _Travis CI: http://travis-ci.org/ -.. _Read The Docs: http://funcsigs.readthedocs.org/ -.. _PEP 362: http://www.python.org/dev/peps/pep-0362/ -.. _inspect: http://docs.python.org/3/library/inspect.html#introspecting-callables-with-the-signature-object -.. _issues system: https://github.com/testing-cabal/funcsigs/issues - -.. |build_status| image:: https://secure.travis-ci.org/aliles/funcsigs.png?branch=master - :target: http://travis-ci.org/#!/aliles/funcsigs - :alt: Current build status - -.. |coverage| image:: https://coveralls.io/repos/aliles/funcsigs/badge.png?branch=master - :target: https://coveralls.io/r/aliles/funcsigs?branch=master - :alt: Coverage status - -.. |pypi_version| image:: https://pypip.in/v/funcsigs/badge.png - :target: https://crate.io/packages/funcsigs/ - :alt: Latest PyPI version - - diff --git a/tests/wpt/tests/tools/third_party/funcsigs/docs/Makefile b/tests/wpt/tests/tools/third_party/funcsigs/docs/Makefile deleted file mode 100644 index f7ab3d16b40..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/docs/Makefile +++ /dev/null @@ -1,153 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = _build - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - -rm -rf $(BUILDDIR) - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/funcsigs.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/funcsigs.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/funcsigs" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/funcsigs" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." diff --git a/tests/wpt/tests/tools/third_party/funcsigs/docs/_templates/page.html b/tests/wpt/tests/tools/third_party/funcsigs/docs/_templates/page.html deleted file mode 100644 index 5e1e00bcafa..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/docs/_templates/page.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "!page.html" %} -{% block extrahead %} - - Fork me on GitHub - - {{ super() }} -{% endblock %} diff --git a/tests/wpt/tests/tools/third_party/funcsigs/docs/conf.py b/tests/wpt/tests/tools/third_party/funcsigs/docs/conf.py deleted file mode 100644 index c6e4194cc05..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/docs/conf.py +++ /dev/null @@ -1,251 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# funcsigs documentation build configuration file, created by -# sphinx-quickstart on Fri Apr 20 20:27:52 2012. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath('..')) - -# -- General configuration ----------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.viewcode'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = 'funcsigs' -copyright = '2013, Aaron Iles' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -from funcsigs import __version__ -version = '.'.join(__version__.split('.')[:2]) -# The full version, including alpha/beta/rc tags. -release = __version__ - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = ['_build'] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'agogo' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = [] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'funcsigsdoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'funcsigs.tex', 'funcsigs Documentation', - 'Aaron Iles', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'funcsigs', 'funcsigs Documentation', - ['Aaron Iles'], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------------ - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'funcsigs', 'funcsigs Documentation', - 'Aaron Iles', 'funcsigs', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - - -# Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = { - 'python3': ('http://docs.python.org/py3k', None), - 'python': ('http://docs.python.org/', None) -} diff --git a/tests/wpt/tests/tools/third_party/funcsigs/docs/index.rst b/tests/wpt/tests/tools/third_party/funcsigs/docs/index.rst deleted file mode 100644 index 5fbca27e6e6..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/docs/index.rst +++ /dev/null @@ -1,353 +0,0 @@ -.. funcsigs documentation master file, created by - sphinx-quickstart on Fri Apr 20 20:27:52 2012. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Introducing funcsigs -==================== - -The Funcsigs Package --------------------- - -``funcsigs`` is a backport of the `PEP 362`_ function signature features from -Python 3.3's `inspect`_ module. The backport is compatible with Python 2.6, 2.7 -as well as 3.3 and up. 3.2 was supported by version 0.4, but with setuptools and -pip no longer supporting 3.2, we cannot make any statement about 3.2 -compatibility. - -Compatibility -````````````` - -The ``funcsigs`` backport has been tested against: - -* CPython 2.6 -* CPython 2.7 -* CPython 3.3 -* CPython 3.4 -* CPython 3.5 -* CPython nightlies -* PyPy and PyPy3(currently failing CI) - -Continuous integration testing is provided by `Travis CI`_. - -Under Python 2.x there is a compatibility issue when a function is assigned to -the ``__wrapped__`` property of a class after it has been constructed. -Similiarily there under PyPy directly passing the ``__call__`` method of a -builtin is also a compatibility issues. Otherwise the functionality is -believed to be uniform between both Python2 and Python3. - -Issues -`````` - -Source code for ``funcsigs`` is hosted on `GitHub`_. Any bug reports or feature -requests can be made using GitHub's `issues system`_. |build_status| |coverage| - -Example -------- - -To obtain a `Signature` object, pass the target function to the -``funcsigs.signature`` function. - -.. code-block:: python - - >>> from funcsigs import signature - >>> def foo(a, b=None, *args, **kwargs): - ... pass - ... - >>> sig = signature(foo) - >>> sig - - >>> sig.parameters - OrderedDict([('a', ), ('b', ), ('args', ), ('kwargs', )]) - >>> sig.return_annotation - - -Introspecting callables with the Signature object -------------------------------------------------- - -.. note:: - - This section of documentation is a direct reproduction of the Python - standard library documentation for the inspect module. - -The Signature object represents the call signature of a callable object and its -return annotation. To retrieve a Signature object, use the :func:`signature` -function. - -.. function:: signature(callable) - - Return a :class:`Signature` object for the given ``callable``:: - - >>> from funcsigs import signature - >>> def foo(a, *, b:int, **kwargs): - ... pass - - >>> sig = signature(foo) - - >>> str(sig) - '(a, *, b:int, **kwargs)' - - >>> str(sig.parameters['b']) - 'b:int' - - >>> sig.parameters['b'].annotation - - - Accepts a wide range of python callables, from plain functions and classes to - :func:`functools.partial` objects. - - .. note:: - - Some callables may not be introspectable in certain implementations of - Python. For example, in CPython, built-in functions defined in C provide - no metadata about their arguments. - - -.. class:: Signature - - A Signature object represents the call signature of a function and its return - annotation. For each parameter accepted by the function it stores a - :class:`Parameter` object in its :attr:`parameters` collection. - - Signature objects are *immutable*. Use :meth:`Signature.replace` to make a - modified copy. - - .. attribute:: Signature.empty - - A special class-level marker to specify absence of a return annotation. - - .. attribute:: Signature.parameters - - An ordered mapping of parameters' names to the corresponding - :class:`Parameter` objects. - - .. attribute:: Signature.return_annotation - - The "return" annotation for the callable. If the callable has no "return" - annotation, this attribute is set to :attr:`Signature.empty`. - - .. method:: Signature.bind(*args, **kwargs) - - Create a mapping from positional and keyword arguments to parameters. - Returns :class:`BoundArguments` if ``*args`` and ``**kwargs`` match the - signature, or raises a :exc:`TypeError`. - - .. method:: Signature.bind_partial(*args, **kwargs) - - Works the same way as :meth:`Signature.bind`, but allows the omission of - some required arguments (mimics :func:`functools.partial` behavior.) - Returns :class:`BoundArguments`, or raises a :exc:`TypeError` if the - passed arguments do not match the signature. - - .. method:: Signature.replace(*[, parameters][, return_annotation]) - - Create a new Signature instance based on the instance replace was invoked - on. It is possible to pass different ``parameters`` and/or - ``return_annotation`` to override the corresponding properties of the base - signature. To remove return_annotation from the copied Signature, pass in - :attr:`Signature.empty`. - - :: - - >>> def test(a, b): - ... pass - >>> sig = signature(test) - >>> new_sig = sig.replace(return_annotation="new return anno") - >>> str(new_sig) - "(a, b) -> 'new return anno'" - - -.. class:: Parameter - - Parameter objects are *immutable*. Instead of modifying a Parameter object, - you can use :meth:`Parameter.replace` to create a modified copy. - - .. attribute:: Parameter.empty - - A special class-level marker to specify absence of default values and - annotations. - - .. attribute:: Parameter.name - - The name of the parameter as a string. Must be a valid python identifier - name (with the exception of ``POSITIONAL_ONLY`` parameters, which can have - it set to ``None``). - - .. attribute:: Parameter.default - - The default value for the parameter. If the parameter has no default - value, this attribute is set to :attr:`Parameter.empty`. - - .. attribute:: Parameter.annotation - - The annotation for the parameter. If the parameter has no annotation, - this attribute is set to :attr:`Parameter.empty`. - - .. attribute:: Parameter.kind - - Describes how argument values are bound to the parameter. Possible values - (accessible via :class:`Parameter`, like ``Parameter.KEYWORD_ONLY``): - - +------------------------+----------------------------------------------+ - | Name | Meaning | - +========================+==============================================+ - | *POSITIONAL_ONLY* | Value must be supplied as a positional | - | | argument. | - | | | - | | Python has no explicit syntax for defining | - | | positional-only parameters, but many built-in| - | | and extension module functions (especially | - | | those that accept only one or two parameters)| - | | accept them. | - +------------------------+----------------------------------------------+ - | *POSITIONAL_OR_KEYWORD*| Value may be supplied as either a keyword or | - | | positional argument (this is the standard | - | | binding behaviour for functions implemented | - | | in Python.) | - +------------------------+----------------------------------------------+ - | *VAR_POSITIONAL* | A tuple of positional arguments that aren't | - | | bound to any other parameter. This | - | | corresponds to a ``*args`` parameter in a | - | | Python function definition. | - +------------------------+----------------------------------------------+ - | *KEYWORD_ONLY* | Value must be supplied as a keyword argument.| - | | Keyword only parameters are those which | - | | appear after a ``*`` or ``*args`` entry in a | - | | Python function definition. | - +------------------------+----------------------------------------------+ - | *VAR_KEYWORD* | A dict of keyword arguments that aren't bound| - | | to any other parameter. This corresponds to a| - | | ``**kwargs`` parameter in a Python function | - | | definition. | - +------------------------+----------------------------------------------+ - - Example: print all keyword-only arguments without default values:: - - >>> def foo(a, b, *, c, d=10): - ... pass - - >>> sig = signature(foo) - >>> for param in sig.parameters.values(): - ... if (param.kind == param.KEYWORD_ONLY and - ... param.default is param.empty): - ... print('Parameter:', param) - Parameter: c - - .. method:: Parameter.replace(*[, name][, kind][, default][, annotation]) - - Create a new Parameter instance based on the instance replaced was invoked - on. To override a :class:`Parameter` attribute, pass the corresponding - argument. To remove a default value or/and an annotation from a - Parameter, pass :attr:`Parameter.empty`. - - :: - - >>> from funcsigs import Parameter - >>> param = Parameter('foo', Parameter.KEYWORD_ONLY, default=42) - >>> str(param) - 'foo=42' - - >>> str(param.replace()) # Will create a shallow copy of 'param' - 'foo=42' - - >>> str(param.replace(default=Parameter.empty, annotation='spam')) - "foo:'spam'" - - -.. class:: BoundArguments - - Result of a :meth:`Signature.bind` or :meth:`Signature.bind_partial` call. - Holds the mapping of arguments to the function's parameters. - - .. attribute:: BoundArguments.arguments - - An ordered, mutable mapping (:class:`collections.OrderedDict`) of - parameters' names to arguments' values. Contains only explicitly bound - arguments. Changes in :attr:`arguments` will reflect in :attr:`args` and - :attr:`kwargs`. - - Should be used in conjunction with :attr:`Signature.parameters` for any - argument processing purposes. - - .. note:: - - Arguments for which :meth:`Signature.bind` or - :meth:`Signature.bind_partial` relied on a default value are skipped. - However, if needed, it is easy to include them. - - :: - - >>> def foo(a, b=10): - ... pass - - >>> sig = signature(foo) - >>> ba = sig.bind(5) - - >>> ba.args, ba.kwargs - ((5,), {}) - - >>> for param in sig.parameters.values(): - ... if param.name not in ba.arguments: - ... ba.arguments[param.name] = param.default - - >>> ba.args, ba.kwargs - ((5, 10), {}) - - - .. attribute:: BoundArguments.args - - A tuple of positional arguments values. Dynamically computed from the - :attr:`arguments` attribute. - - .. attribute:: BoundArguments.kwargs - - A dict of keyword arguments values. Dynamically computed from the - :attr:`arguments` attribute. - - The :attr:`args` and :attr:`kwargs` properties can be used to invoke - functions:: - - def test(a, *, b): - ... - - sig = signature(test) - ba = sig.bind(10, b=20) - test(*ba.args, **ba.kwargs) - - -.. seealso:: - - :pep:`362` - Function Signature Object. - The detailed specification, implementation details and examples. - -Copyright ---------- - -*funcsigs* is a derived work of CPython under the terms of the `PSF License -Agreement`_. The original CPython inspect module, its unit tests and -documentation are the copyright of the Python Software Foundation. The derived -work is distributed under the `Apache License Version 2.0`_. - -.. _PSF License Agreement: http://docs.python.org/3/license.html#terms-and-conditions-for-accessing-or-otherwise-using-python -.. _Apache License Version 2.0: http://opensource.org/licenses/Apache-2.0 -.. _GitHub: https://github.com/testing-cabal/funcsigs -.. _PSF License Agreement: http://docs.python.org/3/license.html#terms-and-conditions-for-accessing-or-otherwise-using-python -.. _Travis CI: http://travis-ci.org/ -.. _Read The Docs: http://funcsigs.readthedocs.org/ -.. _PEP 362: http://www.python.org/dev/peps/pep-0362/ -.. _inspect: http://docs.python.org/3/library/inspect.html#introspecting-callables-with-the-signature-object -.. _issues system: https://github.com/testing-cabal/funcsigs/issues - -.. |build_status| image:: https://secure.travis-ci.org/aliles/funcsigs.png?branch=master - :target: http://travis-ci.org/#!/aliles/funcsigs - :alt: Current build status - -.. |coverage| image:: https://coveralls.io/repos/aliles/funcsigs/badge.png?branch=master - :target: https://coveralls.io/r/aliles/funcsigs?branch=master - :alt: Coverage status - -.. |pypi_version| image:: https://pypip.in/v/funcsigs/badge.png - :target: https://crate.io/packages/funcsigs/ - :alt: Latest PyPI version - - diff --git a/tests/wpt/tests/tools/third_party/funcsigs/funcsigs/__init__.py b/tests/wpt/tests/tools/third_party/funcsigs/funcsigs/__init__.py deleted file mode 100644 index 5f5378b42a6..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/funcsigs/__init__.py +++ /dev/null @@ -1,829 +0,0 @@ -# Copyright 2001-2013 Python Software Foundation; All Rights Reserved -"""Function signature objects for callables - -Back port of Python 3.3's function signature tools from the inspect module, -modified to be compatible with Python 2.6, 2.7 and 3.3+. -""" -from __future__ import absolute_import, division, print_function -import itertools -import functools -import re -import types - -try: - from collections import OrderedDict -except ImportError: - from ordereddict import OrderedDict - -from funcsigs.version import __version__ - -__all__ = ['BoundArguments', 'Parameter', 'Signature', 'signature'] - - -_WrapperDescriptor = type(type.__call__) -_MethodWrapper = type(all.__call__) - -_NonUserDefinedCallables = (_WrapperDescriptor, - _MethodWrapper, - types.BuiltinFunctionType) - - -def formatannotation(annotation, base_module=None): - if isinstance(annotation, type): - if annotation.__module__ in ('builtins', '__builtin__', base_module): - return annotation.__name__ - return annotation.__module__+'.'+annotation.__name__ - return repr(annotation) - - -def _get_user_defined_method(cls, method_name, *nested): - try: - if cls is type: - return - meth = getattr(cls, method_name) - for name in nested: - meth = getattr(meth, name, meth) - except AttributeError: - return - else: - if not isinstance(meth, _NonUserDefinedCallables): - # Once '__signature__' will be added to 'C'-level - # callables, this check won't be necessary - return meth - - -def signature(obj): - '''Get a signature object for the passed callable.''' - - if not callable(obj): - raise TypeError('{0!r} is not a callable object'.format(obj)) - - if isinstance(obj, types.MethodType): - sig = signature(obj.__func__) - if obj.__self__ is None: - # Unbound method - preserve as-is. - return sig - else: - # Bound method. Eat self - if we can. - params = tuple(sig.parameters.values()) - - if not params or params[0].kind in (_VAR_KEYWORD, _KEYWORD_ONLY): - raise ValueError('invalid method signature') - - kind = params[0].kind - if kind in (_POSITIONAL_OR_KEYWORD, _POSITIONAL_ONLY): - # Drop first parameter: - # '(p1, p2[, ...])' -> '(p2[, ...])' - params = params[1:] - else: - if kind is not _VAR_POSITIONAL: - # Unless we add a new parameter type we never - # get here - raise ValueError('invalid argument type') - # It's a var-positional parameter. - # Do nothing. '(*args[, ...])' -> '(*args[, ...])' - - return sig.replace(parameters=params) - - try: - sig = obj.__signature__ - except AttributeError: - pass - else: - if sig is not None: - return sig - - try: - # Was this function wrapped by a decorator? - wrapped = obj.__wrapped__ - except AttributeError: - pass - else: - return signature(wrapped) - - if isinstance(obj, types.FunctionType): - return Signature.from_function(obj) - - if isinstance(obj, functools.partial): - sig = signature(obj.func) - - new_params = OrderedDict(sig.parameters.items()) - - partial_args = obj.args or () - partial_keywords = obj.keywords or {} - try: - ba = sig.bind_partial(*partial_args, **partial_keywords) - except TypeError as ex: - msg = 'partial object {0!r} has incorrect arguments'.format(obj) - raise ValueError(msg) - - for arg_name, arg_value in ba.arguments.items(): - param = new_params[arg_name] - if arg_name in partial_keywords: - # We set a new default value, because the following code - # is correct: - # - # >>> def foo(a): print(a) - # >>> print(partial(partial(foo, a=10), a=20)()) - # 20 - # >>> print(partial(partial(foo, a=10), a=20)(a=30)) - # 30 - # - # So, with 'partial' objects, passing a keyword argument is - # like setting a new default value for the corresponding - # parameter - # - # We also mark this parameter with '_partial_kwarg' - # flag. Later, in '_bind', the 'default' value of this - # parameter will be added to 'kwargs', to simulate - # the 'functools.partial' real call. - new_params[arg_name] = param.replace(default=arg_value, - _partial_kwarg=True) - - elif (param.kind not in (_VAR_KEYWORD, _VAR_POSITIONAL) and - not param._partial_kwarg): - new_params.pop(arg_name) - - return sig.replace(parameters=new_params.values()) - - sig = None - if isinstance(obj, type): - # obj is a class or a metaclass - - # First, let's see if it has an overloaded __call__ defined - # in its metaclass - call = _get_user_defined_method(type(obj), '__call__') - if call is not None: - sig = signature(call) - else: - # Now we check if the 'obj' class has a '__new__' method - new = _get_user_defined_method(obj, '__new__') - if new is not None: - sig = signature(new) - else: - # Finally, we should have at least __init__ implemented - init = _get_user_defined_method(obj, '__init__') - if init is not None: - sig = signature(init) - elif not isinstance(obj, _NonUserDefinedCallables): - # An object with __call__ - # We also check that the 'obj' is not an instance of - # _WrapperDescriptor or _MethodWrapper to avoid - # infinite recursion (and even potential segfault) - call = _get_user_defined_method(type(obj), '__call__', 'im_func') - if call is not None: - sig = signature(call) - - if sig is not None: - # For classes and objects we skip the first parameter of their - # __call__, __new__, or __init__ methods - return sig.replace(parameters=tuple(sig.parameters.values())[1:]) - - if isinstance(obj, types.BuiltinFunctionType): - # Raise a nicer error message for builtins - msg = 'no signature found for builtin function {0!r}'.format(obj) - raise ValueError(msg) - - raise ValueError('callable {0!r} is not supported by signature'.format(obj)) - - -class _void(object): - '''A private marker - used in Parameter & Signature''' - - -class _empty(object): - pass - - -class _ParameterKind(int): - def __new__(self, *args, **kwargs): - obj = int.__new__(self, *args) - obj._name = kwargs['name'] - return obj - - def __str__(self): - return self._name - - def __repr__(self): - return '<_ParameterKind: {0!r}>'.format(self._name) - - -_POSITIONAL_ONLY = _ParameterKind(0, name='POSITIONAL_ONLY') -_POSITIONAL_OR_KEYWORD = _ParameterKind(1, name='POSITIONAL_OR_KEYWORD') -_VAR_POSITIONAL = _ParameterKind(2, name='VAR_POSITIONAL') -_KEYWORD_ONLY = _ParameterKind(3, name='KEYWORD_ONLY') -_VAR_KEYWORD = _ParameterKind(4, name='VAR_KEYWORD') - - -class Parameter(object): - '''Represents a parameter in a function signature. - - Has the following public attributes: - - * name : str - The name of the parameter as a string. - * default : object - The default value for the parameter if specified. If the - parameter has no default value, this attribute is not set. - * annotation - The annotation for the parameter if specified. If the - parameter has no annotation, this attribute is not set. - * kind : str - Describes how argument values are bound to the parameter. - Possible values: `Parameter.POSITIONAL_ONLY`, - `Parameter.POSITIONAL_OR_KEYWORD`, `Parameter.VAR_POSITIONAL`, - `Parameter.KEYWORD_ONLY`, `Parameter.VAR_KEYWORD`. - ''' - - __slots__ = ('_name', '_kind', '_default', '_annotation', '_partial_kwarg') - - POSITIONAL_ONLY = _POSITIONAL_ONLY - POSITIONAL_OR_KEYWORD = _POSITIONAL_OR_KEYWORD - VAR_POSITIONAL = _VAR_POSITIONAL - KEYWORD_ONLY = _KEYWORD_ONLY - VAR_KEYWORD = _VAR_KEYWORD - - empty = _empty - - def __init__(self, name, kind, default=_empty, annotation=_empty, - _partial_kwarg=False): - - if kind not in (_POSITIONAL_ONLY, _POSITIONAL_OR_KEYWORD, - _VAR_POSITIONAL, _KEYWORD_ONLY, _VAR_KEYWORD): - raise ValueError("invalid value for 'Parameter.kind' attribute") - self._kind = kind - - if default is not _empty: - if kind in (_VAR_POSITIONAL, _VAR_KEYWORD): - msg = '{0} parameters cannot have default values'.format(kind) - raise ValueError(msg) - self._default = default - self._annotation = annotation - - if name is None: - if kind != _POSITIONAL_ONLY: - raise ValueError("None is not a valid name for a " - "non-positional-only parameter") - self._name = name - else: - name = str(name) - if kind != _POSITIONAL_ONLY and not re.match(r'[a-z_]\w*$', name, re.I): - msg = '{0!r} is not a valid parameter name'.format(name) - raise ValueError(msg) - self._name = name - - self._partial_kwarg = _partial_kwarg - - @property - def name(self): - return self._name - - @property - def default(self): - return self._default - - @property - def annotation(self): - return self._annotation - - @property - def kind(self): - return self._kind - - def replace(self, name=_void, kind=_void, annotation=_void, - default=_void, _partial_kwarg=_void): - '''Creates a customized copy of the Parameter.''' - - if name is _void: - name = self._name - - if kind is _void: - kind = self._kind - - if annotation is _void: - annotation = self._annotation - - if default is _void: - default = self._default - - if _partial_kwarg is _void: - _partial_kwarg = self._partial_kwarg - - return type(self)(name, kind, default=default, annotation=annotation, - _partial_kwarg=_partial_kwarg) - - def __str__(self): - kind = self.kind - - formatted = self._name - if kind == _POSITIONAL_ONLY: - if formatted is None: - formatted = '' - formatted = '<{0}>'.format(formatted) - - # Add annotation and default value - if self._annotation is not _empty: - formatted = '{0}:{1}'.format(formatted, - formatannotation(self._annotation)) - - if self._default is not _empty: - formatted = '{0}={1}'.format(formatted, repr(self._default)) - - if kind == _VAR_POSITIONAL: - formatted = '*' + formatted - elif kind == _VAR_KEYWORD: - formatted = '**' + formatted - - return formatted - - def __repr__(self): - return '<{0} at {1:#x} {2!r}>'.format(self.__class__.__name__, - id(self), self.name) - - def __hash__(self): - msg = "unhashable type: '{0}'".format(self.__class__.__name__) - raise TypeError(msg) - - def __eq__(self, other): - return (issubclass(other.__class__, Parameter) and - self._name == other._name and - self._kind == other._kind and - self._default == other._default and - self._annotation == other._annotation) - - def __ne__(self, other): - return not self.__eq__(other) - - -class BoundArguments(object): - '''Result of `Signature.bind` call. Holds the mapping of arguments - to the function's parameters. - - Has the following public attributes: - - * arguments : OrderedDict - An ordered mutable mapping of parameters' names to arguments' values. - Does not contain arguments' default values. - * signature : Signature - The Signature object that created this instance. - * args : tuple - Tuple of positional arguments values. - * kwargs : dict - Dict of keyword arguments values. - ''' - - def __init__(self, signature, arguments): - self.arguments = arguments - self._signature = signature - - @property - def signature(self): - return self._signature - - @property - def args(self): - args = [] - for param_name, param in self._signature.parameters.items(): - if (param.kind in (_VAR_KEYWORD, _KEYWORD_ONLY) or - param._partial_kwarg): - # Keyword arguments mapped by 'functools.partial' - # (Parameter._partial_kwarg is True) are mapped - # in 'BoundArguments.kwargs', along with VAR_KEYWORD & - # KEYWORD_ONLY - break - - try: - arg = self.arguments[param_name] - except KeyError: - # We're done here. Other arguments - # will be mapped in 'BoundArguments.kwargs' - break - else: - if param.kind == _VAR_POSITIONAL: - # *args - args.extend(arg) - else: - # plain argument - args.append(arg) - - return tuple(args) - - @property - def kwargs(self): - kwargs = {} - kwargs_started = False - for param_name, param in self._signature.parameters.items(): - if not kwargs_started: - if (param.kind in (_VAR_KEYWORD, _KEYWORD_ONLY) or - param._partial_kwarg): - kwargs_started = True - else: - if param_name not in self.arguments: - kwargs_started = True - continue - - if not kwargs_started: - continue - - try: - arg = self.arguments[param_name] - except KeyError: - pass - else: - if param.kind == _VAR_KEYWORD: - # **kwargs - kwargs.update(arg) - else: - # plain keyword argument - kwargs[param_name] = arg - - return kwargs - - def __hash__(self): - msg = "unhashable type: '{0}'".format(self.__class__.__name__) - raise TypeError(msg) - - def __eq__(self, other): - return (issubclass(other.__class__, BoundArguments) and - self.signature == other.signature and - self.arguments == other.arguments) - - def __ne__(self, other): - return not self.__eq__(other) - - -class Signature(object): - '''A Signature object represents the overall signature of a function. - It stores a Parameter object for each parameter accepted by the - function, as well as information specific to the function itself. - - A Signature object has the following public attributes and methods: - - * parameters : OrderedDict - An ordered mapping of parameters' names to the corresponding - Parameter objects (keyword-only arguments are in the same order - as listed in `code.co_varnames`). - * return_annotation : object - The annotation for the return type of the function if specified. - If the function has no annotation for its return type, this - attribute is not set. - * bind(*args, **kwargs) -> BoundArguments - Creates a mapping from positional and keyword arguments to - parameters. - * bind_partial(*args, **kwargs) -> BoundArguments - Creates a partial mapping from positional and keyword arguments - to parameters (simulating 'functools.partial' behavior.) - ''' - - __slots__ = ('_return_annotation', '_parameters') - - _parameter_cls = Parameter - _bound_arguments_cls = BoundArguments - - empty = _empty - - def __init__(self, parameters=None, return_annotation=_empty, - __validate_parameters__=True): - '''Constructs Signature from the given list of Parameter - objects and 'return_annotation'. All arguments are optional. - ''' - - if parameters is None: - params = OrderedDict() - else: - if __validate_parameters__: - params = OrderedDict() - top_kind = _POSITIONAL_ONLY - - for idx, param in enumerate(parameters): - kind = param.kind - if kind < top_kind: - msg = 'wrong parameter order: {0} before {1}' - msg = msg.format(top_kind, param.kind) - raise ValueError(msg) - else: - top_kind = kind - - name = param.name - if name is None: - name = str(idx) - param = param.replace(name=name) - - if name in params: - msg = 'duplicate parameter name: {0!r}'.format(name) - raise ValueError(msg) - params[name] = param - else: - params = OrderedDict(((param.name, param) - for param in parameters)) - - self._parameters = params - self._return_annotation = return_annotation - - @classmethod - def from_function(cls, func): - '''Constructs Signature for the given python function''' - - if not isinstance(func, types.FunctionType): - raise TypeError('{0!r} is not a Python function'.format(func)) - - Parameter = cls._parameter_cls - - # Parameter information. - func_code = func.__code__ - pos_count = func_code.co_argcount - arg_names = func_code.co_varnames - positional = tuple(arg_names[:pos_count]) - keyword_only_count = getattr(func_code, 'co_kwonlyargcount', 0) - keyword_only = arg_names[pos_count:(pos_count + keyword_only_count)] - annotations = getattr(func, '__annotations__', {}) - defaults = func.__defaults__ - kwdefaults = getattr(func, '__kwdefaults__', None) - - if defaults: - pos_default_count = len(defaults) - else: - pos_default_count = 0 - - parameters = [] - - # Non-keyword-only parameters w/o defaults. - non_default_count = pos_count - pos_default_count - for name in positional[:non_default_count]: - annotation = annotations.get(name, _empty) - parameters.append(Parameter(name, annotation=annotation, - kind=_POSITIONAL_OR_KEYWORD)) - - # ... w/ defaults. - for offset, name in enumerate(positional[non_default_count:]): - annotation = annotations.get(name, _empty) - parameters.append(Parameter(name, annotation=annotation, - kind=_POSITIONAL_OR_KEYWORD, - default=defaults[offset])) - - # *args - if func_code.co_flags & 0x04: - name = arg_names[pos_count + keyword_only_count] - annotation = annotations.get(name, _empty) - parameters.append(Parameter(name, annotation=annotation, - kind=_VAR_POSITIONAL)) - - # Keyword-only parameters. - for name in keyword_only: - default = _empty - if kwdefaults is not None: - default = kwdefaults.get(name, _empty) - - annotation = annotations.get(name, _empty) - parameters.append(Parameter(name, annotation=annotation, - kind=_KEYWORD_ONLY, - default=default)) - # **kwargs - if func_code.co_flags & 0x08: - index = pos_count + keyword_only_count - if func_code.co_flags & 0x04: - index += 1 - - name = arg_names[index] - annotation = annotations.get(name, _empty) - parameters.append(Parameter(name, annotation=annotation, - kind=_VAR_KEYWORD)) - - return cls(parameters, - return_annotation=annotations.get('return', _empty), - __validate_parameters__=False) - - @property - def parameters(self): - try: - return types.MappingProxyType(self._parameters) - except AttributeError: - return OrderedDict(self._parameters.items()) - - @property - def return_annotation(self): - return self._return_annotation - - def replace(self, parameters=_void, return_annotation=_void): - '''Creates a customized copy of the Signature. - Pass 'parameters' and/or 'return_annotation' arguments - to override them in the new copy. - ''' - - if parameters is _void: - parameters = self.parameters.values() - - if return_annotation is _void: - return_annotation = self._return_annotation - - return type(self)(parameters, - return_annotation=return_annotation) - - def __hash__(self): - msg = "unhashable type: '{0}'".format(self.__class__.__name__) - raise TypeError(msg) - - def __eq__(self, other): - if (not issubclass(type(other), Signature) or - self.return_annotation != other.return_annotation or - len(self.parameters) != len(other.parameters)): - return False - - other_positions = dict((param, idx) - for idx, param in enumerate(other.parameters.keys())) - - for idx, (param_name, param) in enumerate(self.parameters.items()): - if param.kind == _KEYWORD_ONLY: - try: - other_param = other.parameters[param_name] - except KeyError: - return False - else: - if param != other_param: - return False - else: - try: - other_idx = other_positions[param_name] - except KeyError: - return False - else: - if (idx != other_idx or - param != other.parameters[param_name]): - return False - - return True - - def __ne__(self, other): - return not self.__eq__(other) - - def _bind(self, args, kwargs, partial=False): - '''Private method. Don't use directly.''' - - arguments = OrderedDict() - - parameters = iter(self.parameters.values()) - parameters_ex = () - arg_vals = iter(args) - - if partial: - # Support for binding arguments to 'functools.partial' objects. - # See 'functools.partial' case in 'signature()' implementation - # for details. - for param_name, param in self.parameters.items(): - if (param._partial_kwarg and param_name not in kwargs): - # Simulating 'functools.partial' behavior - kwargs[param_name] = param.default - - while True: - # Let's iterate through the positional arguments and corresponding - # parameters - try: - arg_val = next(arg_vals) - except StopIteration: - # No more positional arguments - try: - param = next(parameters) - except StopIteration: - # No more parameters. That's it. Just need to check that - # we have no `kwargs` after this while loop - break - else: - if param.kind == _VAR_POSITIONAL: - # That's OK, just empty *args. Let's start parsing - # kwargs - break - elif param.name in kwargs: - if param.kind == _POSITIONAL_ONLY: - msg = '{arg!r} parameter is positional only, ' \ - 'but was passed as a keyword' - msg = msg.format(arg=param.name) - raise TypeError(msg) - parameters_ex = (param,) - break - elif (param.kind == _VAR_KEYWORD or - param.default is not _empty): - # That's fine too - we have a default value for this - # parameter. So, lets start parsing `kwargs`, starting - # with the current parameter - parameters_ex = (param,) - break - else: - if partial: - parameters_ex = (param,) - break - else: - msg = '{arg!r} parameter lacking default value' - msg = msg.format(arg=param.name) - raise TypeError(msg) - else: - # We have a positional argument to process - try: - param = next(parameters) - except StopIteration: - raise TypeError('too many positional arguments') - else: - if param.kind in (_VAR_KEYWORD, _KEYWORD_ONLY): - # Looks like we have no parameter for this positional - # argument - raise TypeError('too many positional arguments') - - if param.kind == _VAR_POSITIONAL: - # We have an '*args'-like argument, let's fill it with - # all positional arguments we have left and move on to - # the next phase - values = [arg_val] - values.extend(arg_vals) - arguments[param.name] = tuple(values) - break - - if param.name in kwargs: - raise TypeError('multiple values for argument ' - '{arg!r}'.format(arg=param.name)) - - arguments[param.name] = arg_val - - # Now, we iterate through the remaining parameters to process - # keyword arguments - kwargs_param = None - for param in itertools.chain(parameters_ex, parameters): - if param.kind == _POSITIONAL_ONLY: - # This should never happen in case of a properly built - # Signature object (but let's have this check here - # to ensure correct behaviour just in case) - raise TypeError('{arg!r} parameter is positional only, ' - 'but was passed as a keyword'. \ - format(arg=param.name)) - - if param.kind == _VAR_KEYWORD: - # Memorize that we have a '**kwargs'-like parameter - kwargs_param = param - continue - - param_name = param.name - try: - arg_val = kwargs.pop(param_name) - except KeyError: - # We have no value for this parameter. It's fine though, - # if it has a default value, or it is an '*args'-like - # parameter, left alone by the processing of positional - # arguments. - if (not partial and param.kind != _VAR_POSITIONAL and - param.default is _empty): - raise TypeError('{arg!r} parameter lacking default value'. \ - format(arg=param_name)) - - else: - arguments[param_name] = arg_val - - if kwargs: - if kwargs_param is not None: - # Process our '**kwargs'-like parameter - arguments[kwargs_param.name] = kwargs - else: - raise TypeError('too many keyword arguments %r' % kwargs) - - return self._bound_arguments_cls(self, arguments) - - def bind(*args, **kwargs): - '''Get a BoundArguments object, that maps the passed `args` - and `kwargs` to the function's signature. Raises `TypeError` - if the passed arguments can not be bound. - ''' - return args[0]._bind(args[1:], kwargs) - - def bind_partial(self, *args, **kwargs): - '''Get a BoundArguments object, that partially maps the - passed `args` and `kwargs` to the function's signature. - Raises `TypeError` if the passed arguments can not be bound. - ''' - return self._bind(args, kwargs, partial=True) - - def __str__(self): - result = [] - render_kw_only_separator = True - for idx, param in enumerate(self.parameters.values()): - formatted = str(param) - - kind = param.kind - if kind == _VAR_POSITIONAL: - # OK, we have an '*args'-like parameter, so we won't need - # a '*' to separate keyword-only arguments - render_kw_only_separator = False - elif kind == _KEYWORD_ONLY and render_kw_only_separator: - # We have a keyword-only parameter to render and we haven't - # rendered an '*args'-like parameter before, so add a '*' - # separator to the parameters list ("foo(arg1, *, arg2)" case) - result.append('*') - # This condition should be only triggered once, so - # reset the flag - render_kw_only_separator = False - - result.append(formatted) - - rendered = '({0})'.format(', '.join(result)) - - if self.return_annotation is not _empty: - anno = formatannotation(self.return_annotation) - rendered += ' -> {0}'.format(anno) - - return rendered diff --git a/tests/wpt/tests/tools/third_party/funcsigs/funcsigs/version.py b/tests/wpt/tests/tools/third_party/funcsigs/funcsigs/version.py deleted file mode 100644 index 7863915fa5f..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/funcsigs/version.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = "1.0.2" diff --git a/tests/wpt/tests/tools/third_party/funcsigs/requirements/development.txt b/tests/wpt/tests/tools/third_party/funcsigs/requirements/development.txt deleted file mode 100644 index 40dedd92bf0..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/requirements/development.txt +++ /dev/null @@ -1,5 +0,0 @@ -coverage -coveralls -flake8 -sphinx -unittest2 diff --git a/tests/wpt/tests/tools/third_party/funcsigs/setup.cfg b/tests/wpt/tests/tools/third_party/funcsigs/setup.cfg deleted file mode 100644 index 5e4090017a9..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/setup.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[wheel] -universal = 1 diff --git a/tests/wpt/tests/tools/third_party/funcsigs/setup.py b/tests/wpt/tests/tools/third_party/funcsigs/setup.py deleted file mode 100644 index f3696888f9e..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/setup.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python -from setuptools import setup -import re -import sys - -def load_version(filename='funcsigs/version.py'): - "Parse a __version__ number from a source file" - with open(filename) as source: - text = source.read() - match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", text) - if not match: - msg = "Unable to find version number in {}".format(filename) - raise RuntimeError(msg) - version = match.group(1) - return version - - -setup( - name="funcsigs", - version=load_version(), - packages=['funcsigs'], - zip_safe=False, - author="Testing Cabal", - author_email="testing-in-python@lists.idyll.org", - url="http://funcsigs.readthedocs.org", - description="Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2+", - long_description=open('README.rst').read(), - license="ASL", - extras_require = { - ':python_version<"2.7"': ['ordereddict'], - }, - setup_requires = ["setuptools>=17.1"], - classifiers = [ - 'Development Status :: 4 - Beta', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: Apache Software License', - 'Operating System :: OS Independent', - 'Programming Language :: Python', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.6', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: Implementation :: CPython', - 'Programming Language :: Python :: Implementation :: PyPy', - 'Topic :: Software Development :: Libraries :: Python Modules' - ], - tests_require = ['unittest2'], - test_suite = 'unittest2.collector', -) diff --git a/tests/wpt/tests/tools/third_party/funcsigs/tests/__init__.py b/tests/wpt/tests/tools/third_party/funcsigs/tests/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/tests/wpt/tests/tools/third_party/funcsigs/tests/test_formatannotation.py b/tests/wpt/tests/tools/third_party/funcsigs/tests/test_formatannotation.py deleted file mode 100644 index 4b98e6037d8..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/tests/test_formatannotation.py +++ /dev/null @@ -1,17 +0,0 @@ -import funcsigs - -import unittest2 as unittest - -class TestFormatAnnotation(unittest.TestCase): - def test_string (self): - self.assertEqual(funcsigs.formatannotation("annotation"), - "'annotation'") - - def test_builtin_type (self): - self.assertEqual(funcsigs.formatannotation(int), - "int") - - def test_user_type (self): - class dummy (object): pass - self.assertEqual(funcsigs.formatannotation(dummy), - "tests.test_formatannotation.dummy") diff --git a/tests/wpt/tests/tools/third_party/funcsigs/tests/test_funcsigs.py b/tests/wpt/tests/tools/third_party/funcsigs/tests/test_funcsigs.py deleted file mode 100644 index a7b9cca7679..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/tests/test_funcsigs.py +++ /dev/null @@ -1,91 +0,0 @@ -import unittest2 as unittest - -import doctest -import sys - -import funcsigs as inspect - - -class TestFunctionSignatures(unittest.TestCase): - - @staticmethod - def signature(func): - sig = inspect.signature(func) - return (tuple((param.name, - (Ellipsis if param.default is param.empty else param.default), - (Ellipsis if param.annotation is param.empty - else param.annotation), - str(param.kind).lower()) - for param in sig.parameters.values()), - (Ellipsis if sig.return_annotation is sig.empty - else sig.return_annotation)) - - def test_zero_arguments(self): - def test(): - pass - self.assertEqual(self.signature(test), - ((), Ellipsis)) - - def test_single_positional_argument(self): - def test(a): - pass - self.assertEqual(self.signature(test), - (((('a', Ellipsis, Ellipsis, "positional_or_keyword")),), Ellipsis)) - - def test_single_keyword_argument(self): - def test(a=None): - pass - self.assertEqual(self.signature(test), - (((('a', None, Ellipsis, "positional_or_keyword")),), Ellipsis)) - - def test_var_args(self): - def test(*args): - pass - self.assertEqual(self.signature(test), - (((('args', Ellipsis, Ellipsis, "var_positional")),), Ellipsis)) - - def test_keywords_args(self): - def test(**kwargs): - pass - self.assertEqual(self.signature(test), - (((('kwargs', Ellipsis, Ellipsis, "var_keyword")),), Ellipsis)) - - def test_multiple_arguments(self): - def test(a, b=None, *args, **kwargs): - pass - self.assertEqual(self.signature(test), (( - ('a', Ellipsis, Ellipsis, "positional_or_keyword"), - ('b', None, Ellipsis, "positional_or_keyword"), - ('args', Ellipsis, Ellipsis, "var_positional"), - ('kwargs', Ellipsis, Ellipsis, "var_keyword"), - ), Ellipsis)) - - def test_has_version(self): - self.assertTrue(inspect.__version__) - - def test_readme(self): - # XXX: This fails but doesn't fail the build. - # (and the syntax isn't valid on all pythons so that seems a little - # hard to get right. - doctest.testfile('../README.rst') - - def test_unbound_method(self): - self_kind = "positional_or_keyword" - class Test(object): - def method(self): - pass - def method_with_args(self, a): - pass - def method_with_varargs(*args): - pass - self.assertEqual( - self.signature(Test.method), - (((('self', Ellipsis, Ellipsis, self_kind)),), Ellipsis)) - self.assertEqual( - self.signature(Test.method_with_args), - ((('self', Ellipsis, Ellipsis, self_kind), - ('a', Ellipsis, Ellipsis, "positional_or_keyword"), - ), Ellipsis)) - self.assertEqual( - self.signature(Test.method_with_varargs), - ((('args', Ellipsis, Ellipsis, "var_positional"),), Ellipsis)) diff --git a/tests/wpt/tests/tools/third_party/funcsigs/tests/test_inspect.py b/tests/wpt/tests/tools/third_party/funcsigs/tests/test_inspect.py deleted file mode 100644 index 98d6592fcc7..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/tests/test_inspect.py +++ /dev/null @@ -1,1002 +0,0 @@ -# Copyright 2001-2013 Python Software Foundation; All Rights Reserved -from __future__ import absolute_import, division, print_function -import collections -import functools -import sys - -import unittest2 as unittest - -import funcsigs as inspect - - -class TestSignatureObject(unittest.TestCase): - @staticmethod - def signature(func): - sig = inspect.signature(func) - return (tuple((param.name, - (Ellipsis if param.default is param.empty else param.default), - (Ellipsis if param.annotation is param.empty - else param.annotation), - str(param.kind).lower()) - for param in sig.parameters.values()), - (Ellipsis if sig.return_annotation is sig.empty - else sig.return_annotation)) - - if sys.version_info[0] > 2: - exec(""" -def test_signature_object(self): - S = inspect.Signature - P = inspect.Parameter - - self.assertEqual(str(S()), '()') - - def test(po, pk, *args, ko, **kwargs): - pass - sig = inspect.signature(test) - po = sig.parameters['po'].replace(kind=P.POSITIONAL_ONLY) - pk = sig.parameters['pk'] - args = sig.parameters['args'] - ko = sig.parameters['ko'] - kwargs = sig.parameters['kwargs'] - - S((po, pk, args, ko, kwargs)) - - with self.assertRaisesRegex(ValueError, 'wrong parameter order'): - S((pk, po, args, ko, kwargs)) - - with self.assertRaisesRegex(ValueError, 'wrong parameter order'): - S((po, args, pk, ko, kwargs)) - - with self.assertRaisesRegex(ValueError, 'wrong parameter order'): - S((args, po, pk, ko, kwargs)) - - with self.assertRaisesRegex(ValueError, 'wrong parameter order'): - S((po, pk, args, kwargs, ko)) - - kwargs2 = kwargs.replace(name='args') - with self.assertRaisesRegex(ValueError, 'duplicate parameter name'): - S((po, pk, args, kwargs2, ko)) -""") - - def test_signature_immutability(self): - def test(a): - pass - sig = inspect.signature(test) - - with self.assertRaises(AttributeError): - sig.foo = 'bar' - - # Python2 does not have MappingProxyType class - if sys.version_info[:2] < (3, 3): - return - - with self.assertRaises(TypeError): - sig.parameters['a'] = None - - def test_signature_on_noarg(self): - def test(): - pass - self.assertEqual(self.signature(test), ((), Ellipsis)) - - if sys.version_info[0] > 2: - exec(""" -def test_signature_on_wargs(self): - def test(a, b:'foo') -> 123: - pass - self.assertEqual(self.signature(test), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"), - ('b', Ellipsis, 'foo', "positional_or_keyword")), - 123)) -""") - - if sys.version_info[0] > 2: - exec(""" -def test_signature_on_wkwonly(self): - def test(*, a:float, b:str) -> int: - pass - self.assertEqual(self.signature(test), - ((('a', Ellipsis, float, "keyword_only"), - ('b', Ellipsis, str, "keyword_only")), - int)) -""") - - if sys.version_info[0] > 2: - exec(""" -def test_signature_on_complex_args(self): - def test(a, b:'foo'=10, *args:'bar', spam:'baz', ham=123, **kwargs:int): - pass - self.assertEqual(self.signature(test), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"), - ('b', 10, 'foo', "positional_or_keyword"), - ('args', Ellipsis, 'bar', "var_positional"), - ('spam', Ellipsis, 'baz', "keyword_only"), - ('ham', 123, Ellipsis, "keyword_only"), - ('kwargs', Ellipsis, int, "var_keyword")), - Ellipsis)) -""") - - def test_signature_on_builtin_function(self): - with self.assertRaisesRegex(ValueError, 'not supported by signature'): - inspect.signature(type) - with self.assertRaisesRegex(ValueError, 'not supported by signature'): - # support for 'wrapper_descriptor' - inspect.signature(type.__call__) - if hasattr(sys, 'pypy_version_info'): - raise ValueError('not supported by signature') - with self.assertRaisesRegex(ValueError, 'not supported by signature'): - # support for 'method-wrapper' - inspect.signature(min.__call__) - if hasattr(sys, 'pypy_version_info'): - raise ValueError('not supported by signature') - with self.assertRaisesRegex(ValueError, - 'no signature found for builtin function'): - # support for 'method-wrapper' - inspect.signature(min) - - def test_signature_on_non_function(self): - with self.assertRaisesRegex(TypeError, 'is not a callable object'): - inspect.signature(42) - - with self.assertRaisesRegex(TypeError, 'is not a Python function'): - inspect.Signature.from_function(42) - - if sys.version_info[0] > 2: - exec(""" -def test_signature_on_method(self): - class Test: - def foo(self, arg1, arg2=1) -> int: - pass - - meth = Test().foo - - self.assertEqual(self.signature(meth), - ((('arg1', Ellipsis, Ellipsis, "positional_or_keyword"), - ('arg2', 1, Ellipsis, "positional_or_keyword")), - int)) -""") - - if sys.version_info[0] > 2: - exec(""" -def test_signature_on_classmethod(self): - class Test: - @classmethod - def foo(cls, arg1, *, arg2=1): - pass - - meth = Test().foo - self.assertEqual(self.signature(meth), - ((('arg1', Ellipsis, Ellipsis, "positional_or_keyword"), - ('arg2', 1, Ellipsis, "keyword_only")), - Ellipsis)) - - meth = Test.foo - self.assertEqual(self.signature(meth), - ((('arg1', Ellipsis, Ellipsis, "positional_or_keyword"), - ('arg2', 1, Ellipsis, "keyword_only")), - Ellipsis)) -""") - - if sys.version_info[0] > 2: - exec(""" -def test_signature_on_staticmethod(self): - class Test: - @staticmethod - def foo(cls, *, arg): - pass - - meth = Test().foo - self.assertEqual(self.signature(meth), - ((('cls', Ellipsis, Ellipsis, "positional_or_keyword"), - ('arg', Ellipsis, Ellipsis, "keyword_only")), - Ellipsis)) - - meth = Test.foo - self.assertEqual(self.signature(meth), - ((('cls', Ellipsis, Ellipsis, "positional_or_keyword"), - ('arg', Ellipsis, Ellipsis, "keyword_only")), - Ellipsis)) -""") - - if sys.version_info[0] > 2: - exec(""" -def test_signature_on_partial(self): - from functools import partial - - def test(): - pass - - self.assertEqual(self.signature(partial(test)), ((), Ellipsis)) - - with self.assertRaisesRegex(ValueError, "has incorrect arguments"): - inspect.signature(partial(test, 1)) - - with self.assertRaisesRegex(ValueError, "has incorrect arguments"): - inspect.signature(partial(test, a=1)) - - def test(a, b, *, c, d): - pass - - self.assertEqual(self.signature(partial(test)), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"), - ('b', Ellipsis, Ellipsis, "positional_or_keyword"), - ('c', Ellipsis, Ellipsis, "keyword_only"), - ('d', Ellipsis, Ellipsis, "keyword_only")), - Ellipsis)) - - self.assertEqual(self.signature(partial(test, 1)), - ((('b', Ellipsis, Ellipsis, "positional_or_keyword"), - ('c', Ellipsis, Ellipsis, "keyword_only"), - ('d', Ellipsis, Ellipsis, "keyword_only")), - Ellipsis)) - - self.assertEqual(self.signature(partial(test, 1, c=2)), - ((('b', Ellipsis, Ellipsis, "positional_or_keyword"), - ('c', 2, Ellipsis, "keyword_only"), - ('d', Ellipsis, Ellipsis, "keyword_only")), - Ellipsis)) - - self.assertEqual(self.signature(partial(test, b=1, c=2)), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"), - ('b', 1, Ellipsis, "positional_or_keyword"), - ('c', 2, Ellipsis, "keyword_only"), - ('d', Ellipsis, Ellipsis, "keyword_only")), - Ellipsis)) - - self.assertEqual(self.signature(partial(test, 0, b=1, c=2)), - ((('b', 1, Ellipsis, "positional_or_keyword"), - ('c', 2, Ellipsis, "keyword_only"), - ('d', Ellipsis, Ellipsis, "keyword_only"),), - Ellipsis)) - - def test(a, *args, b, **kwargs): - pass - - self.assertEqual(self.signature(partial(test, 1)), - ((('args', Ellipsis, Ellipsis, "var_positional"), - ('b', Ellipsis, Ellipsis, "keyword_only"), - ('kwargs', Ellipsis, Ellipsis, "var_keyword")), - Ellipsis)) - - self.assertEqual(self.signature(partial(test, 1, 2, 3)), - ((('args', Ellipsis, Ellipsis, "var_positional"), - ('b', Ellipsis, Ellipsis, "keyword_only"), - ('kwargs', Ellipsis, Ellipsis, "var_keyword")), - Ellipsis)) - - - self.assertEqual(self.signature(partial(test, 1, 2, 3, test=True)), - ((('args', Ellipsis, Ellipsis, "var_positional"), - ('b', Ellipsis, Ellipsis, "keyword_only"), - ('kwargs', Ellipsis, Ellipsis, "var_keyword")), - Ellipsis)) - - self.assertEqual(self.signature(partial(test, 1, 2, 3, test=1, b=0)), - ((('args', Ellipsis, Ellipsis, "var_positional"), - ('b', 0, Ellipsis, "keyword_only"), - ('kwargs', Ellipsis, Ellipsis, "var_keyword")), - Ellipsis)) - - self.assertEqual(self.signature(partial(test, b=0)), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"), - ('args', Ellipsis, Ellipsis, "var_positional"), - ('b', 0, Ellipsis, "keyword_only"), - ('kwargs', Ellipsis, Ellipsis, "var_keyword")), - Ellipsis)) - - self.assertEqual(self.signature(partial(test, b=0, test=1)), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"), - ('args', Ellipsis, Ellipsis, "var_positional"), - ('b', 0, Ellipsis, "keyword_only"), - ('kwargs', Ellipsis, Ellipsis, "var_keyword")), - Ellipsis)) - - def test(a, b, c:int) -> 42: - pass - - sig = test.__signature__ = inspect.signature(test) - - self.assertEqual(self.signature(partial(partial(test, 1))), - ((('b', Ellipsis, Ellipsis, "positional_or_keyword"), - ('c', Ellipsis, int, "positional_or_keyword")), - 42)) - - self.assertEqual(self.signature(partial(partial(test, 1), 2)), - ((('c', Ellipsis, int, "positional_or_keyword"),), - 42)) - - psig = inspect.signature(partial(partial(test, 1), 2)) - - def foo(a): - return a - _foo = partial(partial(foo, a=10), a=20) - self.assertEqual(self.signature(_foo), - ((('a', 20, Ellipsis, "positional_or_keyword"),), - Ellipsis)) - # check that we don't have any side-effects in signature(), - # and the partial object is still functioning - self.assertEqual(_foo(), 20) - - def foo(a, b, c): - return a, b, c - _foo = partial(partial(foo, 1, b=20), b=30) - self.assertEqual(self.signature(_foo), - ((('b', 30, Ellipsis, "positional_or_keyword"), - ('c', Ellipsis, Ellipsis, "positional_or_keyword")), - Ellipsis)) - self.assertEqual(_foo(c=10), (1, 30, 10)) - _foo = partial(_foo, 2) # now 'b' has two values - - # positional and keyword - with self.assertRaisesRegex(ValueError, "has incorrect arguments"): - inspect.signature(_foo) - - def foo(a, b, c, *, d): - return a, b, c, d - _foo = partial(partial(foo, d=20, c=20), b=10, d=30) - self.assertEqual(self.signature(_foo), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"), - ('b', 10, Ellipsis, "positional_or_keyword"), - ('c', 20, Ellipsis, "positional_or_keyword"), - ('d', 30, Ellipsis, "keyword_only")), - Ellipsis)) - ba = inspect.signature(_foo).bind(a=200, b=11) - self.assertEqual(_foo(*ba.args, **ba.kwargs), (200, 11, 20, 30)) - - def foo(a=1, b=2, c=3): - return a, b, c - _foo = partial(foo, a=10, c=13) - ba = inspect.signature(_foo).bind(11) - self.assertEqual(_foo(*ba.args, **ba.kwargs), (11, 2, 13)) - ba = inspect.signature(_foo).bind(11, 12) - self.assertEqual(_foo(*ba.args, **ba.kwargs), (11, 12, 13)) - ba = inspect.signature(_foo).bind(11, b=12) - self.assertEqual(_foo(*ba.args, **ba.kwargs), (11, 12, 13)) - ba = inspect.signature(_foo).bind(b=12) - self.assertEqual(_foo(*ba.args, **ba.kwargs), (10, 12, 13)) - _foo = partial(_foo, b=10) - ba = inspect.signature(_foo).bind(12, 14) - self.assertEqual(_foo(*ba.args, **ba.kwargs), (12, 14, 13)) -""") - - if sys.version_info[0] > 2: - exec(""" -def test_signature_on_decorated(self): - import functools - - def decorator(func): - @functools.wraps(func) - def wrapper(*args, **kwargs) -> int: - return func(*args, **kwargs) - return wrapper - - class Foo: - @decorator - def bar(self, a, b): - pass - - self.assertEqual(self.signature(Foo.bar), - ((('self', Ellipsis, Ellipsis, "positional_or_keyword"), - ('a', Ellipsis, Ellipsis, "positional_or_keyword"), - ('b', Ellipsis, Ellipsis, "positional_or_keyword")), - Ellipsis)) - - self.assertEqual(self.signature(Foo().bar), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"), - ('b', Ellipsis, Ellipsis, "positional_or_keyword")), - Ellipsis)) - - # Test that we handle method wrappers correctly - def decorator(func): - @functools.wraps(func) - def wrapper(*args, **kwargs) -> int: - return func(42, *args, **kwargs) - sig = inspect.signature(func) - new_params = tuple(sig.parameters.values())[1:] - wrapper.__signature__ = sig.replace(parameters=new_params) - return wrapper - - class Foo: - @decorator - def __call__(self, a, b): - pass - - self.assertEqual(self.signature(Foo.__call__), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"), - ('b', Ellipsis, Ellipsis, "positional_or_keyword")), - Ellipsis)) - - self.assertEqual(self.signature(Foo().__call__), - ((('b', Ellipsis, Ellipsis, "positional_or_keyword"),), - Ellipsis)) -""") - - if sys.version_info[0] > 2: - exec(""" -def test_signature_on_class(self): - class C: - def __init__(self, a): - pass - - self.assertEqual(self.signature(C), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),), - Ellipsis)) - - class CM(type): - def __call__(cls, a): - pass - class C(metaclass=CM): - def __init__(self, b): - pass - - self.assertEqual(self.signature(C), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),), - Ellipsis)) - - class CM(type): - def __new__(mcls, name, bases, dct, *, foo=1): - return super().__new__(mcls, name, bases, dct) - class C(metaclass=CM): - def __init__(self, b): - pass - - self.assertEqual(self.signature(C), - ((('b', Ellipsis, Ellipsis, "positional_or_keyword"),), - Ellipsis)) - - self.assertEqual(self.signature(CM), - ((('name', Ellipsis, Ellipsis, "positional_or_keyword"), - ('bases', Ellipsis, Ellipsis, "positional_or_keyword"), - ('dct', Ellipsis, Ellipsis, "positional_or_keyword"), - ('foo', 1, Ellipsis, "keyword_only")), - Ellipsis)) - - class CMM(type): - def __new__(mcls, name, bases, dct, *, foo=1): - return super().__new__(mcls, name, bases, dct) - def __call__(cls, nm, bs, dt): - return type(nm, bs, dt) - class CM(type, metaclass=CMM): - def __new__(mcls, name, bases, dct, *, bar=2): - return super().__new__(mcls, name, bases, dct) - class C(metaclass=CM): - def __init__(self, b): - pass - - self.assertEqual(self.signature(CMM), - ((('name', Ellipsis, Ellipsis, "positional_or_keyword"), - ('bases', Ellipsis, Ellipsis, "positional_or_keyword"), - ('dct', Ellipsis, Ellipsis, "positional_or_keyword"), - ('foo', 1, Ellipsis, "keyword_only")), - Ellipsis)) - - self.assertEqual(self.signature(CM), - ((('nm', Ellipsis, Ellipsis, "positional_or_keyword"), - ('bs', Ellipsis, Ellipsis, "positional_or_keyword"), - ('dt', Ellipsis, Ellipsis, "positional_or_keyword")), - Ellipsis)) - - self.assertEqual(self.signature(C), - ((('b', Ellipsis, Ellipsis, "positional_or_keyword"),), - Ellipsis)) - - class CM(type): - def __init__(cls, name, bases, dct, *, bar=2): - return super().__init__(name, bases, dct) - class C(metaclass=CM): - def __init__(self, b): - pass - - self.assertEqual(self.signature(CM), - ((('name', Ellipsis, Ellipsis, "positional_or_keyword"), - ('bases', Ellipsis, Ellipsis, "positional_or_keyword"), - ('dct', Ellipsis, Ellipsis, "positional_or_keyword"), - ('bar', 2, Ellipsis, "keyword_only")), - Ellipsis)) -""") - - def test_signature_on_callable_objects(self): - class Foo(object): - def __call__(self, a): - pass - - self.assertEqual(self.signature(Foo()), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),), - Ellipsis)) - - class Spam(object): - pass - with self.assertRaisesRegex(TypeError, "is not a callable object"): - inspect.signature(Spam()) - - class Bar(Spam, Foo): - pass - - self.assertEqual(self.signature(Bar()), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),), - Ellipsis)) - - class ToFail(object): - __call__ = type - with self.assertRaisesRegex(ValueError, "not supported by signature"): - inspect.signature(ToFail()) - - if sys.version_info[0] < 3: - return - - class Wrapped(object): - pass - Wrapped.__wrapped__ = lambda a: None - self.assertEqual(self.signature(Wrapped), - ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),), - Ellipsis)) - - def test_signature_on_lambdas(self): - self.assertEqual(self.signature((lambda a=10: a)), - ((('a', 10, Ellipsis, "positional_or_keyword"),), - Ellipsis)) - - if sys.version_info[0] > 2: - exec(""" -def test_signature_equality(self): - def foo(a, *, b:int) -> float: pass - self.assertNotEqual(inspect.signature(foo), 42) - - def bar(a, *, b:int) -> float: pass - self.assertEqual(inspect.signature(foo), inspect.signature(bar)) - - def bar(a, *, b:int) -> int: pass - self.assertNotEqual(inspect.signature(foo), inspect.signature(bar)) - - def bar(a, *, b:int): pass - self.assertNotEqual(inspect.signature(foo), inspect.signature(bar)) - - def bar(a, *, b:int=42) -> float: pass - self.assertNotEqual(inspect.signature(foo), inspect.signature(bar)) - - def bar(a, *, c) -> float: pass - self.assertNotEqual(inspect.signature(foo), inspect.signature(bar)) - - def bar(a, b:int) -> float: pass - self.assertNotEqual(inspect.signature(foo), inspect.signature(bar)) - def spam(b:int, a) -> float: pass - self.assertNotEqual(inspect.signature(spam), inspect.signature(bar)) - - def foo(*, a, b, c): pass - def bar(*, c, b, a): pass - self.assertEqual(inspect.signature(foo), inspect.signature(bar)) - - def foo(*, a=1, b, c): pass - def bar(*, c, b, a=1): pass - self.assertEqual(inspect.signature(foo), inspect.signature(bar)) - - def foo(pos, *, a=1, b, c): pass - def bar(pos, *, c, b, a=1): pass - self.assertEqual(inspect.signature(foo), inspect.signature(bar)) - - def foo(pos, *, a, b, c): pass - def bar(pos, *, c, b, a=1): pass - self.assertNotEqual(inspect.signature(foo), inspect.signature(bar)) - - def foo(pos, *args, a=42, b, c, **kwargs:int): pass - def bar(pos, *args, c, b, a=42, **kwargs:int): pass - self.assertEqual(inspect.signature(foo), inspect.signature(bar)) -""") - - def test_signature_unhashable(self): - def foo(a): pass - sig = inspect.signature(foo) - with self.assertRaisesRegex(TypeError, 'unhashable type'): - hash(sig) - - - if sys.version_info[0] > 2: - exec(""" -def test_signature_str(self): - def foo(a:int=1, *, b, c=None, **kwargs) -> 42: - pass - self.assertEqual(str(inspect.signature(foo)), - '(a:int=1, *, b, c=None, **kwargs) -> 42') - - def foo(a:int=1, *args, b, c=None, **kwargs) -> 42: - pass - self.assertEqual(str(inspect.signature(foo)), - '(a:int=1, *args, b, c=None, **kwargs) -> 42') - - def foo(): - pass - self.assertEqual(str(inspect.signature(foo)), '()') -""") - - if sys.version_info[0] > 2: - exec(""" -def test_signature_str_positional_only(self): - P = inspect.Parameter - - def test(a_po, *, b, **kwargs): - return a_po, kwargs - - sig = inspect.signature(test) - new_params = list(sig.parameters.values()) - new_params[0] = new_params[0].replace(kind=P.POSITIONAL_ONLY) - test.__signature__ = sig.replace(parameters=new_params) - - self.assertEqual(str(inspect.signature(test)), - '(, *, b, **kwargs)') - - sig = inspect.signature(test) - new_params = list(sig.parameters.values()) - new_params[0] = new_params[0].replace(name=None) - test.__signature__ = sig.replace(parameters=new_params) - self.assertEqual(str(inspect.signature(test)), - '(<0>, *, b, **kwargs)') -""") - - if sys.version_info[0] > 2: - exec(""" -def test_signature_replace_anno(self): - def test() -> 42: - pass - - sig = inspect.signature(test) - sig = sig.replace(return_annotation=None) - self.assertIs(sig.return_annotation, None) - sig = sig.replace(return_annotation=sig.empty) - self.assertIs(sig.return_annotation, sig.empty) - sig = sig.replace(return_annotation=42) - self.assertEqual(sig.return_annotation, 42) - self.assertEqual(sig, inspect.signature(test)) -""") - - -class TestParameterObject(unittest.TestCase): - - def test_signature_parameter_kinds(self): - P = inspect.Parameter - self.assertTrue(P.POSITIONAL_ONLY < P.POSITIONAL_OR_KEYWORD < \ - P.VAR_POSITIONAL < P.KEYWORD_ONLY < P.VAR_KEYWORD) - - self.assertEqual(str(P.POSITIONAL_ONLY), 'POSITIONAL_ONLY') - self.assertTrue('POSITIONAL_ONLY' in repr(P.POSITIONAL_ONLY)) - - def test_signature_parameter_object(self): - p = inspect.Parameter('foo', default=10, - kind=inspect.Parameter.POSITIONAL_ONLY) - self.assertEqual(p.name, 'foo') - self.assertEqual(p.default, 10) - self.assertIs(p.annotation, p.empty) - self.assertEqual(p.kind, inspect.Parameter.POSITIONAL_ONLY) - - with self.assertRaisesRegex(ValueError, 'invalid value'): - inspect.Parameter('foo', default=10, kind='123') - - with self.assertRaisesRegex(ValueError, 'not a valid parameter name'): - inspect.Parameter('1', kind=inspect.Parameter.VAR_KEYWORD) - - with self.assertRaisesRegex(ValueError, - 'non-positional-only parameter'): - inspect.Parameter(None, kind=inspect.Parameter.VAR_KEYWORD) - - with self.assertRaisesRegex(ValueError, 'cannot have default values'): - inspect.Parameter('a', default=42, - kind=inspect.Parameter.VAR_KEYWORD) - - with self.assertRaisesRegex(ValueError, 'cannot have default values'): - inspect.Parameter('a', default=42, - kind=inspect.Parameter.VAR_POSITIONAL) - - p = inspect.Parameter('a', default=42, - kind=inspect.Parameter.POSITIONAL_OR_KEYWORD) - with self.assertRaisesRegex(ValueError, 'cannot have default values'): - p.replace(kind=inspect.Parameter.VAR_POSITIONAL) - - self.assertTrue(repr(p).startswith('') - - p = p.replace(name='1') - self.assertEqual(str(p), '<1>') - - def test_signature_parameter_immutability(self): - p = inspect.Parameter(None, kind=inspect.Parameter.POSITIONAL_ONLY) - - with self.assertRaises(AttributeError): - p.foo = 'bar' - - with self.assertRaises(AttributeError): - p.kind = 123 - - -class TestSignatureBind(unittest.TestCase): - @staticmethod - def call(func, *args, **kwargs): - sig = inspect.signature(func) - ba = sig.bind(*args, **kwargs) - return func(*ba.args, **ba.kwargs) - - def test_signature_bind_empty(self): - def test(): - return 42 - - self.assertEqual(self.call(test), 42) - with self.assertRaisesRegex(TypeError, 'too many positional arguments'): - self.call(test, 1) - with self.assertRaisesRegex(TypeError, 'too many positional arguments'): - self.call(test, 1, spam=10) - with self.assertRaisesRegex(TypeError, 'too many keyword arguments'): - self.call(test, spam=1) - - def test_signature_bind_var(self): - def test(*args, **kwargs): - return args, kwargs - - self.assertEqual(self.call(test), ((), {})) - self.assertEqual(self.call(test, 1), ((1,), {})) - self.assertEqual(self.call(test, 1, 2), ((1, 2), {})) - self.assertEqual(self.call(test, foo='bar'), ((), {'foo': 'bar'})) - self.assertEqual(self.call(test, 1, foo='bar'), ((1,), {'foo': 'bar'})) - self.assertEqual(self.call(test, args=10), ((), {'args': 10})) - self.assertEqual(self.call(test, 1, 2, foo='bar'), - ((1, 2), {'foo': 'bar'})) - - def test_signature_bind_just_args(self): - def test(a, b, c): - return a, b, c - - self.assertEqual(self.call(test, 1, 2, 3), (1, 2, 3)) - - with self.assertRaisesRegex(TypeError, 'too many positional arguments'): - self.call(test, 1, 2, 3, 4) - - with self.assertRaisesRegex(TypeError, "'b' parameter lacking default"): - self.call(test, 1) - - with self.assertRaisesRegex(TypeError, "'a' parameter lacking default"): - self.call(test) - - def test(a, b, c=10): - return a, b, c - self.assertEqual(self.call(test, 1, 2, 3), (1, 2, 3)) - self.assertEqual(self.call(test, 1, 2), (1, 2, 10)) - - def test(a=1, b=2, c=3): - return a, b, c - self.assertEqual(self.call(test, a=10, c=13), (10, 2, 13)) - self.assertEqual(self.call(test, a=10), (10, 2, 3)) - self.assertEqual(self.call(test, b=10), (1, 10, 3)) - - def test_signature_bind_varargs_order(self): - def test(*args): - return args - - self.assertEqual(self.call(test), ()) - self.assertEqual(self.call(test, 1, 2, 3), (1, 2, 3)) - - def test_signature_bind_args_and_varargs(self): - def test(a, b, c=3, *args): - return a, b, c, args - - self.assertEqual(self.call(test, 1, 2, 3, 4, 5), (1, 2, 3, (4, 5))) - self.assertEqual(self.call(test, 1, 2), (1, 2, 3, ())) - self.assertEqual(self.call(test, b=1, a=2), (2, 1, 3, ())) - self.assertEqual(self.call(test, 1, b=2), (1, 2, 3, ())) - - with self.assertRaisesRegex(TypeError, - "multiple values for argument 'c'"): - self.call(test, 1, 2, 3, c=4) - - def test_signature_bind_just_kwargs(self): - def test(**kwargs): - return kwargs - - self.assertEqual(self.call(test), {}) - self.assertEqual(self.call(test, foo='bar', spam='ham'), - {'foo': 'bar', 'spam': 'ham'}) - - def test_signature_bind_args_and_kwargs(self): - def test(a, b, c=3, **kwargs): - return a, b, c, kwargs - - self.assertEqual(self.call(test, 1, 2), (1, 2, 3, {})) - self.assertEqual(self.call(test, 1, 2, foo='bar', spam='ham'), - (1, 2, 3, {'foo': 'bar', 'spam': 'ham'})) - self.assertEqual(self.call(test, b=2, a=1, foo='bar', spam='ham'), - (1, 2, 3, {'foo': 'bar', 'spam': 'ham'})) - self.assertEqual(self.call(test, a=1, b=2, foo='bar', spam='ham'), - (1, 2, 3, {'foo': 'bar', 'spam': 'ham'})) - self.assertEqual(self.call(test, 1, b=2, foo='bar', spam='ham'), - (1, 2, 3, {'foo': 'bar', 'spam': 'ham'})) - self.assertEqual(self.call(test, 1, b=2, c=4, foo='bar', spam='ham'), - (1, 2, 4, {'foo': 'bar', 'spam': 'ham'})) - self.assertEqual(self.call(test, 1, 2, 4, foo='bar'), - (1, 2, 4, {'foo': 'bar'})) - self.assertEqual(self.call(test, c=5, a=4, b=3), - (4, 3, 5, {})) - - if sys.version_info[0] > 2: - exec(""" -def test_signature_bind_kwonly(self): - def test(*, foo): - return foo - with self.assertRaisesRegex(TypeError, - 'too many positional arguments'): - self.call(test, 1) - self.assertEqual(self.call(test, foo=1), 1) - - def test(a, *, foo=1, bar): - return foo - with self.assertRaisesRegex(TypeError, - "'bar' parameter lacking default value"): - self.call(test, 1) - - def test(foo, *, bar): - return foo, bar - self.assertEqual(self.call(test, 1, bar=2), (1, 2)) - self.assertEqual(self.call(test, bar=2, foo=1), (1, 2)) - - with self.assertRaisesRegex(TypeError, - 'too many keyword arguments'): - self.call(test, bar=2, foo=1, spam=10) - - with self.assertRaisesRegex(TypeError, - 'too many positional arguments'): - self.call(test, 1, 2) - - with self.assertRaisesRegex(TypeError, - 'too many positional arguments'): - self.call(test, 1, 2, bar=2) - - with self.assertRaisesRegex(TypeError, - 'too many keyword arguments'): - self.call(test, 1, bar=2, spam='ham') - - with self.assertRaisesRegex(TypeError, - "'bar' parameter lacking default value"): - self.call(test, 1) - - def test(foo, *, bar, **bin): - return foo, bar, bin - self.assertEqual(self.call(test, 1, bar=2), (1, 2, {})) - self.assertEqual(self.call(test, foo=1, bar=2), (1, 2, {})) - self.assertEqual(self.call(test, 1, bar=2, spam='ham'), - (1, 2, {'spam': 'ham'})) - self.assertEqual(self.call(test, spam='ham', foo=1, bar=2), - (1, 2, {'spam': 'ham'})) - with self.assertRaisesRegex(TypeError, - "'foo' parameter lacking default value"): - self.call(test, spam='ham', bar=2) - self.assertEqual(self.call(test, 1, bar=2, bin=1, spam=10), - (1, 2, {'bin': 1, 'spam': 10})) -""") -# - if sys.version_info[0] > 2: - exec(""" -def test_signature_bind_arguments(self): - def test(a, *args, b, z=100, **kwargs): - pass - sig = inspect.signature(test) - ba = sig.bind(10, 20, b=30, c=40, args=50, kwargs=60) - # we won't have 'z' argument in the bound arguments object, as we didn't - # pass it to the 'bind' - self.assertEqual(tuple(ba.arguments.items()), - (('a', 10), ('args', (20,)), ('b', 30), - ('kwargs', {'c': 40, 'args': 50, 'kwargs': 60}))) - self.assertEqual(ba.kwargs, - {'b': 30, 'c': 40, 'args': 50, 'kwargs': 60}) - self.assertEqual(ba.args, (10, 20)) -""") -# - if sys.version_info[0] > 2: - exec(""" -def test_signature_bind_positional_only(self): - P = inspect.Parameter - - def test(a_po, b_po, c_po=3, foo=42, *, bar=50, **kwargs): - return a_po, b_po, c_po, foo, bar, kwargs - - sig = inspect.signature(test) - new_params = collections.OrderedDict(tuple(sig.parameters.items())) - for name in ('a_po', 'b_po', 'c_po'): - new_params[name] = new_params[name].replace(kind=P.POSITIONAL_ONLY) - new_sig = sig.replace(parameters=new_params.values()) - test.__signature__ = new_sig - - self.assertEqual(self.call(test, 1, 2, 4, 5, bar=6), - (1, 2, 4, 5, 6, {})) - - with self.assertRaisesRegex(TypeError, "parameter is positional only"): - self.call(test, 1, 2, c_po=4) - - with self.assertRaisesRegex(TypeError, "parameter is positional only"): - self.call(test, a_po=1, b_po=2) -""") - - def test_bind_self(self): - class F: - def f(a, self): - return a, self - an_f = F() - partial_f = functools.partial(F.f, an_f) - ba = inspect.signature(partial_f).bind(self=10) - self.assertEqual((an_f, 10), partial_f(*ba.args, **ba.kwargs)) - - -class TestBoundArguments(unittest.TestCase): - - def test_signature_bound_arguments_unhashable(self): - def foo(a): pass - ba = inspect.signature(foo).bind(1) - - with self.assertRaisesRegex(TypeError, 'unhashable type'): - hash(ba) - - def test_signature_bound_arguments_equality(self): - def foo(a): pass - ba = inspect.signature(foo).bind(1) - self.assertEqual(ba, ba) - - ba2 = inspect.signature(foo).bind(1) - self.assertEqual(ba, ba2) - - ba3 = inspect.signature(foo).bind(2) - self.assertNotEqual(ba, ba3) - ba3.arguments['a'] = 1 - self.assertEqual(ba, ba3) - - def bar(b): pass - ba4 = inspect.signature(bar).bind(1) - self.assertNotEqual(ba, ba4) diff --git a/tests/wpt/tests/tools/third_party/funcsigs/tox.ini b/tests/wpt/tests/tools/third_party/funcsigs/tox.ini deleted file mode 100644 index 1873c744a00..00000000000 --- a/tests/wpt/tests/tools/third_party/funcsigs/tox.ini +++ /dev/null @@ -1,8 +0,0 @@ -[tox] -envlist = py26, py27, py33, py34, py35, py36, pypy, pypy3 - -[testenv] -deps = -rrequirements/development.txt -commands = - coverage run setup.py test - coverage report --show-missing diff --git a/tests/wpt/tests/tools/webdriver/webdriver/bidi/error.py b/tests/wpt/tests/tools/webdriver/webdriver/bidi/error.py index 8507a51543d..4a9b4ba9db9 100644 --- a/tests/wpt/tests/tools/webdriver/webdriver/bidi/error.py +++ b/tests/wpt/tests/tools/webdriver/webdriver/bidi/error.py @@ -98,5 +98,5 @@ def get(error_code: str) -> Type[BidiException]: _errors: DefaultDict[str, Type[BidiException]] = collections.defaultdict() for item in list(locals().values()): - if type(item) == type and item != BidiException and issubclass(item, BidiException): + if isinstance(item, type) and item != BidiException and issubclass(item, BidiException): _errors[item.error_code] = item diff --git a/tests/wpt/tests/tools/webdriver/webdriver/error.py b/tests/wpt/tests/tools/webdriver/webdriver/error.py index 7d5d914a20c..25e4b39ae69 100644 --- a/tests/wpt/tests/tools/webdriver/webdriver/error.py +++ b/tests/wpt/tests/tools/webdriver/webdriver/error.py @@ -228,5 +228,5 @@ def get(error_code): _errors: DefaultDict[str, Type[WebDriverException]] = collections.defaultdict() for item in list(locals().values()): - if type(item) == type and item != WebDriverException and issubclass(item, WebDriverException): + if isinstance(item, type) and item != WebDriverException and issubclass(item, WebDriverException): _errors[item.status_code] = item diff --git a/tests/wpt/tests/tools/webtransport/h3/webtransport_h3_server.py b/tests/wpt/tests/tools/webtransport/h3/webtransport_h3_server.py index 0fc367e1ff4..8c55ba87e0e 100644 --- a/tests/wpt/tests/tools/webtransport/h3/webtransport_h3_server.py +++ b/tests/wpt/tests/tools/webtransport/h3/webtransport_h3_server.py @@ -53,6 +53,11 @@ class H3DatagramSetting(IntEnum): RFC = 0x33 +class WebTransportHttp3Setting(IntEnum): + # https://datatracker.ietf.org/doc/html/draft-ietf-webtrans-http3-07#section-8.2 + WEBTRANSPORT_MAX_SESSIONS_DRAFT07 = 0xc671706a + + class H3ConnectionWithDatagram(H3Connection): """ A H3Connection subclass, to make it work with the latest @@ -77,12 +82,13 @@ class H3ConnectionWithDatagram(H3Connection): if self._datagram_setting is None: raise SettingsError("HTTP Datagrams support required") - def _get_local_settings(self) -> Dict[int, int]: settings = super()._get_local_settings() settings[H3DatagramSetting.RFC] = 1 settings[H3DatagramSetting.DRAFT04] = 1 settings[H3ConnectionWithDatagram.ENABLE_CONNECT_PROTOCOL] = 1 + # This connection can handle only one WebTransport session. + settings[WebTransportHttp3Setting.WEBTRANSPORT_MAX_SESSIONS_DRAFT07] = 1 return settings @property diff --git a/tests/wpt/tests/tools/wpt/requirements_install.txt b/tests/wpt/tests/tools/wpt/requirements_install.txt index a299792b223..55bed99f8c5 100644 --- a/tests/wpt/tests/tools/wpt/requirements_install.txt +++ b/tests/wpt/tests/tools/wpt/requirements_install.txt @@ -1,2 +1,2 @@ -mozinstall==2.0.1 +mozinstall==2.1.0 packaging==23.1 diff --git a/tests/wpt/tests/tools/wptrunner/requirements.txt b/tests/wpt/tests/tools/wptrunner/requirements.txt index 8e47b2f229a..0b7ccba4fb8 100644 --- a/tests/wpt/tests/tools/wptrunner/requirements.txt +++ b/tests/wpt/tests/tools/wptrunner/requirements.txt @@ -1,6 +1,6 @@ html5lib==1.1 mozdebug==0.3.0 -mozinfo==1.2.2 # https://bugzilla.mozilla.org/show_bug.cgi?id=1621226 +mozinfo==1.2.3 # https://bugzilla.mozilla.org/show_bug.cgi?id=1621226 mozlog==8.0.0 mozprocess==1.3.1 packaging==23.1 diff --git a/tests/wpt/tests/tools/wptrunner/requirements_edge.txt b/tests/wpt/tests/tools/wptrunner/requirements_edge.txt index 45f93a3bb96..0ce4d76f8af 100644 --- a/tests/wpt/tests/tools/wptrunner/requirements_edge.txt +++ b/tests/wpt/tests/tools/wptrunner/requirements_edge.txt @@ -1 +1 @@ -selenium==4.10.0 +selenium==4.11.0 diff --git a/tests/wpt/tests/tools/wptrunner/requirements_firefox.txt b/tests/wpt/tests/tools/wptrunner/requirements_firefox.txt index 102b7460978..abbfd9a40a3 100644 --- a/tests/wpt/tests/tools/wptrunner/requirements_firefox.txt +++ b/tests/wpt/tests/tools/wptrunner/requirements_firefox.txt @@ -1,10 +1,10 @@ marionette_driver==3.3.0 mozcrash==2.2.0 mozdevice==4.1.1 -mozinstall==2.0.1 +mozinstall==2.1.0 mozleak==0.2 -mozprofile==2.5.0 -mozrunner==8.2.1 -mozversion==2.3.0 +mozprofile==2.6.0 +mozrunner==8.3.0 +mozversion==2.4.0 psutil==5.9.5 redo==2.0.4 diff --git a/tests/wpt/tests/tools/wptrunner/requirements_ie.txt b/tests/wpt/tests/tools/wptrunner/requirements_ie.txt index aa272e2bfdd..90a5512c79f 100644 --- a/tests/wpt/tests/tools/wptrunner/requirements_ie.txt +++ b/tests/wpt/tests/tools/wptrunner/requirements_ie.txt @@ -1,2 +1,2 @@ mozprocess==1.3.1 -selenium==4.10.0 +selenium==4.11.0 diff --git a/tests/wpt/tests/tools/wptrunner/requirements_opera.txt b/tests/wpt/tests/tools/wptrunner/requirements_opera.txt index aa272e2bfdd..90a5512c79f 100644 --- a/tests/wpt/tests/tools/wptrunner/requirements_opera.txt +++ b/tests/wpt/tests/tools/wptrunner/requirements_opera.txt @@ -1,2 +1,2 @@ mozprocess==1.3.1 -selenium==4.10.0 +selenium==4.11.0 diff --git a/tests/wpt/tests/tools/wptrunner/requirements_sauce.txt b/tests/wpt/tests/tools/wptrunner/requirements_sauce.txt index 5740883d351..8cf3f1d32c8 100644 --- a/tests/wpt/tests/tools/wptrunner/requirements_sauce.txt +++ b/tests/wpt/tests/tools/wptrunner/requirements_sauce.txt @@ -1,2 +1,2 @@ -selenium==4.10.0 +selenium==4.11.0 requests==2.31.0 diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py index 880c2bd187a..13755932858 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py @@ -5,6 +5,7 @@ import os import platform import signal import subprocess +import sys import tempfile import time from abc import ABCMeta, abstractmethod @@ -93,33 +94,36 @@ def check_args(**kwargs): def browser_kwargs(logger, test_type, run_info_data, config, **kwargs): - return {"binary": kwargs["binary"], - "webdriver_binary": kwargs["webdriver_binary"], - "webdriver_args": kwargs["webdriver_args"], - "prefs_root": kwargs["prefs_root"], - "extra_prefs": kwargs["extra_prefs"], - "test_type": test_type, - "debug_info": kwargs["debug_info"], - "symbols_path": kwargs["symbols_path"], - "stackwalk_binary": kwargs["stackwalk_binary"], - "certutil_binary": kwargs["certutil_binary"], - "ca_certificate_path": config.ssl_config["ca_cert_path"], - "e10s": kwargs["gecko_e10s"], - "enable_fission": run_info_data["fission"], - "stackfix_dir": kwargs["stackfix_dir"], - "binary_args": kwargs["binary_args"], - "timeout_multiplier": get_timeout_multiplier(test_type, - run_info_data, - **kwargs), - "leak_check": run_info_data["debug"] and (kwargs["leak_check"] is not False), - "asan": run_info_data.get("asan"), - "chaos_mode_flags": kwargs["chaos_mode_flags"], - "config": config, - "browser_channel": kwargs["browser_channel"], - "headless": kwargs["headless"], - "preload_browser": kwargs["preload_browser"] and not kwargs["pause_after_test"] and not kwargs["num_test_groups"] == 1, - "specialpowers_path": kwargs["specialpowers_path"], - "debug_test": kwargs["debug_test"]} + browser_kwargs = {"binary": kwargs["binary"], + "webdriver_binary": kwargs["webdriver_binary"], + "webdriver_args": kwargs["webdriver_args"], + "prefs_root": kwargs["prefs_root"], + "extra_prefs": kwargs["extra_prefs"], + "test_type": test_type, + "debug_info": kwargs["debug_info"], + "symbols_path": kwargs["symbols_path"], + "stackwalk_binary": kwargs["stackwalk_binary"], + "certutil_binary": kwargs["certutil_binary"], + "ca_certificate_path": config.ssl_config["ca_cert_path"], + "e10s": kwargs["gecko_e10s"], + "enable_fission": run_info_data["fission"], + "stackfix_dir": kwargs["stackfix_dir"], + "binary_args": kwargs["binary_args"], + "timeout_multiplier": get_timeout_multiplier(test_type, + run_info_data, + **kwargs), + "leak_check": run_info_data["debug"] and (kwargs["leak_check"] is not False), + "asan": run_info_data.get("asan"), + "chaos_mode_flags": kwargs["chaos_mode_flags"], + "config": config, + "browser_channel": kwargs["browser_channel"], + "headless": kwargs["headless"], + "preload_browser": kwargs["preload_browser"] and not kwargs["pause_after_test"] and not kwargs["num_test_groups"] == 1, + "specialpowers_path": kwargs["specialpowers_path"], + "debug_test": kwargs["debug_test"]} + if test_type == "wdspec" and kwargs["binary"]: + browser_kwargs["webdriver_args"].extend(["--binary", kwargs["binary"]]) + return browser_kwargs def executor_kwargs(logger, test_type, test_environment, run_info_data, @@ -139,8 +143,6 @@ def executor_kwargs(logger, test_type, test_environment, run_info_data, if test_type == "wdspec": options = {"args": []} if kwargs["binary"]: - if "webdriver_args" not in executor_kwargs: - executor_kwargs["webdriver_args"] = [] executor_kwargs["webdriver_args"].extend(["--binary", kwargs["binary"]]) if kwargs["binary_args"]: options["args"] = kwargs["binary_args"] @@ -244,10 +246,21 @@ def log_gecko_crashes(logger, process, test, profile_dir, symbols_path, stackwal def get_environ(logger, binary, debug_info, headless, chaos_mode_flags=None): - env = test_environment(xrePath=os.path.abspath(os.path.dirname(binary)), - debugger=debug_info is not None, - useLSan=True, - log=logger) + # Hack: test_environment expects a bin_suffix key in mozinfo that in gecko infrastructure + # is set in the build system. Set it manually here. + if "bin_suffix" not in mozinfo.info: + mozinfo.info["bin_suffix"] = (".exe" if sys.platform in ["win32", "msys", "cygwin"] + else "") + + # test_environment has started returning None values for some environment variables + # that are only set in a gecko checkout + env = {key: value for key, value in + test_environment(xrePath=os.path.abspath(os.path.dirname(binary)), + debugger=debug_info is not None, + useLSan=True, + log=logger).items() + if value is not None} + # Disable window occlusion. Bug 1733955 env["MOZ_WINDOW_OCCLUSION"] = "0" if chaos_mode_flags is not None: diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py index 17be0cec39f..b148365780b 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py @@ -35,10 +35,10 @@ def executor_kwargs(test_type, test_environment, run_info_data, **kwargs): executor_kwargs["reftest_screenshot"] = kwargs["reftest_screenshot"] if test_type == "wdspec": - executor_kwargs["binary"] = kwargs.get("binary") - executor_kwargs["binary_args"] = kwargs.get("args") - executor_kwargs["webdriver_binary"] = kwargs.get("webdriver_binary") - executor_kwargs["webdriver_args"] = kwargs.get("webdriver_args") + executor_kwargs["binary"] = kwargs["binary"] + executor_kwargs["binary_args"] = kwargs["binary_args"].copy() + executor_kwargs["webdriver_binary"] = kwargs["webdriver_binary"] + executor_kwargs["webdriver_args"] = kwargs["webdriver_args"].copy() # By default the executor may try to cleanup windows after a test (to best # associate any problems with the test causing them). If the user might @@ -104,7 +104,7 @@ def _ensure_hash_in_reftest_screenshots(extra): if not log_data: return for item in log_data: - if type(item) != dict: + if not isinstance(item, dict): # Skip relation strings. continue if "hash" not in item: diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/formatters/wptreport.py b/tests/wpt/tests/tools/wptrunner/wptrunner/formatters/wptreport.py index be6cca2afc4..21c12115801 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/formatters/wptreport.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/formatters/wptreport.py @@ -91,7 +91,7 @@ class WptreportFormatter(BaseFormatter): # type: ignore test["screenshots"] = { strip_server(item["url"]): "sha1:" + item["hash"] for item in data["extra"]["reftest_screenshots"] - if type(item) == dict + if isinstance(item, dict) } test_name = data["test"] result = {"test": data["test"]} diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/formatters/wptscreenshot.py b/tests/wpt/tests/tools/wptrunner/wptrunner/formatters/wptscreenshot.py index 2b2d1ad49d5..989559701a4 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/formatters/wptscreenshot.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/formatters/wptscreenshot.py @@ -38,7 +38,7 @@ class WptscreenshotFormatter(BaseFormatter): # type: ignore return output = "" for item in data["extra"]["reftest_screenshots"]: - if type(item) != dict: + if not isinstance(item, dict): # Skip the relation string. continue checksum = "sha1:" + item["hash"] diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/testloader.py b/tests/wpt/tests/tools/wptrunner/wptrunner/testloader.py index 8cd24f2f5ae..86004b83387 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/testloader.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/testloader.py @@ -185,11 +185,17 @@ class TestFilter: class TagFilter: - def __init__(self, tags): - self.tags = set(tags) + def __init__(self, include_tags, exclude_tags): + self.include_tags = set(include_tags) if include_tags else None + self.exclude_tags = set(exclude_tags) if exclude_tags else None def __call__(self, test): - return test.tags & self.tags + does_match = True + if self.include_tags: + does_match &= bool(test.tags & self.include_tags) + if self.exclude_tags: + does_match &= not (test.tags & self.exclude_tags) + return does_match class ManifestLoader: diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py index b405dabd1dd..7715289a624 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py @@ -296,16 +296,16 @@ class TestRunnerManager(threading.Thread): self.test_implementation_by_type = {} for test_type, test_implementation in test_implementation_by_type.items(): - kwargs = test_implementation.browser_kwargs - if kwargs.get("device_serial"): - kwargs = kwargs.copy() + browser_kwargs = test_implementation.browser_kwargs + if browser_kwargs.get("device_serial"): + browser_kwargs = browser_kwargs.copy() # Assign Android device to runner according to current manager index - kwargs["device_serial"] = kwargs["device_serial"][index] + browser_kwargs["device_serial"] = browser_kwargs["device_serial"][index] self.test_implementation_by_type[test_type] = TestImplementation( test_implementation.executor_cls, test_implementation.executor_kwargs, test_implementation.browser_cls, - kwargs) + browser_kwargs) else: self.test_implementation_by_type[test_type] = test_implementation diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/tests/test_testloader.py b/tests/wpt/tests/tools/wptrunner/wptrunner/tests/test_testloader.py index cef75e03be1..6e93a20e02e 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/tests/test_testloader.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/tests/test_testloader.py @@ -132,6 +132,72 @@ def test_filter_unicode(): TestFilter(manifest_path=f.name, test_manifests=tests) +def test_tag_filter(): + # Mock a structure with what `TagFilter` actually uses + class Tagged: + def __init__(self, tags): + self.tags = set(tags) + + # Case: empty filter (allow anything) + filter = TagFilter({}, {}) + assert filter(Tagged({})) + assert filter(Tagged({'a'})) + assert filter(Tagged({'a', 'b'})) + + # Case: only inclusion specified, single tag + filter = TagFilter({'a'}, {}) + assert not filter(Tagged({})) # no `'a'`, no entry + assert filter(Tagged({'a'})) + assert not filter(Tagged({'b'})) + assert filter(Tagged({'a', 'b'})) + + # Case: only inclusion specified, multiple tags + filter = TagFilter({'a', 'b'}, {}) + assert not filter(Tagged({})) + assert filter(Tagged({'a'})) + assert filter(Tagged({'a', 'b'})) + assert filter(Tagged({'b'})) + assert not filter(Tagged({'c'})) + + # Case: only exclusion specified, single tag + filter = TagFilter({}, {'a'}) + assert filter(Tagged({})) # no `'a'`, no entry + assert not filter(Tagged({'a'})) + assert not filter(Tagged({'a', 'b'})) + assert filter(Tagged({'b'})) + + # Case: only exclusion specified, multiple tags + filter = TagFilter({}, {'a', 'b'}) + assert filter(Tagged({})) + assert not filter(Tagged({'a'})) + assert not filter(Tagged({'b'})) + assert filter(Tagged({'c'})) + + # Case: disjoint inclusion and exclusion + filter = TagFilter({'a'}, {'b'}) + assert not filter(Tagged({})) + assert filter(Tagged({'a'})) + assert not filter(Tagged({'b'})) + assert not filter(Tagged({'a', 'b'})) # `exclude` overrides `include` + + # Case: intersecting inclusion and exclusion + filter = TagFilter({'a'}, {'a'}) + assert not filter(Tagged({})) + assert not filter(Tagged({'a'})) + assert not filter(Tagged({'a', 'b'})) # exclusion takes precedence + assert not filter(Tagged({'b'})) + filter = TagFilter({'a', 'b'}, {'a'}) + assert not filter(Tagged({})) + assert not filter(Tagged({'a'})) + assert not filter(Tagged({'a', 'b'})) + assert filter(Tagged({'b'})) + filter = TagFilter({'a'}, {'a', 'b'}) + assert not filter(Tagged({})) + assert not filter(Tagged({'a'})) + assert not filter(Tagged({'a', 'b'})) # exclusion takes precedence + assert not filter(Tagged({'b'})) + + def test_loader_filter_tags(): manifest_json = { "items": { @@ -141,11 +207,21 @@ def test_loader_filter_tags(): "abcdef123456", [None, {}], ], - "bar.html": [ + "bar.html": [ # will have `test-include` tag "uvwxyz987654", [None, {}], ], - } + }, + "b": { + "baz.html": [ # will have `test-include`, `test-exclude` tags + "quertyuiop@!", + [None, {}], + ], + "quux.html": [ + "asdfghjkl_-'", + [None, {}], + ], + }, } }, "url_base": "/", @@ -162,15 +238,48 @@ def test_loader_filter_tags(): 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 + b_path = os.path.join(metadata_path, "b") + os.makedirs(b_path) + with open(os.path.join(b_path, "baz.html.ini"), "w") as f: + f.write("tags: [test-include, test-exclude]\n") + + # Check: no filter loads all tests + loader = TestLoader({manifest: {"metadata_path": metadata_path}}, ["testharness"], None) + assert len(loader.tests["testharness"]) == 4 + + # Check: specifying a single `test-include` inclusion yields `/a/bar` and `/b/baz` loader = TestLoader({manifest: {"metadata_path": metadata_path}}, ["testharness"], None, - test_filters=[TagFilter({"test-include"})]) + test_filters=[TagFilter({"test-include"}, {})]) + assert len(loader.tests["testharness"]) == 2 + assert loader.tests["testharness"][0].id == "/a/bar.html" + assert loader.tests["testharness"][0].tags == {"dir:a", "test-include"} + assert loader.tests["testharness"][1].id == "/b/baz.html" + assert loader.tests["testharness"][1].tags == {"dir:b", "test-include", "test-exclude"} + + # Check: specifying a single `test-exclude` exclusion rejects only `/b/baz` + loader = TestLoader({manifest: {"metadata_path": metadata_path}}, ["testharness"], None, + test_filters=[TagFilter({}, {"test-exclude"})]) + assert len(loader.tests["testharness"]) == 3 + assert all(test.id != "/b/baz.html" for test in loader.tests["testharness"]) + + # Check: including `test-include` and excluding `test-exclude` yields only `/a/bar` + loader = TestLoader({manifest: {"metadata_path": metadata_path}}, ["testharness"], None, + test_filters=[TagFilter({"test-include"}, {"test-exclude"})]) 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"} + # Check: non-empty intersection of inclusion and exclusion yield zero tests + + loader = TestLoader({manifest: {"metadata_path": metadata_path}}, ["testharness"], None, + test_filters=[TagFilter({"test-include"}, {"test-include"})]) + assert len(loader.tests["testharness"]) == 0 + + loader = TestLoader({manifest: {"metadata_path": metadata_path}}, ["testharness"], None, + test_filters=[TagFilter({"test-include", "test-exclude"}, {"test-include"})]) + assert len(loader.tests["testharness"]) == 0 + def test_chunk_hash(manifest): chunker1 = PathHashChunker(total_chunks=2, chunk_number=1) diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/wptcommandline.py b/tests/wpt/tests/tools/wptrunner/wptrunner/wptcommandline.py index 875ba7e66a9..6c7294e81e7 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/wptcommandline.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/wptcommandline.py @@ -167,6 +167,9 @@ scheme host and port.""") test_selection_group.add_argument("--tag", action="append", dest="tags", help="Labels applied to tests to include in the run. " "Labels starting dir: are equivalent to top-level directories.") + test_selection_group.add_argument("--exclude-tag", action="append", dest="exclude_tags", + help="Labels applied to tests to exclude in the run. Takes precedence over `--tag`. " + "Labels starting dir: are equivalent to top-level directories.") test_selection_group.add_argument("--default-exclude", action="store_true", default=False, help="Only run the tests explicitly given in arguments. " @@ -662,6 +665,11 @@ def check_args(kwargs): # Default to preloading a gecko instance if we're only running a single process kwargs["preload_browser"] = kwargs["processes"] == 1 + if kwargs["tags"] and kwargs["exclude_tags"]: + contradictory = set(kwargs["tags"]) & set(kwargs["exclude_tags"]) + if contradictory: + print("contradictory tags found; exclusion will take precedence:", contradictory) + return kwargs diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/tests/tools/wptrunner/wptrunner/wptrunner.py index 687a9d46c8e..0cb71bcbfad 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/wptrunner.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/wptrunner.py @@ -76,8 +76,8 @@ 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 kwargs["tags"] or kwargs["exclude_tags"]: + test_filters.append(testloader.TagFilter(kwargs["tags"], kwargs["exclude_tags"])) if include or kwargs["exclude"] or kwargs["include_manifest"] or kwargs["default_exclude"]: manifest_filters.append(testloader.TestFilter(include=include, @@ -163,17 +163,19 @@ def get_pause_after_test(test_loader, **kwargs): def run_test_iteration(test_status, test_loader, test_source_kwargs, test_source_cls, run_info, - recording, test_environment, product, run_test_kwargs): + recording, test_environment, product, kwargs): """Runs the entire test suite. This is called for each repeat run requested.""" tests_by_type = defaultdict(list) for test_type in test_loader.test_types: - tests_by_type[test_type].extend(test_loader.tests[test_type]) - tests_by_type[test_type].extend(test_loader.disabled_tests[test_type]) + type_tests_active = test_loader.tests[test_type] + type_tests_disabled = test_loader.disabled_tests[test_type] + if type_tests_active or type_tests_disabled: + tests_by_type[test_type].extend(type_tests_active) + tests_by_type[test_type].extend(type_tests_disabled) try: - test_groups = test_source_cls.tests_by_group( - tests_by_type, **test_source_kwargs) + test_groups = test_source_cls.tests_by_group(tests_by_type, **test_source_kwargs) except Exception: logger.critical("Loading tests failed") return False @@ -181,11 +183,13 @@ def run_test_iteration(test_status, test_loader, test_source_kwargs, test_source logger.suite_start(tests_by_type, name='web-platform-test', run_info=run_info, - extra={"run_by_dir": run_test_kwargs["run_by_dir"]}) + extra={"run_by_dir": kwargs["run_by_dir"]}) test_implementation_by_type = {} - for test_type in run_test_kwargs["test_types"]: + for test_type in kwargs["test_types"]: + if test_type not in tests_by_type: + continue executor_cls = product.executor_classes.get(test_type) if executor_cls is None: logger.warning(f"Unsupported test type {test_type} for product {product.name}") @@ -194,14 +198,14 @@ def run_test_iteration(test_status, test_loader, test_source_kwargs, test_source test_type, test_environment, run_info, - **run_test_kwargs) + **kwargs) browser_cls = product.get_browser_cls(test_type) browser_kwargs = product.get_browser_kwargs(logger, test_type, run_info, config=test_environment.config, num_test_groups=len(test_groups), - **run_test_kwargs) + **kwargs) test_implementation_by_type[test_type] = TestImplementation(executor_cls, executor_kwargs, browser_cls, @@ -232,10 +236,10 @@ def run_test_iteration(test_status, test_loader, test_source_kwargs, test_source unexpected_tests = set() unexpected_pass_tests = set() recording.pause() - retry_counts = run_test_kwargs["retry_unexpected"] + retry_counts = kwargs["retry_unexpected"] for i in range(retry_counts + 1): if i > 0: - if not run_test_kwargs["fail_on_unexpected_pass"]: + if not kwargs["fail_on_unexpected_pass"]: unexpected_fail_tests = unexpected_tests - unexpected_pass_tests else: unexpected_fail_tests = unexpected_tests @@ -249,19 +253,19 @@ def run_test_iteration(test_status, test_loader, test_source_kwargs, test_source logger.suite_start(tests_to_run, name='web-platform-test', run_info=run_info, - extra={"run_by_dir": run_test_kwargs["run_by_dir"]}) + extra={"run_by_dir": kwargs["run_by_dir"]}) with ManagerGroup("web-platform-tests", test_source_cls, test_source_kwargs, test_implementation_by_type, - run_test_kwargs["rerun"], - run_test_kwargs["pause_after_test"], - run_test_kwargs["pause_on_unexpected"], - run_test_kwargs["restart_on_unexpected"], - run_test_kwargs["debug_info"], - not run_test_kwargs["no_capture_stdio"], - run_test_kwargs["restart_on_new_group"], + kwargs["rerun"], + kwargs["pause_after_test"], + kwargs["pause_on_unexpected"], + kwargs["restart_on_unexpected"], + kwargs["debug_info"], + not kwargs["no_capture_stdio"], + kwargs["restart_on_new_group"], recording=recording) as manager_group: try: handle_interrupt_signals() @@ -293,26 +297,26 @@ def handle_interrupt_signals(): signal.signal(signal.SIGTERM, termination_handler) -def evaluate_runs(test_status, run_test_kwargs): +def evaluate_runs(test_status, **kwargs): """Evaluates the test counts after the given number of repeat runs has finished""" if test_status.total_tests == 0: if test_status.skipped > 0: logger.warning("All requested tests were skipped") else: - if run_test_kwargs["default_exclude"]: + if kwargs["default_exclude"]: logger.info("No tests ran") return True else: logger.critical("No tests ran") return False - if test_status.unexpected and not run_test_kwargs["fail_on_unexpected"]: + if test_status.unexpected and not kwargs["fail_on_unexpected"]: logger.info(f"Tolerating {test_status.unexpected} unexpected results") return True all_unexpected_passed = (test_status.unexpected and test_status.unexpected == test_status.unexpected_pass) - if all_unexpected_passed and not run_test_kwargs["fail_on_unexpected_pass"]: + if all_unexpected_passed and not kwargs["fail_on_unexpected_pass"]: logger.info(f"Tolerating {test_status.unexpected_pass} unexpected results " "because they all PASS") return True @@ -475,7 +479,7 @@ def run_tests(config, test_paths, product, **kwargs): break # Return the evaluation of the runs and the number of repeated iterations that were run. - return evaluate_runs(test_status, kwargs), test_status + return evaluate_runs(test_status, **kwargs), test_status def check_stability(**kwargs): diff --git a/tests/wpt/tests/webcodecs/videoFrame-construction.crossOriginSource.sub.html b/tests/wpt/tests/webcodecs/videoFrame-construction.crossOriginSource.sub.html index 81906d33b79..172580f83cc 100644 --- a/tests/wpt/tests/webcodecs/videoFrame-construction.crossOriginSource.sub.html +++ b/tests/wpt/tests/webcodecs/videoFrame-construction.crossOriginSource.sub.html @@ -1,222 +1,219 @@ - + + - - - + function run_test(test) { + promise_test(async t => { + const source = await test.factory(); + if (test.should_throw) { + assert_throws_dom('SecurityError', () => { create_frame(source); }); + } else { + create_frame(source); + } + }, test.title); + } + + function create_frame(img) { + let frame = new VideoFrame(img, { timestamp: 0 }); + frame.close(); + } + + function on_frame_available(video, callback) { + if ('requestVideoFrameCallback' in video) + video.requestVideoFrameCallback(callback); + else + video.onloadeddata = callback; + } + + + diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/__init__.py index 8abf012f276..e74de268093 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/__init__.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/__init__.py @@ -70,6 +70,16 @@ def assert_navigation_info(event, expected_navigation_info): assert event["url"] == expected_navigation_info["url"] +async def get_document_focus(bidi_session, context: Mapping[str, Any]) -> str: + result = await bidi_session.script.call_function( + function_declaration="""() => { + return document.hasFocus(); + }""", + target=ContextTarget(context["context"]), + await_promise=False) + return result["value"] + + async def get_visibility_state(bidi_session, context: Mapping[str, Any]) -> str: result = await bidi_session.script.call_function( function_declaration="""() => { diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/activate/activate.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/activate/activate.py index 3d20a4f6464..0abbbbac38e 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/activate/activate.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/activate/activate.py @@ -1,34 +1,41 @@ import pytest from webdriver.bidi.modules.script import ContextTarget -from . import get_visibility_state, is_selector_focused +from . import is_selector_focused +from .. import get_document_focus, get_visibility_state -@pytest.mark.asyncio -async def test_activate(bidi_session, new_tab): - assert await get_visibility_state(bidi_session, new_tab) == 'hidden' - - await bidi_session.browsing_context.activate(context=new_tab["context"]) - - assert await get_visibility_state(bidi_session, new_tab) == 'visible' +pytestmark = pytest.mark.asyncio + + +async def test_activate(bidi_session, new_tab, top_context): + assert await get_document_focus(bidi_session, top_context) is False + + await bidi_session.browsing_context.activate(context=top_context["context"]) + + assert await get_visibility_state(bidi_session, top_context) == 'visible' + assert await get_document_focus(bidi_session, top_context) is True -@pytest.mark.asyncio async def test_deactivates_other_contexts(bidi_session, new_tab, top_context): await bidi_session.browsing_context.activate(context=top_context["context"]) assert await get_visibility_state(bidi_session, top_context) == 'visible' - assert await get_visibility_state(bidi_session, new_tab) == 'hidden' + assert await get_document_focus(bidi_session, top_context) is True + + assert await get_document_focus(bidi_session, new_tab) is False await bidi_session.browsing_context.activate(context=new_tab["context"]) - assert await get_visibility_state(bidi_session, top_context) == 'hidden' + assert await get_document_focus(bidi_session, top_context) is False + assert await get_visibility_state(bidi_session, new_tab) == 'visible' + assert await get_document_focus(bidi_session, new_tab) is True -@pytest.mark.asyncio async def test_keeps_focused_area(bidi_session, inline, new_tab, top_context): await bidi_session.browsing_context.activate(context=new_tab["context"]) assert await get_visibility_state(bidi_session, new_tab) == 'visible' + assert await get_document_focus(bidi_session, new_tab) is True await bidi_session.browsing_context.navigate(context=new_tab["context"], url=inline(""), @@ -42,18 +49,19 @@ async def test_keeps_focused_area(bidi_session, inline, new_tab, top_context): assert await is_selector_focused(bidi_session, new_tab, "input") await bidi_session.browsing_context.activate(context=top_context["context"]) - assert await get_visibility_state(bidi_session, new_tab) == 'hidden' + assert await get_document_focus(bidi_session, new_tab) is False assert await is_selector_focused(bidi_session, new_tab, "input") await bidi_session.browsing_context.activate(context=new_tab["context"]) assert await get_visibility_state(bidi_session, new_tab) == 'visible' + assert await get_document_focus(bidi_session, new_tab) is True assert await is_selector_focused(bidi_session, new_tab, "input") -@pytest.mark.asyncio -async def test_double_activation(bidi_session, inline, new_tab, top_context): +async def test_double_activation(bidi_session, inline, new_tab): await bidi_session.browsing_context.activate(context=new_tab["context"]) assert await get_visibility_state(bidi_session, new_tab) == 'visible' + assert await get_document_focus(bidi_session, new_tab) is True await bidi_session.browsing_context.navigate(context=new_tab["context"], url=inline(""), @@ -62,9 +70,26 @@ async def test_double_activation(bidi_session, inline, new_tab, top_context): await bidi_session.browsing_context.activate(context=new_tab["context"]) assert await get_visibility_state(bidi_session, new_tab) == 'visible' + assert await get_document_focus(bidi_session, new_tab) is True assert await is_selector_focused(bidi_session, new_tab, "input") # Activate again. await bidi_session.browsing_context.activate(context=new_tab["context"]) assert await get_visibility_state(bidi_session, new_tab) == 'visible' + assert await get_document_focus(bidi_session, new_tab) is True assert await is_selector_focused(bidi_session, new_tab, "input") + + +async def test_activate_window(bidi_session): + new_window_1 = await bidi_session.browsing_context.create(type_hint="window") + new_window_2 = await bidi_session.browsing_context.create(type_hint="window") + + assert await get_visibility_state(bidi_session, new_window_2) == 'visible' + assert await get_document_focus(bidi_session, new_window_2) is True + + assert await get_document_focus(bidi_session, new_window_1) is False + + await bidi_session.browsing_context.activate(context=new_window_1["context"]) + + assert await get_visibility_state(bidi_session, new_window_1) == 'visible' + assert await get_document_focus(bidi_session, new_window_1) is True diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/create/background.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/create/background.py index cf9a167022c..f1effe05372 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/create/background.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/create/background.py @@ -2,24 +2,31 @@ import pytest pytestmark = pytest.mark.asyncio -from .. import get_visibility_state +from .. import get_document_focus, get_visibility_state + @pytest.mark.parametrize("type_hint", ["tab", "window"]) async def test_background_default_false(bidi_session, type_hint): new_context = await bidi_session.browsing_context.create(type_hint=type_hint) try: - assert await get_visibility_state(bidi_session, new_context) == "visible" + assert await get_visibility_state(bidi_session, new_context) == "visible" + assert await get_document_focus(bidi_session, new_context) is True finally: - await bidi_session.browsing_context.close(context=new_context["context"]) + await bidi_session.browsing_context.close(context=new_context["context"]) @pytest.mark.parametrize("type_hint", ["tab", "window"]) @pytest.mark.parametrize("background", [True, False]) -async def test_background(bidi_session, type_hint, background): +async def test_background(bidi_session, top_context, type_hint, background): new_context = await bidi_session.browsing_context.create(type_hint=type_hint, background=background) try: - assert await get_visibility_state(bidi_session, new_context) == ("hidden" if background else "visible") + if background: + assert await get_visibility_state(bidi_session, top_context) == "visible" + else: + assert await get_visibility_state(bidi_session, new_context) == "visible" + + assert await get_document_focus(bidi_session, new_context) != background finally: - await bidi_session.browsing_context.close(context=new_context["context"]) + await bidi_session.browsing_context.close(context=new_context["context"]) diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/create/invalid.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/create/invalid.py index 5de171b1b61..bad84017245 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/create/invalid.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/create/invalid.py @@ -53,7 +53,7 @@ async def test_params_type_invalid_value(bidi_session, value): await bidi_session.browsing_context.create(type_hint=value) -@pytest.mark.parametrize("value", [None, '', 42, {}, []]) +@pytest.mark.parametrize("value", ['', 42, {}, []]) async def test_params_background_invalid_type(bidi_session, value): with pytest.raises(error.InvalidArgumentException): await bidi_session.browsing_context.create(type_hint="tab", background = value) diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/error.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/error.py index b5d9a9d8fe7..ba23e773000 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/error.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/error.py @@ -9,8 +9,8 @@ pytestmark = pytest.mark.asyncio "url", [ "thisprotocoldoesnotexist://", - "http://doesnotexist.localhost/", - "http://localhost:0", + "https://doesnotexist.localhost/", + "https://localhost:0", ], ids=[ "protocol", diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/invalid.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/invalid.py index 3ea45f06665..1f33604c4d0 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/invalid.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/invalid.py @@ -28,11 +28,12 @@ async def test_params_url_invalid_type(bidi_session, new_tab, value): ) -@pytest.mark.parametrize("value", ["http://:invalid", "http://#invalid"]) -async def test_params_url_invalid_value(bidi_session, new_tab, value): +@pytest.mark.parametrize("protocol", ["http", "https"]) +@pytest.mark.parametrize("value", [":invalid", "#invalid"]) +async def test_params_url_invalid_value(bidi_session, new_tab, protocol, value): with pytest.raises(error.InvalidArgumentException): await bidi_session.browsing_context.navigate( - context=new_tab["context"], url=value + context=new_tab["context"], url=f"{protocol}://{value}" ) diff --git a/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/pointer_mouse.py b/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/pointer_mouse.py index 7e262581018..bb5d78f3013 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/pointer_mouse.py +++ b/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/pointer_mouse.py @@ -211,11 +211,12 @@ async def test_drag_and_drop( @pytest.mark.parametrize("drag_duration", [0, 300, 800]) -async def test_drag_and_drop_with_draggable_element( - bidi_session, top_context, get_element, load_static_test_page, drag_duration -): - new_context = await bidi_session.browsing_context.create(type_hint="window") - await load_static_test_page(page="test_actions.html", context=new_context) +async def test_drag_and_drop_with_draggable_element(bidi_session, top_context, + get_element, + load_static_test_page, + drag_duration): + await load_static_test_page(page="test_actions.html") + drag_target = await get_element("#draggable") drop_target = await get_element("#droppable") @@ -226,29 +227,59 @@ async def test_drag_and_drop_with_draggable_element( actions.add_pointer() .pointer_move(x=0, y=0, origin=get_element_origin(drag_target)) .pointer_down(button=0) - .pointer_move( - x=50, y=25, duration=drag_duration, origin=get_element_origin(drop_target) - ) + .pointer_move(x=0, y=0, duration=drag_duration, origin=get_element_origin(drop_target)) .pointer_up(button=0) - .pointer_move(80, 50, duration=100, origin="pointer") ) - await bidi_session.input.perform_actions( - actions=actions, context=new_context["context"] - ) + await bidi_session.input.perform_actions(actions=actions, + context=top_context["context"]) # mouseup that ends the drag is at the expected destination - events = await get_events(bidi_session, new_context["context"]) + events = await get_events(bidi_session, top_context["context"]) - assert len(events) >= 5 - assert events[1]["type"] == "dragstart", f"Events captured were {events}" - assert events[2]["type"] == "dragover", f"Events captured were {events}" drag_events_captured = [ - ev["type"] - for ev in events + ev["type"] for ev in events if ev["type"].startswith("drag") or ev["type"].startswith("drop") ] - assert "dragend" in drag_events_captured + assert "dragstart" in drag_events_captured assert "dragenter" in drag_events_captured - assert "dragleave" in drag_events_captured + # dragleave never happens if the mouse moves directly into the drop element + # without intermediate movements. + if drag_duration != 0: + assert "dragleave" in drag_events_captured + assert "dragover" in drag_events_captured assert "drop" in drag_events_captured + assert "dragend" in drag_events_captured + + def last_index(list, value): + return len(list) - list[::-1].index(value) - 1 + + # The order should follow the diagram: + # + # - dragstart + # - dragenter + # - ... + # - dragenter + # - dragleave + # - ... + # - dragleave + # - dragover + # - ... + # - dragover + # - drop + # - dragend + # + assert drag_events_captured.index( + "dragstart") < drag_events_captured.index("dragenter") + if drag_duration != 0: + assert last_index(drag_events_captured, + "dragenter") < last_index(drag_events_captured, "dragleave") + assert last_index(drag_events_captured, + "dragleave") < last_index(drag_events_captured, "dragover") + else: + assert last_index(drag_events_captured, + "dragenter") < last_index(drag_events_captured, "dragover") + assert last_index(drag_events_captured, + "dragover") < drag_events_captured.index("drop") + assert drag_events_captured.index( + "drop") == drag_events_captured.index("dragend") - 1 diff --git a/tests/wpt/tests/webdriver/tests/bidi/script/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/script/__init__.py index 901b412458b..5635a4bbfb0 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/script/__init__.py +++ b/tests/wpt/tests/webdriver/tests/bidi/script/__init__.py @@ -68,7 +68,7 @@ PRIMITIVE_VALUES: list[tuple[str, dict]] = [ ("null", {"type": "null"}), ("'foobar'", {"type": "string", "value": "foobar"}), ("'2'", {"type": "string", "value": "2"}), - ("Number.NaN", {"type": "number", "value": "NaN"}), + ("NaN", {"type": "number", "value": "NaN"}), ("-0", {"type": "number", "value": "-0"}), ("Infinity", {"type": "number", "value": "Infinity"}), ("-Infinity", {"type": "number", "value": "-Infinity"}), diff --git a/tests/wpt/tests/webdriver/tests/bidi/script/call_function/arguments.py b/tests/wpt/tests/webdriver/tests/bidi/script/call_function/arguments.py index 32a4a6a2b8f..b1b188187ba 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/script/call_function/arguments.py +++ b/tests/wpt/tests/webdriver/tests/bidi/script/call_function/arguments.py @@ -23,7 +23,11 @@ async def test_default_arguments(bidi_session, top_context): async def test_primitive_value(bidi_session, top_context, argument, expected): result = await bidi_session.script.call_function( function_declaration=f"""(arg) => {{ - if (arg !== {expected}) {{ + if (typeof {expected} === "number" && isNaN({expected})) {{ + if (!isNaN(arg)) {{ + throw new Error(`Argument should be {expected}, but was ` + arg); + }} + }} else if (arg !== {expected}) {{ throw new Error(`Argument should be {expected}, but was ` + arg); }} return arg; @@ -36,24 +40,6 @@ async def test_primitive_value(bidi_session, top_context, argument, expected): 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", diff --git a/tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py b/tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py index 3a19432fc6a..24b71c52fdd 100644 --- a/tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py +++ b/tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py @@ -121,7 +121,7 @@ def test_add_domain_cookie(session, url, server_config): cookie["domain"] == ".%s" % server_config["browser_host"] -def test_add_cookie_for_ip(session, url, server_config, configuration): +def test_add_cookie_for_ip(session, server_config): new_cookie = { "name": "hello", "value": "world", @@ -131,7 +131,9 @@ def test_add_cookie_for_ip(session, url, server_config, configuration): "secure": False } - session.url = "http://127.0.0.1:%s/common/blank.html" % (server_config["ports"]["http"][0]) + port = server_config["ports"]["http"][0] + session.url = f"http://127.0.0.1:{port}/common/blank.html" + clear_all_cookies(session) result = add_cookie(session, new_cookie) diff --git a/tests/wpt/tests/webdriver/tests/classic/element_click/navigate.py b/tests/wpt/tests/webdriver/tests/classic/element_click/navigate.py index e92c11bb135..fa35b7ae6e3 100644 --- a/tests/wpt/tests/webdriver/tests/classic/element_click/navigate.py +++ b/tests/wpt/tests/webdriver/tests/classic/element_click/navigate.py @@ -14,53 +14,47 @@ def element_click(session, element): element_id=element.id)) -def test_numbers_link(session, server_config, inline): +def test_numbers_link(session, inline, url): link = "/webdriver/tests/classic/element_click/support/input.html" - session.url = inline("123456".format(url=link)) + session.url = inline(f"123456") element = session.find.css("a", all=False) response = element_click(session, element) assert_success(response) - host = server_config["browser_host"] - port = server_config["ports"]["http"][0] - assert session.url == "http://{host}:{port}{url}".format(host=host, port=port, url=link) + assert session.url == url(link) -def test_multi_line_link(session, server_config, inline): +def test_multi_line_link(session, inline, url): link = "/webdriver/tests/classic/element_click/support/input.html" - session.url = inline(""" + session.url = inline(f"""

- Helloooooooooooooooooooo Worlddddddddddddddd -

""".format(url=link)) + Helloooooooooooooooooooo Worlddddddddddddddd +

""") element = session.find.css("a", all=False) response = element_click(session, element) assert_success(response) - host = server_config["browser_host"] - port = server_config["ports"]["http"][0] - assert session.url == "http://{host}:{port}{url}".format(host=host, port=port, url=link) + assert session.url == url(link) -def test_link_unload_event(session, server_config, inline): +def test_link_unload_event(session, url, server_config, inline): link = "/webdriver/tests/classic/element_click/support/input.html" - session.url = inline(""" + session.url = inline(f""" - click here - + click here + - """.format(url=link)) + """) element = session.find.css("a", all=False) response = element_click(session, element) assert_success(response) - host = server_config["browser_host"] - port = server_config["ports"]["http"][0] - assert session.url == "http://{host}:{port}{url}".format(host=host, port=port, url=link) + assert session.url == url(link) session.back() diff --git a/tests/wpt/tests/webdriver/tests/support/fixtures.py b/tests/wpt/tests/webdriver/tests/support/fixtures.py index 6033e243552..850c654d2a6 100644 --- a/tests/wpt/tests/webdriver/tests/support/fixtures.py +++ b/tests/wpt/tests/webdriver/tests/support/fixtures.py @@ -201,7 +201,7 @@ def current_session(): @pytest.fixture def url(server_config): - def url(path, protocol="http", domain="", subdomain="", query="", fragment=""): + def url(path, protocol="https", domain="", subdomain="", query="", fragment=""): domain = server_config["domains"][domain][subdomain] port = server_config["ports"][protocol][0] host = "{0}:{1}".format(domain, port) diff --git a/tests/wpt/tests/webdriver/tests/support/html/test_actions.html b/tests/wpt/tests/webdriver/tests/support/html/test_actions.html index 40e4b5aa37c..e3778406722 100644 --- a/tests/wpt/tests/webdriver/tests/support/html/test_actions.html +++ b/tests/wpt/tests/webdriver/tests/support/html/test_actions.html @@ -172,15 +172,12 @@ els.dragTarget = document.getElementById("dragTarget"); els.dragTarget.addEventListener("mousedown", grabOnce); - var draggable = document.getElementById("draggable"); - draggable.addEventListener("dragstart", recordPointerEvent); - draggable.addEventListener("dragenter", recordPointerEvent); - draggable.addEventListener("dragend", recordPointerEvent); - draggable.addEventListener("dragleave", recordPointerEvent); - draggable.addEventListener("dragover", recordPointerEvent); - - var droppable = document.getElementById("droppable"); - droppable.addEventListener("drop", recordPointerEvent); + window.addEventListener("dragstart", recordPointerEvent); + window.addEventListener("dragenter", recordPointerEvent); + window.addEventListener("dragover", recordPointerEvent); + window.addEventListener("dragleave", recordPointerEvent); + window.addEventListener("drop", recordPointerEvent); + window.addEventListener("dragend", recordPointerEvent); }); @@ -204,8 +201,8 @@

draggable

-
  -
+
  +
diff --git a/tests/wpt/tests/webdriver/tests/support/http_handlers/authentication.py b/tests/wpt/tests/webdriver/tests/support/http_handlers/authentication.py index db247af610a..d3c95a948f0 100644 --- a/tests/wpt/tests/webdriver/tests/support/http_handlers/authentication.py +++ b/tests/wpt/tests/webdriver/tests/support/http_handlers/authentication.py @@ -1,12 +1,12 @@ from urllib.parse import urlencode -def basic_authentication(url, protocol="http"): +def basic_authentication(url, **kwargs): query = {} return url("/webdriver/tests/support/http_handlers/authentication.py", query=urlencode(query), - protocol=protocol) + **kwargs) def main(request, response): diff --git a/tests/wpt/tests/webnn/resources/test_data/pow.json b/tests/wpt/tests/webnn/resources/test_data/pow.json index d6c9f592df7..b35a96233d0 100644 --- a/tests/wpt/tests/webnn/resources/test_data/pow.json +++ b/tests/wpt/tests/webnn/resources/test_data/pow.json @@ -481,304 +481,9 @@ } }, { - "name": "pow float32 1D positive base tensor and 1D exponent tensor", + "name": "pow (square) float32 4D base tensor and broadcastable 1D integer exponent tensor", "inputs": { "a": { - "shape": [24], - "data": [ - 1.4186520416325132, - 19.384846302672862, - 12.983916515701083, - 2.460315836803, - 7.818154966175683, - 6.944444510618668, - 12.183951502858129, - 17.91247403540764, - 11.35656818684932, - 8.924248275595188, - 17.63682367890858, - 11.49622917976384, - 18.51627975602645, - 2.2580489773802714, - 2.231948203000913, - 13.629855345962834, - 17.54841363842334, - 0.5390733851574936, - 5.891367616729561, - 0.12803148642270834, - 19.654494983574544, - 3.412272498152542, - 4.9450348267065225, - 4.437101298745225 - ], - "type": "float32" - }, - "b": { - "shape": [24], - "data": [ - -1.5511157816056738, - 19.380577557084465, - -3.6426215860281452, - 16.167571318689518, - -2.0848799217875964, - 11.261693793617642, - 12.615325041672058, - -2.7793194614392647, - -11.366388615297627, - -5.648841807865415, - 11.413243516798275, - 12.879077210007082, - 0.4005270071745244, - -6.527585857242606, - 2.407976905841956, - -9.631716701331072, - -0.2599778139698401, - -9.364569334111161, - 15.316681121612149, - 7.0153143060793965, - -11.982424302485697, - -12.112285237422382, - 14.26965166637288, - -6.536952275641514 - ], - "type": "float32" - } - }, - "expected": { - "name": "output", - "shape": [24], - "data": [ - 0.5813302397727966, - 8.948769192887517e+24, - 0.00008795983740128577, - 2095912.875, - 0.013739941641688347, - 3007905536, - 49839131852800, - 0.00032891242881305516, - 1.01309802560956e-12, - 0.000004269440978532657, - 168150804987904, - 45601043513344, - 3.218766689300537, - 0.004908796865493059, - 6.912310600280762, - 1.1827739308800655e-11, - 0.4748164415359497, - 325.8381042480469, - 626836635648, - 5.464456762638292e-7, - 3.170955982412547e-16, - 3.496410840853059e-7, - 8045534720, - 0.00005887653969693929 - ], - "type": "float32" - } - }, - { - "name": "pow float32 2D positive base tensor and 2D exponent tensor", - "inputs": { - "a": { - "shape": [4, 6], - "data": [ - 1.4186520416325132, - 19.384846302672862, - 12.983916515701083, - 2.460315836803, - 7.818154966175683, - 6.944444510618668, - 12.183951502858129, - 17.91247403540764, - 11.35656818684932, - 8.924248275595188, - 17.63682367890858, - 11.49622917976384, - 18.51627975602645, - 2.2580489773802714, - 2.231948203000913, - 13.629855345962834, - 17.54841363842334, - 0.5390733851574936, - 5.891367616729561, - 0.12803148642270834, - 19.654494983574544, - 3.412272498152542, - 4.9450348267065225, - 4.437101298745225 - ], - "type": "float32" - }, - "b": { - "shape": [4, 6], - "data": [ - -1.5511157816056738, - 19.380577557084465, - -3.6426215860281452, - 16.167571318689518, - -2.0848799217875964, - 11.261693793617642, - 12.615325041672058, - -2.7793194614392647, - -11.366388615297627, - -5.648841807865415, - 11.413243516798275, - 12.879077210007082, - 0.4005270071745244, - -6.527585857242606, - 2.407976905841956, - -9.631716701331072, - -0.2599778139698401, - -9.364569334111161, - 15.316681121612149, - 7.0153143060793965, - -11.982424302485697, - -12.112285237422382, - 14.26965166637288, - -6.536952275641514 - ], - "type": "float32" - } - }, - "expected": { - "name": "output", - "shape": [4, 6], - "data": [ - 0.5813302397727966, - 8.948769192887517e+24, - 0.00008795983740128577, - 2095912.875, - 0.013739941641688347, - 3007905536, - 49839131852800, - 0.00032891242881305516, - 1.01309802560956e-12, - 0.000004269440978532657, - 168150804987904, - 45601043513344, - 3.218766689300537, - 0.004908796865493059, - 6.912310600280762, - 1.1827739308800655e-11, - 0.4748164415359497, - 325.8381042480469, - 626836635648, - 5.464456762638292e-7, - 3.170955982412547e-16, - 3.496410840853059e-7, - 8045534720, - 0.00005887653969693929 - ], - "type": "float32" - } - }, - { - "name": "pow float32 4D positive base tensor and 4D exponent tensor", - "inputs": { - "a": { - "shape": [2, 2, 2, 3], - "data": [ - 1.4186520416325132, - 19.384846302672862, - 12.983916515701083, - 2.460315836803, - 7.818154966175683, - 6.944444510618668, - 12.183951502858129, - 17.91247403540764, - 11.35656818684932, - 8.924248275595188, - 17.63682367890858, - 11.49622917976384, - 18.51627975602645, - 2.2580489773802714, - 2.231948203000913, - 13.629855345962834, - 17.54841363842334, - 0.5390733851574936, - 5.891367616729561, - 0.12803148642270834, - 19.654494983574544, - 3.412272498152542, - 4.9450348267065225, - 4.437101298745225 - ], - "type": "float32" - }, - "b": { - "shape": [2, 2, 2, 3], - "data": [ - -1.5511157816056738, - 19.380577557084465, - -3.6426215860281452, - 16.167571318689518, - -2.0848799217875964, - 11.261693793617642, - 12.615325041672058, - -2.7793194614392647, - -11.366388615297627, - -5.648841807865415, - 11.413243516798275, - 12.879077210007082, - 0.4005270071745244, - -6.527585857242606, - 2.407976905841956, - -9.631716701331072, - -0.2599778139698401, - -9.364569334111161, - 15.316681121612149, - 7.0153143060793965, - -11.982424302485697, - -12.112285237422382, - 14.26965166637288, - -6.536952275641514 - ], - "type": "float32" - } - }, - "expected": { - "name": "output", - "shape": [2, 2, 2, 3], - "data": [ - 0.5813302397727966, - 8.948769192887517e+24, - 0.00008795983740128577, - 2095912.875, - 0.013739941641688347, - 3007905536, - 49839131852800, - 0.00032891242881305516, - 1.01309802560956e-12, - 0.000004269440978532657, - 168150804987904, - 45601043513344, - 3.218766689300537, - 0.004908796865493059, - 6.912310600280762, - 1.1827739308800655e-11, - 0.4748164415359497, - 325.8381042480469, - 626836635648, - 5.464456762638292e-7, - 3.170955982412547e-16, - 3.496410840853059e-7, - 8045534720, - 0.00005887653969693929 - ], - "type": "float32" - } - }, - { - "name": "pow float32 4D exponent tensor and broadcastable 1D positive base tensor", - "inputs": { - "a": { - "shape": [1], - "data": [ - 11.594479317507522 - ], - "type": "float32" - }, - "b": { "shape": [2, 2, 2, 3], "data": [ 17.84601042972939, @@ -807,36 +512,114 @@ 17.415215284302022 ], "type": "float32" + }, + "b": { + "shape": [1], + "data": [2], // square + "type": "float32", + "constant": true } }, "expected": { "name": "output", "shape": [2, 2, 2, 3], "data": [ - 9831930832107864000, - 0.8567188382148743, - 3.145953983429983e-11, - 786871222272, - 3.4610242370650813e-19, - 4211286999040, - 1.2196345930224334e-18, - 673.3303833007812, - 0.0010909875854849815, - 2.2894641996167248e-15, - 94425837469696, - 0.34217458963394165, - 2.0603237680819727e-17, - 87906598912, - 7080751803662336, - 0.000005512045390787534, - 7.14127336841233e-16, - 2980.96923828125, - 2168419861221343200, - 0.0008485119906254113, - 0.029340136796236038, - 7.466013585144538e-7, - 3388161848544067600, - 3421086174482006000 + 318.4800720214844, + 0.00398249039426446, + 97.38143157958984, + 124.94144439697266, + 300.8932800292969, + 140.71298217773438, + 283.32550048828125, + 7.062208652496338, + 7.747018814086914, + 189.23854064941406, + 172.43321228027344, + 0.19152326881885529, + 245.8212890625, + 105.74638366699219, + 221.806640625, + 24.41554069519043, + 202.5444793701172, + 10.657630920410156, + 296.84356689453125, + 8.328523635864258, + 2.073643445968628, + 33.14323043823242, + 303.1522521972656, + 303.2897033691406 + ], + "type": "float32" + } + }, + { + "name": "pow (sqrt) float32 4D positive base tensor and broadcastable 1D integer exponent tensor", + "inputs": { + "a": { + "shape": [2, 2, 2, 3], + "data": [ + 1.4186520416325132, + 19.384846302672862, + 12.983916515701083, + 2.460315836803, + 7.818154966175683, + 6.944444510618668, + 12.183951502858129, + 17.91247403540764, + 11.35656818684932, + 8.924248275595188, + 17.63682367890858, + 11.49622917976384, + 18.51627975602645, + 2.2580489773802714, + 2.231948203000913, + 13.629855345962834, + 17.54841363842334, + 0.5390733851574936, + 5.891367616729561, + 0.12803148642270834, + 19.654494983574544, + 3.412272498152542, + 4.9450348267065225, + 4.437101298745225 + ], + "type": "float32" + }, + "b": { + "shape": [1], + "data": [0.5], // sqrt + "type": "float32", + "constant": true + } + }, + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 1.19107186794281, + 4.402822494506836, + 3.6033201217651367, + 1.5685393810272217, + 2.7960963249206543, + 2.6352314949035645, + 3.490551710128784, + 4.23231315612793, + 3.369950771331787, + 2.9873480796813965, + 4.199621677398682, + 3.3906090259552, + 4.3030548095703125, + 1.5026806592941284, + 1.4939706325531006, + 3.6918632984161377, + 4.189082622528076, + 0.7342162132263184, + 2.4272139072418213, + 0.35781487822532654, + 4.4333391189575195, + 1.847233772277832, + 2.223743438720703, + 2.106442928314209 ], "type": "float32" } @@ -994,79 +777,6 @@ ], "type": "float32" } - }, - { - "name": "pow float32 4D exponent tensor and broadcastable 4D positive base tensor", - "inputs": { - "a": { - "shape": [1, 1, 1, 1], - "data": [ - 11.594479317507522 - ], - "type": "float32" - }, - "b": { - "shape": [2, 2, 2, 3], - "data": [ - 17.84601042972939, - -0.06310698009783522, - -9.868203150557209, - 11.177720889025082, - -17.346274412274497, - 11.862249907078805, - -16.832276297112916, - 2.657481705284937, - -2.783346559701183, - -13.756399883988184, - 13.131383020668672, - -0.4376337155223524, - -15.678688537967744, - 10.283306376871472, - 14.89317426754188, - -4.941208383494091, - -14.231812435141862, - 3.2646027287637835, - 17.229148713687444, - -2.885918185998449, - -1.440015043233842, - -5.757015935913907, - 17.41126899618849, - 17.415215284302022 - ], - "type": "float32" - } - }, - "expected": { - "name": "output", - "shape": [2, 2, 2, 3], - "data": [ - 9831930832107864000, - 0.8567188382148743, - 3.145953983429983e-11, - 786871222272, - 3.4610242370650813e-19, - 4211286999040, - 1.2196345930224334e-18, - 673.3303833007812, - 0.0010909875854849815, - 2.2894641996167248e-15, - 94425837469696, - 0.34217458963394165, - 2.0603237680819727e-17, - 87906598912, - 7080751803662336, - 0.000005512045390787534, - 7.14127336841233e-16, - 2980.96923828125, - 2168419861221343200, - 0.0008485119906254113, - 0.029340136796236038, - 7.466013585144538e-7, - 3388161848544067600, - 3421086174482006000 - ], - "type": "float32" - } } ] } \ No newline at end of file diff --git a/tests/wpt/tests/webrtc-stats/supported-stats.https.html b/tests/wpt/tests/webrtc-stats/supported-stats.https.html index 24b4d3f06f0..c2319964973 100644 --- a/tests/wpt/tests/webrtc-stats/supported-stats.https.html +++ b/tests/wpt/tests/webrtc-stats/supported-stats.https.html @@ -147,9 +147,9 @@ promise_test(async t => { } const remaining = JSON.parse(JSON.stringify(all)); - for (const type in remaining) { - remaining[type] = new Set(remaining[type]); - } + for (const type in remaining) { + remaining[type] = new Set(remaining[type]); + } const pc1 = new RTCPeerConnection(); t.add_cleanup(() => pc1.close()); @@ -175,7 +175,11 @@ promise_test(async t => { await pc2.setLocalDescription(); await waitForIceGatheringState(pc2, ['complete']); await pc1.setRemoteDescription(pc2.localDescription); - + // Await the DTLS handshake. + await Promise.all([ + listenToConnected(pc1), + listenToConnected(pc2), + ]); const stats = await getAllStats(t, pc1); // The focus of this test is not API correctness, but rather to provide an diff --git a/tests/wpt/tests/xhr/blob-range.any.js b/tests/wpt/tests/xhr/blob-range.any.js new file mode 100644 index 00000000000..2a5c54fc34f --- /dev/null +++ b/tests/wpt/tests/xhr/blob-range.any.js @@ -0,0 +1,246 @@ +// See also /fetch/range/blob.any.js + +const supportedBlobRange = [ + { + name: "A simple blob range request.", + data: ["A simple Hello, World! example"], + type: "text/plain", + range: "bytes=9-21", + content_length: 13, + content_range: "bytes 9-21/30", + result: "Hello, World!", + }, + { + name: "A blob range request with no type.", + data: ["A simple Hello, World! example"], + type: undefined, + range: "bytes=9-21", + content_length: 13, + content_range: "bytes 9-21/30", + result: "Hello, World!", + }, + { + name: "A blob range request with no end.", + data: ["Range with no end"], + type: "text/plain", + range: "bytes=11-", + content_length: 6, + content_range: "bytes 11-16/17", + result: "no end", + }, + { + name: "A blob range request with no start.", + data: ["Range with no start"], + type: "text/plain", + range: "bytes=-8", + content_length: 8, + content_range: "bytes 11-18/19", + result: "no start", + }, + { + name: "A simple blob range request with whitespace.", + data: ["A simple Hello, World! example"], + type: "text/plain", + range: "bytes= \t9-21", + content_length: 13, + content_range: "bytes 9-21/30", + result: "Hello, World!", + }, + { + name: "Blob content with short content and a large range end", + data: ["Not much here"], + type: "text/plain", + range: "bytes=4-100000000000", + content_length: 9, + content_range: "bytes 4-12/13", + result: "much here", + }, + { + name: "Blob content with short content and a range end matching content length", + data: ["Not much here"], + type: "text/plain", + range: "bytes=4-13", + content_length: 9, + content_range: "bytes 4-12/13", + result: "much here", + }, + { + name: "Blob range with whitespace before and after hyphen", + data: ["Valid whitespace #1"], + type: "text/plain", + range: "bytes=5 - 10", + content_length: 6, + content_range: "bytes 5-10/19", + result: " white", + }, + { + name: "Blob range with whitespace after hyphen", + data: ["Valid whitespace #2"], + type: "text/plain", + range: "bytes=-\t 5", + content_length: 5, + content_range: "bytes 14-18/19", + result: "ce #2", + }, + { + name: "Blob range with whitespace around equals sign", + data: ["Valid whitespace #3"], + type: "text/plain", + range: "bytes \t =\t 6-", + content_length: 13, + content_range: "bytes 6-18/19", + result: "whitespace #3", + }, +]; + +const unsupportedBlobRange = [ + { + name: "Blob range with no value", + data: ["Blob range should have a value"], + type: "text/plain", + range: "", + }, + { + name: "Blob range with incorrect range header", + data: ["A"], + type: "text/plain", + range: "byte=0-" + }, + { + name: "Blob range with incorrect range header #2", + data: ["A"], + type: "text/plain", + range: "bytes" + }, + { + name: "Blob range with incorrect range header #3", + data: ["A"], + type: "text/plain", + range: "bytes\t \t" + }, + { + name: "Blob range request with multiple range values", + data: ["Multiple ranges are not currently supported"], + type: "text/plain", + range: "bytes=0-5,15-", + }, + { + name: "Blob range request with multiple range values and whitespace", + data: ["Multiple ranges are not currently supported"], + type: "text/plain", + range: "bytes=0-5, 15-", + }, + { + name: "Blob range request with trailing comma", + data: ["Range with invalid trailing comma"], + type: "text/plain", + range: "bytes=0-5,", + }, + { + name: "Blob range with no start or end", + data: ["Range with no start or end"], + type: "text/plain", + range: "bytes=-", + }, + { + name: "Blob range request with short range end", + data: ["Range end should be greater than range start"], + type: "text/plain", + range: "bytes=10-5", + }, + { + name: "Blob range start should be an ASCII digit", + data: ["Range start must be an ASCII digit"], + type: "text/plain", + range: "bytes=x-5", + }, + { + name: "Blob range should have a dash", + data: ["Blob range should have a dash"], + type: "text/plain", + range: "bytes=5", + }, + { + name: "Blob range end should be an ASCII digit", + data: ["Range end must be an ASCII digit"], + type: "text/plain", + range: "bytes=5-x", + }, + { + name: "Blob range should include '-'", + data: ["Range end must include '-'"], + type: "text/plain", + range: "bytes=x", + }, + { + name: "Blob range should include '='", + data: ["Range end must include '='"], + type: "text/plain", + range: "bytes 5-", + }, + { + name: "Blob range should include 'bytes='", + data: ["Range end must include 'bytes='"], + type: "text/plain", + range: "5-", + }, + { + name: "Blob content with short content and a large range start", + data: ["Not much here"], + type: "text/plain", + range: "bytes=100000-", + }, + { + name: "Blob content with short content and a range start matching the content length", + data: ["Not much here"], + type: "text/plain", + range: "bytes=13-", + }, +]; + +supportedBlobRange.forEach(({ name, data, type, range, content_length, content_range, result }) => { + promise_test(async t => { + const blob = new Blob(data, { "type" : type }); + const blobURL = URL.createObjectURL(blob); + t.add_cleanup(() => URL.revokeObjectURL(blobURL)); + const xhr = new XMLHttpRequest(); + xhr.open("GET", blobURL); + xhr.responseType = "text"; + xhr.setRequestHeader("Range", range); + await new Promise(resolve => { + xhr.onloadend = resolve; + xhr.send(); + }); + assert_equals(xhr.status, 206, "HTTP status is 206"); + assert_equals(xhr.getResponseHeader("Content-Type"), type || "", "Content-Type is " + xhr.getResponseHeader("Content-Type")); + assert_equals(xhr.getResponseHeader("Content-Length"), content_length.toString(), "Content-Length is " + xhr.getResponseHeader("Content-Length")); + assert_equals(xhr.getResponseHeader("Content-Range"), content_range, "Content-Range is " + xhr.getResponseHeader("Content-Range")); + assert_equals(xhr.responseText, result, "Response's body is correct"); + const all = xhr.getAllResponseHeaders().toLowerCase(); + assert_true(all.includes(`content-type: ${type || ""}`), "Expected Content-Type in getAllResponseHeaders()"); + assert_true(all.includes(`content-length: ${content_length}`), "Expected Content-Length in getAllResponseHeaders()"); + assert_true(all.includes(`content-range: ${content_range}`), "Expected Content-Range in getAllResponseHeaders()") + }, name); +}); + +unsupportedBlobRange.forEach(({ name, data, type, range }) => { + promise_test(t => { + const blob = new Blob(data, { "type" : type }); + const blobURL = URL.createObjectURL(blob); + t.add_cleanup(() => URL.revokeObjectURL(blobURL)); + + const xhr = new XMLHttpRequest(); + xhr.open("GET", blobURL, false); + xhr.setRequestHeader("Range", range); + assert_throws_dom("NetworkError", () => xhr.send()); + + xhr.open("GET", blobURL); + xhr.setRequestHeader("Range", range); + xhr.responseType = "text"; + return new Promise((resolve, reject) => { + xhr.onload = reject; + xhr.onerror = resolve; + xhr.send(); + }); + }, name); +}); diff --git a/tests/wpt/webgl/meta/conformance/context/context-release-with-workers.html.ini b/tests/wpt/webgl/meta/conformance/context/context-release-with-workers.html.ini deleted file mode 100644 index d440058eae9..00000000000 --- a/tests/wpt/webgl/meta/conformance/context/context-release-with-workers.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[context-release-with-workers.html] - expected: CRASH