diff options
160 files changed, 6188 insertions, 2598 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini index a9e46713244..76b398963ae 100644 --- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/metadata/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: TIMEOUT + expected: FAIL [Opening a blob URL in a noopener about:blank window immediately before revoking it works.] expected: FAIL diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini index 4c1aa18e695..abf0d50aff3 100644 --- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini @@ -2,9 +2,6 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL - [Revoke blob URL after calling fetch, fetch should succeed] - expected: FAIL - [url-with-fetch.any.html] [Revoke blob URL after creating Request, will fetch] diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 90cda09b09e..be1d74a725a 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -111515,6 +111515,18 @@ {} ] ], + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background.html": [ + [ + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background.html", + [ + [ + "/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-color/border-bottom-color.xht": [ [ "css/css-color/border-bottom-color.xht", @@ -221798,7 +221810,7 @@ "conformance-checkers/html-rdfa/0233-isvalid.html": [ [] ], - "conformance-checkers/html-rdfa/0234-novalid.html": [ + "conformance-checkers/html-rdfa/0234-isvalid.html": [ [] ], "conformance-checkers/html-rdfa/0235-isvalid.html": [ @@ -221981,7 +221993,7 @@ "conformance-checkers/html-rdfa/0302-isvalid.html": [ [] ], - "conformance-checkers/html-rdfa/0303-novalid.html": [ + "conformance-checkers/html-rdfa/0303-isvalid.html": [ [] ], "conformance-checkers/html-rdfa/0305-isvalid.html": [ @@ -222065,7 +222077,7 @@ "conformance-checkers/html-rdfa/0331-isvalid.html": [ [] ], - "conformance-checkers/html-rdfalite/0015-novalid.html": [ + "conformance-checkers/html-rdfalite/0015-isvalid.html": [ [] ], "conformance-checkers/html-rdfalite/0021-isvalid.html": [ @@ -222074,7 +222086,7 @@ "conformance-checkers/html-rdfalite/0023-isvalid.html": [ [] ], - "conformance-checkers/html-rdfalite/0030-novalid.html": [ + "conformance-checkers/html-rdfalite/0030-isvalid.html": [ [] ], "conformance-checkers/html-rdfalite/0050-isvalid.html": [ @@ -222092,10 +222104,10 @@ "conformance-checkers/html-rdfalite/0067-isvalid.html": [ [] ], - "conformance-checkers/html-rdfalite/0071-novalid.html": [ + "conformance-checkers/html-rdfalite/0071-isvalid.html": [ [] ], - "conformance-checkers/html-rdfalite/0074-novalid.html": [ + "conformance-checkers/html-rdfalite/0074-isvalid.html": [ [] ], "conformance-checkers/html-rdfalite/0075-isvalid.html": [ @@ -248252,6 +248264,18 @@ "css/css-color-adjust/meta/support/compute-root-color-scheme.js": [ [] ], + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-ref.html": [ + [] + ], + "css/css-color-adjust/rendering/dark-color-scheme/support/assert-preferred-dark.css": [ + [] + ], + "css/css-color-adjust/rendering/dark-color-scheme/support/dark-frame-ref.html": [ + [] + ], + "css/css-color-adjust/rendering/dark-color-scheme/support/dark-frame.html": [ + [] + ], "css/css-color/LICENSE": [ [] ], @@ -273371,25 +273395,67 @@ "html/cross-origin-opener-policy/coop-sandbox.https.html.headers": [ [] ], + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html.headers": [ + [] + ], "html/cross-origin-opener-policy/no-https.html.headers": [ [] ], + "html/cross-origin-opener-policy/popup-meta-http-equiv.https.html.headers": [ + [] + ], "html/cross-origin-opener-policy/popup-redirect-cache.https.html.headers": [ [] ], + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html.headers": [ + [] + ], "html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html.headers": [ [] ], - "html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html.headers": [ + "html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html.headers": [ [] ], - "html/cross-origin-opener-policy/popup-same-origin.https.html.headers": [ + "html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html.headers": [ [] ], - "html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html.headers": [ + "html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html.headers": [ [] ], - "html/cross-origin-opener-policy/popup-same-site.https.html.headers": [ + "html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/resources/call-functionCalledByOpenee.html": [ [] ], "html/cross-origin-opener-policy/resources/common.js": [ @@ -286490,6 +286556,18 @@ "service-workers/service-worker/resources/opaque-response-preloaded-xhr.html": [ [] ], + "service-workers/service-worker/resources/opaque-script-frame.html": [ + [] + ], + "service-workers/service-worker/resources/opaque-script-large.js": [ + [] + ], + "service-workers/service-worker/resources/opaque-script-small.js": [ + [] + ], + "service-workers/service-worker/resources/opaque-script-sw.js": [ + [] + ], "service-workers/service-worker/resources/other.html": [ [] ], @@ -323199,6 +323277,18 @@ {} ] ], + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-root-background.html": [ + [ + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-root-background.html", + {} + ] + ], + "css/css-color/animation/color-composition.html": [ + [ + "css/css-color/animation/color-composition.html", + {} + ] + ], "css/css-color/animation/color-interpolation.html": [ [ "css/css-color/animation/color-interpolation.html", @@ -323573,6 +323663,12 @@ {} ] ], + "css/css-flexbox/animation/flex-basis-composition.html": [ + [ + "css/css-flexbox/animation/flex-basis-composition.html", + {} + ] + ], "css/css-flexbox/animation/flex-basis-interpolation.html": [ [ "css/css-flexbox/animation/flex-basis-interpolation.html", @@ -325311,24 +325407,6 @@ {} ] ], - "css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html": [ - [ - "css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html", - {} - ] - ], - "css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html": [ - [ - "css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html", - {} - ] - ], - "css/css-grid/alignment/grid-align-content-distribution.html": [ - [ - "css/css-grid/alignment/grid-align-content-distribution.html", - {} - ] - ], "css/css-grid/alignment/grid-align-content.html": [ [ "css/css-grid/alignment/grid-align-content.html", @@ -327177,12 +327255,6 @@ {} ] ], - "css/css-images/animations/object-position-interpolation.html": [ - [ - "css/css-images/animations/object-position-interpolation.html", - {} - ] - ], "css/css-images/gradient/color-stops-parsing.html": [ [ "css/css-images/gradient/color-stops-parsing.html", @@ -328095,6 +328167,12 @@ {} ] ], + "css/css-masking/animations/clip-path-composition.html": [ + [ + "css/css-masking/animations/clip-path-composition.html", + {} + ] + ], "css/css-masking/animations/clip-path-interpolation-001.html": [ [ "css/css-masking/animations/clip-path-interpolation-001.html", @@ -328701,9 +328779,9 @@ {} ] ], - "css/css-position/animation/position-interpolation.html": [ + "css/css-position/animations/bottom-composition.html": [ [ - "css/css-position/animation/position-interpolation.html", + "css/css-position/animations/bottom-composition.html", {} ] ], @@ -328713,18 +328791,42 @@ {} ] ], + "css/css-position/animations/left-composition.html": [ + [ + "css/css-position/animations/left-composition.html", + {} + ] + ], "css/css-position/animations/left-interpolation.html": [ [ "css/css-position/animations/left-interpolation.html", {} ] ], + "css/css-position/animations/position-interpolation.html": [ + [ + "css/css-position/animations/position-interpolation.html", + {} + ] + ], + "css/css-position/animations/right-composition.html": [ + [ + "css/css-position/animations/right-composition.html", + {} + ] + ], "css/css-position/animations/right-interpolation.html": [ [ "css/css-position/animations/right-interpolation.html", {} ] ], + "css/css-position/animations/top-composition.html": [ + [ + "css/css-position/animations/top-composition.html", + {} + ] + ], "css/css-position/animations/top-interpolation.html": [ [ "css/css-position/animations/top-interpolation.html", @@ -330017,6 +330119,18 @@ {} ] ], + "css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html": [ + [ + "css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html", + {} + ] + ], + "css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html": [ + [ + "css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html", + {} + ] + ], "css/css-scroll-snap/snap-after-relayout/move-current-target.html": [ [ "css/css-scroll-snap/snap-after-relayout/move-current-target.html", @@ -333959,6 +334073,12 @@ {} ] ], + "css/css-transforms/animation/perspective-composition.html": [ + [ + "css/css-transforms/animation/perspective-composition.html", + {} + ] + ], "css/css-transforms/animation/perspective-interpolation.html": [ [ "css/css-transforms/animation/perspective-interpolation.html", @@ -333971,18 +334091,36 @@ {} ] ], + "css/css-transforms/animation/rotate-composition.html": [ + [ + "css/css-transforms/animation/rotate-composition.html", + {} + ] + ], "css/css-transforms/animation/rotate-interpolation.html": [ [ "css/css-transforms/animation/rotate-interpolation.html", {} ] ], + "css/css-transforms/animation/scale-composition.html": [ + [ + "css/css-transforms/animation/scale-composition.html", + {} + ] + ], "css/css-transforms/animation/scale-interpolation.html": [ [ "css/css-transforms/animation/scale-interpolation.html", {} ] ], + "css/css-transforms/animation/transform-composition.html": [ + [ + "css/css-transforms/animation/transform-composition.html", + {} + ] + ], "css/css-transforms/animation/transform-interpolation-001.html": [ [ "css/css-transforms/animation/transform-interpolation-001.html", @@ -334019,12 +334157,54 @@ {} ] ], + "css/css-transforms/animation/transform-matrix-composition.html": [ + [ + "css/css-transforms/animation/transform-matrix-composition.html", + {} + ] + ], "css/css-transforms/animation/transform-origin-interpolation.html": [ [ "css/css-transforms/animation/transform-origin-interpolation.html", {} ] ], + "css/css-transforms/animation/transform-perspective-composition.html": [ + [ + "css/css-transforms/animation/transform-perspective-composition.html", + {} + ] + ], + "css/css-transforms/animation/transform-rotate-composition.html": [ + [ + "css/css-transforms/animation/transform-rotate-composition.html", + {} + ] + ], + "css/css-transforms/animation/transform-scale-composition.html": [ + [ + "css/css-transforms/animation/transform-scale-composition.html", + {} + ] + ], + "css/css-transforms/animation/transform-skew-composition.html": [ + [ + "css/css-transforms/animation/transform-skew-composition.html", + {} + ] + ], + "css/css-transforms/animation/transform-translate-composition.html": [ + [ + "css/css-transforms/animation/transform-translate-composition.html", + {} + ] + ], + "css/css-transforms/animation/translate-composition.html": [ + [ + "css/css-transforms/animation/translate-composition.html", + {} + ] + ], "css/css-transforms/animation/translate-interpolation.html": [ [ "css/css-transforms/animation/translate-interpolation.html", @@ -334331,6 +334511,12 @@ {} ] ], + "css/css-transitions/animations/vertical-align-composition.html": [ + [ + "css/css-transitions/animations/vertical-align-composition.html", + {} + ] + ], "css/css-transitions/animations/vertical-align-interpolation.html": [ [ "css/css-transitions/animations/vertical-align-interpolation.html", @@ -358406,14 +358592,6 @@ {} ] ], - "fetch/metadata/appcache.tentative.https.sub.html": [ - [ - "fetch/metadata/appcache.tentative.https.sub.html", - { - "timeout": "long" - } - ] - ], "fetch/metadata/download.tentative.https.sub.html": [ [ "fetch/metadata/download.tentative.https.sub.html", @@ -361690,6 +361868,66 @@ {} ] ], + "html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html": [ + [ + "html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html": [ + [ + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html": [ + [ + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html": [ + [ + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html": [ + [ + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html": [ + [ + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html": [ + [ + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html": [ + [ + "html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html": [ + [ + "html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html": [ + [ + "html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html", + {} + ] + ], "html/cross-origin-opener-policy/no-https.html": [ [ "html/cross-origin-opener-policy/no-https.html", @@ -361698,12 +361936,6 @@ } ] ], - "html/cross-origin-opener-policy/popup-none.https.html": [ - [ - "html/cross-origin-opener-policy/popup-none.https.html", - {} - ] - ], "html/cross-origin-opener-policy/popup-redirect-cache.https.html": [ [ "html/cross-origin-opener-policy/popup-redirect-cache.https.html", @@ -361712,33 +361944,81 @@ } ] ], + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html": [ + [ + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html": [ + [ + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html": [ + [ + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html", + {} + ] + ], "html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html": [ [ "html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html", {} ] ], - "html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html": [ + "html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html": [ [ - "html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html", + "html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html", {} ] ], - "html/cross-origin-opener-policy/popup-same-origin.https.html": [ + "html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html": [ [ - "html/cross-origin-opener-policy/popup-same-origin.https.html", + "html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html", {} ] ], - "html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html": [ + "html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html": [ [ - "html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html", + "html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html", {} ] ], - "html/cross-origin-opener-policy/popup-same-site.https.html": [ + "html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html": [ [ - "html/cross-origin-opener-policy/popup-same-site.https.html", + "html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html": [ + [ + "html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html": [ + [ + "html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html": [ + [ + "html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html": [ + [ + "html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html", + {} + ] + ], + "html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html": [ + [ + "html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html", {} ] ], @@ -368159,12 +368439,24 @@ {} ] ], + "html/semantics/forms/the-input-element/input-valueasdate.html": [ + [ + "html/semantics/forms/the-input-element/input-valueasdate.html", + {} + ] + ], "html/semantics/forms/the-input-element/input-valueasnumber-invalidstateerr.html": [ [ "html/semantics/forms/the-input-element/input-valueasnumber-invalidstateerr.html", {} ] ], + "html/semantics/forms/the-input-element/input-valueasnumber.html": [ + [ + "html/semantics/forms/the-input-element/input-valueasnumber.html", + {} + ] + ], "html/semantics/forms/the-input-element/input-width.html": [ [ "html/semantics/forms/the-input-element/input-width.html", @@ -411784,6 +412076,12 @@ {} ] ], + "service-workers/service-worker/opaque-script.https.html": [ + [ + "service-workers/service-worker/opaque-script.https.html", + {} + ] + ], "service-workers/service-worker/performance-timeline.https.html": [ [ "service-workers/service-worker/performance-timeline.https.html", @@ -421507,6 +421805,12 @@ {} ] ], + "trusted-types/DOMParser-parseFromString-regression.tentative.https.html": [ + [ + "trusted-types/DOMParser-parseFromString-regression.tentative.https.html", + {} + ] + ], "trusted-types/DOMParser-parseFromString.tentative.html": [ [ "trusted-types/DOMParser-parseFromString.tentative.html", @@ -476223,7 +476527,7 @@ "support" ], "clipboard-apis/async-interfaces.https.html": [ - "e19c958f975d7967b8028a13d6901bdbd2ab4553", + "1c423e95b669a30a6af86db7a84d76a5a9c176b4", "testharness" ], "clipboard-apis/async-navigator-clipboard-basics.https.html": [ @@ -481130,7 +481434,7 @@ "586778ecf3e36244968d54a711fef6a035986c05", "support" ], - "conformance-checkers/html-rdfa/0234-novalid.html": [ + "conformance-checkers/html-rdfa/0234-isvalid.html": [ "3dfbdaa03d93769c270dfaf87cdec0cf120d5751", "support" ], @@ -481374,7 +481678,7 @@ "21020d0fc4c41b3449e5b2e2f56ac63367e076d1", "support" ], - "conformance-checkers/html-rdfa/0303-novalid.html": [ + "conformance-checkers/html-rdfa/0303-isvalid.html": [ "644420959045203ee02cc940a62876d714a1b778", "support" ], @@ -481486,7 +481790,7 @@ "f54979398d563a4f38b1e7375cdb42dce8e61336", "support" ], - "conformance-checkers/html-rdfalite/0015-novalid.html": [ + "conformance-checkers/html-rdfalite/0015-isvalid.html": [ "94742da735dc35c176558f3116912d9cb5191835", "support" ], @@ -481498,7 +481802,7 @@ "5859d4578811a169c7301ae4aac46a04e71b30ab", "support" ], - "conformance-checkers/html-rdfalite/0030-novalid.html": [ + "conformance-checkers/html-rdfalite/0030-isvalid.html": [ "7fd1a85ec7a8be9415b93a5499999f073c6f79ea", "support" ], @@ -481522,11 +481826,11 @@ "e60e30e04da0c258209049899af231dd045d56fb", "support" ], - "conformance-checkers/html-rdfalite/0071-novalid.html": [ + "conformance-checkers/html-rdfalite/0071-isvalid.html": [ "511e0b7107bec347b54ff2963dcd5dca11cc8192", "support" ], - "conformance-checkers/html-rdfalite/0074-novalid.html": [ + "conformance-checkers/html-rdfalite/0074-isvalid.html": [ "d25af2d53237d2ca2b46a853dc40efb7d25b40b3", "support" ], @@ -493871,7 +494175,7 @@ "support" ], "conformance-checkers/messages.json": [ - "4439888f1753132daf7aa6c07dc55397a18d94fd", + "6c0e2c035e931e12e701fd9d6c145216e4a8bb6f", "support" ], "conformance-checkers/tools/build-svg-tests.py": [ @@ -497579,7 +497883,7 @@ "testharness" ], "cookies/http-state/general-tests.html": [ - "c8b7ea4ecb1c1203ad23afa5a6436693d4b125f6", + "d80527f9b0aa22c0611edff546d5663198a412bb", "testharness" ], "cookies/http-state/mozilla-tests.html": [ @@ -497603,7 +497907,7 @@ "support" ], "cookies/http-state/resources/cookie-http-state-template.js": [ - "62459f059fd147779354140d1e830ea52a263abe", + "b2af226e22ead4870133c402df00ca50cf9b0d97", "support" ], "cookies/http-state/resources/cookie-setter.py": [ @@ -497827,7 +498131,7 @@ "support" ], "cookies/http-state/resources/test-files/0026-test": [ - "609c6680b8281f845faa605b7d812bbecb8d615d", + "5ac72745f978b8394b583d10f1ae466d1055e2d4", "support" ], "cookies/http-state/resources/test-files/0027-expected": [ @@ -497839,11 +498143,11 @@ "support" ], "cookies/http-state/resources/test-files/0028-expected": [ - "609c6680b8281f845faa605b7d812bbecb8d615d", + "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", "support" ], "cookies/http-state/resources/test-files/0028-test": [ - "609c6680b8281f845faa605b7d812bbecb8d615d", + "fea1e1a643b97d4a101d704bd1497376a4997b3c", "support" ], "cookies/http-state/resources/test-files/attribute0001-expected": [ @@ -565466,6 +565770,30 @@ "5fb481783f0134b3b233ceb17ea4a0897eeee403", "testharness" ], + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-ref.html": [ + "8cc4618ede4af030adc8fe5f119deccf3c2e3882", + "support" + ], + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background.html": [ + "ee0f006b5b25702f0b2c485c46e7b8ef6788147c", + "reftest" + ], + "css/css-color-adjust/rendering/dark-color-scheme/color-scheme-root-background.html": [ + "a6363971819a44e4bfc29891cbf51af6d24d1279", + "testharness" + ], + "css/css-color-adjust/rendering/dark-color-scheme/support/assert-preferred-dark.css": [ + "73671b8a819ed81958b4359a1a3904f86cc98ec6", + "support" + ], + "css/css-color-adjust/rendering/dark-color-scheme/support/dark-frame-ref.html": [ + "0975119f56eee163041d58b96b80bd57173c44a9", + "support" + ], + "css/css-color-adjust/rendering/dark-color-scheme/support/dark-frame.html": [ + "11f88db4a0b3e94d620b5a92314c88040210cfae", + "support" + ], "css/css-color/LICENSE": [ "d47f50cca8a2d9dc40dee384ae256f8aecf44e0a", "support" @@ -565474,6 +565802,10 @@ "a0e70aa6539e88373bc8615c3f4e1453010e85d5", "support" ], + "css/css-color/animation/color-composition.html": [ + "c3e481830b6155114e6e6f543acc27c02c59c687", + "testharness" + ], "css/css-color/animation/color-interpolation.html": [ "4b39fdcf796083ace917f0a021a697c6e4eb7214", "testharness" @@ -570254,6 +570586,10 @@ "f16d29835f7aef92f278fa5bc28317dc913f3544", "reftest" ], + "css/css-flexbox/animation/flex-basis-composition.html": [ + "122761e47679945d000623b6ae6fbe6d13cd5fba", + "testharness" + ], "css/css-flexbox/animation/flex-basis-interpolation.html": [ "d66e81d4924f6b419a0e467119e5ce6dd27e2966", "testharness" @@ -582370,18 +582706,6 @@ "d45df4bc2231cbda5dee1bafc3f386f008024d79", "support" ], - "css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html": [ - "8217f4dd2c3cfd031aece87d54a78d5bcec640ca", - "testharness" - ], - "css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html": [ - "096e3fd6910a09ba5097b66acdb1dcf8a6d5326e", - "testharness" - ], - "css/css-grid/alignment/grid-align-content-distribution.html": [ - "7b66ddb995191c67278d861aa6cb6a637bc6adaf", - "testharness" - ], "css/css-grid/alignment/grid-align-content.html": [ "fb3f7007ee19189a09de9c1f786176c317b7ee14", "testharness" @@ -585186,10 +585510,6 @@ "8d3b9472b2c9a2ee88dc97f907f9d16eb4fa3755", "support" ], - "css/css-images/animations/object-position-interpolation.html": [ - "055cbc8421b6af58e636729268f7323e1710458c", - "testharness" - ], "css/css-images/css-image-fallbacks-and-annotations-ref.html": [ "f3193036766e428bf946e81b7df72bfc7f4901db", "support" @@ -587398,6 +587718,10 @@ "322ebd724e8524e85d8afe369b6bafaabbec8c79", "testharness" ], + "css/css-masking/animations/clip-path-composition.html": [ + "2275ae70a330e06214f3c612acdba186efde99cd", + "testharness" + ], "css/css-masking/animations/clip-path-interpolation-001.html": [ "21c34f1f2b75ec7345a97b00db62a49b038cf026", "testharness" @@ -591810,22 +592134,38 @@ "c1ce1ff602eee4668b9cb5d0168c4372193a8d3a", "support" ], - "css/css-position/animation/position-interpolation.html": [ - "a4ad50240a40674afe76b4c76a08feb9c4e27b12", + "css/css-position/animations/bottom-composition.html": [ + "68a830dfbda2e4f15372ccc89be65d67602bf4b1", "testharness" ], "css/css-position/animations/bottom-interpolation.html": [ "272e79fc05b0267afe696c11ea0572299559d223", "testharness" ], + "css/css-position/animations/left-composition.html": [ + "14b3dfda76dc219bda706e48f7e6846b20e242cf", + "testharness" + ], "css/css-position/animations/left-interpolation.html": [ "33ed0b4ec3b961bc0f71fc1b784b51201f50ebfa", "testharness" ], + "css/css-position/animations/position-interpolation.html": [ + "a4ad50240a40674afe76b4c76a08feb9c4e27b12", + "testharness" + ], + "css/css-position/animations/right-composition.html": [ + "995bb8d6bec8056c1e72ddbaa05b624a1072c9a8", + "testharness" + ], "css/css-position/animations/right-interpolation.html": [ "284d435e56eac5370edd570d2f67b0dfeaa6bbf6", "testharness" ], + "css/css-position/animations/top-composition.html": [ + "47782e8536fa2895d67fc4f91a182899f5da0d50", + "testharness" + ], "css/css-position/animations/top-interpolation.html": [ "f5af530c387a7b52a78a4ca13b27d976f60b2dc9", "testharness" @@ -596594,6 +596934,14 @@ "d26359658f479c61df8d0a559fcb5558f63106a6", "testharness" ], + "css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html": [ + "3be68fe841a0d6183b83d5b7287b70883c3cfce7", + "testharness" + ], + "css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html": [ + "70774b3d40f691fe4feb623b4dfe430b12f4e8c0", + "testharness" + ], "css/css-scroll-snap/snap-after-relayout/move-current-target.html": [ "83c2c478bf5921cedd9cb4d48b5de14533f4bbcd", "testharness" @@ -608298,6 +608646,10 @@ "a326e7c92f21aca39613c6964055b9592b35b034", "testharness" ], + "css/css-transforms/animation/perspective-composition.html": [ + "6fa745d6ed2266cd4535a114a073e386eeb07488", + "testharness" + ], "css/css-transforms/animation/perspective-interpolation.html": [ "a27f84a11bdc3999eb5183dc3251878053c43bac", "testharness" @@ -608306,14 +608658,26 @@ "0a1e74cb8ec6d0539fe04f0be765ec67b3d78b7e", "testharness" ], + "css/css-transforms/animation/rotate-composition.html": [ + "fa0118d50f457b3021a28a7e12a21c96c1c5a23c", + "testharness" + ], "css/css-transforms/animation/rotate-interpolation.html": [ "eff60ba72f72c126ce442a02e89a6b1875190297", "testharness" ], + "css/css-transforms/animation/scale-composition.html": [ + "6fc4de61132cd2b3c887f9a932c2e820fd5cdb38", + "testharness" + ], "css/css-transforms/animation/scale-interpolation.html": [ "0e33371955bb7ea630939de5c0333355f9830586", "testharness" ], + "css/css-transforms/animation/transform-composition.html": [ + "928da71a9b9c0ff8d5552976ee2b635f1f3567b6", + "testharness" + ], "css/css-transforms/animation/transform-interpolation-001.html": [ "4647c2c9119baa9d998f14f2f4973fc3607fd51b", "testharness" @@ -608338,10 +608702,38 @@ "c69bad7c93b8448b763e7f98d0ed6b50783ed7d2", "testharness" ], + "css/css-transforms/animation/transform-matrix-composition.html": [ + "2586ff3d4a577b9c4b43a2841884c6f490d7ccf3", + "testharness" + ], "css/css-transforms/animation/transform-origin-interpolation.html": [ "02b8b59b0b92cb37c4cce43a06ff1e9eff2b41e4", "testharness" ], + "css/css-transforms/animation/transform-perspective-composition.html": [ + "82f8dad59b6590c325ae7b4d2de7cf7b72959c71", + "testharness" + ], + "css/css-transforms/animation/transform-rotate-composition.html": [ + "e062860e72937121ed290c81a1e14276899ec383", + "testharness" + ], + "css/css-transforms/animation/transform-scale-composition.html": [ + "87c33a85ed672612ec60570001f1b9a2bf4f05c9", + "testharness" + ], + "css/css-transforms/animation/transform-skew-composition.html": [ + "cda44b60c0ed9683291ee6341d14c28cf327a4af", + "testharness" + ], + "css/css-transforms/animation/transform-translate-composition.html": [ + "49214c4a93c8c1d16416c131a6780564e474e723", + "testharness" + ], + "css/css-transforms/animation/translate-composition.html": [ + "3abdb4522b07094ca689acee9fc7e252f18438ec", + "testharness" + ], "css/css-transforms/animation/translate-interpolation.html": [ "67d9b136211670a4fe664e880feff802c95d897b", "testharness" @@ -612662,6 +613054,10 @@ "c007816ecb04236421ff0aea8861da19c244338a", "testharness" ], + "css/css-transitions/animations/vertical-align-composition.html": [ + "222a511679b999cc684d26fc3c5e73bfc1d0ee46", + "testharness" + ], "css/css-transitions/animations/vertical-align-interpolation.html": [ "c81c83239354cc3c179612f26f95891dac8e3676", "testharness" @@ -648986,10 +649382,6 @@ "34864d4a4b6bd911f496026ada7bdc41ba3a6905", "support" ], - "fetch/metadata/appcache.tentative.https.sub.html": [ - "3dc47c696fb87ead0ef808b99b7e6e52cff01ebe", - "testharness" - ], "fetch/metadata/download.tentative.https.sub.html": [ "6f2a0434d497f695a44cc0d8972083d7cfa194c9", "testharness" @@ -649051,7 +649443,7 @@ "testharness" ], "fetch/metadata/portal.tentative.https.sub.html": [ - "4e50b6b24b356dac6c6c7f5b7d17b7f4f01431c1", + "96067ae82ab7838784f6350dda7cee7840e277f8", "testharness" ], "fetch/metadata/prefetch.tentative.https.sub.html": [ @@ -649155,7 +649547,7 @@ "support" ], "fetch/metadata/resources/record-header.py": [ - "3bfb1fcdfaab6f166149b5a451f58e82bbc48531", + "364c800a19ce6f2060a97019d222acbf71045e93", "support" ], "fetch/metadata/resources/redirectTestHelper.sub.js": [ @@ -653903,7 +654295,7 @@ "support" ], "html/cross-origin-opener-policy/coep-navigate-popup.https.html": [ - "21320a61b2eaa8b17cbb518d2028a5dce4134bf7", + "faa2793e5faaa81d4d819110ec1045dac9d9cde0", "testharness" ], "html/cross-origin-opener-policy/coep-navigate-popup.https.html.headers": [ @@ -653911,7 +654303,7 @@ "support" ], "html/cross-origin-opener-policy/coep-redirect.https.html": [ - "73f07ddef88877aacf36ea43d47cc7aee85e5508", + "2727013783fa3d3c6a26f6746c1a0c28c59fdf19", "testharness" ], "html/cross-origin-opener-policy/coep-redirect.https.html.headers": [ @@ -653919,7 +654311,7 @@ "support" ], "html/cross-origin-opener-policy/coep.https.html": [ - "64994cdfb76f18cb11c42cc8258209fcfd1091e3", + "de1dd56d9d55e5e3f1de62b16058139204c2e098", "testharness" ], "html/cross-origin-opener-policy/coep.https.html.headers": [ @@ -653927,32 +654319,108 @@ "support" ], "html/cross-origin-opener-policy/coop-navigated-popup.https.html": [ - "9a92dd9bde885e9e3ee19c6e4ef93a0e7b82e418", + "3c6019ace0b308562cca08d6d6bfd6484882e1db", "testharness" ], "html/cross-origin-opener-policy/coop-navigated-popup.https.html.headers": [ - "a19f4400cea33a60c99807330704a23ee363b146", + "d83ed86fb9b5d159b9f380424887402edc96cb75", "support" ], "html/cross-origin-opener-policy/coop-sandbox.https.html": [ - "e471b1eda2ef28a1022e86a9d254608d02578e55", + "fc16c186cadf44bd1639d0eacf610e7781bc02bd", "testharness" ], "html/cross-origin-opener-policy/coop-sandbox.https.html.headers": [ "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", "support" ], + "html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html": [ + "73ef1ea29a2e91f0e4f9a9867081fe8aa5a9c81b", + "testharness" + ], + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html": [ + "a8b6d543cd018b06b962b4ad1ef41b8c043ae496", + "testharness" + ], + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html.headers": [ + "a19f4400cea33a60c99807330704a23ee363b146", + "support" + ], + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html": [ + "aaaae2dc31799bc46d58424133edb47a8b31794c", + "testharness" + ], + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html.headers": [ + "a19f4400cea33a60c99807330704a23ee363b146", + "support" + ], + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html": [ + "fd58b06f783966f2ad24c2c2443c422fce2e94d0", + "testharness" + ], + "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html.headers": [ + "a19f4400cea33a60c99807330704a23ee363b146", + "support" + ], + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html": [ + "7330ff75bcff697490ee248f938bdbb9c79f6b88", + "testharness" + ], + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html.headers": [ + "ab7b28948150ff64101ef080b0d9c7cc9a6a34d2", + "support" + ], + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html": [ + "01cc6719fd3a202514444765ff6a4e4d2153f2f1", + "testharness" + ], + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html.headers": [ + "ab7b28948150ff64101ef080b0d9c7cc9a6a34d2", + "support" + ], + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html": [ + "b1a664dd9a5b8e8dd4cf561a31f85e8f2e88ae2d", + "testharness" + ], + "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html.headers": [ + "ab7b28948150ff64101ef080b0d9c7cc9a6a34d2", + "support" + ], + "html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html": [ + "d0fc7c79841eab57d810566e4eedc3e4f338d954", + "testharness" + ], + "html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html.headers": [ + "34bd099a302f893f92586241ea38aac812bf28d0", + "support" + ], + "html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html": [ + "67d2523e28d9af525449a192f659d5be1768532c", + "testharness" + ], + "html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html.headers": [ + "34bd099a302f893f92586241ea38aac812bf28d0", + "support" + ], + "html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html": [ + "78b7ca8fcad0f5a68dbf3fefd3d1945564783fad", + "testharness" + ], + "html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html.headers": [ + "34bd099a302f893f92586241ea38aac812bf28d0", + "support" + ], "html/cross-origin-opener-policy/no-https.html": [ - "014ba1f333b5e254609819bd99618ebcc6b7391b", + "f4e926b2eb2838c443f2e8f4d3bc024e719039a7", "testharness" ], "html/cross-origin-opener-policy/no-https.html.headers": [ "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", "support" ], - "html/cross-origin-opener-policy/popup-none.https.html": [ - "62633457d3f57135658fb4bdf959fce278dc9851", - "testharness" + "html/cross-origin-opener-policy/popup-meta-http-equiv.https.html.headers": [ + "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", + "support" ], "html/cross-origin-opener-policy/popup-redirect-cache.https.html": [ "0524878a03a8d3764c63b77b5c8c4f1453c5a288", @@ -653962,44 +654430,92 @@ "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", "support" ], + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html": [ + "cea3788ba83d41a97b3b59bd2744db079f272a45", + "testharness" + ], + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html.headers": [ + "d83ed86fb9b5d159b9f380424887402edc96cb75", + "support" + ], + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html": [ + "a50231f82287b03d15c186472767c215035886f6", + "testharness" + ], + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html.headers": [ + "d83ed86fb9b5d159b9f380424887402edc96cb75", + "support" + ], + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html": [ + "53b4263a70fd41bd044440abeddce3b9585e5850", + "testharness" + ], + "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html.headers": [ + "d83ed86fb9b5d159b9f380424887402edc96cb75", + "support" + ], "html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html": [ - "65ec3b26aa0c6e7e5df857bde88f67d394af2e9e", + "d4005ac20d8d7d9b215fe73785d9a1a3466fcef3", "testharness" ], "html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html.headers": [ "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", "support" ], - "html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html": [ - "2f8ebc3be3fcc7e23e64c95d5ceaaf83dfa1f67f", + "html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html": [ + "9f7d27b3c8dc381f893c6ccf84c463db7f503f9b", "testharness" ], - "html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html.headers": [ - "a19f4400cea33a60c99807330704a23ee363b146", + "html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html.headers": [ + "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", "support" ], - "html/cross-origin-opener-policy/popup-same-origin.https.html": [ - "964011ff7621155446925010c143b025954a5a61", + "html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html": [ + "c84219a80f5c83ca6e4dc244406db9f05461fa83", "testharness" ], - "html/cross-origin-opener-policy/popup-same-origin.https.html.headers": [ + "html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html.headers": [ "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", "support" ], - "html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html": [ - "18ee909d1865567706674b75b40a6615ef75908c", + "html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html": [ + "b875cc2e0e4abbc215be36111a22414f72126138", "testharness" ], - "html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html.headers": [ - "ab7b28948150ff64101ef080b0d9c7cc9a6a34d2", + "html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html.headers": [ + "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", "support" ], - "html/cross-origin-opener-policy/popup-same-site.https.html": [ - "9a0db2765daeb445a892a8ece7347c6b97f24917", + "html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html": [ + "5cbf5b4c20c9b89c5cf946ebeea1733fbfb57c2c", "testharness" ], - "html/cross-origin-opener-policy/popup-same-site.https.html.headers": [ - "34bd099a302f893f92586241ea38aac812bf28d0", + "html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html": [ + "f8a4ebe71288d6071f3d644607132a32b0c63f79", + "testharness" + ], + "html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html.headers": [ + "073ce7adfbd81cb7c0b2f91f96c8349b6677f26c", + "support" + ], + "html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html": [ + "e38acf4fcb1e1d0b039894013ab56e011c5efa8f", + "testharness" + ], + "html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html": [ + "d89398cd653de327a10ff53b58b29a62e422ffb8", + "testharness" + ], + "html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html": [ + "cb6fc02ac171f606cb00a315d327062d13f32e91", + "testharness" + ], + "html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html": [ + "6e0edfa04233865f802a12a3ad3c4f26d50866f7", + "testharness" + ], + "html/cross-origin-opener-policy/resources/call-functionCalledByOpenee.html": [ + "d0ff0b723e0f31c6ed635db95851769a598ce2a1", "support" ], "html/cross-origin-opener-policy/resources/common.js": [ @@ -655071,7 +655587,7 @@ "testharness" ], "html/dom/idlharness.worker.js": [ - "b720d54f3d953633bd7abd1e73097a31a369e825", + "feddaf54c9235dbb766f79990f729c8e441cbbec", "testharness" ], "html/dom/new-harness.js": [ @@ -664807,11 +665323,11 @@ "testharness" ], "html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html": [ - "fedf2ea4e4f0aa5018db5bb24ec3bf0e15333992", + "2f69407592ecf0502a75782f6094beaf9310986d", "testharness" ], "html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html": [ - "8ac3aae1279c0f6df2203251aae26854ba551b57", + "c939a94c37e160f374445ec1def14137764e54d4", "testharness" ], "html/semantics/forms/constraints/form-validation-validity-stepMismatch.html": [ @@ -664835,7 +665351,7 @@ "testharness" ], "html/semantics/forms/constraints/form-validation-validity-valueMissing.html": [ - "2e1c666436a19bc759026ebf55df4a17073ecb5d", + "3229527fabc00880bd2f95d7aa4f494ce9884fa3", "testharness" ], "html/semantics/forms/constraints/form-validation-willValidate.html": [ @@ -665546,10 +666062,18 @@ "bd49a15fc82136105c17818561cc1e8f7fbfe7ee", "testharness" ], + "html/semantics/forms/the-input-element/input-valueasdate.html": [ + "a958e991ec53a22413bc311d832bc28b3b4baccf", + "testharness" + ], "html/semantics/forms/the-input-element/input-valueasnumber-invalidstateerr.html": [ "a3187ff3fbca4252d701b30c761819f5075611cc", "testharness" ], + "html/semantics/forms/the-input-element/input-valueasnumber.html": [ + "321c981c74d2293694fecf18284126b089aca1c2", + "testharness" + ], "html/semantics/forms/the-input-element/input-width.html": [ "5278ff77e1e7523a74970c5b85a94e29e66ea8e4", "testharness" @@ -665619,7 +666143,7 @@ "testharness" ], "html/semantics/forms/the-input-element/radio.html": [ - "c37fa7acd0c705e4711be719b9f99ce4db929560", + "7dcc9a14a8980898917d8d771041bd691e99785f", "testharness" ], "html/semantics/forms/the-input-element/range-2.html": [ @@ -665703,7 +666227,7 @@ "testharness" ], "html/semantics/forms/the-input-element/valueMode.html": [ - "9525d3ca1feedb651b18fefed8391d3584f36189", + "5502011794fcfdcfae5161ca861448ceb503dc54", "testharness" ], "html/semantics/forms/the-input-element/week.html": [ @@ -671907,7 +672431,7 @@ "support" ], "infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini": [ - "c6f136d9715e86db9952dd6eac80b09b7782eed8", + "87726f492394955e3835a6a6675cae490669d5de", "support" ], "infrastructure/metadata/infrastructure/assumptions/document-fonts-ready.html.ini": [ @@ -673847,7 +674371,7 @@ "testharness" ], "lint.whitelist": [ - "62644762ce2bce2cbf0c3c8527cac8384ce00256", + "353922a456c4dbeacd2ab6d651b64be00c9a4903", "support" ], "loading/lazyload/META.yml": [ @@ -701899,7 +702423,7 @@ "support" ], "resources/chromium/nfc-mock.js": [ - "2c1724b7592eb1d6e66177544998abbec70fbfe6", + "be86dedd4d8877dcb01ade039c95cbb8f7acc99f", "support" ], "resources/chromium/sensor.mojom.js": [ @@ -704542,6 +705066,10 @@ "417aa4ebec8380ec778bbe42f3ee8fb45649292f", "testharness" ], + "service-workers/service-worker/opaque-script.https.html": [ + "7d2121855dfa17649b81fd96aad03d93e85be22b", + "testharness" + ], "service-workers/service-worker/performance-timeline.https.html": [ "1fe19da53be6c460cae5f069794bbdee3f4a0da8", "testharness" @@ -705506,6 +706034,22 @@ "f31ac9b5c4ce372b182d53dd6690f1c3b498ecd1", "support" ], + "service-workers/service-worker/resources/opaque-script-frame.html": [ + "a57aacec7c6f32d9c321b99057032947c877e4b8", + "support" + ], + "service-workers/service-worker/resources/opaque-script-large.js": [ + "7e1c598efc5cf15f23789fefa0993e1d07ac214e", + "support" + ], + "service-workers/service-worker/resources/opaque-script-small.js": [ + "8b890985752fd01d47d8cb553d6dad945dbc00bb", + "support" + ], + "service-workers/service-worker/resources/opaque-script-sw.js": [ + "4d882c617d8dc6b790a51b82f3edeb65e7f18d22", + "support" + ], "service-workers/service-worker/resources/other.html": [ "b9f3504387722c4583a0904cb7b7f7a4f9706b71", "support" @@ -718970,6 +719514,10 @@ "1b723b7bb3c5cebc0701e2393e334a1e99ce2ef3", "testharness" ], + "trusted-types/DOMParser-parseFromString-regression.tentative.https.html": [ + "30986e45d2671caec84879314b43891664dd10ae", + "testharness" + ], "trusted-types/DOMParser-parseFromString.tentative.html": [ "2dfc37686bca15431c216a50d29f9f9eed2782e0", "testharness" @@ -719051,7 +719599,7 @@ "testharness" ], "trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html": [ - "8608bcc24fed0fb050925bd52830db38082ae3b1", + "a78b3dbf0fd7a9532a45957970076cce16819231", "testharness" ], "trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-noNamesGiven.tentative.html": [ @@ -719215,7 +719763,7 @@ "support" ], "trusted-types/support/helper.sub.js": [ - "d13ad567a726f39299a7e7f58aeffec4ba90a908", + "20f56c3cbc7af094a7fd8db5d73b546804f8e9d0", "support" ], "trusted-types/support/navigation-report-only-support.html": [ @@ -725003,7 +725551,7 @@ "testharness" ], "web-nfc/NDEFRecord_constructor.https.html": [ - "2da7ca91078aa5ec8232f5347fb276618dad3c3c", + "0e0f1a771394570747117980c824c133ca3b060d", "testharness" ], "web-nfc/NDEFWriter-document-hidden-manual.https.html": [ @@ -725011,7 +725559,7 @@ "manual" ], "web-nfc/NDEFWriter_push.https.html": [ - "cb6b3941410035c5c5736e13d59fbbfb85f0d4cc", + "bf7c1f86ad0b4fdf066b4bc4584f9409d840d823", "testharness" ], "web-nfc/README.md": [ diff --git a/tests/wpt/metadata/css/css-color/animation/color-composition.html.ini b/tests/wpt/metadata/css/css-color/animation/color-composition.html.ini new file mode 100644 index 00000000000..6c2ecd50442 --- /dev/null +++ b/tests/wpt/metadata/css/css-color/animation/color-composition.html.ini @@ -0,0 +1,28 @@ +[color-composition.html] + [Compositing: property <color> underlying [rgb(60, 60, 60)\] from add [rgb(0, 0, 0)\] to replace [rgb(50, 50, 50)\] at (1.2) should be [rgb(48, 48, 48)\]] + expected: FAIL + + [Compositing: property <color> underlying [rgb(50, 50, 50)\] from add [rgb(10, 10, 10)\] to replace [rgb(30, 30, 30)\] at (1.2) should be [rgb(24, 24, 24)\]] + expected: FAIL + + [Compositing: property <color> underlying [rgb(50, 50, 50)\] from add [rgb(10, 10, 10)\] to replace [rgb(30, 30, 30)\] at (1) should be [rgb(30, 30, 30)\]] + expected: FAIL + + [Compositing: property <color> underlying [rgb(60, 60, 60)\] from add [rgb(0, 0, 0)\] to replace [rgb(50, 50, 50)\] at (1) should be [rgb(50, 50, 50)\]] + expected: FAIL + + [Compositing: property <color> underlying [rgb(60, 60, 60)\] from add [rgb(0, 0, 0)\] to replace [rgb(50, 50, 50)\] at (0.5) should be [rgb(55, 55, 55)\]] + expected: FAIL + + [Compositing: property <color> underlying [rgb(50, 50, 50)\] from add [rgb(10, 10, 10)\] to replace [rgb(30, 30, 30)\] at (0) should be [rgb(60, 60, 60)\]] + expected: FAIL + + [Compositing: property <color> underlying [rgb(50, 50, 50)\] from add [rgb(10, 10, 10)\] to replace [rgb(30, 30, 30)\] at (0.2) should be [rgb(54, 54, 54)\]] + expected: FAIL + + [Compositing: property <color> underlying [rgb(60, 60, 60)\] from add [rgb(0, 0, 0)\] to replace [rgb(50, 50, 50)\] at (1.5) should be [rgb(45, 45, 45)\]] + expected: FAIL + + [Compositing: property <color> underlying [rgb(50, 50, 50)\] from add [rgb(10, 10, 10)\] to replace [rgb(30, 30, 30)\] at (1.5) should be [rgb(15, 15, 15)\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-flexbox/animation/flex-basis-composition.html.ini b/tests/wpt/metadata/css/css-flexbox/animation/flex-basis-composition.html.ini new file mode 100644 index 00000000000..d98f8d9f081 --- /dev/null +++ b/tests/wpt/metadata/css/css-flexbox/animation/flex-basis-composition.html.ini @@ -0,0 +1,76 @@ +[flex-basis-composition.html] + [Compositing: property <flex-basis> underlying [100px\] from add [100px\] to add [auto\] at (1.5) should be [auto\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [100px\] from add [10px\] to add [2px\] at (1) should be [102px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [50px\] from add [100px\] to add [200px\] at (1.5) should be [300px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [100px\] from add [10px\] to add [2px\] at (0.5) should be [106px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [100px\] from add [10px\] to add [2px\] at (-0.5) should be [114px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [100px\] from add [10px\] to add [2px\] at (1.5) should be [98px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [50px\] from add [100px\] to replace [200px\] at (1) should be [200px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [10%\] from add [100px\] to add [20%\] at (1.5) should be [calc(-50px + 40%)\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [10%\] from add [100px\] to add [20%\] at (0) should be [calc(100px + 10%)\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [10%\] from add [100px\] to add [20%\] at (-0.3) should be [calc(130px + 4%)\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [100px\] from add [100px\] to add [auto\] at (-0.3) should be [200px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [100px\] from add [100px\] to add [auto\] at (1) should be [auto\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [50px\] from add [100px\] to replace [200px\] at (0.5) should be [175px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [50px\] from add [100px\] to replace [200px\] at (-0.3) should be [135px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [50px\] from add [100px\] to add [200px\] at (-0.3) should be [120px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [10%\] from add [100px\] to add [20%\] at (0.5) should be [calc(50px + 20%)\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [50px\] from add [100px\] to add [200px\] at (1) should be [250px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [50px\] from add [100px\] to add [200px\] at (0) should be [150px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [100px\] from add [100px\] to add [auto\] at (0.5) should be [auto\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [50px\] from add [100px\] to replace [200px\] at (0) should be [150px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [100px\] from add [100px\] to add [auto\] at (0) should be [200px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [50px\] from add [100px\] to add [200px\] at (0.5) should be [200px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [50px\] from add [100px\] to replace [200px\] at (1.5) should be [225px\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [10%\] from add [100px\] to add [20%\] at (1) should be [30%\]] + expected: FAIL + + [Compositing: property <flex-basis> underlying [100px\] from add [10px\] to add [2px\] at (0) should be [110px\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-images/animations/object-position-interpolation.html.ini b/tests/wpt/metadata/css/css-images/animations/object-position-interpolation.html.ini deleted file mode 100644 index 21f1c21b7a0..00000000000 --- a/tests/wpt/metadata/css/css-images/animations/object-position-interpolation.html.ini +++ /dev/null @@ -1,640 +0,0 @@ -[object-position-interpolation.html] - [object-position-interpolation] - expected: FAIL - - [Web Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (0.5) should be [50px 100px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (0.5) should be [calc(25% + 25px) calc(50% + 50px)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (1) should be [100% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [initial\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [unset\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]] - expected: FAIL - - [CSS Transitions: property <object-position> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [inherit\] to [20px 20px\] at (0) should be [30px 10px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [top right\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (0.5) should be [50px 100px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from neutral to [20px 20px\] at (0) should be [10px 30px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [50px 100px\] at (0.5) should be [calc(25% + 25px) calc(50% + 50px)\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 50%\] to [100% 100%\] at (-0.3) should be [35% 35%\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (1.5) should be [125% 125%\]] - expected: FAIL - - [Web Animations: property <object-position> from [initial\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (-0.5) should be [25% 50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 100%\] to [50px 100px\] at (0) should be [50% 100%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [100px 200px\] to [0px 0px\] at (0.5) should be [50px 100px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [top right\] at (1) should be [100% 0%\]] - expected: FAIL - - [CSS Animations: property <object-position> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]] - expected: FAIL - - [Web Animations: property <object-position> from [unset\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (0) should be [50% 100%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [50px 100px\] at (0) should be [50% 100%\]] - expected: FAIL - - [Web Animations: property <object-position> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 100%\] to [0px 0px\] at (1) should be [0px 0px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [0px 0px\] at (-0.3) should be [65% 130%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (-0.3) should be [calc(65% + -15px) calc(130% + -30px)\]] - expected: FAIL - - [CSS Animations: property <object-position> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [0px 0px\] at (0.5) should be [25% 50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.5) should be [75% 50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [initial\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (0) should be [50% 100%\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [100px 200px\] to [0px 0px\] at (1.5) should be [-50px -100px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [top right\] at (1.5) should be [125% -25%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 50%\] to [100% 100%\] at (0.5) should be [75% 75%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (1.5) should be [calc(-25% + 75px) calc(-50% + 150px)\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.3) should be [65% 50%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (1) should be [0px 0px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 100%\] to [50px 100px\] at (-0.3) should be [calc(65% + -15px) calc(130% + -30px)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (1.5) should be [-50px -100px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [100px 200px\] to [0px 0px\] at (-0.3) should be [130px 260px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [initial\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 100%\] to [50px 100px\] at (1) should be [calc(0% + 50px) calc(0% + 100px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [initial\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [50px 100px\] at (1.5) should be [calc(-25% + 75px) calc(-50% + 150px)\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.9) should be [95% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [0px 0px\] at (1) should be [0px 0px\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (0) should be [50% 100%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from neutral to [20px 20px\] at (0.5) should be [15px 25px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 100%\] to [0px 0px\] at (0.5) should be [25% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [inherit\] to [20px 20px\] at (0.5) should be [25px 15px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [initial\] to [20px 20px\] at (0) should be [50% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [initial\] to [20px 20px\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [inherit\] to [20px 20px\] at (0) should be [30px 10px\]] - expected: FAIL - - [Web Animations: property <object-position> from [unset\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [unset\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (1) should be [calc(0% + 50px) calc(0% + 100px)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [inherit\] to [20px 20px\] at (0.5) should be [25px 15px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [100px 200px\] to [0px 0px\] at (1) should be [0px 0px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from neutral to [20px 20px\] at (1) should be [20px 20px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [unset\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (1.5) should be [125% 125%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [unset\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [initial\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.5) should be [75% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (1.5) should be [125% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [100px 200px\] to [0px 0px\] at (0) should be [100px 200px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 50%\] to [100% 100%\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (1) should be [100% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [top right\] at (1.5) should be [125% -25%\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [top right\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [unset\] to [20px 20px\] at (0) should be [50% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (0.5) should be [75% 75%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from neutral to [20px 20px\] at (1) should be [20px 20px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (2) should be [150% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (1) should be [100% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [initial\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [top right\] at (1) should be [100% 0%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [unset\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [top right\] at (1.5) should be [125% -25%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [top right\] at (0.5) should be [75% 25%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (2) should be [150% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (1.5) should be [-50px -100px\]] - expected: FAIL - - [Web Animations: property <object-position> from [initial\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (2) should be [150% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (1) should be [100% 100%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.3) should be [65% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [inherit\] to [20px 20px\] at (0.5) should be [25px 15px\]] - expected: FAIL - - [Web Animations: property <object-position> from neutral to [20px 20px\] at (1) should be [20px 20px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [100px 200px\] to [0px 0px\] at (1.5) should be [-50px -100px\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0) should be [center\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (-0.3) should be [35% 35%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (0.5) should be [25% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [unset\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]] - expected: FAIL - - [Web Animations: property <object-position> from [inherit\] to [20px 20px\] at (1) should be [20px 20px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [top right\] at (0.5) should be [75% 25%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from neutral to [20px 20px\] at (0.5) should be [15px 25px\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (-0.3) should be [35% 35%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 50%\] to [100% 100%\] at (1) should be [100% 100%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [top right\] at (-0.3) should be [35% 65%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (-0.5) should be [25% 50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 100%\] to [0px 0px\] at (-0.3) should be [65% 130%\]] - expected: FAIL - - [Web Animations: property <object-position> from [unset\] to [20px 20px\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (0.5) should be [75% 75%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0) should be [center\]] - expected: FAIL - - [CSS Animations: property <object-position> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [top right\] at (1) should be [100% 0%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (1) should be [0px 0px\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [top right\] at (-0.3) should be [35% 65%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (1) should be [100% 100%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [initial\] to [20px 20px\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Animations: property <object-position> from neutral to [20px 20px\] at (0.5) should be [15px 25px\]] - expected: FAIL - - [Web Animations: property <object-position> from [unset\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]] - expected: FAIL - - [CSS Animations: property <object-position> from neutral to [20px 20px\] at (0) should be [10px 30px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [initial\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.5) should be [75% 50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [inherit\] to [20px 20px\] at (1) should be [20px 20px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [initial\] to [20px 20px\] at (0) should be [50% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [initial\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (1.5) should be [calc(-25% + 75px) calc(-50% + 150px)\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (1.5) should be [-25% -50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [top right\] at (-0.3) should be [35% 65%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [50px 100px\] at (-0.3) should be [calc(65% + -15px) calc(130% + -30px)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [unset\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (-0.3) should be [130px 260px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (0.5) should be [calc(25% + 25px) calc(50% + 50px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.9) should be [95% 50%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.3) should be [65% 50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (0) should be [center\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.3) should be [65% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [0px 0px\] at (1.5) should be [-25% -50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [unset\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 50%\] to [100% 100%\] at (1.5) should be [125% 125%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [100px 200px\] to [0px 0px\] at (-0.3) should be [130px 260px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 100%\] to [50px 100px\] at (0.5) should be [calc(25% + 25px) calc(50% + 50px)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.5) should be [75% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (0) should be [100px 200px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [top right\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [initial\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (1) should be [calc(0% + 50px) calc(0% + 100px)\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [100px 200px\] to [0px 0px\] at (0.5) should be [50px 100px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [top right\] at (1) should be [100% 0%\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (0) should be [50% 100%\]] - expected: FAIL - - [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (-0.5) should be [25% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (1.5) should be [125% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 50%\] to [100% 100%\] at (1.5) should be [125% 125%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [100px 200px\] to [0px 0px\] at (1) should be [0px 0px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (1.5) should be [125% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (1) should be [0px 0px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.9) should be [95% 50%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [unset\] to [20px 20px\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.9) should be [95% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 50%\] to [100% 100%\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [top right\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from neutral to [20px 20px\] at (0) should be [10px 30px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [initial\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [initial\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]] - expected: FAIL - - [CSS Animations: property <object-position> from neutral to [20px 20px\] at (1) should be [20px 20px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 50%\] to [100% 100%\] at (1) should be [100% 100%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [initial\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (-0.3) should be [65% 130%\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (-0.3) should be [calc(65% + -15px) calc(130% + -30px)\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (1) should be [0px 0px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [top right\] at (0.5) should be [75% 25%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (0) should be [center\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 100%\] to [50px 100px\] at (1.5) should be [calc(-25% + 75px) calc(-50% + 150px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [inherit\] to [20px 20px\] at (1) should be [20px 20px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [inherit\] to [20px 20px\] at (0) should be [30px 10px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [inherit\] to [20px 20px\] at (1) should be [20px 20px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [0px 0px\] at (0) should be [50% 100%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [initial\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [50px 100px\] at (1) should be [calc(0% + 50px) calc(0% + 100px)\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (-0.3) should be [65% 130%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (0) should be [100px 200px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [initial\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [unset\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 100%\] to [0px 0px\] at (1.5) should be [-25% -50%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [unset\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [inherit\] to [20px 20px\] at (0.5) should be [25px 15px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [top right\] at (1.5) should be [125% -25%\]] - expected: FAIL - - [Web Animations: property <object-position> from neutral to [20px 20px\] at (0) should be [10px 30px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [top right\] at (-0.3) should be [35% 65%\]] - expected: FAIL - - [Web Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (-0.3) should be [130px 260px\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (2) should be [150% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (-0.5) should be [25% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]] - expected: FAIL - - [Web Animations: property <object-position> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [unset\] to [20px 20px\] at (0) should be [50% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 50%\] to [100% 100%\] at (-0.3) should be [35% 35%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (1.5) should be [-25% -50%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (1) should be [100% 50%\]] - expected: FAIL - - [Web Animations: property <object-position> from neutral to [20px 20px\] at (0.5) should be [15px 25px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [unset\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [unset\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [50% 50%\] to [100% 100%\] at (0.5) should be [75% 75%\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [100px 200px\] to [0px 0px\] at (0) should be [100px 200px\]] - expected: FAIL - - [Web Animations: property <object-position> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]] - expected: FAIL - - [Web Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (0.5) should be [25% 50%\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [50% 100%\] to [0px 0px\] at (0) should be [50% 100%\]] - expected: FAIL - - [Web Animations: property <object-position> from [inherit\] to [20px 20px\] at (0) should be [30px 10px\]] - expected: FAIL - - [CSS Transitions with transition: all: property <object-position> from [unset\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]] - expected: FAIL - - [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (1.5) should be [125% 50%\]] - expected: FAIL - - [CSS Animations: property <object-position> from [center\] to [top right\] at (0.5) should be [75% 25%\]] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-transforms/animation/perspective-composition.html.ini b/tests/wpt/metadata/css/css-transforms/animation/perspective-composition.html.ini new file mode 100644 index 00000000000..35a7d86f0ac --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/animation/perspective-composition.html.ini @@ -0,0 +1,61 @@ +[perspective-composition.html] + [Compositing: property <perspective> underlying [50px\] from add [100px\] to replace [200px\] at (1.5) should be [225px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [100px\] from add [100px\] to add [none\] at (1.5) should be [none\]] + expected: FAIL + + [Compositing: property <perspective> underlying [50px\] from add [100px\] to add [200px\] at (0.5) should be [200px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [100px\] from add [100px\] to add [none\] at (1) should be [none\]] + expected: FAIL + + [Compositing: property <perspective> underlying [100px\] from add [100px\] to add [none\] at (-0.3) should be [200px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [100px\] from add [10px\] to add [2px\] at (0.5) should be [106px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [100px\] from add [10px\] to add [2px\] at (1) should be [102px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [100px\] from add [10px\] to add [2px\] at (-0.5) should be [114px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [50px\] from add [100px\] to add [200px\] at (1) should be [250px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [100px\] from add [100px\] to add [none\] at (0.5) should be [none\]] + expected: FAIL + + [Compositing: property <perspective> underlying [50px\] from add [100px\] to add [200px\] at (1.5) should be [300px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [100px\] from add [10px\] to add [2px\] at (0) should be [110px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [50px\] from add [100px\] to replace [200px\] at (0.5) should be [175px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [50px\] from add [100px\] to replace [200px\] at (1) should be [200px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [50px\] from add [100px\] to add [200px\] at (0) should be [150px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [50px\] from add [100px\] to replace [200px\] at (0) should be [150px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [50px\] from add [100px\] to add [200px\] at (-0.3) should be [120px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [100px\] from add [100px\] to add [none\] at (0) should be [200px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [100px\] from add [10px\] to add [2px\] at (1.5) should be [98px\]] + expected: FAIL + + [Compositing: property <perspective> underlying [50px\] from add [100px\] to replace [200px\] at (-0.3) should be [135px\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/animation/rotate-composition.html.ini b/tests/wpt/metadata/css/css-transforms/animation/rotate-composition.html.ini new file mode 100644 index 00000000000..4840f4b1bca --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/animation/rotate-composition.html.ini @@ -0,0 +1,187 @@ +[rotate-composition.html] + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [none\] to replace [0 1 0 100deg\] at (-1) should be [0.31 -0.22 0.92 131.66deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (0.75) should be [-1.51909e-17 1 -4.55726e-17 75deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (-1) should be [0 1 0 -100deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [none\] to replace [0 1 0 100deg\] at (1) should be [0 1 0 100deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 0 0 200deg\] from add [1 0 0 -100deg\] to replace [1 0 0 40deg\] at (-1) should be [1 0 0 160deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (0.25) should be [1 2 3 270deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 0 0 90deg\] from add [0 1 0 180deg\] to replace [0 0 1 90deg\] at (0.25) should be [-1.48952e-16 -0.894427 -0.447214 131.81deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (1) should be [0 1 0 100deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (0.25) should be [-1.20172e-16 1 -3.60516e-16 25deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (0.75) should be [-1.51909e-17 1 -4.55726e-17 75deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 0 0 90deg\] from add [0 1 0 180deg\] to replace [0 0 1 90deg\] at (-1) should be [-6.12323e-17 -1 1.57009e-16 90deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [none\] to replace [0 1 0 100deg\] at (2) should be [-0.2 0.79 -0.59 151.11deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (2) should be [1 2 3 -360deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [0 1 0 -40deg\] from replace [0 1 0 50deg\] to add [0 1 0 10deg\] at (-1) should be [0 1 0 130deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (0.75) should be [0 1 0 75deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 0 0 200deg\] from add [1 0 0 -100deg\] to replace [1 0 0 40deg\] at (0) should be [1 0 0 100deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (0.25) should be [-1.20172e-16 1 -3.60516e-16 25deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (2) should be [-3.3235e-17 -1 -9.97049e-17 160deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (0) should be [1 2 3 50deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [0 1 0 -40deg\] from replace [0 1 0 50deg\] to add [0 1 0 10deg\] at (2) should be [0 1 0 -110deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 0 0 90deg\] from add [0 1 0 180deg\] to replace [0 0 1 90deg\] at (1) should be [90deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (2) should be [-3.3235e-17 -1 -9.97049e-17 160deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [100deg\] from add [10deg\] to add [30deg\] at (1) should be [130deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (0) should be [2 4 6 270deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (-1) should be [2 4 6 540deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (1) should be [0 1 0 100deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (0.75) should be [1 2 3 80deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (0) should be [1 2 3 360deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (-1) should be [-5.49276e-17 -1 -1.64783e-16 100deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (-1) should be [1 2 3 10deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (1) should be [0 1 0 100deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (1) should be [1 2 3 90deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (1) should be [none\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 0 0 200deg\] from add [1 0 0 -100deg\] to replace [1 0 0 40deg\] at (2) should be [1 0 0 -20deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [100deg\] from add [10deg\] to add [30deg\] at (2) should be [150deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [none\] to replace [0 1 0 100deg\] at (0.25) should be [0.21 0.73 0.64 86.72deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [100deg\] from add [10deg\] to add [30deg\] at (-1) should be [90deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 0 0 200deg\] from add [1 0 0 -100deg\] to replace [1 0 0 40deg\] at (1) should be [1 0 0 40deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (-1) should be [1 2 3 720deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (0.25) should be [1 2 3 60deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [100deg\] from add [10deg\] to add [30deg\] at (0) should be [110deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 0 0 200deg\] from add [1 0 0 -100deg\] to replace [1 0 0 40deg\] at (0.75) should be [1 0 0 55deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 0 0 200deg\] from add [1 0 0 -100deg\] to replace [1 0 0 40deg\] at (0.25) should be [1 0 0 85deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 0 0 90deg\] from add [0 1 0 180deg\] to replace [0 0 1 90deg\] at (2) should be [-6.12323e-17 -1 -4.71028e-16 90deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (-1) should be [-5.49276e-17 -1 -1.64783e-16 100deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [0 1 0 -40deg\] from replace [0 1 0 50deg\] to add [0 1 0 10deg\] at (0.25) should be [0 1 0 30deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (0.75) should be [2 4 6 67.5deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (0) should be [1 2 3 360deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (2) should be [0 1 0 200deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [none\] to replace [0 1 0 100deg\] at (0.75) should be [0.07 0.97 0.21 92.05deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [100deg\] from add [10deg\] to add [30deg\] at (0.75) should be [125deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (0.25) should be [2 4 6 202.5deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (2) should be [2 4 6 -270deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [0 1 0 -40deg\] from replace [0 1 0 50deg\] to add [0 1 0 10deg\] at (0.75) should be [0 1 0 -10deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [0 1 0 -40deg\] from replace [0 1 0 50deg\] to add [0 1 0 10deg\] at (1) should be [0 1 0 -30deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [100deg\] from add [10deg\] to add [30deg\] at (0.25) should be [115deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (2) should be [1 2 3 130deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (0.25) should be [0 1 0 25deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (0) should be [1 2 3 360deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [0 1 0 -40deg\] from replace [0 1 0 50deg\] to add [0 1 0 10deg\] at (0) should be [0 1 0 50deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 0 0 90deg\] from add [0 1 0 180deg\] to replace [0 0 1 90deg\] at (0.75) should be [-2.94392e-17 -0.707107 0.707107 70.5288deg\]] + expected: FAIL + + [Compositing: property <rotate> underlying [1 0 0 90deg\] from add [0 1 0 180deg\] to replace [0 0 1 90deg\] at (0) should be [-4.32978e-17 -0.707107 -0.707107 180deg\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/animation/scale-composition.html.ini b/tests/wpt/metadata/css/css-transforms/animation/scale-composition.html.ini new file mode 100644 index 00000000000..1c0dfb8d29d --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/animation/scale-composition.html.ini @@ -0,0 +1,115 @@ +[scale-composition.html] + [Compositing: property <scale> underlying [1 2 3\] from add [none\] to replace [7 8 9\] at (-0.5) should be [-2 -1 0\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [none\] at (1.5) should be [-0.5 -3.5 -7.5\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [7 8 9\] at (-0.5) should be [2.5 11 22.5\]] + expected: FAIL + + [Compositing: property <scale> underlying [none\] from add [none\] to replace [1.5 1\] at (2) should be [2 1\]] + expected: FAIL + + [Compositing: property <scale> underlying [none\] from add [none\] to replace [1.5 1\] at (0) should be [1\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [none\] at (-0.5) should be [5.5 14.5 26.5\]] + expected: FAIL + + [Compositing: property <scale> underlying [none\] from add [none\] to replace [1.5 1\] at (-1) should be [0.5 1\]] + expected: FAIL + + [Compositing: property <scale> underlying [2 1\] from add [3 1\] to add [4 1\] at (0.25) should be [6.5 1\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [none\] at (1) should be [none\]] + expected: FAIL + + [Compositing: property <scale> underlying [2 1\] from add [3 1\] to add [4 1\] at (0.75) should be [7.5 1\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [none\] to replace [7 8 9\] at (0.75) should be [5.5 6.5 7.5\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [7 8 9\] at (0.75) should be [6.25 8.5 11.25\]] + expected: FAIL + + [Compositing: property <scale> underlying [none\] from add [none\] to replace [1.5 1\] at (1) should be [1.5 1\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [7 8 9\] at (1.5) should be [8.5 7 4.5\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [7 8 9\] at (0) should be [4 10 18\]] + expected: FAIL + + [Compositing: property <scale> underlying [none\] from add [4 5 6\] to replace [none\] at (0.75) should be [1.75 2 2.25\]] + expected: FAIL + + [Compositing: property <scale> underlying [2 1\] from add [3 1\] to add [4 1\] at (1) should be [8 1\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [none\] to replace [7 8 9\] at (1) should be [7 8 9\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [none\] at (0.25) should be [3.25 7.75 13.75\]] + expected: FAIL + + [Compositing: property <scale> underlying [none\] from add [none\] to replace [1.5 1\] at (0.25) should be [1.125 1\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [7 8 9\] at (1) should be [7 8 9\]] + expected: FAIL + + [Compositing: property <scale> underlying [2 1\] from add [3 1\] to add [4 1\] at (1.5) should be [9 1\]] + expected: FAIL + + [Compositing: property <scale> underlying [none\] from add [4 5 6\] to replace [none\] at (0.25) should be [3.25 4 4.75\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [7 8 9\] at (0.25) should be [4.75 9.5 15.75\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [none\] at (0) should be [4 10 18\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [none\] at (0.5) should be [2.5 5.5 9.5\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [none\] to replace [7 8 9\] at (0.25) should be [2.5 3.5 4.5\]] + expected: FAIL + + [Compositing: property <scale> underlying [2 1\] from add [3 1\] to add [4 1\] at (0) should be [6 1\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [7 8 9\] at (0.5) should be [5.5 9 13.5\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [4 5 6\] to replace [none\] at (0.75) should be [1.75 3.25 5.25\]] + expected: FAIL + + [Compositing: property <scale> underlying [none\] from add [4 5 6\] to replace [none\] at (0) should be [4 5 6\]] + expected: FAIL + + [Compositing: property <scale> underlying [none\] from add [4 5 6\] to replace [none\] at (2) should be [-2 -3 -4\]] + expected: FAIL + + [Compositing: property <scale> underlying [2 1\] from add [3 1\] to add [4 1\] at (-0.5) should be [5 1\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [none\] to replace [7 8 9\] at (0.5) should be [4 5 6\]] + expected: FAIL + + [Compositing: property <scale> underlying [2 1\] from add [3 1\] to add [4 1\] at (0.5) should be [7 1\]] + expected: FAIL + + [Compositing: property <scale> underlying [none\] from add [4 5 6\] to replace [none\] at (-1) should be [7 9 11\]] + expected: FAIL + + [Compositing: property <scale> underlying [1 2 3\] from add [none\] to replace [7 8 9\] at (1.5) should be [10 11 12\]] + expected: FAIL + + [Compositing: property <scale> underlying [none\] from add [none\] to replace [1.5 1\] at (0.75) should be [1.375 1\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-composition.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-composition.html.ini new file mode 100644 index 00000000000..43186f806a2 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/animation/transform-composition.html.ini @@ -0,0 +1,64 @@ +[transform-composition.html] + [Compositing: property <transform> underlying [rotateX(90deg)\] from add [translate(100px, 100px)\] to add [scale(2)\] at (1) should be [matrix3d(2, 0, 0, 0, 0, 1.22465e-16, 2, 0, 0, -1, 6.12323e-17, 0, 0, 0, 0, 1)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(90deg)\] from add [translate(100px, 100px)\] to add [scale(2)\] at (0) should be [matrix3d(1, 0, 0, 0, 0, 6.12323e-17, 1, 0, 0, -1, 6.12323e-17, 0, 100, 6.12323e-15, 100, 1)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(100deg) rotateY(100deg)\] from add [translate(10px, 20px)\] to replace [rotateX(200deg) rotateY(200deg) translate(110px, 220px)\] at (0.5) should be [rotateX(150deg) rotateY(150deg) translate(60px, 120px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(100deg) rotateY(100deg)\] from add [translate(10px, 20px)\] to replace [rotateX(200deg) rotateY(200deg) translate(110px, 220px)\] at (1) should be [rotateX(200deg) rotateY(200deg) translate(110px, 220px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(90deg)\] from add [translate(100px, 100px)\] to add [scale(2)\] at (0.75) should be [matrix3d(1.75, 0, 0, 0, 0, 3.88578e-16, 1.75, 0, 0, -1, 2.22045e-16, 0, 25, 1.53081e-15, 25, 1)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(100deg) rotateY(100deg)\] from add [translate(10px, 20px)\] to replace [rotateX(200deg) rotateY(200deg) translate(110px, 220px)\] at (1.5) should be [rotateX(250deg) rotateY(250deg) translate(160px, 320px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(100deg) rotateY(100deg)\] from add [translate(10px, 20px)\] to replace [rotateX(200deg) rotateY(200deg) translate(110px, 220px)\] at (-0.5) should be [rotateX(50deg) rotateY(50deg) translate(-40px, -80px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from add [none\] to add [rotateY(360deg)\] at (0.5) should be [rotateX(45deg) rotateY(180deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(100deg) rotateY(100deg)\] from add [translate(10px, 20px)\] to replace [rotateX(200deg) rotateY(200deg) translate(110px, 220px)\] at (0) should be [rotateX(100deg) rotateY(100deg) translate(10px, 20px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(90deg)\] from add [translate(100px, 100px)\] to add [scale(2)\] at (0.5) should be [matrix3d(1.5, 0, 0, 0, 0, 3.33067e-16, 1.5, 0, 0, -1, 2.22045e-16, 0, 50, 3.06162e-15, 50, 1)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(90deg)\] from add [translate(100px, 100px)\] to add [scale(2)\] at (0.25) should be [matrix3d(1.25, 0, 0, 0, 0, 2.77556e-16, 1.25, 0, 0, -1, 2.22045e-16, 0, 75, 4.59243e-15, 75, 1)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from add [none\] to add [rotateY(360deg)\] at (0) should be [rotateX(45deg) rotateY(0deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(90deg)\] from add [translate(100px, 100px)\] to add [scale(2)\] at (-0.5) should be [matrix3d(0.5, 0, 0, 0, 0, 1.11022e-16, 0.5, 0, 0, -1, 2.22045e-16, 0, 150, 9.18485e-15, 150, 1)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(100deg) rotateY(100deg)\] from add [translate(10px, 20px)\] to replace [rotateX(200deg) rotateY(200deg) translate(110px, 220px)\] at (0.75) should be [rotateX(175deg) rotateY(175deg) translate(85px, 170px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from add [none\] to add [rotateY(360deg)\] at (1) should be [rotateX(45deg) rotateY(360deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(90deg)\] from add [translate(100px, 100px)\] to add [scale(2)\] at (1.5) should be [matrix3d(2.5, 0, 0, 0, 0, 5.55112e-16, 2.5, 0, 0, -1, 2.22045e-16, 0, -50, -3.06162e-15, -50, 1)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from add [none\] to add [rotateY(360deg)\] at (1.5) should be [rotateX(45deg) rotateY(540deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from add [none\] to add [rotateY(360deg)\] at (0.75) should be [rotateX(45deg) rotateY(270deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(100deg) rotateY(100deg)\] from add [translate(10px, 20px)\] to replace [rotateX(200deg) rotateY(200deg) translate(110px, 220px)\] at (0.25) should be [rotateX(125deg) rotateY(125deg) translate(35px, 70px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from add [none\] to add [rotateY(360deg)\] at (-0.5) should be [rotateX(45deg) rotateY(-180deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from add [none\] to add [rotateY(360deg)\] at (0.25) should be [rotateX(45deg) rotateY(90deg)\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-matrix-composition.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-matrix-composition.html.ini new file mode 100644 index 00000000000..c1bb84468ec --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/animation/transform-matrix-composition.html.ini @@ -0,0 +1,169 @@ +[transform-matrix-composition.html] + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (0.5) should be [translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(150px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (0.25) should be [matrix(1, 0, 0, 1, 125, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from add [matrix(1, 1, 0, 0, 0, 100)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (0.25) should be [matrix(1, 1, 0, 0, 100, 100)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (1) should be [translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(200px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from add [matrix(1, 1, 0, 0, 0, 100)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (0) should be [matrix(1, 1, 0, 0, 100, 100)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (0) should be [translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(100px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (0.25) should be [matrix(0, 1, -1, 0, 100, 125)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (0.75) should be [matrix(1, 0, 0, 1, 175, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (1) should be [matrix(0, 1, -1, 0, 100, 200)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (0.25) should be [translateX(225px) rotate3d(1, 1, 0, 45deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (1.5) should be [matrix(0, 1, -1, 0, 350, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from accumulate [matrix(1, 1, 0, 0, 0, 100)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (-0.5) should be [matrix(1, 1, 0, 0, 0, 100)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (1.5) should be [translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(250px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (0.25) should be [matrix(1, 1, 0, 0, 100, 200)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (0.75) should be [translateX(275px) rotate3d(1, 1, 0, 45deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (-0.5) should be [matrix(1, 1, 0, 0, 100, 200)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from accumulate [matrix(1, 1, 0, 0, 0, 100)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (0.5) should be [matrix(1, 0, 0, 1, 300, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (1.5) should be [translateX(350px) rotate3d(1, 1, 0, 45deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (1) should be [matrix(1, 1, 0, 0, 200, 300)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (1.5) should be [matrix(1, 1, 0, 0, 200, 300)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from add [matrix(1, 1, 0, 0, 0, 100)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (1) should be [matrix(1, 0, 0, 1, 300, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (1) should be [matrix(1, 0, 0, 1, 200, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (0) should be [matrix(0, 1, -1, 0, 200, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (0.5) should be [matrix(1, 0, 0, 1, 150, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (-0.5) should be [translateX(150px) rotate3d(1, 1, 0, 45deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (-0.5) should be [matrix(0, 1, -1, 0, 150, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from accumulate [matrix(1, 1, 0, 0, 0, 100)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (0) should be [matrix(1, 1, 0, 0, 0, 100)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (0.25) should be [matrix(0, 1, -1, 0, 225, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (-0.5) should be [matrix(1, 0, 0, 1, 50, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (0) should be [matrix(1, 1, 0, 0, 100, 200)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from accumulate [matrix(1, 1, 0, 0, 0, 100)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (0.75) should be [matrix(1, 0, 0, 1, 300, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (0) should be [translateX(200px) rotate3d(1, 1, 0, 45deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from add [matrix(1, 1, 0, 0, 0, 100)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (0.75) should be [matrix(1, 0, 0, 1, 300, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (0.75) should be [translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(175px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (0.5) should be [translateX(250px) rotate3d(1, 1, 0, 45deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from add [matrix(1, 1, 0, 0, 0, 100)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (-0.5) should be [matrix(1, 1, 0, 0, 100, 100)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (0.75) should be [matrix(1, 1, 0, 0, 200, 300)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (1.5) should be [matrix(1, 0, 0, 1, 250, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (-0.5) should be [matrix(0, 1, -1, 0, 100, 50)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from accumulate [matrix(1, 1, 0, 0, 0, 100)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (1.5) should be [matrix(1, 0, 0, 1, 300, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (0.5) should be [matrix(1, 1, 0, 0, 200, 300)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (0.25) should be [translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(125px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (0.5) should be [matrix(0, 1, -1, 0, 100, 150)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (1.5) should be [matrix(0, 1, -1, 0, 100, 250)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (0) should be [matrix(1, 0, 0, 1, 100, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (0.75) should be [matrix(0, 1, -1, 0, 275, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from accumulate [matrix(1, 1, 0, 0, 0, 100)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (0.25) should be [matrix(1, 1, 0, 0, 0, 100)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to accumulate [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (1) should be [translateX(300px) rotate3d(1, 1, 0, 45deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from add [matrix(1, 1, 0, 0, 0, 100)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (0.5) should be [matrix(1, 0, 0, 1, 300, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,100,0,0,1)\] from add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)\] to add [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)\] at (-0.5) should be [translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(50px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from add [matrix(1, 1, 0, 0, 0, 100)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (1.5) should be [matrix(1, 0, 0, 1, 300, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)\] from accumulate [matrix(1, 1, 0, 0, 0, 100)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (1) should be [matrix(1, 0, 0, 1, 300, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (0.5) should be [matrix(0, 1, -1, 0, 250, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from accumulate [matrix(1, 0, 0, 1, 100, 0)\] to accumulate [matrix(1, 0, 0, 1, 200, 0)\] at (1) should be [matrix(0, 1, -1, 0, 300, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (0.75) should be [matrix(0, 1, -1, 0, 100, 175)\]] + expected: FAIL + + [Compositing: property <transform> underlying [matrix(0, 1, -1, 0, 100, 0)\] from add [matrix(1, 0, 0, 1, 100, 0)\] to add [matrix(1, 0, 0, 1, 200, 0)\] at (0) should be [matrix(0, 1, -1, 0, 100, 100)\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-perspective-composition.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-perspective-composition.html.ini new file mode 100644 index 00000000000..891dc0a4253 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/animation/transform-perspective-composition.html.ini @@ -0,0 +1,40 @@ +[transform-perspective-composition.html] + [Compositing: property <transform> underlying [perspective(10px)\] from accumulate [perspective(10px)\] to accumulate [perspective(50px)\] at (1.5) should be [perspective(12.5px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [perspective(10px)\] from accumulate [perspective(10px)\] to accumulate [perspective(50px)\] at (0) should be [perspective(5px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [perspective(10px)\] from add [perspective(10px)\] to add [perspective(50px)\] at (-0.5) should be [perspective(4.12px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [perspective(10px)\] from accumulate [perspective(10px)\] to accumulate [perspective(50px)\] at (1) should be [perspective(8.33px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [perspective(10px)\] from accumulate [perspective(10px)\] to accumulate [perspective(50px)\] at (0.75) should be [perspective(7.06px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [perspective(10px)\] from accumulate [perspective(10px)\] to accumulate [perspective(50px)\] at (-0.5) should be [perspective(4.12px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [perspective(10px)\] from accumulate [perspective(10px)\] to accumulate [perspective(50px)\] at (0.25) should be [perspective(5.45px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [perspective(10px)\] from add [perspective(10px)\] to add [perspective(50px)\] at (1) should be [perspective(8.33px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [perspective(10px)\] from add [perspective(10px)\] to add [perspective(50px)\] at (0.75) should be [perspective(7.06px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [perspective(10px)\] from add [perspective(10px)\] to add [perspective(50px)\] at (0.25) should be [perspective(5.45px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [perspective(10px)\] from accumulate [perspective(10px)\] to accumulate [perspective(50px)\] at (0.5) should be [perspective(6.15px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [perspective(10px)\] from add [perspective(10px)\] to add [perspective(50px)\] at (0) should be [perspective(5px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [perspective(10px)\] from add [perspective(10px)\] to add [perspective(50px)\] at (0.5) should be [perspective(6.15px)\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-rotate-composition.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-rotate-composition.html.ini new file mode 100644 index 00000000000..42f41c7b65b --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/animation/transform-rotate-composition.html.ini @@ -0,0 +1,190 @@ +[transform-rotate-composition.html] + [Compositing: property <transform> underlying [rotateY(20deg)\] from accumulate [rotateY(40deg)\] to accumulate [rotateY(60deg)\] at (1.5) should be [rotateY(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from add [rotateZ(40deg)\] to add [rotateZ(60deg)\] at (-0.5) should be [rotateZ(50deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from add [rotate(45deg)\] to add [rotate(225deg)\] at (1.5) should be [rotate(45deg) skew(10deg, 20deg) rotate(315deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from accumulate [rotate(45deg)\] to accumulate [rotate(225deg)\] at (0) should be [rotate(90deg) skew(10deg, 20deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from accumulate [rotateX(40deg)\] to accumulate [rotateX(60deg)\] at (-0.5) should be [rotateX(50deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from accumulate [rotate(45deg)\] to accumulate [rotate(225deg)\] at (-0.5) should be [rotate(0deg) skew(10deg, 20deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from add [rotateZ(40deg)\] to add [rotateZ(60deg)\] at (0) should be [rotateZ(60deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from accumulate [rotateX(40deg)\] to accumulate [rotateX(60deg)\] at (0.75) should be [rotateX(75deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from add [rotateX(40deg)\] to add [rotateX(60deg)\] at (-0.5) should be [rotateX(50deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from add [rotateY(40deg)\] to add [rotateY(60deg)\] at (1) should be [rotateY(80deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from accumulate [rotateY(30deg)\] to accumulate [rotateY(70deg)\] at (1.5) should be [rotateX(45deg) rotateY(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from add [rotate(45deg)\] to add [rotate(225deg)\] at (1) should be [rotate(45deg) skew(10deg, 20deg) rotate(225deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from accumulate [rotateX(40deg)\] to accumulate [rotateX(60deg)\] at (1) should be [rotateX(80deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from accumulate [rotateZ(40deg)\] to accumulate [rotateZ(60deg)\] at (1) should be [rotateZ(80deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from accumulate [rotateY(40deg)\] to accumulate [rotateY(60deg)\] at (0.5) should be [rotateY(70deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from accumulate [rotate(45deg)\] to accumulate [rotate(225deg)\] at (0.75) should be [rotate(225deg) skew(10deg, 20deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from accumulate [rotateX(40deg)\] to accumulate [rotateX(60deg)\] at (0) should be [rotateX(60deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from accumulate [rotateY(40deg)\] to accumulate [rotateY(60deg)\] at (0) should be [rotateY(60deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from add [rotateZ(40deg)\] to add [rotateZ(60deg)\] at (1) should be [rotateZ(80deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from add [rotate(45deg)\] to add [rotate(225deg)\] at (-0.5) should be [rotate(45deg) skew(10deg, 20deg) rotate(-45deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from add [rotateX(40deg)\] to add [rotateX(60deg)\] at (1.5) should be [rotateX(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from add [rotateZ(40deg)\] to add [rotateZ(60deg)\] at (0.5) should be [rotateZ(70deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from accumulate [rotateY(40deg)\] to accumulate [rotateY(60deg)\] at (0.75) should be [rotateY(75deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from add [rotateX(40deg)\] to add [rotateX(60deg)\] at (1) should be [rotateX(80deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from add [rotate(45deg)\] to add [rotate(225deg)\] at (0) should be [rotate(45deg) skew(10deg, 20deg) rotate(45deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from accumulate [rotateZ(40deg)\] to accumulate [rotateZ(60deg)\] at (1.5) should be [rotateZ(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from add [rotateY(40deg)\] to add [rotateY(60deg)\] at (0) should be [rotateY(60deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from add [rotate(45deg)\] to add [rotate(225deg)\] at (0.5) should be [rotate(45deg) skew(10deg, 20deg) rotate(135deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from add [rotateY(40deg)\] to add [rotateY(60deg)\] at (0.5) should be [rotateY(70deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from accumulate [rotateZ(40deg)\] to accumulate [rotateZ(60deg)\] at (0.75) should be [rotateZ(75deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from add [rotate(45deg)\] to add [rotate(225deg)\] at (0.75) should be [rotate(45deg) skew(10deg, 20deg) rotate(180deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from add [rotateY(40deg)\] to add [rotateY(60deg)\] at (0.75) should be [rotateY(75deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from add [rotateX(40deg)\] to add [rotateX(60deg)\] at (0.75) should be [rotateX(75deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from add [rotateZ(40deg)\] to add [rotateZ(60deg)\] at (0.25) should be [rotateZ(65deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from add [rotateY(40deg)\] to add [rotateY(60deg)\] at (0.25) should be [rotateY(65deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from accumulate [rotateX(40deg)\] to accumulate [rotateX(60deg)\] at (0.25) should be [rotateX(65deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from accumulate [rotateZ(40deg)\] to accumulate [rotateZ(60deg)\] at (0.5) should be [rotateZ(70deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from accumulate [rotateY(40deg)\] to accumulate [rotateY(60deg)\] at (-0.5) should be [rotateY(50deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from accumulate [rotateY(30deg)\] to accumulate [rotateY(70deg)\] at (0.25) should be [rotateX(45deg) rotateY(40deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from accumulate [rotate(45deg)\] to accumulate [rotate(225deg)\] at (0.5) should be [rotate(180deg) skew(10deg, 20deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from accumulate [rotateZ(40deg)\] to accumulate [rotateZ(60deg)\] at (-0.5) should be [rotateZ(50deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from accumulate [rotateX(40deg)\] to accumulate [rotateX(60deg)\] at (1.5) should be [rotateX(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from accumulate [rotateX(40deg)\] to accumulate [rotateX(60deg)\] at (0.5) should be [rotateX(70deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from accumulate [rotateY(30deg)\] to accumulate [rotateY(70deg)\] at (0) should be [rotateX(45deg) rotateY(30deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from add [rotate(45deg)\] to add [rotate(225deg)\] at (0.25) should be [rotate(45deg) skew(10deg, 20deg) rotate(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from add [rotateY(40deg)\] to add [rotateY(60deg)\] at (1.5) should be [rotateY(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from add [rotateY(40deg)\] to add [rotateY(60deg)\] at (-0.5) should be [rotateY(50deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from accumulate [rotateY(40deg)\] to accumulate [rotateY(60deg)\] at (1) should be [rotateY(80deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from accumulate [rotateY(30deg)\] to accumulate [rotateY(70deg)\] at (0.75) should be [rotateX(45deg) rotateY(60deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from accumulate [rotate(45deg)\] to accumulate [rotate(225deg)\] at (1.5) should be [rotate(360deg) skew(10deg, 20deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from accumulate [rotate(45deg)\] to accumulate [rotate(225deg)\] at (0.25) should be [rotate(135deg) skew(10deg, 20deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateY(20deg)\] from accumulate [rotateY(40deg)\] to accumulate [rotateY(60deg)\] at (0.25) should be [rotateY(65deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from add [rotateX(40deg)\] to add [rotateX(60deg)\] at (0.25) should be [rotateX(65deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from add [rotateZ(40deg)\] to add [rotateZ(60deg)\] at (1.5) should be [rotateZ(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from accumulate [rotateZ(40deg)\] to accumulate [rotateZ(60deg)\] at (0) should be [rotateZ(60deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotate(45deg) skew(10deg, 20deg)\] from accumulate [rotate(45deg)\] to accumulate [rotate(225deg)\] at (1) should be [rotate(270deg) skew(10deg, 20deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from add [rotateX(40deg)\] to add [rotateX(60deg)\] at (0.5) should be [rotateX(70deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from accumulate [rotateZ(40deg)\] to accumulate [rotateZ(60deg)\] at (0.25) should be [rotateZ(65deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(20deg)\] from add [rotateX(40deg)\] to add [rotateX(60deg)\] at (0) should be [rotateX(60deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateZ(20deg)\] from add [rotateZ(40deg)\] to add [rotateZ(60deg)\] at (0.75) should be [rotateZ(75deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from accumulate [rotateY(30deg)\] to accumulate [rotateY(70deg)\] at (0.5) should be [rotateX(45deg) rotateY(50deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from accumulate [rotateY(30deg)\] to accumulate [rotateY(70deg)\] at (1) should be [rotateX(45deg) rotateY(70deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [rotateX(45deg)\] from accumulate [rotateY(30deg)\] to accumulate [rotateY(70deg)\] at (-0.5) should be [rotateX(45deg) rotateY(10deg)\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-scale-composition.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-scale-composition.html.ini new file mode 100644 index 00000000000..6a32547081a --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/animation/transform-scale-composition.html.ini @@ -0,0 +1,148 @@ +[transform-scale-composition.html] + [Compositing: property <transform> underlying [scaleZ(2)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (-0.5) should be [scaleZ(3.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from accumulate [scaleY(3)\] to accumulate [scaleY(4)\] at (0.5) should be [scaleY(4.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from add [scaleX(3)\] to add [scaleX(4)\] at (1.5) should be [scaleX(9)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from add [scaleZ(3)\] to add [scaleZ(4)\] at (-0.5) should be [scaleZ(5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from accumulate [scaleX(3)\] to accumulate [scaleX(4)\] at (0) should be [scaleX(4)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from add [scaleZ(3)\] to add [scaleZ(4)\] at (0.25) should be [scaleZ(6.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (1) should be [scaleZ(5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scale(2, 4)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (0.5) should be [scale3d(2, 4, 3.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from accumulate [scaleX(3)\] to accumulate [scaleX(4)\] at (-0.5) should be [scaleX(3.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scale(2, 4)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (0.75) should be [scale3d(2, 4, 3.75)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (0) should be [scaleZ(4)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (0.5) should be [scaleZ(4.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from add [scaleX(3)\] to add [scaleX(4)\] at (1) should be [scaleX(8)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from accumulate [scaleY(3)\] to accumulate [scaleY(4)\] at (0) should be [scaleY(4)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from add [scaleX(3)\] to add [scaleX(4)\] at (0.25) should be [scaleX(6.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from accumulate [scaleY(3)\] to accumulate [scaleY(4)\] at (1) should be [scaleY(5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from add [scaleZ(3)\] to add [scaleZ(4)\] at (1.5) should be [scaleZ(9)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scale(2, 4)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (1) should be [scale3d(2, 4, 4)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (1.5) should be [scaleZ(5.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from accumulate [scaleY(3)\] to accumulate [scaleY(4)\] at (-0.5) should be [scaleY(3.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from accumulate [scaleX(3)\] to accumulate [scaleX(4)\] at (0.25) should be [scaleX(4.25)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from accumulate [scaleX(3)\] to accumulate [scaleX(4)\] at (1) should be [scaleX(5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scale(2, 4)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (1.5) should be [scale3d(2, 4, 4.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from add [scaleY(3)\] to add [scaleY(4)\] at (0.75) should be [scaleY(7.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from accumulate [scaleX(3)\] to accumulate [scaleX(4)\] at (0.75) should be [scaleX(4.75)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from add [scaleY(3)\] to add [scaleY(4)\] at (0.5) should be [scaleY(7)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from add [scaleY(3)\] to add [scaleY(4)\] at (0.25) should be [scaleY(6.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scale(2, 4)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (0) should be [scale3d(2, 4, 3)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scale(2, 4)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (-0.5) should be [scale3d(2, 4, 2.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from add [scaleZ(3)\] to add [scaleZ(4)\] at (0.75) should be [scaleZ(7.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (0.75) should be [scaleZ(4.75)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from add [scaleY(3)\] to add [scaleY(4)\] at (-0.5) should be [scaleY(5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from accumulate [scaleX(3)\] to accumulate [scaleX(4)\] at (0.5) should be [scaleX(4.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scale(2, 4)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (0.25) should be [scale3d(2, 4, 3.25)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from accumulate [scaleY(3)\] to accumulate [scaleY(4)\] at (1.5) should be [scaleY(5.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from add [scaleX(3)\] to add [scaleX(4)\] at (0) should be [scaleX(6)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from accumulate [scaleY(3)\] to accumulate [scaleY(4)\] at (0.75) should be [scaleY(4.75)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from add [scaleY(3)\] to add [scaleY(4)\] at (0) should be [scaleY(6)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from add [scaleZ(3)\] to add [scaleZ(4)\] at (1) should be [scaleZ(8)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from add [scaleZ(3)\] to add [scaleZ(4)\] at (0) should be [scaleZ(6)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from add [scaleX(3)\] to add [scaleX(4)\] at (0.75) should be [scaleX(7.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from add [scaleX(3)\] to add [scaleX(4)\] at (-0.5) should be [scaleX(5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from add [scaleY(3)\] to add [scaleY(4)\] at (1) should be [scaleY(8)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from accumulate [scaleY(3)\] to accumulate [scaleY(4)\] at (0.25) should be [scaleY(4.25)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from accumulate [scaleX(3)\] to accumulate [scaleX(4)\] at (1.5) should be [scaleX(5.5)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleY(2)\] from add [scaleY(3)\] to add [scaleY(4)\] at (1.5) should be [scaleY(9)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from accumulate [scaleZ(3)\] to accumulate [scaleZ(4)\] at (0.25) should be [scaleZ(4.25)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleZ(2)\] from add [scaleZ(3)\] to add [scaleZ(4)\] at (0.5) should be [scaleZ(7)\]] + expected: FAIL + + [Compositing: property <transform> underlying [scaleX(2)\] from add [scaleX(3)\] to add [scaleX(4)\] at (0.5) should be [scaleX(7)\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-skew-composition.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-skew-composition.html.ini new file mode 100644 index 00000000000..34ad53579f8 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/animation/transform-skew-composition.html.ini @@ -0,0 +1,130 @@ +[transform-skew-composition.html] + [Compositing: property <transform> underlying [skew(10deg, 20deg)\] from add [skew(30deg, 10deg)\] to add [skew(50deg, 50deg)\] at (0.25) should be [skew(10deg, 20deg) skew(35deg, 20deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(10deg)\] from add [skewY(30deg)\] to add [skewY(50deg)\] at (0) should be [skewY(10deg) skewY(30deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(10deg)\] from add [skewX(30deg)\] to add [skewX(50deg)\] at (0.5) should be [skewX(10deg) skewX(40deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 20deg)\] from add [skew(30deg, 10deg)\] to add [skew(50deg, 50deg)\] at (0.75) should be [skew(10deg, 20deg) skew(45deg, 40deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 20deg)\] from add [skew(30deg, 10deg)\] to add [skew(50deg, 50deg)\] at (-0.5) should be [skew(10deg, 20deg) skew(20deg, -10deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 45deg)\] from accumulate [skew(20deg, 30deg)\] to accumulate [skew(40deg, 70deg)\] at (1.5) should be [skew(60deg, 135deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(45deg)\] from accumulate [skewY(30deg)\] to accumulate [skewY(70deg)\] at (0) should be [skewY(75deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(10deg)\] from add [skewX(30deg)\] to add [skewX(50deg)\] at (0) should be [skewX(10deg) skewX(30deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(45deg)\] from accumulate [skewX(30deg)\] to accumulate [skewX(70deg)\] at (0.5) should be [skewX(95deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(45deg)\] from accumulate [skewY(30deg)\] to accumulate [skewY(70deg)\] at (-0.5) should be [skewY(55deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(45deg)\] from accumulate [skewX(30deg)\] to accumulate [skewX(70deg)\] at (0) should be [skewX(75deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(45deg)\] from accumulate [skewX(30deg)\] to accumulate [skewX(70deg)\] at (0.75) should be [skewX(105deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(10deg)\] from add [skewY(30deg)\] to add [skewY(50deg)\] at (1.5) should be [skewY(10deg) skewY(60deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 20deg)\] from add [skew(30deg, 10deg)\] to add [skew(50deg, 50deg)\] at (1) should be [skew(10deg, 20deg) skew(50deg, 50deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 45deg)\] from accumulate [skew(20deg, 30deg)\] to accumulate [skew(40deg, 70deg)\] at (1) should be [skew(50deg, 115deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(10deg)\] from add [skewY(30deg)\] to add [skewY(50deg)\] at (0.5) should be [skewY(10deg) skewY(40deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(45deg)\] from accumulate [skewY(30deg)\] to accumulate [skewY(70deg)\] at (1) should be [skewY(115deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(45deg)\] from accumulate [skewX(30deg)\] to accumulate [skewX(70deg)\] at (1) should be [skewX(115deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(45deg)\] from accumulate [skewY(30deg)\] to accumulate [skewY(70deg)\] at (1.5) should be [skewY(135deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(10deg)\] from add [skewX(30deg)\] to add [skewX(50deg)\] at (1.5) should be [skewX(10deg) skewX(60deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 45deg)\] from accumulate [skew(20deg, 30deg)\] to accumulate [skew(40deg, 70deg)\] at (-0.5) should be [skew(20deg, 55deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 20deg)\] from add [skew(30deg, 10deg)\] to add [skew(50deg, 50deg)\] at (0.5) should be [skew(10deg, 20deg) skew(40deg, 30deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 20deg)\] from add [skew(30deg, 10deg)\] to add [skew(50deg, 50deg)\] at (1.5) should be [skew(10deg, 20deg) skew(60deg, 70deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(10deg)\] from add [skewY(30deg)\] to add [skewY(50deg)\] at (1) should be [skewY(10deg) skewY(50deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(10deg)\] from add [skewX(30deg)\] to add [skewX(50deg)\] at (-0.5) should be [skewX(10deg) skewX(20deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(10deg)\] from add [skewX(30deg)\] to add [skewX(50deg)\] at (1) should be [skewX(10deg) skewX(50deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 45deg)\] from accumulate [skew(20deg, 30deg)\] to accumulate [skew(40deg, 70deg)\] at (0.75) should be [skew(45deg, 105deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 45deg)\] from accumulate [skew(20deg, 30deg)\] to accumulate [skew(40deg, 70deg)\] at (0.25) should be [skew(35deg, 85deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(45deg)\] from accumulate [skewY(30deg)\] to accumulate [skewY(70deg)\] at (0.5) should be [skewY(95deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(45deg)\] from accumulate [skewY(30deg)\] to accumulate [skewY(70deg)\] at (0.75) should be [skewY(105deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(45deg)\] from accumulate [skewX(30deg)\] to accumulate [skewX(70deg)\] at (1.5) should be [skewX(135deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(10deg)\] from add [skewX(30deg)\] to add [skewX(50deg)\] at (0.25) should be [skewX(10deg) skewX(35deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(45deg)\] from accumulate [skewX(30deg)\] to accumulate [skewX(70deg)\] at (-0.5) should be [skewX(55deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(10deg)\] from add [skewY(30deg)\] to add [skewY(50deg)\] at (0.75) should be [skewY(10deg) skewY(45deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(45deg)\] from accumulate [skewY(45deg)\] to accumulate [skewY(45deg)\] at (0.5) should be [matrix(1, 1, 0.5, 1.5, 0, 0)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(45deg)\] from accumulate [skewX(30deg)\] to accumulate [skewX(70deg)\] at (0.25) should be [skewX(85deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 45deg)\] from accumulate [skew(20deg, 30deg)\] to accumulate [skew(40deg, 70deg)\] at (0) should be [skew(30deg, 75deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewX(10deg)\] from add [skewX(30deg)\] to add [skewX(50deg)\] at (0.75) should be [skewX(10deg) skewX(45deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(45deg)\] from accumulate [skewY(30deg)\] to accumulate [skewY(70deg)\] at (0.25) should be [skewY(85deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 45deg)\] from accumulate [skew(20deg, 30deg)\] to accumulate [skew(40deg, 70deg)\] at (0.5) should be [skew(40deg, 95deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skew(10deg, 20deg)\] from add [skew(30deg, 10deg)\] to add [skew(50deg, 50deg)\] at (0) should be [skew(10deg, 20deg) skew(30deg, 10deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(10deg)\] from add [skewY(30deg)\] to add [skewY(50deg)\] at (-0.5) should be [skewY(10deg) skewY(20deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [skewY(10deg)\] from add [skewY(30deg)\] to add [skewY(50deg)\] at (0.25) should be [skewY(10deg) skewY(35deg)\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-translate-composition.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-translate-composition.html.ini new file mode 100644 index 00000000000..9da857698c1 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/animation/transform-translate-composition.html.ini @@ -0,0 +1,169 @@ +[transform-translate-composition.html] + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from accumulate [translateX(100px)\] to accumulate [translateX(200px)\] at (0.25) should be [translateX(225px) rotate(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(100px, 50px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (-0.5) should be [translate3d(100px, 50px, -50px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(100px, 50px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (1.5) should be [translate3d(100px, 50px, 350px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from accumulate [translateX(100px)\] to accumulate [translateX(200px)\] at (0.5) should be [translateX(250px) rotate(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px)\] from accumulate [translateX(50px)\] to accumulate [translateX(250px)\] at (1) should be [translateX(350px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(100px, 50px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (0.75) should be [translate3d(100px, 50px, 200px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to add [translate(200px, 400px)\] at (0.5) should be [translate(160px, 320px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from add [translateX(100px)\] to add [translateX(200px)\] at (0.25) should be [translateX(100px) rotate(90deg) translateX(125px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(100px, 50px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (0.5) should be [translate3d(100px, 50px, 150px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateZ(100px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (1.5) should be [translateZ(450px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px)\] from accumulate [translateX(50px)\] to accumulate [translateX(250px)\] at (0.25) should be [translateX(200px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to replace [translate(210px, 420px)\] at (1) should be [translate(210px, 420px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to replace [translate(210px, 420px)\] at (-0.5) should be [translate(60px, 120px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px)\] from accumulate [translateX(50px)\] to accumulate [translateX(250px)\] at (0.75) should be [translateX(300px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateZ(100px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (0.5) should be [translateZ(250px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from accumulate [translateX(100px)\] to accumulate [translateX(200px)\] at (-0.5) should be [translateX(150px) rotate(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to add [translate(200px, 400px)\] at (0) should be [translate(110px, 220px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to replace [translate(210px, 420px)\] at (0) should be [translate(110px, 220px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to replace [translate(210px, 420px)\] at (0.25) should be [translate(135px, 270px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateY(100px)\] from accumulate [translateY(50px)\] to accumulate [translateY(250px)\] at (0.75) should be [translateY(300px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from add [translateX(100px)\] to add [translateX(200px)\] at (-0.5) should be [translateX(100px) rotate(90deg) translateX(50px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from accumulate [translateX(100px)\] to accumulate [translateX(200px)\] at (1) should be [translateX(300px) rotate(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to add [translate(200px, 400px)\] at (-0.5) should be [translate(60px, 120px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateY(100px)\] from accumulate [translateY(50px)\] to accumulate [translateY(250px)\] at (0.5) should be [translateY(250px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from accumulate [translateX(100px)\] to accumulate [translateX(200px)\] at (1.5) should be [translateX(350px) rotate(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from accumulate [translateX(100px)\] to accumulate [translateX(200px)\] at (0.75) should be [translateX(275px) rotate(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to add [translate(200px, 400px)\] at (1.5) should be [translate(260px, 520px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(100px, 50px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (0) should be [translate3d(100px, 50px, 50px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px)\] from accumulate [translateX(50px)\] to accumulate [translateX(250px)\] at (0) should be [translateX(150px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from add [translateX(100px)\] to add [translateX(200px)\] at (1) should be [translateX(100px) rotate(90deg) translateX(200px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to replace [translate(210px, 420px)\] at (1.5) should be [translate(260px, 520px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to add [translate(200px, 400px)\] at (1) should be [translate(210px, 420px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from add [translateX(100px)\] to add [translateX(200px)\] at (0) should be [translateX(100px) rotate(90deg) translateX(100px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from add [translateX(100px)\] to add [translateX(200px)\] at (0.75) should be [translateX(100px) rotate(90deg) translateX(175px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateY(100px)\] from accumulate [translateY(50px)\] to accumulate [translateY(250px)\] at (-0.5) should be [translateY(50px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateZ(100px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (0.75) should be [translateZ(300px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px)\] from accumulate [translateX(50px)\] to accumulate [translateX(250px)\] at (1.5) should be [translateX(450px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from accumulate [translateX(100px)\] to accumulate [translateX(200px)\] at (0) should be [translateX(200px) rotate(90deg)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from add [translateX(100px)\] to add [translateX(200px)\] at (0.5) should be [translateX(100px) rotate(90deg) translateX(150px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px)\] from accumulate [translateX(50px)\] to accumulate [translateX(250px)\] at (-0.5) should be [translateX(50px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateZ(100px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (0.25) should be [translateZ(200px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(100px, 50px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (0.25) should be [translate3d(100px, 50px, 100px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateZ(100px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (-0.5) should be [translateZ(50px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px)\] from accumulate [translateX(50px)\] to accumulate [translateX(250px)\] at (0.5) should be [translateX(250px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateY(100px)\] from accumulate [translateY(50px)\] to accumulate [translateY(250px)\] at (1) should be [translateY(350px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateZ(100px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (1) should be [translateZ(350px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to add [translate(200px, 400px)\] at (0.25) should be [translate(135px, 270px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to replace [translate(210px, 420px)\] at (0.5) should be [translate(160px, 320px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateZ(100px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (0) should be [translateZ(150px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateY(100px)\] from accumulate [translateY(50px)\] to accumulate [translateY(250px)\] at (0) should be [translateY(150px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateY(100px)\] from accumulate [translateY(50px)\] to accumulate [translateY(250px)\] at (1.5) should be [translateY(450px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateX(100px) rotate(90deg)\] from add [translateX(100px)\] to add [translateX(200px)\] at (1.5) should be [translateX(100px) rotate(90deg) translateX(250px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to add [translate(200px, 400px)\] at (0.75) should be [translate(185px, 370px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translateY(100px)\] from accumulate [translateY(50px)\] to accumulate [translateY(250px)\] at (0.25) should be [translateY(200px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(100px, 50px)\] from accumulate [translateZ(50px)\] to accumulate [translateZ(250px)\] at (1) should be [translate3d(100px, 50px, 250px)\]] + expected: FAIL + + [Compositing: property <transform> underlying [translate(10px, 20px)\] from add [translate(100px, 200px)\] to replace [translate(210px, 420px)\] at (0.75) should be [translate(185px, 370px)\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/animation/translate-composition.html.ini b/tests/wpt/metadata/css/css-transforms/animation/translate-composition.html.ini new file mode 100644 index 00000000000..4730739598f --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/animation/translate-composition.html.ini @@ -0,0 +1,154 @@ +[translate-composition.html] + [Compositing: property <translate> underlying [100px 200px 300px\] from replace [50% 100px\] to add [200px 50% 100px\] at (0.75) should be [calc(225px + 12.5%) calc(175px + 37.5%) 300px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [0px 40px 60px\] to replace [none\] at (1) should be [none\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from add [-50px 50%\] to add [100%\] at (0) should be [calc(50px + 0%) calc(200px + 50%) 300px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [0px 40px 60px\] to add [none\] at (0) should be [0px 40px 60px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [0px 40px 60px\] to replace [none\] at (0) should be [80px 60px 60px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [0px 40px 60px\] to replace [none\] at (0.75) should be [20px 15px 15px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [0px 40px 60px\] to replace [none\] at (2) should be [0px -40px -60px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [0px 40px 60px\] to replace [none\] at (0.25) should be [60px 45px 45px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [none\] to replace [0px 40px 60px\] at (2) should be [-80px 60px 120px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [0px 40px 60px\] to replace [none\] at (0.75) should be [0px 10px 15px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [0px 40px 60px\] to add [none\] at (-1) should be [0px 80px 120px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from add [none\] to add [100px\] at (0.75) should be [75px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [0px 40px 60px\] to replace [none\] at (-1) should be [160px 120px 120px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [none\] to add [100px\] at (1) should be [100px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [none\] to add [100px\] at (0.75) should be [75px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from replace [50% 100px\] to add [200px 50% 100px\] at (0) should be [50% calc(100px + 0%)\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [0px 40px 60px\] to add [none\] at (2) should be [0px -40px -60px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from add [-50px 50%\] to add [100%\] at (0.25) should be [calc(62.5px + 25%) calc(200px + 37.5%) 300px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from replace [50% 100px\] to add [200px 50% 100px\] at (0.25) should be [calc(75px + 37.5%) calc(125px + 12.5%) 100px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [0px 40px 60px\] to replace [none\] at (-1) should be [0px 80px 120px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from add [50% 100px\] to replace [200px 50% 100px\] at (0.25) should be [calc(125px + 37.5%) calc(225px + 12.5%) 250px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [0px 40px 60px\] to replace [none\] at (0) should be [0px 40px 60px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [0px 40px 60px\] to replace [none\] at (0.5) should be [40px 30px 30px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [0px 40px 60px\] to add [none\] at (0.25) should be [0px 30px 45px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from add [-50px 50%\] to add [100%\] at (2) should be [calc(150px + 200%) calc(200px - 50%) 300px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from add [50% 100px\] to replace [200px 50% 100px\] at (1) should be [calc(200px + 0%) 50% 100px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [none\] to replace [0px 40px 60px\] at (-1) should be [160px 0px -60px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from add [none\] to add [100px\] at (0.25) should be [25px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from add [none\] to add [100px\] at (-1) should be [-100px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [0px 40px 60px\] to add [none\] at (0.75) should be [0px 10px 15px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [none\] to add [100px\] at (0.25) should be [25px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [none\] to replace [0px 40px 60px\] at (0.25) should be [60px 25px 15px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [none\] to replace [0px 40px 60px\] at (0.5) should be [40px 30px 30px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from replace [50% 100px\] to add [200px 50% 100px\] at (2) should be [calc(600px - 50%) calc(300px + 100%) 800px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from add [-50px 50%\] to add [100%\] at (0.75) should be [calc(87.5px + 75%) calc(200px + 12.5%) 300px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [0px 40px 60px\] to replace [none\] at (2) should be [-80px -60px -60px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from add [50% 100px\] to replace [200px 50% 100px\] at (0.75) should be [calc(175px + 12.5%) calc(75px + 37.5%) 150px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from add [50% 100px\] to replace [200px 50% 100px\] at (2) should be [calc(300px - 50%) calc(-300px + 100%) -100px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [none\] to replace [0px 40px 60px\] at (0.75) should be [20px 35px 45px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from replace [50% 100px\] to add [200px 50% 100px\] at (1) should be [calc(300px + 0%) calc(200px + 50%) 400px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from add [none\] to add [100px\] at (1) should be [100px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [0px 40px 60px\] to replace [none\] at (0.25) should be [0px 30px 45px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from add [-50px 50%\] to add [100%\] at (-1) should be [-100% calc(200px + 100%) 300px\]] + expected: FAIL + + [Compositing: property <translate> underlying [80px 20px\] from add [none\] to replace [0px 40px 60px\] at (1) should be [0px 40px 60px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from replace [50% 100px\] to add [200px 50% 100px\] at (-1) should be [calc(-300px + 100%) -50% -400px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from add [none\] to add [100px\] at (2) should be [200px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [none\] to add [100px\] at (-1) should be [-100px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from add [-50px 50%\] to add [100%\] at (1) should be [calc(100px + 100%) calc(200px + 0%) 300px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from add [50% 100px\] to replace [200px 50% 100px\] at (0) should be [calc(100px + 50%) calc(300px + 0%) 300px\]] + expected: FAIL + + [Compositing: property <translate> underlying [100px 200px 300px\] from add [50% 100px\] to replace [200px 50% 100px\] at (-1) should be [100% calc(600px - 50%) 500px\]] + expected: FAIL + + [Compositing: property <translate> underlying [none\] from replace [none\] to add [100px\] at (2) should be [200px\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transitions/animations/vertical-align-composition.html.ini b/tests/wpt/metadata/css/css-transitions/animations/vertical-align-composition.html.ini new file mode 100644 index 00000000000..39eaed49789 --- /dev/null +++ b/tests/wpt/metadata/css/css-transitions/animations/vertical-align-composition.html.ini @@ -0,0 +1,61 @@ +[vertical-align-composition.html] + [Compositing: property <vertical-align> underlying [10%\] from add [100px\] to add [20%\] at (0) should be [calc(100px + 10%)\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [50px\] from add [100px\] to add [200px\] at (-0.3) should be [120px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [100px\] from add [10px\] to add [2px\] at (0.5) should be [106px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [50px\] from add [100px\] to replace [200px\] at (1) should be [200px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [50px\] from add [100px\] to replace [200px\] at (0) should be [150px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [100px\] from add [10px\] to add [2px\] at (1) should be [102px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [50px\] from add [100px\] to add [200px\] at (0.5) should be [200px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [50px\] from add [100px\] to replace [200px\] at (0.5) should be [175px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [10%\] from add [100px\] to add [20%\] at (-0.3) should be [calc(130px + 4%)\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [50px\] from add [100px\] to replace [200px\] at (1.5) should be [225px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [50px\] from add [100px\] to replace [200px\] at (-0.3) should be [135px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [50px\] from add [100px\] to add [200px\] at (1) should be [250px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [50px\] from add [100px\] to add [200px\] at (1.5) should be [300px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [100px\] from add [10px\] to add [2px\] at (1.5) should be [98px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [100px\] from add [10px\] to add [2px\] at (-0.5) should be [114px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [100px\] from add [10px\] to add [2px\] at (0) should be [110px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [10%\] from add [100px\] to add [20%\] at (0.5) should be [calc(50px + 20%)\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [10%\] from add [100px\] to add [20%\] at (1) should be [30%\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [50px\] from add [100px\] to add [200px\] at (0) should be [150px\]] + expected: FAIL + + [Compositing: property <vertical-align> underlying [10%\] from add [100px\] to add [20%\] at (1.5) should be [calc(-50px + 40%)\]] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index f548ee23521..8c8f83c357c 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -309,30 +309,18 @@ [<iframe>: separate response Content-Type: */* text/html] expected: FAIL - [<iframe>: separate response Content-Type: text/html */*;charset=gbk] - expected: FAIL - - [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] - expected: FAIL - [fetch(): separate response Content-Type: text/plain ] expected: NOTRUN - [<iframe>: separate response Content-Type: text/html */*] - expected: FAIL - - [<iframe>: separate response Content-Type: text/html;" \\" text/plain] - expected: FAIL - [<iframe>: separate response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*] + [<iframe>: combined response Content-Type: text/html;" \\" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html;x=" text/plain] + [<iframe>: combined response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" \\" text/plain] + [<iframe>: combined response Content-Type: text/html;x=" text/plain] expected: FAIL diff --git a/tests/wpt/metadata/fetch/metadata/appcache.tentative.https.sub.html.ini b/tests/wpt/metadata/fetch/metadata/appcache.tentative.https.sub.html.ini deleted file mode 100644 index 6fb669844e1..00000000000 --- a/tests/wpt/metadata/fetch/metadata/appcache.tentative.https.sub.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[appcache.tentative.https.sub.html] - [Appcache!] - expected: FAIL - diff --git a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini index d3de645928d..26e02f24468 100644 --- a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini +++ b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini @@ -5,7 +5,7 @@ expected: FAIL [Embedded credentials are treated as network errors in frames.] - expected: FAIL + expected: TIMEOUT [Embedded credentials are treated as network errors in new windows.] expected: FAIL diff --git a/tests/wpt/metadata/html/cross-origin-opener-policy/popup-none.https.html.ini b/tests/wpt/metadata/html/cross-origin-opener-policy/popup-none.https.html.ini deleted file mode 100644 index 1df11b41340..00000000000 --- a/tests/wpt/metadata/html/cross-origin-opener-policy/popup-none.https.html.ini +++ /dev/null @@ -1,55 +0,0 @@ -[popup-none.https.html] - [none document opening popup to https://web-platform.test:8443 with COOP: ""] - expected: FAIL - - [none document opening popup to https://web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - - [none document opening popup to https://www1.web-platform.test:8443 with COOP: ""] - expected: FAIL - - [none document opening popup to https://www1.web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [none document opening popup to https://www1.web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - - [none document opening popup to https://web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [none document opening popup to https://web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [none document opening popup to https://www1.web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [none document opening popup to https://not-web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [none document opening popup to https://web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [none document opening popup to https://web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [none document opening popup to https://www1.web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [none document opening popup to https://not-web-platform.test:8443 with COOP: ""] - expected: FAIL - - [none document opening popup to https://www1.web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [none document opening popup to https://not-web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [none document opening popup to https://not-web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [none document opening popup to https://not-web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [none document opening popup to https://not-web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - diff --git a/tests/wpt/metadata/html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html.ini b/tests/wpt/metadata/html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html.ini deleted file mode 100644 index 5282e919e11..00000000000 --- a/tests/wpt/metadata/html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html.ini +++ /dev/null @@ -1,55 +0,0 @@ -[popup-same-origin-unsafe-allow-outgoing.https.html] - [same-origin_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://web-platform.test:8443 with COOP: ""] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8443 with COOP: ""] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8443 with COOP: ""] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - - [same-origin_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - diff --git a/tests/wpt/metadata/html/cross-origin-opener-policy/popup-same-origin.https.html.ini b/tests/wpt/metadata/html/cross-origin-opener-policy/popup-same-origin.https.html.ini deleted file mode 100644 index 22920edfe2c..00000000000 --- a/tests/wpt/metadata/html/cross-origin-opener-policy/popup-same-origin.https.html.ini +++ /dev/null @@ -1,55 +0,0 @@ -[popup-same-origin.https.html] - [same-origin document opening popup to https://not-web-platform.test:8443 with COOP: ""] - expected: FAIL - - [same-origin document opening popup to https://web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [same-origin document opening popup to https://www1.web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [same-origin document opening popup to https://web-platform.test:8443 with COOP: ""] - expected: FAIL - - [same-origin document opening popup to https://www1.web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [same-origin document opening popup to https://not-web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [same-origin document opening popup to https://not-web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - - [same-origin document opening popup to https://www1.web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [same-origin document opening popup to https://www1.web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - - [same-origin document opening popup to https://web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [same-origin document opening popup to https://not-web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [same-origin document opening popup to https://web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - - [same-origin document opening popup to https://not-web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [same-origin document opening popup to https://www1.web-platform.test:8443 with COOP: ""] - expected: FAIL - - [same-origin document opening popup to https://web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [same-origin document opening popup to https://web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [same-origin document opening popup to https://not-web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [same-origin document opening popup to https://www1.web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - diff --git a/tests/wpt/metadata/html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html.ini b/tests/wpt/metadata/html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html.ini deleted file mode 100644 index 09d242037a2..00000000000 --- a/tests/wpt/metadata/html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html.ini +++ /dev/null @@ -1,55 +0,0 @@ -[popup-same-site-unsafe-allow-outgoing.https.html] - [same-site_unsafe-allow-outgoing document opening popup to https://web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://web-platform.test:8443 with COOP: ""] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8443 with COOP: ""] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8443 with COOP: ""] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - - [same-site_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - diff --git a/tests/wpt/metadata/html/cross-origin-opener-policy/popup-same-site.https.html.ini b/tests/wpt/metadata/html/cross-origin-opener-policy/popup-same-site.https.html.ini deleted file mode 100644 index 6d2a5b3bed9..00000000000 --- a/tests/wpt/metadata/html/cross-origin-opener-policy/popup-same-site.https.html.ini +++ /dev/null @@ -1,55 +0,0 @@ -[popup-same-site.https.html] - [same-site document opening popup to https://not-web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [same-site document opening popup to https://www1.web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [same-site document opening popup to https://www1.web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [same-site document opening popup to https://web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [same-site document opening popup to https://web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [same-site document opening popup to https://not-web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - - [same-site document opening popup to https://web-platform.test:8443 with COOP: ""] - expected: FAIL - - [same-site document opening popup to https://not-web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [same-site document opening popup to https://www1.web-platform.test:8443 with COOP: ""] - expected: FAIL - - [same-site document opening popup to https://www1.web-platform.test:8443 with COOP: "same-origin unsafe-allow-outgoing"] - expected: FAIL - - [same-site document opening popup to https://not-web-platform.test:8443 with COOP: ""] - expected: FAIL - - [same-site document opening popup to https://web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - - [same-site document opening popup to https://not-web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - - [same-site document opening popup to https://www1.web-platform.test:8443 with COOP: "jibberish"] - expected: FAIL - - [same-site document opening popup to https://www1.web-platform.test:8443 with COOP: "same-origin"] - expected: FAIL - - [same-site document opening popup to https://not-web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [same-site document opening popup to https://web-platform.test:8443 with COOP: "same-site"] - expected: FAIL - - [same-site document opening popup to https://web-platform.test:8443 with COOP: "same-site unsafe-allow-outgoing"] - expected: FAIL - diff --git a/tests/wpt/metadata/html/dom/idlharness.worker.js.ini b/tests/wpt/metadata/html/dom/idlharness.worker.js.ini index 1721599b0d3..b3939fc4efd 100644 --- a/tests/wpt/metadata/html/dom/idlharness.worker.js.ini +++ b/tests/wpt/metadata/html/dom/idlharness.worker.js.ini @@ -554,6 +554,3 @@ [OffscreenCanvasRenderingContext2D interface: operation clip(CanvasFillRule)] expected: FAIL - [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type] - expected: FAIL - diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini index c12c0f8ae48..6852d7663de 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini @@ -1,4 +1,8 @@ [skip-document-with-fragment.html] + expected: TIMEOUT [Autofocus elements in iframed documents with URL fragments should be skipped.] expected: FAIL + [Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini index 6b68e9094e4..8b743f36e1d 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini @@ -1,16 +1,20 @@ [supported-elements.html] + expected: TIMEOUT [Contenteditable element should support autofocus] expected: FAIL [Element with tabindex should support autofocus] - expected: FAIL + expected: TIMEOUT [Host element with delegatesFocus including no focusable descendants should be skipped] - expected: FAIL + expected: NOTRUN [Area element should support autofocus] - expected: FAIL + expected: NOTRUN [Host element with delegatesFocus should support autofocus] - expected: FAIL + expected: NOTRUN + + [Non-HTMLElement should not support autofocus] + expected: NOTRUN diff --git a/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html.ini b/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html.ini index 788fc522460..1acfde0bd68 100644 --- a/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html.ini @@ -228,3 +228,15 @@ [[INPUT in NUMBER status\] The value is greater than max(special floating number)] expected: FAIL + [[INPUT in TIME status\] The time is inside the accepted range for reversed range] + expected: FAIL + + [[INPUT in TIME status\] The time is outside the accepted range for reversed range] + expected: FAIL + + [[INPUT in TIME status\] The time is min for reversed range] + expected: FAIL + + [[INPUT in TIME status\] The time is max for reversed range] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html.ini b/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html.ini index 351a2044700..4ae41ccf81a 100644 --- a/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html.ini @@ -222,3 +222,15 @@ [[INPUT in NUMBER status\] The value is less than min(special floating number)] expected: FAIL + [[INPUT in TIME status\] The time is max for reversed range] + expected: FAIL + + [[INPUT in TIME status\] The time is outside the accepted range for reversed range] + expected: FAIL + + [[INPUT in TIME status\] The time is min for reversed range] + expected: FAIL + + [[INPUT in TIME status\] The time is inside the accepted range for reversed range] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-valueMissing.html.ini b/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-valueMissing.html.ini index f6390136918..d8b1ff6206d 100644 --- a/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-valueMissing.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/constraints/form-validation-validity-valueMissing.html.ini @@ -315,3 +315,6 @@ [[select\] Selected the option with value equals to empty] expected: FAIL + [[INPUT in RADIO status\] The checked attribute is false and the name attribute is empty] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/the-input-element/input-valueasdate.html.ini b/tests/wpt/metadata/html/semantics/forms/the-input-element/input-valueasdate.html.ini new file mode 100644 index 00000000000..fa9a448996c --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/the-input-element/input-valueasdate.html.ini @@ -0,0 +1,79 @@ +[input-valueasdate.html] + [valueAsDate getter on type date (actual value: 2019-00-12, expected valueAsDate: null)] + expected: FAIL + + [valueAsDate getter on type date (actual value: 2016-02-29, expected valueAsDate: Mon Feb 29 2016 00:00:00 GMT+0000 (Coordinated Universal Time))] + expected: FAIL + + [valueAsDate getter on type date (actual value: , expected valueAsDate: null)] + expected: FAIL + + [valueAsDate getter on type week (actual value: 2019-W00, expected valueAsDate: null)] + expected: FAIL + + [valueAsDate setter on type date (actual valueAsDate: Tue Dec 10 2019 00:00:00 GMT+0000 (Coordinated Universal Time), expected value: 2019-12-10)] + expected: FAIL + + [valueAsDate getter on type month (actual value: 2019-12, expected valueAsDate: Sun Dec 01 2019 00:00:00 GMT+0000 (Coordinated Universal Time))] + expected: FAIL + + [valueAsDate getter on type week (actual value: 2019-W50, expected valueAsDate: Mon Dec 09 2019 00:00:00 GMT+0000 (Coordinated Universal Time))] + expected: FAIL + + [valueAsDate getter on type week (actual value: 2019-W60, expected valueAsDate: null)] + expected: FAIL + + [valueAsDate getter on type date (actual value: 2019-12-10, expected valueAsDate: Tue Dec 10 2019 00:00:00 GMT+0000 (Coordinated Universal Time))] + expected: FAIL + + [valueAsDate getter on type date (actual value: 2019-13-10, expected valueAsDate: null)] + expected: FAIL + + [valueAsDate getter on type time (actual value: 00:60, expected valueAsDate: null)] + expected: FAIL + + [valueAsDate setter on type time (actual valueAsDate: Thu Jan 01 1970 00:00:00 GMT+0000 (Coordinated Universal Time), expected value: 00:00)] + expected: FAIL + + [valueAsDate getter on type date (actual value: 2019-12-00, expected valueAsDate: null)] + expected: FAIL + + [valueAsDate getter on type month (actual value: 2019-00, expected valueAsDate: null)] + expected: FAIL + + [valueAsDate getter on type week (actual value: , expected valueAsDate: null)] + expected: FAIL + + [valueAsDate getter on type time (actual value: , expected valueAsDate: null)] + expected: FAIL + + [valueAsDate getter on type month (actual value: , expected valueAsDate: null)] + expected: FAIL + + [valueAsDate getter on type time (actual value: 12:00, expected valueAsDate: Thu Jan 01 1970 12:00:00 GMT+0000 (Coordinated Universal Time))] + expected: FAIL + + [valueAsDate getter on type time (actual value: 23:59, expected valueAsDate: Thu Jan 01 1970 23:59:00 GMT+0000 (Coordinated Universal Time))] + expected: FAIL + + [valueAsDate getter on type date (actual value: 2019-02-29, expected valueAsDate: null)] + expected: FAIL + + [valueAsDate getter on type month (actual value: 0000-12, expected valueAsDate: null)] + expected: FAIL + + [valueAsDate getter on type week (actual value: 0000-W50, expected valueAsDate: null)] + expected: FAIL + + [valueAsDate getter on type date (actual value: 0000-12-10, expected valueAsDate: null)] + expected: FAIL + + [valueAsDate setter on type time (actual valueAsDate: Thu Jan 01 1970 12:00:00 GMT+0000 (Coordinated Universal Time), expected value: 12:00)] + expected: FAIL + + [valueAsDate getter on type time (actual value: 00:00, expected valueAsDate: Thu Jan 01 1970 00:00:00 GMT+0000 (Coordinated Universal Time))] + expected: FAIL + + [valueAsDate getter on type time (actual value: 24:00, expected valueAsDate: null)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/the-input-element/input-valueasnumber.html.ini b/tests/wpt/metadata/html/semantics/forms/the-input-element/input-valueasnumber.html.ini new file mode 100644 index 00000000000..ea262c41574 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/the-input-element/input-valueasnumber.html.ini @@ -0,0 +1,136 @@ +[input-valueasnumber.html] + [valueAsNumber getter on type month (actual value: 0000-12, expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type datetime-local (actual value: 2019-12-10T12:00, expected valueAsNumber: 1575979200000)] + expected: FAIL + + [valueAsNumber getter on type month (actual value: 2019-00, expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type date (actual value: 2016-02-29, expected valueAsNumber: 1456704000000)] + expected: FAIL + + [valueAsNumber getter on type time (actual value: , expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber setter on type range (actual valueAsNumber: 0, expected value: 0)] + expected: FAIL + + [valueAsNumber getter on type range (actual value: 110, expected valueAsNumber: 100)] + expected: FAIL + + [valueAsNumber getter on type range (actual value: -10, expected valueAsNumber: 0)] + expected: FAIL + + [valueAsNumber setter on type date (actual valueAsNumber: 0, expected value: 1970-01-01)] + expected: FAIL + + [valueAsNumber getter on type date (actual value: 2019-00-12, expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type date (actual value: 2019-12-00, expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber setter on type date (actual valueAsNumber: 1575936000000, expected value: 2019-12-10)] + expected: FAIL + + [valueAsNumber setter on type time (actual valueAsNumber: 43200000, expected value: 12:00)] + expected: FAIL + + [valueAsNumber setter on type time (actual valueAsNumber: 0, expected value: 00:00)] + expected: FAIL + + [valueAsNumber getter on type time (actual value: 24:00, expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber setter on type number (actual valueAsNumber: 123, expected value: 123)] + expected: FAIL + + [valueAsNumber getter on type time (actual value: 00:60, expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type week (actual value: 2019-W60, expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type date (actual value: , expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type number (actual value: 123, expected valueAsNumber: 123)] + expected: FAIL + + [valueAsNumber setter on type range (actual valueAsNumber: 50, expected value: 50)] + expected: FAIL + + [valueAsNumber setter on type week (actual valueAsNumber: 0, expected value: 1970-W01)] + expected: FAIL + + [valueAsNumber getter on type week (actual value: , expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type range (actual value: 100, expected valueAsNumber: 100)] + expected: FAIL + + [valueAsNumber getter on type datetime-local (actual value: 2019-12-10T00:00, expected valueAsNumber: 1575936000000)] + expected: FAIL + + [valueAsNumber getter on type time (actual value: 12:00, expected valueAsNumber: 43200000)] + expected: FAIL + + [valueAsNumber getter on type datetime-local (actual value: , expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type number (actual value: , expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type number (actual value: 123.456, expected valueAsNumber: 123.456)] + expected: FAIL + + [valueAsNumber getter on type time (actual value: 23:59, expected valueAsNumber: 86340000)] + expected: FAIL + + [valueAsNumber getter on type week (actual value: 0000-W50, expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type month (actual value: 2019-12, expected valueAsNumber: 599)] + expected: FAIL + + [valueAsNumber getter on type range (actual value: 0, expected valueAsNumber: 0)] + expected: FAIL + + [valueAsNumber getter on type range (actual value: 50, expected valueAsNumber: 50)] + expected: FAIL + + [valueAsNumber getter on type week (actual value: 2019-W50, expected valueAsNumber: 1575849600000)] + expected: FAIL + + [valueAsNumber setter on type datetime-local (actual valueAsNumber: 1575936000000, expected value: 2019-12-10T00:00)] + expected: FAIL + + [valueAsNumber getter on type date (actual value: 0000-12-10, expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type date (actual value: 2019-13-10, expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type time (actual value: 00:00, expected valueAsNumber: 0)] + expected: FAIL + + [valueAsNumber getter on type range (actual value: , expected valueAsNumber: 50)] + expected: FAIL + + [valueAsNumber setter on type range (actual valueAsNumber: 100, expected value: 100)] + expected: FAIL + + [valueAsNumber getter on type date (actual value: 2019-02-29, expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type date (actual value: 2019-12-10, expected valueAsNumber: 1575936000000)] + expected: FAIL + + [valueAsNumber getter on type week (actual value: 2019-W00, expected valueAsNumber: NaN)] + expected: FAIL + + [valueAsNumber getter on type month (actual value: , expected valueAsNumber: NaN)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/the-input-element/radio.html.ini b/tests/wpt/metadata/html/semantics/forms/the-input-element/radio.html.ini new file mode 100644 index 00000000000..b681bbeb56c --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/the-input-element/radio.html.ini @@ -0,0 +1,4 @@ +[radio.html] + [Radio buttons in an orphan tree should make a group] + expected: FAIL + diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini new file mode 100644 index 00000000000..663a1f8fa30 --- /dev/null +++ b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini @@ -0,0 +1,5 @@ +[018.html] + expected: TIMEOUT + [origin of the script that invoked the method, javascript:] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/webxr/xrSession_input_events_end.https.html.ini b/tests/wpt/metadata/webxr/xrSession_input_events_end.https.html.ini index 739e7b4c112..1d6cd17924d 100644 --- a/tests/wpt/metadata/webxr/xrSession_input_events_end.https.html.ini +++ b/tests/wpt/metadata/webxr/xrSession_input_events_end.https.html.ini @@ -1,4 +1,5 @@ [xrSession_input_events_end.https.html] + expected: TIMEOUT [Calling end during an input callback stops processing at the right time] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini index f584fce5df1..268949ced5c 100644 --- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini +++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini @@ -1,5 +1,4 @@ [005.html] - expected: ERROR [dedicated worker in shared worker in dedicated worker] expected: FAIL diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html index e19c958f975..1c423e95b66 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html @@ -9,12 +9,13 @@ <script> 'use strict'; -function doTest(idl, dom) { +function doTest(idl, dom, html) { const idl_array = new IdlArray(); idl_array.add_untested_idls('interface Navigator {};'); idl_array.add_untested_idls('interface EventTarget {};'); idl_array.add_untested_idls('dictionary PermissionDescriptor {};'); idl_array.add_untested_idls(dom, { only: ['Event', 'EventInit'] }); + idl_array.add_untested_idls(html, { only: ['DataTransfer', 'DataTransferItemList'] }); idl_array.add_idls(idl); idl_array.add_objects({ Navigator: ['navigator'], @@ -33,7 +34,8 @@ promise_test(() => { [ '/interfaces/clipboard-apis.idl', '/interfaces/dom.idl', + '/interfaces/html.idl', ].map(fetchText)) - .then(([idl, dom]) => doTest(idl, dom)); + .then(([idl, dom, html]) => doTest(idl, dom, html)); }, 'Test driver'); </script> diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-rdfa/0234-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-rdfa/0234-isvalid.html index 3dfbdaa03d9..3dfbdaa03d9 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/html-rdfa/0234-novalid.html +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-rdfa/0234-isvalid.html diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-rdfa/0303-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-rdfa/0303-isvalid.html index 64442095904..64442095904 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/html-rdfa/0303-novalid.html +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-rdfa/0303-isvalid.html diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0015-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0015-isvalid.html index 94742da735d..94742da735d 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0015-novalid.html +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0015-isvalid.html diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0030-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0030-isvalid.html index 7fd1a85ec7a..7fd1a85ec7a 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0030-novalid.html +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0030-isvalid.html diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0071-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0071-isvalid.html index 511e0b7107b..511e0b7107b 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0071-novalid.html +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0071-isvalid.html diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0074-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0074-isvalid.html index d25af2d5323..d25af2d5323 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0074-novalid.html +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-rdfalite/0074-isvalid.html diff --git a/tests/wpt/web-platform-tests/conformance-checkers/messages.json b/tests/wpt/web-platform-tests/conformance-checkers/messages.json index 4439888f175..6c0e2c035e9 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/messages.json +++ b/tests/wpt/web-platform-tests/conformance-checkers/messages.json @@ -28,22 +28,16 @@ "html-rdfa/0226-novalid.html": "Element \u201cp\u201d not allowed as child of element \u201cspan\u201d in this context. (Suppressing further errors from this subtree.)", "html-rdfa/0227-novalid.html": "Element \u201cp\u201d not allowed as child of element \u201cspan\u201d in this context. (Suppressing further errors from this subtree.)", "html-rdfa/0230-novalid.html": "Attribute \u201chref\u201d not allowed on element \u201cimg\u201d at this point.", - "html-rdfa/0234-novalid.html": "Bad value \u201cdescribedby\u201d for attribute \u201crel\u201d on element \u201ca\u201d: Bad list of link-type keywords: The string \u201cdescribedby\u201d is not a registered keyword.", "html-rdfa/0237-novalid.html": "Bad value \u201c$malformed http://example.com\u201d for attribute \u201cprefix\u201d on element \u201cbody\u201d.", "html-rdfa/0258-novalid.html": "Attribute \u201cxmlns:_\u201d not allowed here.", "html-rdfa/0280-novalid.html": "Bad value \u201cP2011Y06M28DT00H00M00S\u201d for attribute \u201cdatetime\u201d on element \u201ctime\u201d: Bad time-datetime: The literal did not satisfy the time-datetime format.", "html-rdfa/0285-novalid.html": "Bad value \u201cD-Day\u201d for attribute \u201cdatetime\u201d on element \u201ctime\u201d: Bad time-datetime: The literal did not satisfy the time-datetime format.", - "html-rdfa/0303-novalid.html": "Bad value \u201chomepage foaf:homepage\u201d for attribute \u201crel\u201d on element \u201ca\u201d: Bad list of link-type keywords: The string \u201chomepage\u201d is not a registered keyword.", "html-rdfa/0308-novalid.html": "Bad value \u201chttp://www.example.com/roles/somerole\u201d for attribute \u201crole\u201d on element \u201cdiv\u201d.", "html-rdfa/0309-novalid.html": "Bad value \u201cex:somerole\u201d for attribute \u201crole\u201d on element \u201cdiv\u201d.", "html-rdfa/0310-novalid.html": "Bad value \u201cex:somerole someOtherRole http://www.example.com/alternate/role\u201d for attribute \u201crole\u201d on element \u201cdiv\u201d.", "html-rdfa/0314-novalid.html": "Bad value \u201csection\u201d for attribute \u201crole\u201d on element \u201cdiv\u201d.", "html-rdfa/0319-novalid.html": "Attribute \u201cxmlns:xpr\u201d not allowed here.", "html-rdfa/0320-novalid.html": "Attribute \u201csrc\u201d not allowed on element \u201ca\u201d at this point.", - "html-rdfalite/0015-novalid.html": "Bad value \u201cdc:source\u201d for attribute \u201crel\u201d on element \u201clink\u201d: Bad list of link-type keywords: The string \u201cdc:source\u201d is not a registered keyword.", - "html-rdfalite/0030-novalid.html": "Bad value \u201ccc:license\u201d for attribute \u201crel\u201d on element \u201ca\u201d: Bad list of link-type keywords: The string \u201ccc:license\u201d is not a registered keyword.", - "html-rdfalite/0071-novalid.html": "Bad value \u201ccc:license\u201d for attribute \u201crel\u201d on element \u201ca\u201d: Bad list of link-type keywords: The string \u201ccc:license\u201d is not a registered keyword.", - "html-rdfalite/0074-novalid.html": "Bad value \u201cdc:creator\u201d for attribute \u201crel\u201d on element \u201ca\u201d: Bad list of link-type keywords: The string \u201cdc:creator\u201d is not a registered keyword.", "html-rdfalite/0147.novalid.html": "Attribute \u201cxmlns:xmlzzz\u201d not allowed here.", "html-rdfalite/0319-novalid.html": "Attribute \u201cxmlns:xpr\u201d not allowed here.", "html-svg/animate-elem-24-t-novalid.html": "Duplicate ID \u201cMyFont\u201d.", diff --git a/tests/wpt/web-platform-tests/cookies/http-state/general-tests.html b/tests/wpt/web-platform-tests/cookies/http-state/general-tests.html index c8b7ea4ecb1..d80527f9b0a 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/general-tests.html +++ b/tests/wpt/web-platform-tests/cookies/http-state/general-tests.html @@ -49,8 +49,7 @@ {file: "0025", name: "Ignore cookies with ';' in all 'Set-Cookie'."}, {file: "0026", name: "Ignore malformed cookies in all 'Set-Cookie' v2."}, {file: "0027", name: "Ignore malformed cookies in all 'Set-Cookie' v3."}, - // TODO(fhorschig): Ask about 0028's expectations ... should be empty? - {file: "0028", name: "[INVALID EXPECTATION] Ignore malformed cookies in all 'Set-Cookie' v4."}, + {file: "0028", name: "Ignore malformed cookies in all 'Set-Cookie' v4."}, ]; for (const i in TEST_CASES) { diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/cookie-http-state-template.js b/tests/wpt/web-platform-tests/cookies/http-state/resources/cookie-http-state-template.js index 62459f059fd..b2af226e22e 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/resources/cookie-http-state-template.js +++ b/tests/wpt/web-platform-tests/cookies/http-state/resources/cookie-http-state-template.js @@ -39,7 +39,7 @@ function expireCookie(name, expiry_date, path) { name = name || ""; expiry_date = expiry_date || "Thu, 01 Jan 1970 00:00:00 UTC"; path = path || getLocalResourcesPath(); - document.cookie = name + "=; expires=" + expiry_date + "; path=" + path + ";"; + document.cookie = name + "=value; expires=" + expiry_date + "; path=" + path + ";"; } /* Captures a snapshot of cookies with |parse| and allows to diff it with a diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0026-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0026-test index 609c6680b82..5ac72745f97 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0026-test +++ b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0026-test @@ -1,2 +1,2 @@ Set-Cookie: foo -Set-Cookie: +Set-Cookie: diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0028-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0028-expected index 609c6680b82..e69de29bb2d 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0028-expected +++ b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0028-expected @@ -1,2 +0,0 @@ -Set-Cookie: foo -Set-Cookie: diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0028-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0028-test index 609c6680b82..fea1e1a643b 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0028-test +++ b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0028-test @@ -1,2 +1,2 @@ Set-Cookie: foo -Set-Cookie: +Set-Cookie: diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-ref.html b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-ref.html new file mode 100644 index 00000000000..8cc4618ede4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-ref.html @@ -0,0 +1,3 @@ +<!doctype html> +<title>CSS Test Reference</title> +<iframe width="600" height="400" src="support/dark-frame-ref.html"></iframe> diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background.html b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background.html new file mode 100644 index 00000000000..ee0f006b5b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background.html @@ -0,0 +1,6 @@ +<!doctype html> +<title>CSS Color Adjustment Test: Frames with a dark color-scheme should still be transparent</title> +<link rel="help" href="https://drafts.csswg.org/css-color-adjust/#color-scheme-processing"> +<link rel="match" href="color-scheme-iframe-background-ref.html"> +<link rel="stylesheet" href="support/assert-preferred-dark.css"> +<iframe width="600" height="400" src="support/dark-frame.html"></iframe> diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-root-background.html b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-root-background.html new file mode 100644 index 00000000000..a6363971819 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-root-background.html @@ -0,0 +1,15 @@ +<!doctype html> +<title>CSS Color Adjustment Test: color-scheme does not affect :root background</title> +<link rel="help" href="https://drafts.csswg.org/css-color-adjust/#color-scheme-processing"> +<link rel="stylesheet" href="support/assert-preferred-dark.css"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> + :root { color-scheme: dark } +</style> +<body></body> +<script> + test(() => { + assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgba(0, 0, 0, 0)"); + }, "Root element background should be transparent for dark color-scheme."); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/support/assert-preferred-dark.css b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/support/assert-preferred-dark.css new file mode 100644 index 00000000000..73671b8a819 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/support/assert-preferred-dark.css @@ -0,0 +1,9 @@ +@media not all and (prefers-color-scheme: dark) { + :root { + background-color: red !important; + } + body::before { + font-size: 64px; + content: "Test must be run with preferred dark color scheme."; + } +} diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/support/dark-frame-ref.html b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/support/dark-frame-ref.html new file mode 100644 index 00000000000..0975119f56e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/support/dark-frame-ref.html @@ -0,0 +1,5 @@ +<!doctype html> +<style> + p { color: green } +</style> +<p>This text should be green and the background should be the same as the top document.</p> diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/support/dark-frame.html b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/support/dark-frame.html new file mode 100644 index 00000000000..11f88db4a0b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/support/dark-frame.html @@ -0,0 +1,6 @@ +<!doctype html> +<style> + :root { color-scheme: dark } + p { color: green } +</style> +<p>This text should be green and the background should be the same as the top document.</p> diff --git a/tests/wpt/web-platform-tests/css/css-color/animation/color-composition.html b/tests/wpt/web-platform-tests/css/css-color/animation/color-composition.html new file mode 100644 index 00000000000..c3e481830b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/animation/color-composition.html @@ -0,0 +1,50 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>color composition</title> +<link rel="help" href="https://drafts.csswg.org/css-color/#the-color-property"> +<meta name="assert" content="color supports animation by computed value type"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.target { + width: 40px; + height: 40px; + background-color: black; +} +.expected { + background-color: green; +} +</style> + +<body> +<script> +test_composition({ + property: 'color', + underlying: 'rgb(50, 50, 50)', + addFrom: 'rgb(10, 10, 10)', + replaceTo: 'rgb(30, 30, 30)', +}, [ + {at: 0, expect: 'rgb(60, 60, 60)'}, + {at: 0.2, expect: 'rgb(54, 54, 54)'}, + {at: 1, expect: 'rgb(30, 30, 30)'}, + {at: 1.2, expect: 'rgb(24, 24, 24)'}, + {at: 1.5, expect: 'rgb(15, 15, 15)'}, +]); + +test_composition({ + property: 'color', + underlying: 'rgb(60, 60, 60)', + addFrom: 'rgb(0, 0, 0)', + replaceTo: 'rgb(50, 50, 50)', +}, [ + {at: 0, expect: 'rgb(60, 60, 60)'}, + {at: 0.5, expect: 'rgb(55, 55, 55)'}, + {at: 1, expect: 'rgb(50, 50, 50)'}, + {at: 1.2, expect: 'rgb(48, 48, 48)'}, + {at: 1.5, expect: 'rgb(45, 45, 45)'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/animation/flex-basis-composition.html b/tests/wpt/web-platform-tests/css/css-flexbox/animation/flex-basis-composition.html new file mode 100644 index 00000000000..122761e4767 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/animation/flex-basis-composition.html @@ -0,0 +1,78 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>flex-basis composition</title> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#flex-basis-property"> +<meta name="assert" content="flex-basis supports animation by computed value type"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +test_composition({ + property: 'flex-basis', + underlying: '50px', + addFrom: '100px', + addTo: '200px', +}, [ + {at: -0.3, expect: '120px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '200px'}, + {at: 1, expect: '250px'}, + {at: 1.5, expect: '300px'}, +]); + +test_composition({ + property: 'flex-basis', + underlying: '100px', + addFrom: '10px', + addTo: '2px', +}, [ + {at: -0.5, expect: '114px'}, + {at: 0, expect: '110px'}, + {at: 0.5, expect: '106px'}, + {at: 1, expect: '102px'}, + {at: 1.5, expect: '98px'}, // Value clamping should happen after composition. +]); + +test_composition({ + property: 'flex-basis', + underlying: '10%', + addFrom: '100px', + addTo: '20%', +}, [ + {at: -0.3, expect: 'calc(130px + 4%)'}, + {at: 0, expect: 'calc(100px + 10%)'}, + {at: 0.5, expect: 'calc(50px + 20%)'}, + {at: 1, expect: '30%'}, + {at: 1.5, expect: 'calc(-50px + 40%)'}, +]); + +test_composition({ + property: 'flex-basis', + underlying: '50px', + addFrom: '100px', + replaceTo: '200px', +}, [ + {at: -0.3, expect: '135px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '175px'}, + {at: 1, expect: '200px'}, + {at: 1.5, expect: '225px'}, +]); + +test_composition({ + property: 'flex-basis', + underlying: '100px', + addFrom: '100px', + addTo: 'auto', +}, [ + {at: -0.3, expect: '200px'}, + {at: 0, expect: '200px'}, + {at: 0.5, expect: 'auto'}, + {at: 1, expect: 'auto'}, + {at: 1.5, expect: 'auto'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html deleted file mode 100644 index 8217f4dd2c3..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html +++ /dev/null @@ -1,358 +0,0 @@ -<meta charset="utf-8"> -<title>CSS Grid Layout Test: aligned content distribution for vertical lr</title> -<link rel="author" title="Rossana Monteriso" href="mailto:rmonteriso@igalia.com"> -<link rel="help" href="https://drafts.csswg.org/css-align-3/#distribution-values"> -<meta name="assert" content="This test checks that the align-content property is applied correctly when using content-distribution values for the vertical-lr writing mode."> -<meta name="flags" content="ahem"> -<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> -<link rel="stylesheet" href="/css/support/grid.css"> - -<style> - -.grid { - grid-auto-columns: 20px; - grid-auto-rows: 40px; - position: relative; - width: 400px; - height: 300px; -} - -.stretchedGrid { - grid-auto-rows: auto; -} - -.thirdRowFirstColumn { - background-color: green; - grid-column: 1; - grid-row: 3; -} - -.fourthRowFirstColumn { - background-color: deepskyblue; - grid-column: 1; - grid-row: 4; -} - -.fourthRowSecondColumn { - background-color: maroon; - grid-column: 2; - grid-row: 4; -} - -.thirdRowFirstColumn { - background-color: green; - grid-column: 1; - grid-row: 3; -} - -.fourthRowFirstColumn { - background-color: deepskyblue; - grid-column: 1; - grid-row: 4; -} - -.fourthRowSecondColumn { - background-color: maroon; - grid-column: 2; - grid-row: 4; -} - -</style> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/check-layout-th.js"></script> - -<body onload="checkLayout('.grid')"> - -<p>This test checks that the align-content property is applied correctly when using content-distribution values in vertical-lr writing mode.</p> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="80" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="80" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="280" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="280" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="107" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="107" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="253" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="253" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="200" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="200" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="200" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="47" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="47" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="313" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="313" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="70" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="70" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="290" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="290" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="267" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="267" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="120" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="120" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="240" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="240" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="30" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="30" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="130" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="130" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="230" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="230" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="330" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="330" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="48" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="48" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="136" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="136" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="224" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="224" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="312" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="312" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="300" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="300" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> - </div> -</div> - -<!-- RTL direction. --> -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="80" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="80" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="280" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="280" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="107" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="107" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="253" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="253" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="200" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="200" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="200" data-offset-y="280" data-expected-width="200" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="200" data-offset-y="260" data-expected-width="200" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="47" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="47" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="313" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="313" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="70" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="70" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="290" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="290" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="267" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="267" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="120" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="120" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="240" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="240" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="30" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="30" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="130" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="130" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="230" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="230" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="330" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="330" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="48" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="48" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="136" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="136" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="224" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="224" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="312" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="312" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="200" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="200" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="300" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="300" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> - </div> -</div> -</body> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html deleted file mode 100644 index 096e3fd6910..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html +++ /dev/null @@ -1,358 +0,0 @@ -<meta charset="utf-8"> -<title>CSS Grid Layout Test: aligned content distribution for vertical rl</title> -<link rel="author" title="Rossana Monteriso" href="mailto:rmonteriso@igalia.com"> -<link rel="help" href="https://drafts.csswg.org/css-align-3/#distribution-values"> -<meta name="assert" content="This test checks that the align-content property is applied correctly when using content-distribution values for the vertical-rl writing mode."> -<meta name="flags" content="ahem"> -<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> -<link rel="stylesheet" href="/css/support/grid.css"> - -<style> - -.grid { - grid-auto-columns: 20px; - grid-auto-rows: 40px; - position: relative; - width: 400px; - height: 300px; -} - -.stretchedGrid { - grid-auto-rows: auto; -} - -.thirdRowFirstColumn { - background-color: green; - grid-column: 1; - grid-row: 3; -} - -.fourthRowFirstColumn { - background-color: deepskyblue; - grid-column: 1; - grid-row: 4; -} - -.fourthRowSecondColumn { - background-color: maroon; - grid-column: 2; - grid-row: 4; -} - -.thirdRowFirstColumn { - background-color: green; - grid-column: 1; - grid-row: 3; -} - -.fourthRowFirstColumn { - background-color: deepskyblue; - grid-column: 1; - grid-row: 4; -} - -.fourthRowSecondColumn { - background-color: maroon; - grid-column: 2; - grid-row: 4; -} - -</style> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/check-layout-th.js"></script> - -<body onload="checkLayout('.grid')"> - -<p>This test checks that the align-content property is applied correctly when using content-distribution values for vertical-rl mode.</p> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="280" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="280" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="80" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="80" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="253" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="253" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="107" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="107" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="200" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="200" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="200" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="313" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="313" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="47" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="47" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="290" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="290" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="70" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="70" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="267" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="267" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="240" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="240" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="120" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="120" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="330" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="330" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="230" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="230" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="130" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="130" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="30" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="30" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="312" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="312" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="224" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="224" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="136" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="136" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="48" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="48" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="300" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="300" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="100" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> - </div> -</div> - -<!-- RTL direction. --> -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="280" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="280" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="80" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="80" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="253" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="253" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="107" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="107" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="200" data-offset-y="280" data-expected-width="200" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="200" data-offset-y="260" data-expected-width="200" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="200" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="200" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="313" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="313" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="47" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="47" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="290" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="290" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="70" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="70" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="267" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="267" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="240" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="240" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="120" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="120" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="330" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="330" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="230" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="230" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="130" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="130" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="30" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="30" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="312" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="312" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="224" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="224" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="136" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="136" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="48" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="48" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="300" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="300" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="200" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="200" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="100" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="100" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> - <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> - <div class="fourthRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> - </div> -</div> -</body> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html deleted file mode 100644 index 7b66ddb9951..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html +++ /dev/null @@ -1,358 +0,0 @@ -<meta charset="utf-8"> -<title>CSS Grid Layout Test: aligned content distribution</title> -<link rel="author" title="Rossana Monteriso" href="mailto:rmonteriso@igalia.com"> -<link rel="help" href="https://drafts.csswg.org/css-align-3/#distribution-values"> -<meta name="assert" content="This test checks that the align-content property is applied correctly when using content-distribution values."> -<meta name="flags" content="ahem"> -<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> -<link rel="stylesheet" href="/css/support/grid.css"> - -<style> - -.grid { - grid-auto-columns: 20px; - grid-auto-rows: 40px; - position: relative; - width: 200px; - height: 300px; -} - -.stretchedGrid { - grid-auto-rows: auto; -} - -.thirdRowFirstColumn { - background-color: green; - grid-column: 1; - grid-row: 3; -} - -.fourthRowFirstColumn { - background-color: deepskyblue; - grid-column: 1; - grid-row: 4; -} - -.fourthRowSecondColumn { - background-color: maroon; - grid-column: 2; - grid-row: 4; -} - -.thirdRowFirstColumn { - background-color: green; - grid-column: 1; - grid-row: 3; -} - -.fourthRowFirstColumn { - background-color: deepskyblue; - grid-column: 1; - grid-row: 4; -} - -.fourthRowSecondColumn { - background-color: maroon; - grid-column: 2; - grid-row: 4; -} - -</style> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/check-layout-th.js"></script> - -<body onload="checkLayout('.grid')"> - -<p>This test checks that the align-content property is applied correctly when using content-distribution values.</p> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="55" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="55" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="205" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="205" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="73" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="73" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="187" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="187" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="150"></div> - <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="150"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="150" data-expected-width="20" data-expected-height="150"></div> - <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="150" data-expected-width="20" data-expected-height="150"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="30" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="30" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="230" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="230" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="45" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="45" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="215" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="215" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="100"></div> - <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="100"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="100" data-expected-width="20" data-expected-height="100"></div> - <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="100" data-expected-width="20" data-expected-height="100"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="200" data-expected-width="20" data-expected-height="100"></div> - <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="200" data-expected-width="20" data-expected-height="100"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="87" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="87" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="173" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="173" data-expected-width="20" data-expected-height="40"></div> - <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> - <div class="fourthRowSecondColumn" data-offset-x="20" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="18" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="18" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="93" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="93" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="168" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="168" data-expected-width="20" data-expected-height="40"></div> - <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="243" data-expected-width="20" data-expected-height="40"></div> - <div class="fourthRowSecondColumn" data-offset-x="20" data-offset-y="243" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="28" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="28" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="96" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="96" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="164" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="164" data-expected-width="20" data-expected-height="40"></div> - <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="232" data-expected-width="20" data-expected-height="40"></div> - <div class="fourthRowSecondColumn" data-offset-x="20" data-offset-y="232" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: LTR | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="75"></div> - <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="75"></div> - <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="75" data-expected-width="20" data-expected-height="75"></div> - <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="75" data-expected-width="20" data-expected-height="75"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="150" data-expected-width="20" data-expected-height="75"></div> - <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="150" data-expected-width="20" data-expected-height="75"></div> - <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="225" data-expected-width="20" data-expected-height="75"></div> - <div class="fourthRowSecondColumn" data-offset-x="20" data-offset-y="225" data-expected-width="20" data-expected-height="75"></div> - </div> -</div> - -<!-- RTL direction. --> -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween directionRTL" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround directionRTL" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="55" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="55" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="205" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="205" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly directionRTL" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="73" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="73" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="187" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="187" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch directionRTL" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="150"></div> - <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="150"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="150" data-expected-width="20" data-expected-height="150"></div> - <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="150" data-expected-width="20" data-expected-height="150"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween directionRTL" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround directionRTL" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="30" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="30" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="230" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="230" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly directionRTL" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="45" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="45" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="215" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="215" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch directionRTL" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="100"></div> - <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="100"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="100" data-expected-width="20" data-expected-height="100"></div> - <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="100" data-expected-width="20" data-expected-height="100"></div> - <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="200" data-expected-width="20" data-expected-height="100"></div> - <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="200" data-expected-width="20" data-expected-height="100"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-between'</p> - <div class="grid alignContentSpaceBetween directionRTL" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="87" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="87" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="173" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="173" data-expected-width="20" data-expected-height="40"></div> - <div class="fourthRowFirstColumn" data-offset-x="180" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> - <div class="fourthRowSecondColumn" data-offset-x="160" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-around'</p> - <div class="grid alignContentSpaceAround directionRTL" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="18" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="18" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="93" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="93" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="168" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="168" data-expected-width="20" data-expected-height="40"></div> - <div class="fourthRowFirstColumn" data-offset-x="180" data-offset-y="243" data-expected-width="20" data-expected-height="40"></div> - <div class="fourthRowSecondColumn" data-offset-x="160" data-offset-y="243" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'space-evenly'</p> - <div class="grid alignContentSpaceEvenly directionRTL" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="28" data-expected-width="20" data-expected-height="40"></div> - <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="28" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="96" data-expected-width="20" data-expected-height="40"></div> - <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="96" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="164" data-expected-width="20" data-expected-height="40"></div> - <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="164" data-expected-width="20" data-expected-height="40"></div> - <div class="fourthRowFirstColumn" data-offset-x="180" data-offset-y="232" data-expected-width="20" data-expected-height="40"></div> - <div class="fourthRowSecondColumn" data-offset-x="160" data-offset-y="232" data-expected-width="20" data-expected-height="40"></div> - </div> -</div> - -<div style="position: relative"> - <p>direction: RTL | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch directionRTL" data-expected-width="200" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="75"></div> - <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="75"></div> - <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="75" data-expected-width="20" data-expected-height="75"></div> - <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="75" data-expected-width="20" data-expected-height="75"></div> - <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="150" data-expected-width="20" data-expected-height="75"></div> - <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="150" data-expected-width="20" data-expected-height="75"></div> - <div class="fourthRowFirstColumn" data-offset-x="180" data-offset-y="225" data-expected-width="20" data-expected-height="75"></div> - <div class="fourthRowSecondColumn" data-offset-x="160" data-offset-y="225" data-expected-width="20" data-expected-height="75"></div> - </div> -</div> -</body> diff --git a/tests/wpt/web-platform-tests/css/css-images/animations/object-position-interpolation.html b/tests/wpt/web-platform-tests/css/css-images/animations/object-position-interpolation.html deleted file mode 100644 index 055cbc8421b..00000000000 --- a/tests/wpt/web-platform-tests/css/css-images/animations/object-position-interpolation.html +++ /dev/null @@ -1,158 +0,0 @@ -<!DOCTYPE html> -<meta charset="UTF-8"> -<title>object-position-interpolation</title> -<link rel="help" href="https://drafts.csswg.org/css-images-3/#the-object-position"> -<meta name="assert" content="object-position supports animation by computation"> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/css/support/interpolation-testcommon.js"></script> - -<style> -.parent { - object-position: 30px 10px; -} - -.target { - position: relative; - width: 100px; - height: 100px; - background-color: black; - display: inline-block; - margin: 20px 0px 20px 0px; - object-fit: fill; - object-position: 10px 30px; -} - -.expected { - background-color: green; -} -</style> -<body> -</body> -<script> -test_interpolation({ - property: 'object-position', - from: neutralKeyframe, - to: '20px 20px', -}, [ - {at: -0.3, expect: '7px 33px'}, - {at: 0, expect: '10px 30px'}, - {at: 0.5, expect: '15px 25px'}, - {at: 1, expect: '20px 20px'}, - {at: 1.5, expect: '25px 15px'}, -]); - -test_interpolation({ - property: 'object-position', - from: 'initial', - to: '20px 20px', -}, [ - {at: -0.3, expect: 'calc(-6px + 65%) calc(-6px + 65%)'}, - {at: 0, expect: '50% 50%'}, - {at: 0.5, expect: 'calc(10px + 25%) calc(10px + 25%)'}, - {at: 1, expect: 'calc(20px + 0%) calc(20px + 0%)'}, - {at: 1.5, expect: 'calc(30px + -25%) calc(30px + -25%)'}, -]); - -test_interpolation({ - property: 'object-position', - from: 'inherit', - to: '20px 20px', -}, [ - {at: -0.3, expect: '33px 7px'}, - {at: 0, expect: '30px 10px'}, - {at: 0.5, expect: '25px 15px'}, - {at: 1, expect: '20px 20px'}, - {at: 1.5, expect: '15px 25px'}, -]); - -test_interpolation({ - property: 'object-position', - from: 'unset', - to: '20px 20px', -}, [ - {at: -0.3, expect: 'calc(-6px + 65%) calc(-6px + 65%)'}, - {at: 0, expect: '50% 50%'}, - {at: 0.5, expect: 'calc(10px + 25%) calc(10px + 25%)'}, - {at: 1, expect: 'calc(20px + 0%) calc(20px + 0%)'}, - {at: 1.5, expect: 'calc(30px + -25%) calc(30px + -25%)'}, -]); - -test_interpolation({ - property: 'object-position', - from: '50% 50%', - to: '100% 100%' -}, [ - {at: -0.3, expect: '35% 35%'}, - {at: 0, expect: '50% 50%'}, - {at: 0.5, expect: '75% 75%'}, - {at: 1, expect: '100% 100%'}, - {at: 1.5, expect: '125% 125%'} -]); - -test_interpolation({ - property: 'object-position', - from: '100px 200px', - to: '0px 0px' -}, [ - {at: -0.3, expect: '130px 260px'}, - {at: 0, expect: '100px 200px'}, - {at: 0.5, expect: '50px 100px'}, - {at: 1, expect: '0px 0px'}, - {at: 1.5, expect: '-50px -100px'} -]); - -// Zero seem to be a special case in the old implementation -test_interpolation({ - property: 'object-position', - from: '50% 100%', - to: '0px 0px' -}, [ - {at: -0.3, expect: '65% 130%'}, - {at: 0, expect: '50% 100%'}, - {at: 0.5, expect: '25% 50%'}, - {at: 1, expect: '0px 0px'}, - {at: 1.5, expect: '-25% -50%'} -]); - -test_interpolation({ - property: 'object-position', - from: '50% 100%', - to: '50px 100px' -}, [ - {at: -0.3, expect: 'calc(65% + -15px) calc(130% + -30px)'}, - {at: 0, expect: '50% 100%'}, - {at: 0.5, expect: 'calc(25% + 25px) calc(50% + 50px)'}, - {at: 1, expect: 'calc(0% + 50px) calc(0% + 100px)'}, - {at: 1.5, expect: 'calc(-25% + 75px) calc(-50% + 150px)'} -]); - -test_interpolation({ - property: 'object-position', - from: 'center', - to: 'top right' -}, [ - {at: -0.3, expect: '35% 65%'}, - {at: 0, expect: '50% 50%'}, - {at: 0.5, expect: '75% 25%'}, - {at: 1, expect: '100% 0%'}, - {at: 1.5, expect: '125% -25%'} -]); - -test_interpolation({ - property: 'object-position', - from: 'center', - to: 'right 0% bottom 50%', -}, [ - {at: -0.5, expect: '25% 50%'}, - {at: 0, expect: 'center'}, - {at: 0.3, expect: '65% 50%'}, - {at: 0.5, expect: '75% 50%'}, - {at: 0.9, expect: '95% 50%'}, - {at: 1, expect: '100% 50%'}, - {at: 1.5, expect: '125% 50%'}, - {at: 2, expect: '150% 50%'}, -]); -</script> - diff --git a/tests/wpt/web-platform-tests/css/css-masking/animations/clip-path-composition.html b/tests/wpt/web-platform-tests/css/css-masking/animations/clip-path-composition.html new file mode 100644 index 00000000000..2275ae70a33 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/animations/clip-path-composition.html @@ -0,0 +1,189 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>clip-path composition</title> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-clip-path"> +<meta name="assert" content="clip-path supports animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +test_composition({ + property: 'clip-path', + underlying: 'circle(100px at 25px 25%)', + addFrom: 'circle(10px at 25px 75%)', + addTo: 'circle(50px at 50px center)', +}, [ + {at: -0.3, expect: 'circle(98px at 42.5px 107.5%)'}, + {at: 0, expect: 'circle(110px at 50px 100%)'}, + {at: 0.3, expect: 'circle(122px at 57.5px 92.5%)'}, + {at: 0.6, expect: 'circle(134px at 65px 85%)'}, + {at: 1, expect: 'circle(150px at 75px 75%)'}, + {at: 1.5, expect: 'circle(170px at 87.5px 62.5%)'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'circle(100px at 20px 20%)', + addFrom: 'circle(50px at 50px 50%)', + replaceTo: 'circle(50% at 150px 150%)', +}, [ + {at: -0.3, expect: 'circle(calc(195px + -15%) at 46px 46%)'}, + {at: 0, expect: 'circle(calc(150px + 0%) at 70px 70%)'}, + {at: 0.3, expect: 'circle(calc(105px + 15%) at 94px 94%)'}, + {at: 0.6, expect: 'circle(calc(60px + 30%) at 118px 118%)'}, + {at: 1, expect: 'circle(50% at 150px 150%)'}, + {at: 1.5, expect: 'circle(calc(-75px + 75%) at 190px 190%)'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'circle(farthest-side at 25px 75%)', + addFrom: 'circle(farthest-side at 25px 75%)', + addTo: 'circle(farthest-side at 50px center)', +}, [ + {at: 0.25, expect: 'circle(farthest-side at 25px 75%)'}, + {at: 0.75, expect: 'circle(farthest-side at 50px 50%)'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'circle(50px at 10px 20px)', + addFrom: 'circle(50px at 10px 20px)', + addTo: 'circle(farthest-side at 30px 40px)', +}, [ + {at: 0.25, expect: 'circle(100px at 20px 40px)'}, + {at: 0.75, expect: 'circle(farthest-side at 30px 40px)'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'ellipse(10px 20px at 30px 40px)', + addFrom: 'ellipse(40px 30px at 20px 10px)', + addTo: 'ellipse(140px 130px at 120px 110px)', +}, [ + {at: -0.3, expect: 'ellipse(20px 20px at 20px 20px)'}, + {at: 0, expect: 'ellipse(50px 50px at 50px 50px)'}, + {at: 0.3, expect: 'ellipse(80px 80px at 80px 80px)'}, + {at: 0.6, expect: 'ellipse(110px 110px at 110px 110px)'}, + {at: 1, expect: 'ellipse(150px 150px at 150px 150px)'}, + {at: 1.5, expect: 'ellipse(200px 200px at 200px 200px)'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'ellipse(10px 20px at 30px 40px)', + replaceFrom: 'ellipse(40px 30px at 20px 10px)', + addTo: 'ellipse(40px 30px at 20px 10px)', +}, [ + {at: -0.3, expect: 'ellipse(37px 24px at 11px -2px)'}, + {at: 0, expect: 'ellipse(40px 30px at 20px 10px)'}, + {at: 0.3, expect: 'ellipse(43px 36px at 29px 22px)'}, + {at: 0.6, expect: 'ellipse(46px 42px at 38px 34px)'}, + {at: 1, expect: 'ellipse(50px 50px at 50px 50px)'}, + {at: 1.5, expect: 'ellipse(55px 60px at 65px 70px)'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'ellipse(25px 75%)', + addFrom: 'ellipse()', + addTo: 'ellipse(closest-side farthest-side)', +}, [ + {at: 0.25, expect: 'ellipse(at 50% 50%)'}, + {at: 0.75, expect: 'ellipse(closest-side farthest-side at 50% 50%)'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'inset(20px)', + addFrom: 'inset(20px)', + addTo: 'inset(40%)', +}, [ + {at: -0.3, expect: 'inset(calc(46px + -12%))'}, + {at: 0, expect: 'inset(calc(40px + 0%))'}, + {at: 0.3, expect: 'inset(calc(34px + 12%))'}, + {at: 0.6, expect: 'inset(calc(28px + 24%))'}, + {at: 1, expect: 'inset(calc(20px + 40%))'}, + {at: 1.5, expect: 'inset(calc(10px + 60%))'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'inset(1px 2px 3px 4px round 10px 20px 30px 40px / 50px 60px 70px 80px)', + addFrom: 'inset(1px 2px 3px 4px round 10px 20px 30px 40px / 50px 60px 70px 80px)', + replaceTo: 'inset(102px 104px 106px 108px round 120px 140px 160px 180px / 200px 220px 240px 260px)', +}, [ + {at: -0.3, expect: 'inset(-28px -26px -24px -22px round 0px 10px 30px 50px / 70px 90px 110px 130px)'}, + {at: 0, expect: 'inset(2px 4px 6px 8px round 20px 40px 60px 80px / 100px 120px 140px 160px)'}, + {at: 0.25, expect: 'inset(27px 29px 31px 33px round 45px 65px 85px 105px / 125px 145px 165px 185px)'}, + {at: 0.75, expect: 'inset(77px 79px 81px 83px round 95px 115px 135px 155px / 175px 195px 215px 235px)'}, + {at: 1, expect: 'inset(102px 104px 106px 108px round 120px 140px 160px 180px / 200px 220px 240px 260px)'}, + {at: 1.5, expect: 'inset(152px 154px 156px 158px round 170px 190px 210px 230px / 250px 270px 290px 310px)'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'inset(1px 2px round 100px 200px)', + addFrom: 'inset(1px 2px round 100px 200px)', + addTo: 'inset(101px 102px 101px 102px)', +}, [ + {at: -0.3, expect: 'inset(-28px -26px round 230px 460px)'}, + {at: 0, expect: 'inset(2px 4px round 200px 400px)'}, + {at: 0.3, expect: 'inset(32px 34px round 170px 340px)'}, + {at: 0.6, expect: 'inset(62px 64px round 140px 280px)'}, + {at: 1, expect: 'inset(102px 104px round 100px 200px)'}, + {at: 1.5, expect: 'inset(152px 154px round 50px 100px)'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'polygon(10px 20%, 30px 40%)', + addFrom: 'polygon(10px 20%, 30px 40%)', + addTo: 'polygon(110px 120%, 130px 140%)', +}, [ + {at: -0.3, expect: 'polygon(-10px 10%, 30px 50%)'}, + {at: 0, expect: 'polygon(20px 40%, 60px 80%)'}, + {at: 0.3, expect: 'polygon(50px 70%, 90px 110%)'}, + {at: 0.6, expect: 'polygon(80px 100%, 120px 140%)'}, + {at: 1, expect: 'polygon(120px 140%, 160px 180%)'}, + {at: 1.5, expect: 'polygon(170px 190%, 210px 230%)'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'polygon(evenodd, 10px 20px)', + addFrom: 'polygon(evenodd, 10px 20px)', + addTo: 'polygon(evenodd, 110px 120px)', +}, [ + {at: -0.3, expect: 'polygon(evenodd, -10px 10px)'}, + {at: 0, expect: 'polygon(evenodd, 20px 40px)'}, + {at: 0.3, expect: 'polygon(evenodd, 50px 70px)'}, + {at: 0.6, expect: 'polygon(evenodd, 80px 100px)'}, + {at: 1, expect: 'polygon(evenodd, 120px 140px)'}, + {at: 1.5, expect: 'polygon(evenodd, 170px 190px)'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'polygon(evenodd, 10px 20px)', + addFrom: 'polygon(evenodd, 10px 20px)', + addTo: 'polygon(nonzero, 30px 40px)', +}, [ + {at: 0.25, expect: 'polygon(evenodd, 20px 40px)'}, + {at: 0.75, expect: 'polygon(30px 40px)'}, +]); + +test_composition({ + property: 'clip-path', + underlying: 'polygon(10px 20px, 30px 40px)', + addFrom: 'polygon(10px 20px, 30px 40px)', + addTo: 'polygon(30px 40px)', +}, [ + {at: 0.25, expect: 'polygon(20px 40px, 60px 80px)'}, + {at: 0.75, expect: 'polygon(30px 40px)'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-position/animations/bottom-composition.html b/tests/wpt/web-platform-tests/css/css-position/animations/bottom-composition.html new file mode 100644 index 00000000000..68a830dfbda --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/animations/bottom-composition.html @@ -0,0 +1,78 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>bottom composition</title> +<link rel="help" href="https://drafts.csswg.org/css-position-3/#propdef-bottom"> +<meta name="assert" content="bottom support animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +test_composition({ + property: 'bottom', + underlying: '50px', + addFrom: '100px', + addTo: '200px', +}, [ + {at: -0.3, expect: '120px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '200px'}, + {at: 1, expect: '250px'}, + {at: 1.5, expect: '300px'}, +]); + +test_composition({ + property: 'bottom', + underlying: '100px', + addFrom: '10px', + addTo: '2px', +}, [ + {at: -0.5, expect: '114px'}, + {at: 0, expect: '110px'}, + {at: 0.5, expect: '106px'}, + {at: 1, expect: '102px'}, + {at: 1.5, expect: '98px'}, +]); + +test_composition({ + property: 'bottom', + underlying: '10%', + addFrom: '100px', + addTo: '20%', +}, [ + {at: -0.3, expect: 'calc(130px + 4%)'}, + {at: 0, expect: 'calc(100px + 10%)'}, + {at: 0.5, expect: 'calc(50px + 20%)'}, + {at: 1, expect: '30%'}, + {at: 1.5, expect: 'calc(-50px + 40%)'}, +]); + +test_composition({ + property: 'bottom', + underlying: '50px', + addFrom: '100px', + replaceTo: '200px', +}, [ + {at: -0.3, expect: '135px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '175px'}, + {at: 1, expect: '200px'}, + {at: 1.5, expect: '225px'}, +]); + +test_composition({ + property: 'bottom', + underlying: '100px', + addFrom: '100px', + addTo: 'auto', +}, [ + {at: -0.3, expect: '200px'}, + {at: 0, expect: '200px'}, + {at: 0.5, expect: 'auto'}, + {at: 1, expect: 'auto'}, + {at: 1.5, expect: 'auto'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-position/animations/left-composition.html b/tests/wpt/web-platform-tests/css/css-position/animations/left-composition.html new file mode 100644 index 00000000000..14b3dfda76d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/animations/left-composition.html @@ -0,0 +1,91 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>left composition</title> +<link rel="help" href="https://drafts.csswg.org/css-position-3/#propdef-left"> +<meta name="assert" content="left support animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +test_composition({ + property: 'left', + underlying: '50px', + addFrom: '100px', + addTo: '200px', +}, [ + {at: -0.3, expect: '120px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '200px'}, + {at: 1, expect: '250px'}, + {at: 1.5, expect: '300px'}, +]); + +test_composition({ + property: 'left', + underlying: '100px', + addFrom: '10px', + addTo: '2px', +}, [ + {at: -0.5, expect: '114px'}, + {at: 0, expect: '110px'}, + {at: 0.5, expect: '106px'}, + {at: 1, expect: '102px'}, + {at: 1.5, expect: '98px'}, +]); + +test_composition({ + property: 'left', + underlying: '10%', + addFrom: '100px', + addTo: '20%', +}, [ + {at: -0.3, expect: 'calc(130px + 4%)'}, + {at: 0, expect: 'calc(100px + 10%)'}, + {at: 0.5, expect: 'calc(50px + 20%)'}, + {at: 1, expect: '30%'}, + {at: 1.5, expect: 'calc(-50px + 40%)'}, +]); + +test_composition({ + property: 'left', + underlying: '10%', + addFrom: '100px', + addTo: '-10%', +}, [ + {at: -0.3, expect: 'calc(130px + 13%)'}, + {at: 0, expect: 'calc(100px + 10%)'}, + {at: 0.5, expect: 'calc(50px + 5%)'}, + {at: 1, expect: '0%'}, + {at: 1.5, expect: 'calc(-50px - 5%)'}, +]); + +test_composition({ + property: 'left', + underlying: '50px', + addFrom: '100px', + replaceTo: '200px', +}, [ + {at: -0.3, expect: '135px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '175px'}, + {at: 1, expect: '200px'}, + {at: 1.5, expect: '225px'}, +]); + +test_composition({ + property: 'left', + underlying: '100px', + addFrom: '100px', + addTo: 'auto', +}, [ + {at: -0.3, expect: '200px'}, + {at: 0, expect: '200px'}, + {at: 0.5, expect: 'auto'}, + {at: 1, expect: 'auto'}, + {at: 1.5, expect: 'auto'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-position/animation/position-interpolation.html b/tests/wpt/web-platform-tests/css/css-position/animations/position-interpolation.html index a4ad50240a4..a4ad50240a4 100644 --- a/tests/wpt/web-platform-tests/css/css-position/animation/position-interpolation.html +++ b/tests/wpt/web-platform-tests/css/css-position/animations/position-interpolation.html diff --git a/tests/wpt/web-platform-tests/css/css-position/animations/right-composition.html b/tests/wpt/web-platform-tests/css/css-position/animations/right-composition.html new file mode 100644 index 00000000000..995bb8d6bec --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/animations/right-composition.html @@ -0,0 +1,78 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>right composition</title> +<link rel="help" href="https://drafts.csswg.org/css-position-3/#propdef-right"> +<meta name="assert" content="right support animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +test_composition({ + property: 'right', + underlying: '50px', + addFrom: '100px', + addTo: '200px', +}, [ + {at: -0.3, expect: '120px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '200px'}, + {at: 1, expect: '250px'}, + {at: 1.5, expect: '300px'}, +]); + +test_composition({ + property: 'right', + underlying: '100px', + addFrom: '10px', + addTo: '2px', +}, [ + {at: -0.5, expect: '114px'}, + {at: 0, expect: '110px'}, + {at: 0.5, expect: '106px'}, + {at: 1, expect: '102px'}, + {at: 1.5, expect: '98px'}, +]); + +test_composition({ + property: 'right', + underlying: '10%', + addFrom: '100px', + addTo: '20%', +}, [ + {at: -0.3, expect: 'calc(130px + 4%)'}, + {at: 0, expect: 'calc(100px + 10%)'}, + {at: 0.5, expect: 'calc(50px + 20%)'}, + {at: 1, expect: '30%'}, + {at: 1.5, expect: 'calc(-50px + 40%)'}, +]); + +test_composition({ + property: 'right', + underlying: '50px', + addFrom: '100px', + replaceTo: '200px', +}, [ + {at: -0.3, expect: '135px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '175px'}, + {at: 1, expect: '200px'}, + {at: 1.5, expect: '225px'}, +]); + +test_composition({ + property: 'right', + underlying: '100px', + addFrom: '100px', + addTo: 'auto', +}, [ + {at: -0.3, expect: '200px'}, + {at: 0, expect: '200px'}, + {at: 0.5, expect: 'auto'}, + {at: 1, expect: 'auto'}, + {at: 1.5, expect: 'auto'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-position/animations/top-composition.html b/tests/wpt/web-platform-tests/css/css-position/animations/top-composition.html new file mode 100644 index 00000000000..47782e8536f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/animations/top-composition.html @@ -0,0 +1,78 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>top composition</title> +<link rel="help" href="https://drafts.csswg.org/css-position-3/#propdef-top"> +<meta name="assert" content="top support animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +test_composition({ + property: 'top', + underlying: '50px', + addFrom: '100px', + addTo: '200px', +}, [ + {at: -0.3, expect: '120px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '200px'}, + {at: 1, expect: '250px'}, + {at: 1.5, expect: '300px'}, +]); + +test_composition({ + property: 'top', + underlying: '100px', + addFrom: '10px', + addTo: '2px', +}, [ + {at: -0.5, expect: '114px'}, + {at: 0, expect: '110px'}, + {at: 0.5, expect: '106px'}, + {at: 1, expect: '102px'}, + {at: 1.5, expect: '98px'}, +]); + +test_composition({ + property: 'top', + underlying: '10%', + addFrom: '100px', + addTo: '20%', +}, [ + {at: -0.3, expect: 'calc(130px + 4%)'}, + {at: 0, expect: 'calc(100px + 10%)'}, + {at: 0.5, expect: 'calc(50px + 20%)'}, + {at: 1, expect: '30%'}, + {at: 1.5, expect: 'calc(-50px + 40%)'}, +]); + +test_composition({ + property: 'top', + underlying: '50px', + addFrom: '100px', + replaceTo: '200px', +}, [ + {at: -0.3, expect: '135px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '175px'}, + {at: 1, expect: '200px'}, + {at: 1.5, expect: '225px'}, +]); + +test_composition({ + property: 'top', + underlying: '100px', + addFrom: '100px', + addTo: 'auto', +}, [ + {at: -0.3, expect: '200px'}, + {at: 0, expect: '200px'}, + {at: 0.5, expect: 'auto'}, + {at: 1, expect: 'auto'}, + {at: 1.5, expect: 'auto'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html new file mode 100644 index 00000000000..3be68fe841a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html @@ -0,0 +1,121 @@ +<!DOCTYPE html> +<title> + Updating the snap alignment of a snap container's content should make the snap + container resnap accordingly. +</title> +<link rel="help" href="https://drafts.csswg.org/css-scroll-snap/#re-snap" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +div { + position: absolute; + margin: 0; +} + +#scroller { + height: 200px; + width: 200px; + overflow: hidden; + scroll-snap-type: both mandatory; +} + +#initial-target { + width: 300px; + height: 300px; + top: 100px; + left: 100px; + background-color: green; + scroll-snap-align: start; +} + +#other-target { + width: 300px; + height: 300px; + top: 300px; + left: 300px; + background-color: red; + scroll-snap-align: start; +} + +.area { + width: 2000px; + height: 2000px; +} + +.snap-area { + scroll-snap-align: start !important; +} +</style> + +<div id="scroller"> + <div class="area"></div> + <div id="initial-target"></div> + <div id="other-target"></div> +</div> + +<script> +const initial_target = document.getElementById("initial-target"); +const other_target = document.getElementById("other-target"); +const scroller = document.getElementById("scroller"); + +function cleanup() { + initial_target.style.setProperty("scroll-snap-align", "start"); + other_target.style.setProperty("scroll-snap-align", "start"); + initial_target.removeAttribute("class"); +} + +test(t => { + t.add_cleanup(cleanup); + scroller.scrollTo(0,0); + assert_equals(scroller.scrollTop, 100); + assert_equals(scroller.scrollLeft, 100); + + initial_target.style.setProperty("scroll-snap-align", "end"); + // target.top + target.height - scroller.height + assert_equals(scroller.scrollTop, 200); + assert_equals(scroller.scrollLeft, 200); +}, "Changing the current target's snap alignment should make the scroller" ++ " resnap to it even if another snap position is closer to the current offset"); + +test(t => { + t.add_cleanup(cleanup); + scroller.scrollTo(0,0); + assert_equals(scroller.scrollTop, 100); + assert_equals(scroller.scrollLeft, 100); + + initial_target.style.setProperty("scroll-snap-align", "none"); + assert_equals(scroller.scrollTop, 300); + assert_equals(scroller.scrollLeft, 300); +}, "Removing the current target's snap alignment should make the scroller" ++ " resnap to a new snap area."); + +test(t => { + t.add_cleanup(cleanup); + initial_target.style.setProperty("scroll-snap-align", "none"); + other_target.style.setProperty("scroll-snap-align", "none"); + + scroller.scrollTo(0,0); + assert_equals(scroller.scrollTop, 0); + assert_equals(scroller.scrollLeft, 0); + + initial_target.style.setProperty("scroll-snap-align", "start"); + assert_equals(scroller.scrollTop, 100); + assert_equals(scroller.scrollLeft, 100); +}, "Changing an element snap alignment from none to start should make the" ++ "scroller resnap."); + +test(t => { + t.add_cleanup(cleanup); + initial_target.style.setProperty("scroll-snap-align", "none"); + other_target.style.setProperty("scroll-snap-align", "none"); + + scroller.scrollTo(0,0); + assert_equals(scroller.scrollTop, 0); + assert_equals(scroller.scrollLeft, 0); + + initial_target.classList.add("snap-area"); + assert_equals(scroller.scrollTop, 100); + assert_equals(scroller.scrollLeft, 100); +}, "Changing an element snap alignment from none to start by adding a class" ++ " should make the scroller resnap."); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html new file mode 100644 index 00000000000..70774b3d40f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html @@ -0,0 +1,96 @@ +<!DOCTYPE html> +<title> + Updating the scroll-snap-type of a snap container should make it resnap accordingly. +</title> +<link rel="help" href="https://drafts.csswg.org/css-scroll-snap/#re-snap" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +div { + position: absolute; + margin: 0; +} + +#scroller { + height: 500px; + width: 500px; + overflow: hidden; + scroll-snap-type: none; +} + +#y-target { + width: 300px; + height: 300px; + top: 100px; + left: 0; + background-color: green; + scroll-snap-align: start none; +} + +#x-target { + width: 300px; + height: 300px; + top: 0; + left: 100px; + background-color: red; + scroll-snap-align: none start; +} + +.area { + width: 2000px; + height: 2000px; +} +</style> + +<div id="scroller"> + <div class="area"></div> + <div id="x-target"></div> + <div id="y-target"></div> +</div> + +<script> +const x_target = document.getElementById("x_target"); +const y_target = document.getElementById("y_target"); +const scroller = document.getElementById("scroller"); + +function cleanup() { + scroller.style.setProperty("scroll-snap-type", "none"); +} + +test(t => { + t.add_cleanup(cleanup); + scroller.scrollTo(0,0); + assert_equals(scroller.scrollTop, 0); + assert_equals(scroller.scrollLeft, 0); + + scroller.style.setProperty("scroll-snap-type", "y mandatory"); + assert_equals(scroller.scrollTop, 100); + assert_equals(scroller.scrollLeft, 0); +}, "Changing the scroller's snap type to y should make it resnap on the y-axis."); + +test(t => { + t.add_cleanup(cleanup); + scroller.scrollTo(0,0); + assert_equals(scroller.scrollTop, 0); + assert_equals(scroller.scrollLeft, 0); + + scroller.style.setProperty("scroll-snap-type", "x mandatory"); + assert_equals(scroller.scrollLeft, 100); + assert_equals(scroller.scrollTop, 0); +}, "Changing the scroller's snap type to x should make it resnap on the x-axis."); + + +test(t => { + t.add_cleanup(cleanup); + scroller.scrollTo(0,0); + assert_equals(scroller.scrollTop, 0); + assert_equals(scroller.scrollLeft, 0); + + scroller.style.setProperty("scroll-snap-type", "x mandatory"); + assert_equals(scroller.scrollLeft, 100); + assert_equals(scroller.scrollTop, 0); + + scroller.style.setProperty("scroll-snap-type", "y mandatory"); + assert_equals(scroller.scrollTop, 100); +}, "Changing the scroller's snap type axis should make it resnap."); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/perspective-composition.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/perspective-composition.html new file mode 100644 index 00000000000..6fa745d6ed2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/perspective-composition.html @@ -0,0 +1,65 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title> perspective composition</title> +<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-perspective"> +<meta name="assert" content="perspective supports animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +test_composition({ + property: 'perspective', + underlying: '50px', + addFrom: '100px', + addTo: '200px', +}, [ + {at: -0.3, expect: '120px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '200px'}, + {at: 1, expect: '250px'}, + {at: 1.5, expect: '300px'}, +]); + +test_composition({ + property: 'perspective', + underlying: '100px', + addFrom: '10px', + addTo: '2px', +}, [ + {at: -0.5, expect: '114px'}, + {at: 0, expect: '110px'}, + {at: 0.5, expect: '106px'}, + {at: 1, expect: '102px'}, + {at: 1.5, expect: '98px'}, // Value clamping should happen after composition. +]); + +test_composition({ + property: 'perspective', + underlying: '50px', + addFrom: '100px', + replaceTo: '200px', +}, [ + {at: -0.3, expect: '135px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '175px'}, + {at: 1, expect: '200px'}, + {at: 1.5, expect: '225px'}, +]); + +test_composition({ + property: 'perspective', + underlying: '100px', + addFrom: '100px', + addTo: 'none', +}, [ + {at: -0.3, expect: '200px'}, + {at: 0, expect: '200px'}, + {at: 0.5, expect: 'none'}, + {at: 1, expect: 'none'}, + {at: 1.5, expect: 'none'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/rotate-composition.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/rotate-composition.html new file mode 100644 index 00000000000..fa0118d50f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/rotate-composition.html @@ -0,0 +1,167 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title> rotate composition</title> +<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-rotate"> +<meta name="assert" content="rotate supports animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +test_composition({ + property: 'rotate', + underlying: '100deg', + addFrom: '10deg', + addTo: '30deg', +}, [ + {at: -1, expect: '90deg'}, + {at: 0, expect: '110deg'}, + {at: 0.25, expect: '115deg'}, + {at: 0.75, expect: '125deg'}, + {at: 1, expect: '130deg'}, + {at: 2, expect: '150deg'}, +]); + +test_composition({ + property: 'rotate', + underlying: '1 0 0 200deg', + addFrom: '1 0 0 -100deg', + replaceTo: '1 0 0 40deg', +}, [ + {at: -1, expect: '1 0 0 160deg'}, + {at: 0, expect: '1 0 0 100deg'}, + {at: 0.25, expect: '1 0 0 85deg'}, + {at: 0.75, expect: '1 0 0 55deg'}, + {at: 1, expect: '1 0 0 40deg'}, + {at: 2, expect: '1 0 0 -20deg'}, +]); + +test_composition({ + property: 'rotate', + underlying: '0 1 0 -40deg', + replaceFrom: '0 1 0 50deg', + addTo: '0 1 0 10deg', +}, [ + {at: -1, expect: '0 1 0 130deg'}, + {at: 0, expect: '0 1 0 50deg'}, + {at: 0.25, expect: '0 1 0 30deg'}, + {at: 0.75, expect: '0 1 0 -10deg'}, + {at: 1, expect: '0 1 0 -30deg'}, + {at: 2, expect: '0 1 0 -110deg'}, +]); + +test_composition({ + property: 'rotate', + underlying: '1 2 3 40deg', + addFrom: '2 4 6 10deg', + addTo: '3 6 9 50deg', +}, [ + {at: -1, expect: '1 2 3 10deg'}, + {at: 0, expect: '1 2 3 50deg'}, + {at: 0.25, expect: '1 2 3 60deg'}, + {at: 0.75, expect: '1 2 3 80deg'}, + {at: 1, expect: '1 2 3 90deg'}, + {at: 2, expect: '1 2 3 130deg'}, +]); + +test_composition({ + property: 'rotate', + underlying: '1 2 3 270deg', + addFrom: '1 2 3 90deg', + replaceTo: '0 1 0 100deg', +}, [ + {at: -1, expect: '-5.49276e-17 -1 -1.64783e-16 100deg'}, + {at: 0, expect: '1 2 3 360deg'}, + {at: 0.25, expect: '-1.20172e-16 1 -3.60516e-16 25deg'}, + {at: 0.75, expect: '-1.51909e-17 1 -4.55726e-17 75deg'}, + {at: 1, expect: '0 1 0 100deg'}, + {at: 2, expect: '-3.3235e-17 -1 -9.97049e-17 160deg'}, +]); + +test_composition({ + property: 'rotate', + underlying: '1 2 3 90deg', + addFrom: '2 4 6 270deg', + replaceTo: '0 1 0 100deg', +}, [ + {at: -1, expect: '-5.49276e-17 -1 -1.64783e-16 100deg'}, + {at: 0, expect: '1 2 3 360deg'}, + {at: 0.25, expect: '-1.20172e-16 1 -3.60516e-16 25deg'}, + {at: 0.75, expect: '-1.51909e-17 1 -4.55726e-17 75deg'}, + {at: 1, expect: '0 1 0 100deg'}, + {at: 2, expect: '-3.3235e-17 -1 -9.97049e-17 160deg'}, +]); + +test_composition({ + property: 'rotate', + underlying: '1 0 0 90deg', + addFrom: '0 1 0 180deg', + replaceTo: '0 0 1 90deg', +}, [ + {at: -1, expect: '-6.12323e-17 -1 1.57009e-16 90deg'}, + {at: 0, expect: '-4.32978e-17 -0.707107 -0.707107 180deg'}, + {at: 0.25, expect: '-1.48952e-16 -0.894427 -0.447214 131.81deg'}, + {at: 0.75, expect: '-2.94392e-17 -0.707107 0.707107 70.5288deg'}, + {at: 1, expect: '90deg'}, + {at: 2, expect: '-6.12323e-17 -1 -4.71028e-16 90deg'}, +]); + +test_composition({ + property: 'rotate', + underlying: 'none', + addFrom: 'none', + replaceTo: '0 1 0 100deg', +}, [ + {at: -1, expect: '0 1 0 -100deg'}, + {at: 0, expect: 'none'}, + {at: 0.25, expect: '0 1 0 25deg'}, + {at: 0.75, expect: '0 1 0 75deg'}, + {at: 1, expect: '0 1 0 100deg'}, + {at: 2, expect: '0 1 0 200deg'}, +]); + +test_composition({ + property: 'rotate', + underlying: 'none', + addFrom: '2 4 6 270deg', + replaceTo: 'none', +}, [ + {at: -1, expect: '2 4 6 540deg'}, + {at: 0, expect: '2 4 6 270deg'}, + {at: 0.25, expect: '2 4 6 202.5deg'}, + {at: 0.75, expect: '2 4 6 67.5deg'}, + {at: 1, expect: 'none'}, + {at: 2, expect: '2 4 6 -270deg'}, +]); + +test_composition({ + property: 'rotate', + underlying: '1 2 3 90deg', + addFrom: 'none', + replaceTo: '0 1 0 100deg', +}, [ + {at: -1, expect: '0.31 -0.22 0.92 131.66deg'}, + {at: 0, expect: '1 2 3 90deg'}, + {at: 0.25, expect: '0.21 0.73 0.64 86.72deg'}, + {at: 0.75, expect: '0.07 0.97 0.21 92.05deg'}, + {at: 1, expect: '0 1 0 100deg'}, + {at: 2, expect: '-0.2 0.79 -0.59 151.11deg'}, +]); + +test_composition({ + property: 'rotate', + underlying: '1 2 3 90deg', + addFrom: '2 4 6 270deg', + replaceTo: 'none', +}, [ + {at: -1, expect: '1 2 3 720deg'}, + {at: 0, expect: '1 2 3 360deg'}, + {at: 0.25, expect: '1 2 3 270deg'}, + {at: 0.75, expect: '1 2 3 90deg'}, + {at: 1, expect: 'none'}, + {at: 2, expect: '1 2 3 -360deg'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/scale-composition.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/scale-composition.html new file mode 100644 index 00000000000..6fc4de61132 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/scale-composition.html @@ -0,0 +1,101 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>scale composition</title> +<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-scale"> +<meta name="assert" content="scale supports animation."> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +test_composition({ + property: 'scale', + underlying: '2 1', + addFrom: '3 1', + addTo: '4 1', +}, [ + {at: -0.5, expect: '5 1'}, + {at: 0, expect: '6 1'}, + {at: 0.25, expect: '6.5 1'}, + {at: 0.5, expect: '7 1'}, + {at: 0.75, expect: '7.5 1'}, + {at: 1, expect: '8 1'}, + {at: 1.5, expect: '9 1'}, +]); + +test_composition({ + property: 'scale', + underlying: '1 2 3', + addFrom: '4 5 6', + replaceTo: '7 8 9', +}, [ + {at: -0.5, expect: '2.5 11 22.5'}, + {at: 0, expect: '4 10 18'}, + {at: 0.25, expect: '4.75 9.5 15.75'}, + {at: 0.5, expect: '5.5 9 13.5'}, + {at: 0.75, expect: '6.25 8.5 11.25'}, + {at: 1, expect: '7 8 9'}, + {at: 1.5, expect: '8.5 7 4.5'}, +]); + +test_composition({ + property: 'scale', + underlying: 'none', + addFrom: 'none', + replaceTo: '1.5 1', +}, [ + {at: -1, expect: '0.5 1'}, + {at: 0, expect: '1'}, + {at: 0.25, expect: '1.125 1'}, + {at: 0.75, expect: '1.375 1'}, + {at: 1, expect: '1.5 1'}, + {at: 2, expect: '2 1'}, +]); + +test_composition({ + property: 'scale', + underlying: 'none', + addFrom: '4 5 6', + replaceTo: 'none', +}, [ + {at: -1, expect: '7 9 11'}, + {at: 0, expect: '4 5 6'}, + {at: 0.25, expect: '3.25 4 4.75'}, + {at: 0.75, expect: '1.75 2 2.25'}, + {at: 1, expect: 'none'}, + {at: 2, expect: '-2 -3 -4'}, +]); + +test_composition({ + property: 'scale', + underlying: '1 2 3', + addFrom: 'none', + replaceTo: '7 8 9', +}, [ + {at: -0.5, expect: '-2 -1 0'}, + {at: 0, expect: '1 2 3'}, + {at: 0.25, expect: '2.5 3.5 4.5'}, + {at: 0.5, expect: '4 5 6'}, + {at: 0.75, expect: '5.5 6.5 7.5'}, + {at: 1, expect: '7 8 9'}, + {at: 1.5, expect: '10 11 12'}, +]); + +test_composition({ + property: 'scale', + underlying: '1 2 3', + addFrom: '4 5 6', + replaceTo: 'none', +}, [ + {at: -0.5, expect: '5.5 14.5 26.5'}, + {at: 0, expect: '4 10 18'}, + {at: 0.25, expect: '3.25 7.75 13.75'}, + {at: 0.5, expect: '2.5 5.5 9.5'}, + {at: 0.75, expect: '1.75 3.25 5.25'}, + {at: 1, expect: 'none'}, + {at: 1.5, expect: '-0.5 -3.5 -7.5'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-composition.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-composition.html new file mode 100644 index 00000000000..928da71a9b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-composition.html @@ -0,0 +1,86 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>transform composition</title> +<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-property"> +<meta name="assert" content="transform supports animation as a transform list"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +// This file contains tests for the composition behavior of transforms that is +// unrelated to the individual transform functions. For the transform functions +// themselves, see the transform-*-composition.html subtests. + +// ------------------ Addition ----------------- +test_composition({ + property: 'transform', + underlying: 'rotateX(100deg) rotateY(100deg)', + addFrom: 'translate(10px, 20px)', + replaceTo: 'rotateX(200deg) rotateY(200deg) translate(110px, 220px)', +}, [ + {at: -0.5, expect: 'rotateX(50deg) rotateY(50deg) translate(-40px, -80px)'}, + {at: 0, expect: 'rotateX(100deg) rotateY(100deg) translate(10px, 20px)'}, + {at: 0.25, expect: 'rotateX(125deg) rotateY(125deg) translate(35px, 70px)'}, + {at: 0.5, expect: 'rotateX(150deg) rotateY(150deg) translate(60px, 120px)'}, + {at: 0.75, expect: 'rotateX(175deg) rotateY(175deg) translate(85px, 170px)'}, + {at: 1, expect: 'rotateX(200deg) rotateY(200deg) translate(110px, 220px)'}, + {at: 1.5, expect: 'rotateX(250deg) rotateY(250deg) translate(160px, 320px)'}, +]); + +// Shorter list is extended with corresponding identity transforms for pairwise +// interpolation. +test_composition({ + property: 'transform', + underlying: 'rotateX(45deg)', + addFrom: 'none', + addTo: 'rotateY(360deg)', +}, [ + {at: -0.5, expect: 'rotateX(45deg) rotateY(-180deg)'}, + {at: 0, expect: 'rotateX(45deg) rotateY(0deg)'}, + {at: 0.25, expect: 'rotateX(45deg) rotateY(90deg)'}, + {at: 0.5, expect: 'rotateX(45deg) rotateY(180deg)'}, + {at: 0.75, expect: 'rotateX(45deg) rotateY(270deg)'}, + {at: 1, expect: 'rotateX(45deg) rotateY(360deg)'}, + {at: 1.5, expect: 'rotateX(45deg) rotateY(540deg)'}, +]); + +// Matrix decomposition cases +test_composition({ + property: 'transform', + underlying: 'rotateX(90deg)', + addFrom: 'translate(100px, 100px)', + addTo: 'scale(2)', +}, [ + {at: -0.5, expect: 'matrix3d(0.5, 0, 0, 0, 0, 1.11022e-16, 0.5, 0, 0, -1, 2.22045e-16, 0, 150, 9.18485e-15, 150, 1)'}, + {at: 0, expect: 'matrix3d(1, 0, 0, 0, 0, 6.12323e-17, 1, 0, 0, -1, 6.12323e-17, 0, 100, 6.12323e-15, 100, 1)'}, + {at: 0.25, expect: 'matrix3d(1.25, 0, 0, 0, 0, 2.77556e-16, 1.25, 0, 0, -1, 2.22045e-16, 0, 75, 4.59243e-15, 75, 1)'}, + {at: 0.5, expect: 'matrix3d(1.5, 0, 0, 0, 0, 3.33067e-16, 1.5, 0, 0, -1, 2.22045e-16, 0, 50, 3.06162e-15, 50, 1)'}, + {at: 0.75, expect: 'matrix3d(1.75, 0, 0, 0, 0, 3.88578e-16, 1.75, 0, 0, -1, 2.22045e-16, 0, 25, 1.53081e-15, 25, 1)'}, + {at: 1, expect: 'matrix3d(2, 0, 0, 0, 0, 1.22465e-16, 2, 0, 0, -1, 6.12323e-17, 0, 0, 0, 0, 1)'}, + {at: 1.5, expect: 'matrix3d(2.5, 0, 0, 0, 0, 5.55112e-16, 2.5, 0, 0, -1, 2.22045e-16, 0, -50, -3.06162e-15, -50, 1)'}, +]); + +// Force a fallback to matrix interpolation. +test_composition({ + property: 'transform', + underlying: 'rotateX(45deg)', + addFrom: 'scaleX(1)', + addTo: 'rotateY(360deg)', +}, [ + {at: -0.5, expect: 'rotateX(45deg)'}, + {at: 0, expect: 'rotateX(45deg)'}, + {at: 0.25, expect: 'rotateX(45deg)'}, + {at: 0.5, expect: 'rotateX(45deg)'}, + {at: 0.75, expect: 'rotateX(45deg)'}, + {at: 1, expect: 'rotateX(45deg)'}, + {at: 1.5, expect: 'rotateX(45deg)'}, +]); + +// ------------------ Accumulation ----------------- + +// TODO(smcgruer): Add tests for accumulation behaviors. +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-matrix-composition.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-matrix-composition.html new file mode 100644 index 00000000000..2586ff3d4a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-matrix-composition.html @@ -0,0 +1,208 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>transform-matrix composition</title> +<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#ctm"> +<meta name="assert" content="transform-matrix supports animation as a transform list"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +// For matrix and matrix3d, addition is defined as concatenation whilst +// accumulation works by decomposing the matrix and then accumulating the +// decomposed functions. We can therefore test the difference between the +// two by mixing functions such that a naive multiplication would look +// different than the accumulation behavior. +// +// Note that due to the complexities of decomposition the test space here is +// huge; we cover some basic cases and hope that the tests for the individual +// functions provide a lot of the remaining coverage. + +// Creates a matrix3d function, encoding the passed rotation and translation. +// Note that the translate will not be affected by the rotation. +function create3dMatrix(x, y, z, radians, translateX) { + // Normalize the rotation axes. + const length = Math.sqrt(x*x + y*y + z*z); + x /= length; + y /= length; + z /= length; + + const sc = Math.sin(radians / 2) * Math.cos(radians / 2); + const sq = Math.sin(radians / 2) * Math.sin(radians / 2); + + // https://drafts.csswg.org/css-transforms-2/#Rotate3dDefined + // https://drafts.csswg.org/css-transforms-2/#Translate3dDefined + return 'matrix3d(' + [ + 1 - 2 * (y*y + z*z) * sq, + 2 * (x * y * sq + z * sc), + 2 * (x * z * sq - y * sc), + 0, + 2 * (x * y * sq - z * sc), + 1 - 2 * (x*x + z*z) * sq, + 2 * (y * z * sq + x * sc), + 0, + 2 * (x * z * sq + y * sc), + 2 * (y * z * sq - x * sc), + 1 - 2 * (x*x + y*y) * sq, + 0, + translateX, 0, 0, 1].join() + ')'; +} + +// ------------ Addition tests -------------- + +test_composition({ + property: 'transform', + // translateX(100px) rotate(90deg) + underlying: 'matrix(0, 1, -1, 0, 100, 0)', + // translateX(100px) + addFrom: 'matrix(1, 0, 0, 1, 100, 0)', + // translateX(200px) + addTo: 'matrix(1, 0, 0, 1, 200, 0)', +}, [ + {at: -0.5, expect: 'matrix(0, 1, -1, 0, 100, 50)'}, + {at: 0, expect: 'matrix(0, 1, -1, 0, 100, 100)'}, + {at: 0.25, expect: 'matrix(0, 1, -1, 0, 100, 125)'}, + {at: 0.5, expect: 'matrix(0, 1, -1, 0, 100, 150)'}, + {at: 0.75, expect: 'matrix(0, 1, -1, 0, 100, 175)'}, + {at: 1, expect: 'matrix(0, 1, -1, 0, 100, 200)'}, + {at: 1.5, expect: 'matrix(0, 1, -1, 0, 100, 250)'}, +]); + +test_composition({ + property: 'transform', + // translateX(100px) rotate3d(1, 1, 0, 45deg) + underlying: create3dMatrix(1, 1, 0, Math.PI / 4, 100), + // translateX(100px) + addFrom: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)', + // translateX(200px) + addTo: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)', +}, [ + // matrix3ds are hard to read; these are the decomposed forms for clarity + {at: -0.5, expect: 'translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(50px)'}, + {at: 0, expect: 'translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(100px)'}, + {at: 0.25, expect: 'translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(125px)'}, + {at: 0.5, expect: 'translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(150px)'}, + {at: 0.75, expect: 'translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(175px)'}, + {at: 1, expect: 'translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(200px)'}, + {at: 1.5, expect: 'translateX(100px) rotate3d(1, 1, 0, 45deg) translateX(250px)'}, +]); + +// Addition of non-invertible matrices is still defined as concatenation so +// includes the underlying value. + +test_composition({ + property: 'transform', + // Non-invertible. + underlying: 'matrix(1, 1, 0, 0, 0, 100)', + // translateX(100px) + addFrom: 'matrix(1, 0, 0, 1, 100, 0)', + // translateX(200px) + addTo: 'matrix(1, 0, 0, 1, 200, 0)', +}, [ + {at: -0.5, expect: 'matrix(1, 1, 0, 0, 100, 200)'}, + {at: 0, expect: 'matrix(1, 1, 0, 0, 100, 200)'}, + {at: 0.25, expect: 'matrix(1, 1, 0, 0, 100, 200)'}, + {at: 0.5, expect: 'matrix(1, 1, 0, 0, 200, 300)'}, + {at: 0.75, expect: 'matrix(1, 1, 0, 0, 200, 300)'}, + {at: 1, expect: 'matrix(1, 1, 0, 0, 200, 300)'}, + {at: 1.5, expect: 'matrix(1, 1, 0, 0, 200, 300)'}, +]); + +test_composition({ + property: 'transform', + // translateX(100px) + underlying: 'matrix(1, 0, 0, 1, 100, 0)', + // Non-invertible + addFrom: 'matrix(1, 1, 0, 0, 0, 100)', + // translateX(200px) + addTo: 'matrix(1, 0, 0, 1, 200, 0)', +}, [ + {at: -0.5, expect: 'matrix(1, 1, 0, 0, 100, 100)'}, + {at: 0, expect: 'matrix(1, 1, 0, 0, 100, 100)'}, + {at: 0.25, expect: 'matrix(1, 1, 0, 0, 100, 100)'}, + {at: 0.5, expect: 'matrix(1, 0, 0, 1, 300, 0)'}, + {at: 0.75, expect: 'matrix(1, 0, 0, 1, 300, 0)'}, + {at: 1, expect: 'matrix(1, 0, 0, 1, 300, 0)'}, + {at: 1.5, expect: 'matrix(1, 0, 0, 1, 300, 0)'}, +]); + +// ------------ Accumulation tests -------------- + +test_composition({ + property: 'transform', + // translateX(100px) rotate(90deg) + underlying: 'matrix(0, 1, -1, 0, 100, 0)', + // translateX(100px) + accumulateFrom: 'matrix(1, 0, 0, 1, 100, 0)', + // translateX(200px) + accumulateTo: 'matrix(1, 0, 0, 1, 200, 0)', +}, [ + {at: -0.5, expect: 'matrix(0, 1, -1, 0, 150, 0)'}, + {at: 0, expect: 'matrix(0, 1, -1, 0, 200, 0)'}, + {at: 0.25, expect: 'matrix(0, 1, -1, 0, 225, 0)'}, + {at: 0.5, expect: 'matrix(0, 1, -1, 0, 250, 0)'}, + {at: 0.75, expect: 'matrix(0, 1, -1, 0, 275, 0)'}, + {at: 1, expect: 'matrix(0, 1, -1, 0, 300, 0)'}, + {at: 1.5, expect: 'matrix(0, 1, -1, 0, 350, 0)'}, +]); + +test_composition({ + property: 'transform', + // translateX(100px) rotate3d(1, 1, 0, 45deg) + underlying: create3dMatrix(1, 1, 0, Math.PI / 4, 100), + // translateX(100px) + accumulateFrom: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 0, 0, 1)', + // translateX(200px) + accumulateTo: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 0, 0, 1)', +}, [ + // matrix3ds are hard to read; these are the decomposed forms for clarity + {at: -0.5, expect: 'translateX(150px) rotate3d(1, 1, 0, 45deg)'}, + {at: 0, expect: 'translateX(200px) rotate3d(1, 1, 0, 45deg)'}, + {at: 0.25, expect: 'translateX(225px) rotate3d(1, 1, 0, 45deg)'}, + {at: 0.5, expect: 'translateX(250px) rotate3d(1, 1, 0, 45deg)'}, + {at: 0.75, expect: 'translateX(275px) rotate3d(1, 1, 0, 45deg)'}, + {at: 1, expect: 'translateX(300px) rotate3d(1, 1, 0, 45deg)'}, + {at: 1.5, expect: 'translateX(350px) rotate3d(1, 1, 0, 45deg)'}, +]); + +// Accumulation of non-invertible matrices falls back to replace behavior. + +test_composition({ + property: 'transform', + // Non-invertible. + underlying: 'matrix(1, 1, 0, 0, 0, 100)', + // translateX(100px) + accumulateFrom: 'matrix(1, 0, 0, 1, 100, 0)', + // translateX(200px) + accumulateTo: 'matrix(1, 0, 0, 1, 200, 0)', +}, [ + {at: -0.5, expect: 'matrix(1, 0, 0, 1, 50, 0)'}, + {at: 0, expect: 'matrix(1, 0, 0, 1, 100, 0)'}, + {at: 0.25, expect: 'matrix(1, 0, 0, 1, 125, 0)'}, + {at: 0.5, expect: 'matrix(1, 0, 0, 1, 150, 0)'}, + {at: 0.75, expect: 'matrix(1, 0, 0, 1, 175, 0)'}, + {at: 1, expect: 'matrix(1, 0, 0, 1, 200, 0)'}, + {at: 1.5, expect: 'matrix(1, 0, 0, 1, 250, 0)'}, +]); + +test_composition({ + property: 'transform', + // translateX(100px) + underlying: 'matrix(1, 0, 0, 1, 100, 0)', + // Non-invertible + accumulateFrom: 'matrix(1, 1, 0, 0, 0, 100)', + // translateX(200px) + accumulateTo: 'matrix(1, 0, 0, 1, 200, 0)', +}, [ + {at: -0.5, expect: 'matrix(1, 1, 0, 0, 0, 100)'}, + {at: 0, expect: 'matrix(1, 1, 0, 0, 0, 100)'}, + {at: 0.25, expect: 'matrix(1, 1, 0, 0, 0, 100)'}, + {at: 0.5, expect: 'matrix(1, 0, 0, 1, 300, 0)'}, + {at: 0.75, expect: 'matrix(1, 0, 0, 1, 300, 0)'}, + {at: 1, expect: 'matrix(1, 0, 0, 1, 300, 0)'}, + {at: 1.5, expect: 'matrix(1, 0, 0, 1, 300, 0)'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-perspective-composition.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-perspective-composition.html new file mode 100644 index 00000000000..82f8dad59b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-perspective-composition.html @@ -0,0 +1,67 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>transform-perspective composition</title> +<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#three-d-transform-functions"> +<meta name="assert" content="transform-perspective supports animation as a transform list"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +// Addition and accumulation of perspective values are very similar, but not +// identical. We can test the difference by constructing a scenario where a +// perspective parameter would go negative in one case (and thus be clamped +// to 0), and would not go negative in the other case. +// +// In the test below, the values differ at 1.5 progress. The reason for this +// is that at 1.5 progress, the addition case (which uses concatenation) +// computes to: +// +// perspective(10px) perspective(-50px) +// +// Since perspective cannot go negative, this is clamped to: +// +// perspective(10px) identity +// +// The accumulation case, on the other hand, combines the components +// and so ends up blending from perspective(5px) to perspective(8.33...px) at +// 1.5 progress, which results in perspective(12.5px) - this is what you would +// get with addition too, if not for the clamping behavior. + +// ------------ Addition tests -------------- + +test_composition({ + property: 'transform', + underlying: 'perspective(10px)', + addFrom: 'perspective(10px)', + addTo: 'perspective(50px)', +}, [ + {at: -0.5, expect: 'perspective(4.12px)'}, + {at: 0, expect: 'perspective(5px)'}, + {at: 0.25, expect: 'perspective(5.45px)'}, + {at: 0.5, expect: 'perspective(6.15px)'}, + {at: 0.75, expect: 'perspective(7.06px)'}, + {at: 1, expect: 'perspective(8.33px)'}, + {at: 1.5, expect: 'perspective(10px)'}, +]); + +// ------------ Accumulation tests -------------- + +test_composition({ + property: 'transform', + underlying: 'perspective(10px)', + accumulateFrom: 'perspective(10px)', + accumulateTo: 'perspective(50px)', +}, [ + {at: -0.5, expect: 'perspective(4.12px)'}, + {at: 0, expect: 'perspective(5px)'}, + {at: 0.25, expect: 'perspective(5.45px)'}, + {at: 0.5, expect: 'perspective(6.15px)'}, + {at: 0.75, expect: 'perspective(7.06px)'}, + {at: 1, expect: 'perspective(8.33px)'}, + {at: 1.5, expect: 'perspective(12.5px)'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-rotate-composition.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-rotate-composition.html new file mode 100644 index 00000000000..e062860e729 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-rotate-composition.html @@ -0,0 +1,164 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>transform-rotate composition</title> +<link rel="help" href="https://drafts.csswg.org/css-transforms/#funcdef-transform-rotate"> +<meta name="assert" content="transform-rotate supports animation as a transform list"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +// ------------ Addition tests -------------- + +test_composition({ + property: 'transform', + underlying: 'rotateX(20deg)', + addFrom: 'rotateX(40deg)', + addTo: 'rotateX(60deg)', +}, [ + {at: -0.5, expect: 'rotateX(50deg)'}, + {at: 0, expect: 'rotateX(60deg)'}, + {at: 0.25, expect: 'rotateX(65deg)'}, + {at: 0.5, expect: 'rotateX(70deg)'}, + {at: 0.75, expect: 'rotateX(75deg)'}, + {at: 1, expect: 'rotateX(80deg)'}, + {at: 1.5, expect: 'rotateX(90deg)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'rotateY(20deg)', + addFrom: 'rotateY(40deg)', + addTo: 'rotateY(60deg)', +}, [ + {at: -0.5, expect: 'rotateY(50deg)'}, + {at: 0, expect: 'rotateY(60deg)'}, + {at: 0.25, expect: 'rotateY(65deg)'}, + {at: 0.5, expect: 'rotateY(70deg)'}, + {at: 0.75, expect: 'rotateY(75deg)'}, + {at: 1, expect: 'rotateY(80deg)'}, + {at: 1.5, expect: 'rotateY(90deg)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'rotateZ(20deg)', + addFrom: 'rotateZ(40deg)', + addTo: 'rotateZ(60deg)', +}, [ + {at: -0.5, expect: 'rotateZ(50deg)'}, + {at: 0, expect: 'rotateZ(60deg)'}, + {at: 0.25, expect: 'rotateZ(65deg)'}, + {at: 0.5, expect: 'rotateZ(70deg)'}, + {at: 0.75, expect: 'rotateZ(75deg)'}, + {at: 1, expect: 'rotateZ(80deg)'}, + {at: 1.5, expect: 'rotateZ(90deg)'}, +]); + +// When testing rotate functions in isolation, the additive and accumulation +// behaviors are functionally identical. This test includes a skew to ensure +// both methods are implemented; add should append the from/to after the skew. +test_composition({ + property: 'transform', + underlying: 'rotate(45deg) skew(10deg, 20deg)', + addFrom: 'rotate(45deg)', + addTo: 'rotate(225deg)', +}, [ + {at: -0.5, expect: 'rotate(45deg) skew(10deg, 20deg) rotate(-45deg)'}, + {at: 0, expect: 'rotate(45deg) skew(10deg, 20deg) rotate(45deg)'}, + {at: 0.25, expect: 'rotate(45deg) skew(10deg, 20deg) rotate(90deg)'}, + {at: 0.5, expect: 'rotate(45deg) skew(10deg, 20deg) rotate(135deg)'}, + {at: 0.75, expect: 'rotate(45deg) skew(10deg, 20deg) rotate(180deg)'}, + {at: 1, expect: 'rotate(45deg) skew(10deg, 20deg) rotate(225deg)'}, + {at: 1.5, expect: 'rotate(45deg) skew(10deg, 20deg) rotate(315deg)'}, +]); +// ------------ Accumulation tests -------------- + +test_composition({ + property: 'transform', + underlying: 'rotateX(20deg)', + accumulateFrom: 'rotateX(40deg)', + accumulateTo: 'rotateX(60deg)', +}, [ + {at: -0.5, expect: 'rotateX(50deg)'}, + {at: 0, expect: 'rotateX(60deg)'}, + {at: 0.25, expect: 'rotateX(65deg)'}, + {at: 0.5, expect: 'rotateX(70deg)'}, + {at: 0.75, expect: 'rotateX(75deg)'}, + {at: 1, expect: 'rotateX(80deg)'}, + {at: 1.5, expect: 'rotateX(90deg)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'rotateY(20deg)', + accumulateFrom: 'rotateY(40deg)', + accumulateTo: 'rotateY(60deg)', +}, [ + {at: -0.5, expect: 'rotateY(50deg)'}, + {at: 0, expect: 'rotateY(60deg)'}, + {at: 0.25, expect: 'rotateY(65deg)'}, + {at: 0.5, expect: 'rotateY(70deg)'}, + {at: 0.75, expect: 'rotateY(75deg)'}, + {at: 1, expect: 'rotateY(80deg)'}, + {at: 1.5, expect: 'rotateY(90deg)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'rotateZ(20deg)', + accumulateFrom: 'rotateZ(40deg)', + accumulateTo: 'rotateZ(60deg)', +}, [ + {at: -0.5, expect: 'rotateZ(50deg)'}, + {at: 0, expect: 'rotateZ(60deg)'}, + {at: 0.25, expect: 'rotateZ(65deg)'}, + {at: 0.5, expect: 'rotateZ(70deg)'}, + {at: 0.75, expect: 'rotateZ(75deg)'}, + {at: 1, expect: 'rotateZ(80deg)'}, + {at: 1.5, expect: 'rotateZ(90deg)'}, +]); + +// The rotate functions all share the same primitive type (rotate3d), so can be +// accumulated between. If primitive type matching is not properly being +// performed, this test would likely fail with a fallback to replace behavior. +test_composition({ + property: 'transform', + underlying: 'rotateX(45deg)', + accumulateFrom: 'rotateY(30deg)', + accumulateTo: 'rotateY(70deg)', +}, [ + // Due to how rotation is accumulated (addition of underlying angles), the + // behavior is identical to concatenating the components. The expectations + // are expressed as concatenations for readability. + {at: -0.5, expect: 'rotateX(45deg) rotateY(10deg)'}, + {at: 0, expect: 'rotateX(45deg) rotateY(30deg)'}, + {at: 0.25, expect: 'rotateX(45deg) rotateY(40deg)'}, + {at: 0.5, expect: 'rotateX(45deg) rotateY(50deg)'}, + {at: 0.75, expect: 'rotateX(45deg) rotateY(60deg)'}, + {at: 1, expect: 'rotateX(45deg) rotateY(70deg)'}, + {at: 1.5, expect: 'rotateX(45deg) rotateY(90deg)'}, +]); + +// When testing rotate functions in isolation, the additive and accumulation +// behaviors are functionally identical. This test includes a skew to ensure +// both methods are implemented; accumulate should combine the rotate before +// the skew. +test_composition({ + property: 'transform', + underlying: 'rotate(45deg) skew(10deg, 20deg)', + accumulateFrom: 'rotate(45deg)', + accumulateTo: 'rotate(225deg)', +}, [ + {at: -0.5, expect: 'rotate(0deg) skew(10deg, 20deg)'}, + {at: 0, expect: 'rotate(90deg) skew(10deg, 20deg)'}, + {at: 0.25, expect: 'rotate(135deg) skew(10deg, 20deg)'}, + {at: 0.5, expect: 'rotate(180deg) skew(10deg, 20deg)'}, + {at: 0.75, expect: 'rotate(225deg) skew(10deg, 20deg)'}, + {at: 1, expect: 'rotate(270deg) skew(10deg, 20deg)'}, + {at: 1.5, expect: 'rotate(360deg) skew(10deg, 20deg)'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-scale-composition.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-scale-composition.html new file mode 100644 index 00000000000..87c33a85ed6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-scale-composition.html @@ -0,0 +1,129 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>transform-scale composition</title> +<link rel="help" href="https://drafts.csswg.org/css-transforms/#two-d-transform-functions"> +<meta name="assert" content="transform-scale supports animation as a transform list"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +// Addition (aka concatenation) of scale functions results in multiplying their +// values (scale(2) scale(3) == scale(6)), whereas accumulation does a 1-based +// sum of the components (accumulate(scale(2), scale(3)) == scale(2 + 3 - 1) == +// scale(4)). + +// ------------ Addition tests -------------- + +test_composition({ + property: 'transform', + underlying: 'scaleX(2)', + addFrom: 'scaleX(3)', + addTo: 'scaleX(4)', +}, [ + {at: -0.5, expect: 'scaleX(5)'}, + {at: 0, expect: 'scaleX(6)'}, + {at: 0.25, expect: 'scaleX(6.5)'}, + {at: 0.5, expect: 'scaleX(7)'}, + {at: 0.75, expect: 'scaleX(7.5)'}, + {at: 1, expect: 'scaleX(8)'}, + {at: 1.5, expect: 'scaleX(9)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'scaleY(2)', + addFrom: 'scaleY(3)', + addTo: 'scaleY(4)', +}, [ + {at: -0.5, expect: 'scaleY(5)'}, + {at: 0, expect: 'scaleY(6)'}, + {at: 0.25, expect: 'scaleY(6.5)'}, + {at: 0.5, expect: 'scaleY(7)'}, + {at: 0.75, expect: 'scaleY(7.5)'}, + {at: 1, expect: 'scaleY(8)'}, + {at: 1.5, expect: 'scaleY(9)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'scaleZ(2)', + addFrom: 'scaleZ(3)', + addTo: 'scaleZ(4)', +}, [ + {at: -0.5, expect: 'scaleZ(5)'}, + {at: 0, expect: 'scaleZ(6)'}, + {at: 0.25, expect: 'scaleZ(6.5)'}, + {at: 0.5, expect: 'scaleZ(7)'}, + {at: 0.75, expect: 'scaleZ(7.5)'}, + {at: 1, expect: 'scaleZ(8)'}, + {at: 1.5, expect: 'scaleZ(9)'}, +]); + +// ------------ Accumulation tests -------------- + +test_composition({ + property: 'transform', + underlying: 'scaleX(2)', + accumulateFrom: 'scaleX(3)', + accumulateTo: 'scaleX(4)', +}, [ + {at: -0.5, expect: 'scaleX(3.5)'}, + {at: 0, expect: 'scaleX(4)'}, + {at: 0.25, expect: 'scaleX(4.25)'}, + {at: 0.5, expect: 'scaleX(4.5)'}, + {at: 0.75, expect: 'scaleX(4.75)'}, + {at: 1, expect: 'scaleX(5)'}, + {at: 1.5, expect: 'scaleX(5.5)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'scaleY(2)', + accumulateFrom: 'scaleY(3)', + accumulateTo: 'scaleY(4)', +}, [ + {at: -0.5, expect: 'scaleY(3.5)'}, + {at: 0, expect: 'scaleY(4)'}, + {at: 0.25, expect: 'scaleY(4.25)'}, + {at: 0.5, expect: 'scaleY(4.5)'}, + {at: 0.75, expect: 'scaleY(4.75)'}, + {at: 1, expect: 'scaleY(5)'}, + {at: 1.5, expect: 'scaleY(5.5)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'scaleZ(2)', + accumulateFrom: 'scaleZ(3)', + accumulateTo: 'scaleZ(4)', +}, [ + {at: -0.5, expect: 'scaleZ(3.5)'}, + {at: 0, expect: 'scaleZ(4)'}, + {at: 0.25, expect: 'scaleZ(4.25)'}, + {at: 0.5, expect: 'scaleZ(4.5)'}, + {at: 0.75, expect: 'scaleZ(4.75)'}, + {at: 1, expect: 'scaleZ(5)'}, + {at: 1.5, expect: 'scaleZ(5.5)'}, +]); + +// The scale functions all share the same primitive type (scale3d), so can be +// accumulated between. +test_composition({ + property: 'transform', + underlying: 'scale(2, 4)', + accumulateFrom: 'scaleZ(3)', + accumulateTo: 'scaleZ(4)', +}, [ + {at: -0.5, expect: 'scale3d(2, 4, 2.5)'}, + {at: 0, expect: 'scale3d(2, 4, 3)'}, + {at: 0.25, expect: 'scale3d(2, 4, 3.25)'}, + {at: 0.5, expect: 'scale3d(2, 4, 3.5)'}, + {at: 0.75, expect: 'scale3d(2, 4, 3.75)'}, + {at: 1, expect: 'scale3d(2, 4, 4)'}, + {at: 1.5, expect: 'scale3d(2, 4, 4.5)'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-skew-composition.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-skew-composition.html new file mode 100644 index 00000000000..cda44b60c0e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-skew-composition.html @@ -0,0 +1,124 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>transform-skew composition</title> +<link rel="help" href="https://drafts.csswg.org/css-transforms/#two-d-transform-functions"> +<meta name="assert" content="transform-skew supports animation as a transform list"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +// Addition (aka concatenation) of two skew functions skew(a) and skew(b) +// results in computing tan(a) + tan(b), whereas accumulation results in summing +// the components to get tan(a + b). + +// ------------ Addition tests -------------- + +test_composition({ + property: 'transform', + underlying: 'skewX(10deg)', + addFrom: 'skewX(30deg)', + addTo: 'skewX(50deg)', +}, [ + {at: -0.5, expect: 'skewX(10deg) skewX(20deg)'}, + {at: 0, expect: 'skewX(10deg) skewX(30deg)'}, + {at: 0.25, expect: 'skewX(10deg) skewX(35deg)'}, + {at: 0.5, expect: 'skewX(10deg) skewX(40deg)'}, + {at: 0.75, expect: 'skewX(10deg) skewX(45deg)'}, + {at: 1, expect: 'skewX(10deg) skewX(50deg)'}, + {at: 1.5, expect: 'skewX(10deg) skewX(60deg)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'skewY(10deg)', + addFrom: 'skewY(30deg)', + addTo: 'skewY(50deg)', +}, [ + {at: -0.5, expect: 'skewY(10deg) skewY(20deg)'}, + {at: 0, expect: 'skewY(10deg) skewY(30deg)'}, + {at: 0.25, expect: 'skewY(10deg) skewY(35deg)'}, + {at: 0.5, expect: 'skewY(10deg) skewY(40deg)'}, + {at: 0.75, expect: 'skewY(10deg) skewY(45deg)'}, + {at: 1, expect: 'skewY(10deg) skewY(50deg)'}, + {at: 1.5, expect: 'skewY(10deg) skewY(60deg)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'skew(10deg, 20deg)', + addFrom: 'skew(30deg, 10deg)', + addTo: 'skew(50deg, 50deg)', +}, [ + {at: -0.5, expect: 'skew(10deg, 20deg) skew(20deg, -10deg)'}, + {at: 0, expect: 'skew(10deg, 20deg) skew(30deg, 10deg)'}, + {at: 0.25, expect: 'skew(10deg, 20deg) skew(35deg, 20deg)'}, + {at: 0.5, expect: 'skew(10deg, 20deg) skew(40deg, 30deg)'}, + {at: 0.75, expect: 'skew(10deg, 20deg) skew(45deg, 40deg)'}, + {at: 1, expect: 'skew(10deg, 20deg) skew(50deg, 50deg)'}, + {at: 1.5, expect: 'skew(10deg, 20deg) skew(60deg, 70deg)'}, +]); + +// ------------ Accumulation tests -------------- + +test_composition({ + property: 'transform', + underlying: 'skewX(45deg)', + accumulateFrom: 'skewX(30deg)', + accumulateTo: 'skewX(70deg)', +}, [ + {at: -0.5, expect: 'skewX(55deg)'}, + {at: 0, expect: 'skewX(75deg)'}, + {at: 0.25, expect: 'skewX(85deg)'}, + {at: 0.5, expect: 'skewX(95deg)'}, + {at: 0.75, expect: 'skewX(105deg)'}, + {at: 1, expect: 'skewX(115deg)'}, + {at: 1.5, expect: 'skewX(135deg)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'skewY(45deg)', + accumulateFrom: 'skewY(30deg)', + accumulateTo: 'skewY(70deg)', +}, [ + {at: -0.5, expect: 'skewY(55deg)'}, + {at: 0, expect: 'skewY(75deg)'}, + {at: 0.25, expect: 'skewY(85deg)'}, + {at: 0.5, expect: 'skewY(95deg)'}, + {at: 0.75, expect: 'skewY(105deg)'}, + {at: 1, expect: 'skewY(115deg)'}, + {at: 1.5, expect: 'skewY(135deg)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'skew(10deg, 45deg)', + accumulateFrom: 'skew(20deg, 30deg)', + accumulateTo: 'skew(40deg, 70deg)', +}, [ + {at: -0.5, expect: 'skew(20deg, 55deg)'}, + {at: 0, expect: 'skew(30deg, 75deg)'}, + {at: 0.25, expect: 'skew(35deg, 85deg)'}, + {at: 0.5, expect: 'skew(40deg, 95deg)'}, + {at: 0.75, expect: 'skew(45deg, 105deg)'}, + {at: 1, expect: 'skew(50deg, 115deg)'}, + {at: 1.5, expect: 'skew(60deg, 135deg)'}, +]); + +// The skew{X,Y} functions DO NOT share the same primitive type, so cannot be +// accumlated between directly. Instead, they fall back to matrix accumulation, +// which this tests for. +test_composition({ + property: 'transform', + underlying: 'skewX(45deg)', + accumulateFrom: 'skewY(45deg)', + accumulateTo: 'skewY(45deg)', +}, [ + // Note that this is not equivalent to any form of combined skews. + {at: 0.5, expect: 'matrix(1, 1, 0.5, 1.5, 0, 0)'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-translate-composition.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-translate-composition.html new file mode 100644 index 00000000000..49214c4a93c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-translate-composition.html @@ -0,0 +1,147 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>transform-translate composition</title> +<link rel="help" href="https://drafts.csswg.org/css-transforms/#two-d-transform-functions"> +<meta name="assert" content="transform-translate supports animation as a transform list"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script src="../interpolation/resources/interpolation-test.js"></script> +<script> +// ------------ Addition tests -------------- + +test_composition({ + property: 'transform', + underlying: 'translate(10px, 20px)', + addFrom: 'translate(100px, 200px)', + addTo: 'translate(200px, 400px)', +}, [ + {at: -0.5, expect: 'translate(60px, 120px)'}, + {at: 0, expect: 'translate(110px, 220px)'}, + {at: 0.25, expect: 'translate(135px, 270px)'}, + {at: 0.5, expect: 'translate(160px, 320px)'}, + {at: 0.75, expect: 'translate(185px, 370px)'}, + {at: 1, expect: 'translate(210px, 420px)'}, + {at: 1.5, expect: 'translate(260px, 520px)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'translate(10px, 20px)', + addFrom: 'translate(100px, 200px)', + replaceTo: 'translate(210px, 420px)', +}, [ + {at: -0.5, expect: 'translate(60px, 120px)'}, + {at: 0, expect: 'translate(110px, 220px)'}, + {at: 0.25, expect: 'translate(135px, 270px)'}, + {at: 0.5, expect: 'translate(160px, 320px)'}, + {at: 0.75, expect: 'translate(185px, 370px)'}, + {at: 1, expect: 'translate(210px, 420px)'}, + {at: 1.5, expect: 'translate(260px, 520px)'}, +]); + +// When testing translate functions in isolation, the additive and accumulation +// behaviors are functionally identical. This test includes a rotate to ensure +// both methods are implemented; add should append the from/to after the rotate. +test_composition({ + property: 'transform', + underlying: 'translateX(100px) rotate(90deg)', + addFrom: 'translateX(100px)', + addTo: 'translateX(200px)', +}, [ + {at: -0.5, expect: 'translateX(100px) rotate(90deg) translateX(50px)'}, + {at: 0, expect: 'translateX(100px) rotate(90deg) translateX(100px)'}, + {at: 0.25, expect: 'translateX(100px) rotate(90deg) translateX(125px)'}, + {at: 0.5, expect: 'translateX(100px) rotate(90deg) translateX(150px)'}, + {at: 0.75, expect: 'translateX(100px) rotate(90deg) translateX(175px)'}, + {at: 1, expect: 'translateX(100px) rotate(90deg) translateX(200px)'}, + {at: 1.5, expect: 'translateX(100px) rotate(90deg) translateX(250px)'}, +]); + +// ------------ Accumulation tests -------------- + +test_composition({ + property: 'transform', + underlying: 'translateX(100px)', + accumulateFrom: 'translateX(50px)', + accumulateTo: 'translateX(250px)', +}, [ + {at: -0.5, expect: 'translateX(50px)'}, + {at: 0, expect: 'translateX(150px)'}, + {at: 0.25, expect: 'translateX(200px)'}, + {at: 0.5, expect: 'translateX(250px)'}, + {at: 0.75, expect: 'translateX(300px)'}, + {at: 1, expect: 'translateX(350px)'}, + {at: 1.5, expect: 'translateX(450px)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'translateY(100px)', + accumulateFrom: 'translateY(50px)', + accumulateTo: 'translateY(250px)', +}, [ + {at: -0.5, expect: 'translateY(50px)'}, + {at: 0, expect: 'translateY(150px)'}, + {at: 0.25, expect: 'translateY(200px)'}, + {at: 0.5, expect: 'translateY(250px)'}, + {at: 0.75, expect: 'translateY(300px)'}, + {at: 1, expect: 'translateY(350px)'}, + {at: 1.5, expect: 'translateY(450px)'}, +]); + +test_composition({ + property: 'transform', + underlying: 'translateZ(100px)', + accumulateFrom: 'translateZ(50px)', + accumulateTo: 'translateZ(250px)', +}, [ + {at: -0.5, expect: 'translateZ(50px)'}, + {at: 0, expect: 'translateZ(150px)'}, + {at: 0.25, expect: 'translateZ(200px)'}, + {at: 0.5, expect: 'translateZ(250px)'}, + {at: 0.75, expect: 'translateZ(300px)'}, + {at: 1, expect: 'translateZ(350px)'}, + {at: 1.5, expect: 'translateZ(450px)'}, +]); + +// The translate functions all share the same primitive type (translate3d), so +// can be accumulated between. +test_composition({ + property: 'transform', + underlying: 'translate(100px, 50px)', + accumulateFrom: 'translateZ(50px)', + accumulateTo: 'translateZ(250px)', +}, [ + {at: -0.5, expect: 'translate3d(100px, 50px, -50px)'}, + {at: 0, expect: 'translate3d(100px, 50px, 50px)'}, + {at: 0.25, expect: 'translate3d(100px, 50px, 100px)'}, + {at: 0.5, expect: 'translate3d(100px, 50px, 150px)'}, + {at: 0.75, expect: 'translate3d(100px, 50px, 200px)'}, + {at: 1, expect: 'translate3d(100px, 50px, 250px)'}, + {at: 1.5, expect: 'translate3d(100px, 50px, 350px)'}, +]); + +// When testing translate functions in isolation, the additive and accumulation +// behaviors are functionally identical. This test includes a rotate to ensure +// both methods are implemented; accumulate should combine the transform before +// the rotate. +test_composition({ + property: 'transform', + underlying: 'translateX(100px) rotate(90deg)', + accumulateFrom: 'translateX(100px)', + accumulateTo: 'translateX(200px)', +}, [ + {at: -0.5, expect: 'translateX(150px) rotate(90deg)'}, + {at: 0, expect: 'translateX(200px) rotate(90deg)'}, + {at: 0.25, expect: 'translateX(225px) rotate(90deg)'}, + {at: 0.5, expect: 'translateX(250px) rotate(90deg)'}, + {at: 0.75, expect: 'translateX(275px) rotate(90deg)'}, + {at: 1, expect: 'translateX(300px) rotate(90deg)'}, + {at: 1.5, expect: 'translateX(350px) rotate(90deg)'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/translate-composition.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/translate-composition.html new file mode 100644 index 00000000000..3abdb4522b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/translate-composition.html @@ -0,0 +1,147 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>translate composition</title> +<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-translate"> +<meta name="assert" content="translate supports <length> and <percentage> animation."> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<style> +.target { + width: 100px; + height: 100px; +} +</style> +<script> +test_composition({ + property: 'translate', + underlying: '100px 200px 300px', + addFrom: '-50px 50%', + addTo: '100%', +}, [ + {at: -1, expect: '-100% calc(200px + 100%) 300px'}, + {at: 0, expect: 'calc(50px + 0%) calc(200px + 50%) 300px'}, + {at: 0.25, expect: 'calc(62.5px + 25%) calc(200px + 37.5%) 300px'}, + {at: 0.75, expect: 'calc(87.5px + 75%) calc(200px + 12.5%) 300px'}, + {at: 1, expect: 'calc(100px + 100%) calc(200px + 0%) 300px'}, + {at: 2, expect: 'calc(150px + 200%) calc(200px - 50%) 300px'}, +]); + +test_composition({ + property: 'translate', + underlying: '100px 200px 300px', + addFrom: '50% 100px', + replaceTo: '200px 50% 100px', +}, [ + {at: -1, expect: '100% calc(600px - 50%) 500px'}, + {at: 0, expect: 'calc(100px + 50%) calc(300px + 0%) 300px'}, + {at: 0.25, expect: 'calc(125px + 37.5%) calc(225px + 12.5%) 250px'}, + {at: 0.75, expect: 'calc(175px + 12.5%) calc(75px + 37.5%) 150px'}, + {at: 1, expect: 'calc(200px + 0%) 50% 100px'}, + {at: 2, expect: 'calc(300px - 50%) calc(-300px + 100%) -100px'}, +]); + +test_composition({ + property: 'translate', + underlying: '100px 200px 300px', + replaceFrom: '50% 100px', + addTo: '200px 50% 100px', +}, [ + {at: -1, expect: 'calc(-300px + 100%) -50% -400px'}, + {at: 0, expect: '50% calc(100px + 0%)'}, + {at: 0.25, expect: 'calc(75px + 37.5%) calc(125px + 12.5%) 100px'}, + {at: 0.75, expect: 'calc(225px + 12.5%) calc(175px + 37.5%) 300px'}, + {at: 1, expect: 'calc(300px + 0%) calc(200px + 50%) 400px'}, + {at: 2, expect: 'calc(600px - 50%) calc(300px + 100%) 800px'}, +]); + +test_composition({ + property: 'translate', + underlying: 'none', + replaceFrom: 'none', + addTo: '100px', +}, [ + {at: -1, expect: '-100px'}, + {at: 0, expect: 'none'}, + {at: 0.25, expect: '25px'}, + {at: 0.75, expect: '75px'}, + {at: 1, expect: '100px'}, + {at: 2, expect: '200px'}, +]); + +test_composition({ + property: 'translate', + underlying: 'none', + addFrom: 'none', + addTo: '100px', +}, [ + {at: -1, expect: '-100px'}, + {at: 0, expect: 'none'}, + {at: 0.25, expect: '25px'}, + {at: 0.75, expect: '75px'}, + {at: 1, expect: '100px'}, + {at: 2, expect: '200px'}, +]); + +test_composition({ + property: 'translate', + underlying: 'none', + replaceFrom: '0px 40px 60px', + replaceTo: 'none', +}, [ + {at: -1, expect: '0px 80px 120px'}, + {at: 0, expect: '0px 40px 60px'}, + {at: 0.25, expect: '0px 30px 45px'}, + {at: 0.75, expect: '0px 10px 15px'}, + {at: 1, expect: 'none'}, + {at: 2, expect: '0px -40px -60px'}, +]); + +test_composition({ + property: 'translate', + underlying: 'none', + replaceFrom: '0px 40px 60px', + addTo: 'none', +}, [ + {at: -1, expect: '0px 80px 120px'}, + {at: 0, expect: '0px 40px 60px'}, + {at: 0.25, expect: '0px 30px 45px'}, + {at: 0.75, expect: '0px 10px 15px'}, + {at: 1, expect: 'none'}, + {at: 2, expect: '0px -40px -60px'}, +]); + +test_composition({ + property: 'translate', + underlying: '80px 20px', + addFrom: 'none', + replaceTo: '0px 40px 60px', +}, [ + {at: -1, expect: '160px 0px -60px'}, + {at: 0, expect: '80px 20px'}, + {at: 0.25, expect: '60px 25px 15px'}, + {at: 0.5, expect: '40px 30px 30px'}, + {at: 0.75, expect: '20px 35px 45px'}, + {at: 1, expect: '0px 40px 60px'}, + {at: 2, expect: '-80px 60px 120px'}, +]); + +test_composition({ + property: 'translate', + underlying: '80px 20px', + addFrom: '0px 40px 60px', + replaceTo: 'none', +}, [ + {at: -1, expect: '160px 120px 120px'}, + {at: 0, expect: '80px 60px 60px'}, + {at: 0.25, expect: '60px 45px 45px'}, + {at: 0.5, expect: '40px 30px 30px'}, + {at: 0.75, expect: '20px 15px 15px'}, + {at: 1, expect: 'none'}, + {at: 2, expect: '-80px -60px -60px'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-transitions/animations/vertical-align-composition.html b/tests/wpt/web-platform-tests/css/css-transitions/animations/vertical-align-composition.html new file mode 100644 index 00000000000..222a511679b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transitions/animations/vertical-align-composition.html @@ -0,0 +1,65 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>vertical-align composition</title> +<link rel="help" href="https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align"> +<meta name="assert" content="vertical-align supports animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<body> +<script> +test_composition({ + property: 'vertical-align', + underlying: '50px', + addFrom: '100px', + addTo: '200px', +}, [ + {at: -0.3, expect: '120px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '200px'}, + {at: 1, expect: '250px'}, + {at: 1.5, expect: '300px'}, +]); + +test_composition({ + property: 'vertical-align', + underlying: '100px', + addFrom: '10px', + addTo: '2px', +}, [ + {at: -0.5, expect: '114px'}, + {at: 0, expect: '110px'}, + {at: 0.5, expect: '106px'}, + {at: 1, expect: '102px'}, + {at: 1.5, expect: '98px'}, +]); + +test_composition({ + property: 'vertical-align', + underlying: '10%', + addFrom: '100px', + addTo: '20%', +}, [ + {at: -0.3, expect: 'calc(130px + 4%)'}, + {at: 0, expect: 'calc(100px + 10%)'}, + {at: 0.5, expect: 'calc(50px + 20%)'}, + {at: 1, expect: '30%'}, + {at: 1.5, expect: 'calc(-50px + 40%)'}, +]); + +test_composition({ + property: 'vertical-align', + underlying: '50px', + addFrom: '100px', + replaceTo: '200px', +}, [ + {at: -0.3, expect: '135px'}, + {at: 0, expect: '150px'}, + {at: 0.5, expect: '175px'}, + {at: 1, expect: '200px'}, + {at: 1.5, expect: '225px'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html deleted file mode 100644 index 3dc47c696fb..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html +++ /dev/null @@ -1,34 +0,0 @@ -<!DOCTYPE html> -<html manifest="/fetch/metadata/resources/record-header.py?file=appcache-manifest{{$id:uuid()}}"> -<meta name="timeout" content="long"> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script src=/fetch/metadata/resources/helper.js></script> -<script src=/common/utils.js></script> -<body></body> -<script> - async_test(t => { - const expected = {"site": "same-origin", "user": "", "mode": "no-cors", "dest": "empty"}; - window.applicationCache.oncached = window.applicationCache.onnoupdate = window.applicationCache.onerror = t.step_func(async e => { - try { - let response = await fetch( - "/fetch/metadata/resources/record-header.py?retrieve=true&file=appcache-manifest{{$id}}"); - let text = await response.text(); - assert_header_equals(text, expected, "Appcache manifest"); - - response = await fetch( - "/fetch/metadata/resources/record-header.py?retrieve=true&file=appcache-resource{{$id}}"); - text = await response.text(); - assert_header_equals(text, expected, "Appcache resource"); - } catch (e) { - t.step(e => { - if (e instanceof AssertionError) { - throw e; - } - assert_unreached(`Unhandled rejection with value: ${e}`); - }); - } - t.done(); - }); - }, "Appcache!"); -</script> diff --git a/tests/wpt/web-platform-tests/fetch/metadata/portal.tentative.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/portal.tentative.https.sub.html index 4e50b6b24b3..96067ae82ab 100644 --- a/tests/wpt/web-platform-tests/fetch/metadata/portal.tentative.https.sub.html +++ b/tests/wpt/web-platform-tests/fetch/metadata/portal.tentative.https.sub.html @@ -30,20 +30,20 @@ "site": "same-origin", "user": "", "mode": "navigate", - "dest": "document" + "dest": "iframe" }); create_test("{{hosts[][www]}}:{{ports[https][0]}}", { "site": "same-site", "user": "", "mode": "navigate", - "dest": "document" + "dest": "iframe" }); create_test("{{hosts[alt][www]}}:{{ports[https][0]}}", { "site": "cross-site", "user": "", "mode": "navigate", - "dest": "document" + "dest": "iframe" }); </script> diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py b/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py index 3bfb1fcdfaa..364c800a19c 100644 --- a/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py +++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py @@ -99,8 +99,13 @@ def main(request, response): file.close() return video - ## Return a valid style content and Content-Type ## - if key.startswith("style") or key.startswith("embed") or key.startswith("object"): + ## Return valid style content and Content-Type ## + if key.startswith("style"): + response.headers.set("Content-Type", "text/css") + return "div { }" + + ## Return a valid embed/object content and Content-Type ## + if key.startswith("embed") or key.startswith("object"): response.headers.set("Content-Type", "text/html") return "<html>EMBED!</html>" diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-navigate-popup.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-navigate-popup.https.html index 21320a61b2e..faa2793e5fa 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-navigate-popup.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-navigate-popup.https.html @@ -32,14 +32,14 @@ "opener": false }, { - "title": "coop unsafe-inherit/coep", - "coop": "unsafe-inherit", + "title": "coop unsafe-none/coep", + "coop": "unsafe-none", "coep": "require-corp", "opener": true }, { - "title": "coop unsafe-inherit/no coep", - "coop": "unsafe-inherit", + "title": "coop unsafe-none/no coep", + "coop": "unsafe-none", "coep": "", "opener": false } @@ -53,9 +53,9 @@ async_test(t => { // For each test we open a COOP: same-origin/COEP: require-corp document in a popup and then - // navigate that to either a same-origin or same-site document whose COOP and COEP are set as - // per the top-most array. We then verify that this document has the correct opener for its - // specific setup. + // navigate that to either a same-origin (site=="same-origin") or same-site (site=="same-site") + // document whose COOP and COEP are set as per the top-most array. We then verify that this + // document has the correct opener for its specific setup. url_test(t, `${SAME_ORIGIN.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=same-origin&coep=require-corp&navigate=${encodeURIComponent(navigateURL)}`, channel, opener); }, title); }); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-redirect.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-redirect.https.html index 73f07ddef88..2727013783f 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-redirect.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-redirect.https.html @@ -1,5 +1,6 @@ <!doctype html> <title>Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy: redirects</title> +<meta content=timeout value=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> @@ -41,18 +42,18 @@ const coopCOEPPath = new URL("resources/coop-coep.py", window.location).pathname "opener": false }, { - "title": "coop unsafe-inherit/coep to coop/coep", - "redirectCOOP": "unsafe-inherit", + "title": "coop unsafe-none/coep to coop/coep", + "redirectCOOP": "unsafe-none", "redirectCOEP": "require-corp", "coop": "same-origin", "coep": "require-corp", "opener": true }, { - "title": "coop unsafe-inherit/coep to coop unsafe-inherit/coep", - "redirectCOOP": "unsafe-inherit", + "title": "coop unsafe-none/coep to coop unsafe-inherit/coep", + "redirectCOOP": "unsafe-none", "redirectCOEP": "require-corp", - "coop": "unsafe-inherit", + "coop": "unsafe-none", "coep": "require-corp", "opener": true } diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html index 64994cdfb76..de1dd56d9d5 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html @@ -1,5 +1,6 @@ <!doctype html> <title>Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy</title> +<meta content=timeout value=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> @@ -13,14 +14,14 @@ "opener": true }, { - "title": "popup with coop unsafe-inherit/coep", - "coop": "unsafe-inherit", + "title": "popup with coop unsafe-none/coep", + "coop": "unsafe-none", "coep": "require-corp", "opener": true }, { - "title": "popup with coop unsafe-inherit without coep", - "coop": "unsafe-inherit", + "title": "popup with coop unsafe-none without coep", + "coop": "unsafe-none", "coep": "", "opener": false }, @@ -35,10 +36,10 @@ coop_coep_test(t, SAME_ORIGIN, variant.coop, variant.coep, variant.title.replace(/ /g,"-"), variant.opener); }, `Same-origin ${variant.title}`); - // This seems useful to test, CROSS_SITE is probably too redundant though. + // "same-site" is a historical value, equivalent to "unsafe-none" async_test(t => { coop_coep_test(t, SAME_SITE, variant.coop, variant.coep, `same-site-${variant.title.replace(/ /g,"-")}`, false); - }, `Same-site ${variant.title}`); + }, `historical: "same-site" ${variant.title}`); }); test(() => { diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https.html index 9a92dd9bde8..3c6019ace0b 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https.html @@ -1,7 +1,7 @@ <!doctype html> <title>Cross-Origin-Opener-Policy: a navigated popup</title> <!-- In particular this is different from coep-navigate-popup.https.html as this document initiates - the navigation (and uses unsafe-allow-outgoing and no COEP as without that it cannot be + the navigation (and uses same-origin-allow-popups and no COEP as without that it cannot be observed). COOP should work identically, but implementations might have used the wrong authority. --> <script src=/resources/testharness.js></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https.html.headers index a19f4400cea..d83ed86fb9b 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https.html.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https.html.headers @@ -1 +1 @@ -Cross-Origin-Opener-Policy: same-origin unsafe-allow-outgoing +Cross-Origin-Opener-Policy: same-origin-allow-popups diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https.html index e471b1eda2e..fc16c186cad 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https.html @@ -15,8 +15,10 @@ async_test(t => { const popup = window.open("resources/coop-coep.py?coop=same-origin&coep=&channel=${channel.name}"); <\/script>`; document.body.append(frame); - t.step_timeout(() => { - t.done() - }, 500); + window.onload = t.step_func(() => { + t.step_timeout(() => { + t.done() + }, 1500); + }); }); </script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html new file mode 100644 index 00000000000..73ef1ea29a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html @@ -0,0 +1,39 @@ +<!doctype html> +<title>Historical: Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy: a navigating popup</title> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="../resources/common.js"></script> +<script> +[ + { + "title": "coop unsafe-inherit/coep", + "coop": "unsafe-inherit", // historical value, equivalent to "unsafe-none" + "coep": "require-corp", + "opener": true + }, + { + "title": "coop unsafe-inherit/no coep", + "coop": "unsafe-inherit", // historical value, equivalent to "unsafe-none" + "coep": "", + "opener": false + } +].forEach(variant => { + ["same-origin", "same-site"].forEach(site => { + const title = `Popup navigating to ${site} with ${variant.title}`; + const channel = title.replace(/ /g,"-"); + const navigateHost = site === "same-origin" ? SAME_ORIGIN : SAME_SITE; + const navigateURL = `${navigateHost.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=${variant.coop}&coep=${variant.coep}&channel=${channel}`; + const opener = site === "same-origin" ? variant.opener : false; + + async_test(t => { + // For each test we open a COOP: same-origin/COEP: require-corp document in a popup and then + // navigate that to either a document with same origin (site=="same-origin") or + // not-same-origin (site=="same-site") whose COOP and COEP are set as per the top-most array. + // We then verify that this document has the correct opener for its specific setup. + url_test(t, `${SAME_ORIGIN.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=same-origin&coep=require-corp&navigate=${encodeURIComponent(navigateURL)}`, channel, opener); + }, title); + }); +}); +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html new file mode 100644 index 00000000000..a8b6d543cd0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="../resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [CROSS_ORIGIN, "", true], + [CROSS_ORIGIN, "unsafe-none", true], + [CROSS_ORIGIN, "jibberish", true], + [CROSS_ORIGIN, "same-site", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin", false], + [CROSS_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-origin unsafe-allow-outgoing", tests); // historical value, equivalent to "unsafe-none" + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html.headers index a19f4400cea..a19f4400cea 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html new file mode 100644 index 00000000000..aaaae2dc317 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="../resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_ORIGIN, "", true], + [SAME_ORIGIN, "unsafe-none", true], + [SAME_ORIGIN, "jibberish", true], + [SAME_ORIGIN, "same-site", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin", false], + [SAME_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-origin unsafe-allow-outgoing", tests); // historical value, equivalent to "unsafe-none" + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html.headers new file mode 100644 index 00000000000..a19f4400cea --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-origin unsafe-allow-outgoing diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html new file mode 100644 index 00000000000..fd58b06f783 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="../resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_SITE, "", true], + [SAME_SITE, "unsafe-none", true], + [SAME_SITE, "jibberish", true], + [SAME_SITE, "same-site", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin", false], + [SAME_SITE, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-origin unsafe-allow-outgoing", tests); // historical value, equivalent to "unsafe-none" + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html.headers new file mode 100644 index 00000000000..a19f4400cea --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-origin unsafe-allow-outgoing diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html new file mode 100644 index 00000000000..7330ff75bcf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="../resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [CROSS_ORIGIN, "", true], + [CROSS_ORIGIN, "unsafe-none", true], + [CROSS_ORIGIN, "jibberish", true], + [CROSS_ORIGIN, "same-site", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin", false], + [CROSS_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-site unsafe-allow-outgoing", tests); // historical value, equivalent to "unsafe-none" + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html.headers index ab7b2894815..ab7b2894815 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html new file mode 100644 index 00000000000..01cc6719fd3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="../resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_ORIGIN, "", true], + [SAME_ORIGIN, "unsafe-none", true], + [SAME_ORIGIN, "jibberish", true], + [SAME_ORIGIN, "same-site", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin", false], + [SAME_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-site unsafe-allow-outgoing", tests); // historical value, equivalent to "unsafe-none" + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html.headers new file mode 100644 index 00000000000..ab7b2894815 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-site unsafe-allow-outgoing diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html new file mode 100644 index 00000000000..b1a664dd9a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="../resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_SITE, "", true], + [SAME_SITE, "unsafe-none", true], + [SAME_SITE, "jibberish", true], + [SAME_SITE, "same-site", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin", false], + [SAME_SITE, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-site unsafe-allow-outgoing", tests); // historical value, equivalent to "unsafe-none" + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html.headers new file mode 100644 index 00000000000..ab7b2894815 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-site unsafe-allow-outgoing diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html new file mode 100644 index 00000000000..d0fc7c79841 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="../resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [CROSS_ORIGIN, "", true], + [CROSS_ORIGIN, "unsafe-none", true], + [CROSS_ORIGIN, "jibberish", true], + [CROSS_ORIGIN, "same-site", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin", false], + [CROSS_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-site", tests); // historical value, equivalent to "unsafe-none" + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-site.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html.headers index 34bd099a302..34bd099a302 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-site.https.html.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html new file mode 100644 index 00000000000..67d2523e28d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="../resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_ORIGIN, "", true], + [SAME_ORIGIN, "unsafe-none", true], + [SAME_ORIGIN, "jibberish", true], + [SAME_ORIGIN, "same-site", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin", false], + [SAME_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-site", tests); // historical value, equivalent to "unsafe-none" + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html.headers new file mode 100644 index 00000000000..34bd099a302 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-site diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html new file mode 100644 index 00000000000..78b7ca8fcad --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="../resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_SITE, "", true], + [SAME_SITE, "unsafe-none", true], + [SAME_SITE, "jibberish", true], + [SAME_SITE, "same-site", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin", false], + [SAME_SITE, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-site", tests); // historical value, equivalent to "unsafe-none" + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html.headers new file mode 100644 index 00000000000..34bd099a302 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-site diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/no-https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/no-https.html index 014ba1f333b..f4e926b2eb2 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/no-https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/no-https.html @@ -5,15 +5,14 @@ <script src=/resources/testharnessreport.js></script> <script> async_test(t => { - const popup = window.open("/common/blank.html"); - assert_equals(window, popup.opener); - - t.step_timeout(() => { - assert_false(popup.closed); - assert_equals(popup.location.pathname, "/common/blank.html"); + const popup = window.open("resources/call-functionCalledByOpenee.html"); + t.add_cleanup(() => { popup.close(); - t.done(); - }, 500); + }); + window.functionCalledByOpenee = t.step_func_done(() => { + assert_false(popup.closed); + }); + assert_equals(window, popup.opener); }, "Cross-Origin-Opener-Policy only works over secure contexts"); test(() => { diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-meta-http-equiv.https.html.headers index 46ad58d83bf..46ad58d83bf 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin.https.html.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-meta-http-equiv.https.html.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-none.https.html deleted file mode 100644 index 62633457d3f..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-none.https.html +++ /dev/null @@ -1,37 +0,0 @@ -<!doctype html> -<meta charset=utf-8> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script src="/common/get-host-info.sub.js"></script> -<script src="resources/common.js"></script> - -<div id=log></div> -<script> - -let tests = [ - // popup Origin, popup COOP, expect opener - [SAME_ORIGIN, "", true], - [SAME_ORIGIN, "jibberish", true], - [SAME_ORIGIN, "same-site", false], - [SAME_ORIGIN, "same-site unsafe-allow-outgoing", false], - [SAME_ORIGIN, "same-origin", false], - [SAME_ORIGIN, "same-origin unsafe-allow-outgoing", false], - - [SAME_SITE, "", true], - [SAME_SITE, "jibberish", true], - [SAME_SITE, "same-site", false], - [SAME_SITE, "same-site unsafe-allow-outgoing", false], - [SAME_SITE, "same-origin", false], - [SAME_SITE, "same-origin unsafe-allow-outgoing", false], - - [CROSS_ORIGIN, "", true], - [CROSS_ORIGIN, "jibberish", true], - [CROSS_ORIGIN, "same-site", false], - [CROSS_ORIGIN, "same-site unsafe-allow-outgoing", false], - [CROSS_ORIGIN, "same-origin", false], - [CROSS_ORIGIN, "same-origin unsafe-allow-outgoing", false], -]; - -run_coop_tests("none", tests); - -</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html new file mode 100644 index 00000000000..cea3788ba83 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [CROSS_ORIGIN, "", true], + [CROSS_ORIGIN, "unsafe-none", true], + [CROSS_ORIGIN, "jibberish", true], + [CROSS_ORIGIN, "same-site", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin", false], + [CROSS_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-origin-allow-popups", tests); + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html.headers new file mode 100644 index 00000000000..d83ed86fb9b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-origin-allow-popups diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html new file mode 100644 index 00000000000..a50231f8228 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_ORIGIN, "", true], + [SAME_ORIGIN, "unsafe-none", true], + [SAME_ORIGIN, "jibberish", true], + [SAME_ORIGIN, "same-site", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin", false], + [SAME_ORIGIN, "same-origin-allow-popups", true], +]; + +run_coop_tests("same-origin-allow-popups", tests); + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html.headers new file mode 100644 index 00000000000..d83ed86fb9b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-origin-allow-popups diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html new file mode 100644 index 00000000000..53b4263a70f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_SITE, "", true], + [SAME_SITE, "unsafe-none", true], + [SAME_SITE, "jibberish", true], + [SAME_SITE, "same-site", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin", false], + [SAME_SITE, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-origin-allow-popups", tests); + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html.headers new file mode 100644 index 00000000000..d83ed86fb9b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-origin-allow-popups diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html index 65ec3b26aa0..d4005ac20d8 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html @@ -6,10 +6,12 @@ async_test(t => { const popup = window.open("resources/coop-coep.py?coop=same-origin&coep=&navigate=about:blank"); assert_equals(window, popup.opener); - t.step_timeout(() => { - assert_equals(popup.location.href, "about:blank"); - popup.close(); - t.done(); - }, 500); + window.onload = t.step_func(() => { + t.step_timeout(() => { + assert_equals(popup.location.href, "about:blank"); + popup.close(); + t.done(); + }, 1500); + }); }, "Navigating a popup to about:blank"); </script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html deleted file mode 100644 index 2f8ebc3be3f..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https.html +++ /dev/null @@ -1,37 +0,0 @@ -<!doctype html> -<meta charset=utf-8> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script src="/common/get-host-info.sub.js"></script> -<script src="resources/common.js"></script> - -<div id=log></div> -<script> - -let tests = [ - // popup Origin, popup COOP, expect opener - [SAME_ORIGIN, "", true], - [SAME_ORIGIN, "jibberish", true], - [SAME_ORIGIN, "same-site", false], - [SAME_ORIGIN, "same-site unsafe-allow-outgoing", false], - [SAME_ORIGIN, "same-origin", false], - [SAME_ORIGIN, "same-origin unsafe-allow-outgoing", true], - - [SAME_SITE, "", true], - [SAME_SITE, "jibberish", true], - [SAME_SITE, "same-site", false], - [SAME_SITE, "same-site unsafe-allow-outgoing", false], - [SAME_SITE, "same-origin", false], - [SAME_SITE, "same-origin unsafe-allow-outgoing", false], - - [CROSS_ORIGIN, "", true], - [CROSS_ORIGIN, "jibberish", true], - [CROSS_ORIGIN, "same-site", false], - [CROSS_ORIGIN, "same-site unsafe-allow-outgoing", false], - [CROSS_ORIGIN, "same-origin", false], - [CROSS_ORIGIN, "same-origin unsafe-allow-outgoing", false], -]; - -run_coop_tests("same-origin_unsafe-allow-outgoing", tests); - -</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html new file mode 100644 index 00000000000..9f7d27b3c8d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [CROSS_ORIGIN, "", false], + [CROSS_ORIGIN, "unsafe-none", false], + [CROSS_ORIGIN, "jibberish", false], + [CROSS_ORIGIN, "same-site", false], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-site unsafe-allow-outgoing", false], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin unsafe-allow-outgoing", false], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin", false], + [CROSS_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-origin", tests); + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html.headers new file mode 100644 index 00000000000..46ad58d83bf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-origin diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html new file mode 100644 index 00000000000..c84219a80f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_ORIGIN, "", false], + [SAME_ORIGIN, "unsafe-none", false], + [SAME_ORIGIN, "jibberish", false], + [SAME_ORIGIN, "same-site", false], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-site unsafe-allow-outgoing", false], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin unsafe-allow-outgoing", false], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin", true], + [SAME_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-origin", tests); + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html.headers new file mode 100644 index 00000000000..46ad58d83bf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-origin diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html new file mode 100644 index 00000000000..b875cc2e0e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_SITE, "", false], + [SAME_SITE, "unsafe-none", false], + [SAME_SITE, "jibberish", false], + [SAME_SITE, "same-site", false], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-site unsafe-allow-outgoing", false], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin unsafe-allow-outgoing", false], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin", false], + [SAME_SITE, "same-origin-allow-popups", false], +]; + +run_coop_tests("same-origin", tests); + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html.headers new file mode 100644 index 00000000000..46ad58d83bf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-origin diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin.https.html deleted file mode 100644 index 964011ff762..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin.https.html +++ /dev/null @@ -1,37 +0,0 @@ -<!doctype html> -<meta charset=utf-8> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script src="/common/get-host-info.sub.js"></script> -<script src="resources/common.js"></script> - -<div id=log></div> -<script> - -let tests = [ - // popup Origin, popup COOP, expect opener - [SAME_ORIGIN, "", false], - [SAME_ORIGIN, "jibberish", false], - [SAME_ORIGIN, "same-site", false], - [SAME_ORIGIN, "same-site unsafe-allow-outgoing", false], - [SAME_ORIGIN, "same-origin", true], - [SAME_ORIGIN, "same-origin unsafe-allow-outgoing", false], - - [SAME_SITE, "", false], - [SAME_SITE, "jibberish", false], - [SAME_SITE, "same-site", false], - [SAME_SITE, "same-site unsafe-allow-outgoing", false], - [SAME_SITE, "same-origin", false], - [SAME_SITE, "same-origin unsafe-allow-outgoing", false], - - [CROSS_ORIGIN, "", false], - [CROSS_ORIGIN, "jibberish", false], - [CROSS_ORIGIN, "same-site", false], - [CROSS_ORIGIN, "same-site unsafe-allow-outgoing", false], - [CROSS_ORIGIN, "same-origin", false], - [CROSS_ORIGIN, "same-origin unsafe-allow-outgoing", false], -]; - -run_coop_tests("same-origin", tests); - -</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html deleted file mode 100644 index 18ee909d186..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https.html +++ /dev/null @@ -1,37 +0,0 @@ -<!doctype html> -<meta charset=utf-8> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script src="/common/get-host-info.sub.js"></script> -<script src="resources/common.js"></script> - -<div id=log></div> -<script> - -let tests = [ - // popup Origin, popup COOP, expect opener - [SAME_ORIGIN, "", true], - [SAME_ORIGIN, "jibberish", true], - [SAME_ORIGIN, "same-site", false], - [SAME_ORIGIN, "same-site unsafe-allow-outgoing", true], - [SAME_ORIGIN, "same-origin", false], - [SAME_ORIGIN, "same-origin unsafe-allow-outgoing", false], - - [SAME_SITE, "", true], - [SAME_SITE, "jibberish", true], - [SAME_SITE, "same-site", false], - [SAME_SITE, "same-site unsafe-allow-outgoing", true], - [SAME_SITE, "same-origin", false], - [SAME_SITE, "same-origin unsafe-allow-outgoing", false], - - [CROSS_ORIGIN, "", true], - [CROSS_ORIGIN, "jibberish", true], - [CROSS_ORIGIN, "same-site", false], - [CROSS_ORIGIN, "same-site unsafe-allow-outgoing", false], - [CROSS_ORIGIN, "same-origin", false], - [CROSS_ORIGIN, "same-origin unsafe-allow-outgoing", false], -]; - -run_coop_tests("same-site_unsafe-allow-outgoing", tests); - -</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-site.https.html deleted file mode 100644 index 9a0db2765da..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-site.https.html +++ /dev/null @@ -1,37 +0,0 @@ -<!doctype html> -<meta charset=utf-8> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script src="/common/get-host-info.sub.js"></script> -<script src="resources/common.js"></script> - -<div id=log></div> -<script> - -let tests = [ - // popup Origin, popup COOP, expect opener - [SAME_ORIGIN, "", false], - [SAME_ORIGIN, "jibberish", false], - [SAME_ORIGIN, "same-site", true], - [SAME_ORIGIN, "same-site unsafe-allow-outgoing", false], - [SAME_ORIGIN, "same-origin", false], - [SAME_ORIGIN, "same-origin unsafe-allow-outgoing", false], - - [SAME_SITE, "", false], - [SAME_SITE, "jibberish", false], - [SAME_SITE, "same-site", true], - [SAME_SITE, "same-site unsafe-allow-outgoing", false], - [SAME_SITE, "same-origin", false], - [SAME_SITE, "same-origin unsafe-allow-outgoing", false], - - [CROSS_ORIGIN, "", false], - [CROSS_ORIGIN, "jibberish", false], - [CROSS_ORIGIN, "same-site", false], - [CROSS_ORIGIN, "same-site unsafe-allow-outgoing", false], - [CROSS_ORIGIN, "same-origin", false], - [CROSS_ORIGIN, "same-origin unsafe-allow-outgoing", false], -]; - -run_coop_tests("same-site", tests); - -</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html new file mode 100644 index 00000000000..5cbf5b4c20c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [CROSS_ORIGIN, "", true], + [CROSS_ORIGIN, "unsafe-none", true], + [CROSS_ORIGIN, "jibberish", true], + [CROSS_ORIGIN, "same-site", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin", false], + [CROSS_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("unsafe-none", tests); + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html new file mode 100644 index 00000000000..f8a4ebe7128 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_ORIGIN, "", true], + [SAME_ORIGIN, "unsafe-none", true], + [SAME_ORIGIN, "jibberish", true], + [SAME_ORIGIN, "same-site", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin", false], + [SAME_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("unsafe-none", tests); + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html.headers new file mode 100644 index 00000000000..073ce7adfbd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: unsafe-none diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html new file mode 100644 index 00000000000..e38acf4fcb1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_SITE, "", true], + [SAME_SITE, "unsafe-none", true], + [SAME_SITE, "jibberish", true], + [SAME_SITE, "same-site", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin", false], + [SAME_SITE, "same-origin-allow-popups", false], +]; + +run_coop_tests("unsafe-none", tests); + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html new file mode 100644 index 00000000000..d89398cd653 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [CROSS_ORIGIN, "", true], + [CROSS_ORIGIN, "unsafe-none", true], + [CROSS_ORIGIN, "jibberish", true], + [CROSS_ORIGIN, "same-site", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [CROSS_ORIGIN, "same-origin", false], + [CROSS_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("unspecified", tests); + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html new file mode 100644 index 00000000000..cb6fc02ac17 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_ORIGIN, "", true], + [SAME_ORIGIN, "unsafe-none", true], + [SAME_ORIGIN, "jibberish", true], + [SAME_ORIGIN, "same-site", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_ORIGIN, "same-origin", false], + [SAME_ORIGIN, "same-origin-allow-popups", false], +]; + +run_coop_tests("unspecified", tests); + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html new file mode 100644 index 00000000000..6e0edfa0423 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta content=timeout value=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> + +let tests = [ + // popup Origin, popup COOP, expect opener + [SAME_SITE, "", true], + [SAME_SITE, "unsafe-none", true], + [SAME_SITE, "jibberish", true], + [SAME_SITE, "same-site", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-site unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin unsafe-allow-outgoing", true], // historical value, equivalent to "unsafe-none" + [SAME_SITE, "same-origin", false], + [SAME_SITE, "same-origin-allow-popups", false], +]; + +run_coop_tests("unspecified", tests); + +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/call-functionCalledByOpenee.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/call-functionCalledByOpenee.html new file mode 100644 index 00000000000..d0ff0b723e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/call-functionCalledByOpenee.html @@ -0,0 +1,5 @@ +<!doctype html> +<meta charset=utf-8> +<script> +window.opener.functionCalledByOpenee(); +</script> diff --git a/tests/wpt/web-platform-tests/html/dom/idlharness.worker.js b/tests/wpt/web-platform-tests/html/dom/idlharness.worker.js index b720d54f3d9..feddaf54c92 100644 --- a/tests/wpt/web-platform-tests/html/dom/idlharness.worker.js +++ b/tests/wpt/web-platform-tests/html/dom/idlharness.worker.js @@ -7,6 +7,7 @@ idl_test( ["html"], ["dom", "cssom", "touch-events", "uievents"], idlArray => { + idlArray.add_untested_idls('typedef Window WindowProxy;'); idlArray.add_objects({ WorkerLocation: ['self.location'], WorkerNavigator: ['self.navigator'], diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html index fedf2ea4e4f..2f69407592e 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html @@ -91,7 +91,11 @@ {conditions: {max: "12:00:00.1", value: "12:00:00.2"}, expected: true, name: "[target] The value is greater than max(with millisecond in 1 digit)"}, {conditions: {max: "12:00:00.01", value: "12:00:00.02"}, expected: true, name: "[target] The value is greater than max(with millisecond in 2 digit)"}, {conditions: {max: "12:00:00.001", value: "12:00:00.002"}, expected: true, name: "[target] The value is greater than max(with millisecond in 3 digit)"}, - {conditions: {max: "12:00:00", value: "12:01"}, expected: true, name: "[target] The time missing second part is valid"} + {conditions: {max: "12:00:00", value: "12:01"}, expected: true, name: "[target] The time missing second part is valid"}, + {conditions: {max: "12:00:00", min: "14:00:00", value: "12:00:00"}, expected: false, name: "[target] The time is max for reversed range"}, + {conditions: {max: "12:00:00", min: "14:00:00", value: "13:00:00"}, expected: true, name: "[target] The time is outside the accepted range for reversed range"}, + {conditions: {max: "12:00:00", min: "14:00:00", value: "14:00:00"}, expected: false, name: "[target] The time is min for reversed range"}, + {conditions: {max: "12:00:00", min: "14:00:00", value: "15:00:00"}, expected: false, name: "[target] The time is inside the accepted range for reversed range"}, ] }, { diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html index 8ac3aae1279..c939a94c37e 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html @@ -89,7 +89,11 @@ {conditions: {min: "12:00:00.2", value: "12:00:00.1"}, expected: true, name: "[target] The value is less than min(with millisecond in 1 digit)"}, {conditions: {min: "12:00:00.02", value: "12:00:00.01"}, expected: true, name: "[target] The value is less than min(with millisecond in 2 digit)"}, {conditions: {min: "12:00:00.002", value: "12:00:00.001"}, expected: true, name: "[target] The value is less than min(with millisecond in 3 digit)"}, - {conditions: {min: "12:00:00", value: "11:59"}, expected: true, name: "[target] The time missing second part is valid"} + {conditions: {min: "12:00:00", value: "11:59"}, expected: true, name: "[target] The time missing second part is valid"}, + {conditions: {min: "14:00:00", max: "12:00:00", value: "12:00:00"}, expected: false, name: "[target] The time is max for reversed range"}, + {conditions: {min: "14:00:00", max: "12:00:00", value: "13:00:00"}, expected: true, name: "[target] The time is outside the accepted range for reversed range"}, + {conditions: {min: "14:00:00", max: "12:00:00", value: "14:00:00"}, expected: false, name: "[target] The time is min for reversed range"}, + {conditions: {min: "14:00:00", max: "12:00:00", value: "15:00:00"}, expected: false, name: "[target] The time is inside the accepted range for reversed range"}, ] }, { diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html index 2e1c666436a..3229527fabc 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html @@ -132,7 +132,8 @@ testData: [ {conditions: {required: false, checked: false, name: "test4"}, expected: false, name: "[target] The required attribute is not set"}, {conditions: {required: true, checked: true, name: "test5"}, expected: false, name: "[target] The checked attribute is true"}, - {conditions: {required: true, checked: false, name: "test6"}, expected: true, name: "[target] The checked attribute is false"} + {conditions: {required: true, checked: false, name: "test6"}, expected: true, name: "[target] The checked attribute is false"}, + {conditions: {required: true, checked: false, name: ""}, expected: false, name: "[target] The checked attribute is false and the name attribute is empty"} ] }, { diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-valueasdate.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-valueasdate.html new file mode 100644 index 00000000000..a958e991ec5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-valueasdate.html @@ -0,0 +1,109 @@ +<!DOCTYPE HTML> +<meta charset="utf-8"> +<html> + <head> + <title>HTMLInputElement valueAsDate</title> + <link rel="author" title="pmdartus" href="mailto:dartus.pierremarie@gmail.com"> + <link rel=help href="https://html.spec.whatwg.org/#dom-input-valueasdate"> + + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <h3>input_valueAsDate</h3> + <hr> + <div id="log"></div> + + <input id="input_date" type="date" /> + <input id="input_month" type="month" /> + <input id="input_week" type="week" /> + <input id="input_time" type="time" /> + + <script> + "use strict"; + + function testValueAsDateGetter(type, element, cases) { + for (const [actualValue, expectedValueAsDate] of cases) { + test( + () => { + element.value = actualValue; + + const actualValueAsDate = element.valueAsDate; + if (actualValueAsDate instanceof Date) { + assert_equals( + actualValueAsDate.getTime(), + expectedValueAsDate.getTime(), + `valueAsDate returns an invalid date (actual: ${actualValueAsDate.toISOString()}, ` + + `expected: ${expectedValueAsDate.toISOString()})` + ); + } else { + assert_equals(actualValueAsDate, expectedValueAsDate); + } + }, + `valueAsDate getter on type ${type} (actual value: ${actualValue}, ` + + `expected valueAsDate: ${expectedValueAsDate})` + ); + } + } + + function testValueAsDateSetter(type, element, cases) { + for (const [valueAsDate, expectedValue] of cases) { + test(() => { + element.valueAsDate = valueAsDate; + assert_equals(element.value, expectedValue); + }, `valueAsDate setter on type ${type} (actual valueAsDate: ${valueAsDate}, expected value: ${expectedValue})`); + } + } + + const dateInput = document.getElementById("input_date"); + testValueAsDateGetter("date", dateInput, [ + ["", null], + ["0000-12-10", null], + ["2019-00-12", null], + ["2019-12-00", null], + ["2019-13-10", null], + ["2019-02-29", null], + ["2019-12-10", new Date("2019-12-10T00:00:00.000Z")], + ["2016-02-29", new Date("2016-02-29T00:00:00.000Z")] // Leap year + ]); + testValueAsDateSetter("date", dateInput, [ + [new Date("2019-12-10T00:00:00.000Z"), "2019-12-10"], + [new Date("2016-02-29T00:00:00.000Z"), "2016-02-29"] // Leap year + ]); + + const monthInput = document.getElementById("input_month"); + testValueAsDateGetter("month", monthInput, [ + ["", null], + ["0000-12", null], + ["2019-00", null], + ["2019-12", new Date("2019-12-01T00:00:00.000Z")] + ]); + testValueAsDateSetter("month", monthInput, [[new Date("2019-12-01T00:00:00.000Z"), "2019-12"]]); + + const weekInput = document.getElementById("input_week"); + testValueAsDateGetter("week", weekInput, [ + ["", null], + ["0000-W50", null], + ["2019-W00", null], + ["2019-W60", null], + ["2019-W50", new Date("2019-12-09T00:00:00.000Z")] + ]); + testValueAsDateSetter("week", weekInput, [[new Date("2019-12-09T00:00:00.000Z"), "2019-W50"]]); + + const timeInput = document.getElementById("input_time"); + testValueAsDateGetter("time", timeInput, [ + ["", null], + ["24:00", null], + ["00:60", null], + ["00:00", new Date("1970-01-01T00:00:00.000Z")], + ["12:00", new Date("1970-01-01T12:00:00.000Z")], + ["23:59", new Date("1970-01-01T23:59:00.000Z")] + ]); + testValueAsDateSetter("time", timeInput, [ + [new Date("1970-01-01T00:00:00.000Z"), "00:00"], + [new Date("1970-01-01T12:00:00.000Z"), "12:00"], + [new Date("1970-01-01T23:59:00.000Z"), "23:59"] + ]); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-valueasnumber.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-valueasnumber.html new file mode 100644 index 00000000000..321c981c74d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-valueasnumber.html @@ -0,0 +1,146 @@ +<!DOCTYPE HTML> +<meta charset="utf-8"> +<html> + <head> + <title>HTMLInputElement valueAsNumber</title> + <link rel="author" title="pmdartus" href="mailto:dartus.pierremarie@gmail.com"> + <link rel=help href="https://html.spec.whatwg.org/#dom-input-valueasnumber"> + + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <h3>input_valueAsNumber</h3> + <hr> + <div id="log"></div> + + <input id="input_date" type="date" /> + <input id="input_month" type="month" /> + <input id="input_week" type="week" /> + <input id="input_time" type="time" /> + <input id="input_datetime-local" type="datetime-local" /> + <input id="input_number" type="number" /> + <input id="input_range" type="range" min="0" max="100" /> + + <script> + "use strict"; + + function testValueAsNumberGetter(type, element, cases) { + for (const [value, expectedValueAsNumber] of cases) { + test( + () => { + element.value = value; + assert_equals(element.valueAsNumber, expectedValueAsNumber); + }, + `valueAsNumber getter on type ${type} (actual value: ${value}, ` + + `expected valueAsNumber: ${expectedValueAsNumber})` + ); + } + } + + function testValueAsNumberSetter(type, element, cases) { + for (const [valueAsNumber, expectedValue] of cases) { + test( + () => { + element.valueAsNumber = valueAsNumber; + assert_equals(element.value, expectedValue); + }, + `valueAsNumber setter on type ${type} (actual valueAsNumber: ${valueAsNumber}, ` + + `expected value: ${expectedValue})` + ); + } + } + + const dateInput = document.getElementById("input_date"); + testValueAsNumberGetter("date", dateInput, [ + ["", NaN], + ["0000-12-10", NaN], + ["2019-00-12", NaN], + ["2019-12-00", NaN], + ["2019-13-10", NaN], + ["2019-02-29", NaN], + ["2019-12-10", 1575936000000], + ["2016-02-29", 1456704000000] // Leap year + ]); + testValueAsNumberSetter("date", dateInput, [ + [0, "1970-01-01"], + [1575936000000, "2019-12-10"], + [1456704000000, "2016-02-29"] // Leap year + ]); + + const monthInput = document.getElementById("input_month"); + testValueAsNumberGetter("month", monthInput, [ + ["", NaN], + ["0000-12", NaN], + ["2019-00", NaN], + ["2019-12", 599] + ]); + testValueAsNumberSetter("month", monthInput, [[599, "2019-12"]]); + + const weekInput = document.getElementById("input_week"); + testValueAsNumberGetter("week", weekInput, [ + ["", NaN], + ["0000-W50", NaN], + ["2019-W00", NaN], + ["2019-W60", NaN], + ["2019-W50", 1575849600000] + ]); + testValueAsNumberSetter("week", weekInput, [ + [0, "1970-W01"], + [1575849600000, "2019-W50"] + ]); + + const timeInput = document.getElementById("input_time"); + testValueAsNumberGetter("time", timeInput, [ + ["", NaN], + ["24:00", NaN], + ["00:60", NaN], + ["00:00", 0], + ["12:00", 12 * 3600 * 1000], + ["23:59", ((23 * 3600) + (59 * 60)) * 1000] + ]); + testValueAsNumberSetter("time", timeInput, [ + [0, "00:00"], + [12 * 3600 * 1000, "12:00"], + [((23 * 3600) + (59 * 60)) * 1000, "23:59"] + ]); + + const dateTimeLocalInput = document.getElementById("input_datetime-local"); + testValueAsNumberGetter("datetime-local", dateTimeLocalInput, [ + ["", NaN], + ["2019-12-10T00:00", 1575936000000], + ["2019-12-10T12:00", 1575979200000] + ]); + testValueAsNumberSetter("datetime-local", dateTimeLocalInput, [ + [1575936000000, "2019-12-10T00:00"], + [1575979200000, "2019-12-10T12:00"] + ]); + + const numberInput = document.getElementById("input_number"); + testValueAsNumberGetter("number", numberInput, [ + ["", NaN], + ["123", 123], + ["123.456", 123.456] + ]); + testValueAsNumberSetter("number", numberInput, [ + [123, "123"], + [123.456, "123.456"] + ]); + + const rangeInput = document.getElementById("input_range"); + testValueAsNumberGetter("range", rangeInput, [ + ["", 50], + ["0", 0], + ["50", 50], + ["100", 100], + ["-10", 0], // Realign to the min + ["110", 100] // Realign to the max + ]); + testValueAsNumberSetter("range", rangeInput, [ + [0, "0"], + [50, "50"], + [100, "100"] + ]); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/radio.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/radio.html index c37fa7acd0c..7dcc9a14a89 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/radio.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/radio.html @@ -174,4 +174,34 @@ assert_true(radio71.checked, "canceled click event on radio should leave the previously-checked radio checked"); assert_false(radio72.checked, "canceled click event on previously-unchecked radio should leave that radio unchecked"); }); + + test(() => { + const container = document.createElement('div'); + container.innerHTML = + '<input type=radio name=n1><span><input type=radio name=n1 checked></span>' + + '<form><input type=radio name=n1 checked></form>'; + const radios = container.querySelectorAll('input'); + assert_false(radios[0].checked, 'Sanity check: The first radio should be unchecked'); + assert_true(radios[1].checked, 'Sanity check: The second radio should be checked'); + assert_true(radios[2].checked, 'Sanity check: The third radio should be checked'); + + radios[0].checked = true; + assert_true(radios[0].checked, 'The first radio should be checked after setting checked'); + assert_false(radios[1].checked, 'The second radio should be unchecked after setting checked'); + assert_true(radios[2].checked, 'The third radio should be checked after setting checked'); + + radios[1].required = true; + assert_false(radios[0].validity.valueMissing, 'The first radio should be valid'); + assert_false(radios[1].validity.valueMissing, 'The second radio should be valid'); + assert_false(radios[2].validity.valueMissing, 'The third radio should be valid'); + + radios[0].remove(); + assert_false(radios[0].validity.valueMissing, 'The first radio should be valid because of no required'); + assert_true(radios[1].validity.valueMissing, 'The second radio should be invalid***'); + assert_false(radios[2].validity.valueMissing, 'The third radio should be valid'); + + radios[0].required = true; + radios[0].checked = false; + assert_true(radios[0].validity.valueMissing, 'The first radio should be invalid because of required'); + }, 'Radio buttons in an orphan tree should make a group'); </script> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/valueMode.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/valueMode.html index 9525d3ca1fe..5502011794f 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/valueMode.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/valueMode.html @@ -302,4 +302,31 @@ test(function() { input.value = "foo\r\r\n\n\0"; assert_equals(input.value, "#000000"); }, "value IDL attribute of input type color with value attribute"); + +// MODE FILENAME +test(function () { + var input = document.createElement("input"); + input.type = "file"; + + for (const emptyValue of ["", null]) { + input.value = emptyValue; + assert_equals(input.value, "", `input.value is empty after assigning ${emptyValue}`); + } + + for (const invalidValue of ["foo", 10, undefined]) { + assert_throws("InvalidStateError", () => { + input.value = invalidValue; + }); + assert_equals(input.value, "", `input.value is empty after assigning ${invalidValue}`); + } +}, "value IDL attribute of input type file without value attribute"); +test(function() { + var input = document.createElement("input"); + input.type = "file"; + input.setAttribute("value", "bar"); + assert_equals(input.value, "", "input.value is empty even with a value attribute"); + + input.value = ""; + assert_equals(input.getAttribute("value"), "bar", "Setting input.value does not change the value attribute"); +}, "value IDL attribute of input type file with value attribute"); </script> diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini index c6f136d9715..87726f49239 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini @@ -1,4 +1,6 @@ [allowed-to-play.html] + disabled: + if product == "firefox": https://bugzilla.mozilla.org/show_bug.cgi?id=1607802 expected: if product == "safari": ERROR # https://bugs.webkit.org/show_bug.cgi?id=190775 diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist index 62644762ce2..353922a456c 100644 --- a/tests/wpt/web-platform-tests/lint.whitelist +++ b/tests/wpt/web-platform-tests/lint.whitelist @@ -94,6 +94,7 @@ TRAILING WHITESPACE: server-timing/resources/parsing/* TRAILING WHITESPACE: webvtt/parsing/file-parsing/support/*.vtt TRAILING WHITESPACE: webvtt/parsing/file-parsing/tests/support/*.vtt TRAILING WHITESPACE: xhr/resources/headers-some-are-empty.asis +TRAILING WHITESPACE: cookies/http-state/resources/test-files/* # Intentional use of print statements PRINT STATEMENT: dom/nodes/Document-createElement-namespace-tests/generate.py diff --git a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js index 2c1724b7592..be86dedd4d8 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js +++ b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js @@ -133,7 +133,7 @@ function matchesWatchOptions(message, options) { options.recordType !== record.recordType) { continue; } - if (options.mediaType !== '' && options.mediaType !== record.mediaType) { + if (options.mediaType != null && options.mediaType !== record.mediaType) { continue; } @@ -145,8 +145,11 @@ function matchesWatchOptions(message, options) { } function createNDEFError(type) { - return { error: type ? - new device.mojom.NDEFError({ errorType: type }) : null }; + return { + error: type ? + new device.mojom.NDEFError({errorType: type, errorMessage: ''}) : + null + }; } var WebNFCTest = (() => { @@ -357,7 +360,10 @@ var WebNFCTest = (() => { simulateNonNDEFTagDiscovered() { // Notify NotSupportedError to all active readers. if (this.watchers_.length != 0) { - this.client_.onError(device.mojom.NDEFErrorType.NOT_SUPPORTED); + this.client_.onError(new device.mojom.NDEFError({ + errorType: device.mojom.NDEFErrorType.NOT_SUPPORTED, + errorMessage: '' + })); } // Reject the pending push with NotSupportedError. if (this.pending_promise_func_) { diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/opaque-script.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/opaque-script.https.html new file mode 100644 index 00000000000..7d2121855df --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/opaque-script.https.html @@ -0,0 +1,71 @@ +<!doctype html> +<title>Cache Storage: verify scripts loaded from cache_storage are marked opaque</title> +<link rel="help" href="https://w3c.github.io/ServiceWorker/#cache-interface"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-helpers.js"></script> +<script src="resources/test-helpers.sub.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script> +'use strict'; + +const SW_URL = 'resources/opaque-script-sw.js'; +const BASE_SCOPE = './resources/opaque-script-frame.html'; +const SAME_ORIGIN_BASE = new URL('./resources/', self.location.href).href; +const CROSS_ORIGIN_BASE = new URL('./resources/', + get_host_info().HTTPS_REMOTE_ORIGIN + base_path()).href; + +function wait_for_error() { + return new Promise(resolve => { + self.addEventListener('message', function messageHandler(evt) { + if (evt.data.type !== 'ErrorEvent') + return; + self.removeEventListener('message', messageHandler); + resolve(evt.data.msg); + }); + }); +} + +// Load an iframe that dynamically adds a script tag that is +// same/cross origin and large/small. It then calls a function +// defined in that loaded script that throws an unhandled error. +// The resulting message exposed in the global onerror handler +// is reported back from this function. Opaque cross origin +// scripts should not expose the details of the uncaught exception. +async function get_error_message(t, mode, size) { + const script_base = mode === 'same-origin' ? SAME_ORIGIN_BASE + : CROSS_ORIGIN_BASE; + const script = script_base + `opaque-script-${size}.js`; + const scope = BASE_SCOPE + `?script=${script}`; + const reg = await service_worker_unregister_and_register(t, SW_URL, scope); + t.add_cleanup(_ => reg.unregister()); + assert_true(!!reg.installing); + await wait_for_state(t, reg.installing, 'activated'); + const error_promise = wait_for_error(); + const f = await with_iframe(scope); + t.add_cleanup(_ => f.remove()); + const error = await error_promise; + return error; +} + +promise_test(async t => { + const error = await get_error_message(t, 'same-origin', 'small'); + assert_true(error.includes('Intentional error')); +}, 'Verify small same-origin cache_storage scripts are not opaque.'); + +promise_test(async t => { + const error = await get_error_message(t, 'same-origin', 'large'); + assert_true(error.includes('Intentional error')); +}, 'Verify large same-origin cache_storage scripts are not opaque.'); + +promise_test(async t => { + const error = await get_error_message(t, 'cross-origin', 'small'); + assert_false(error.includes('Intentional error')); +}, 'Verify small cross-origin cache_storage scripts are opaque.'); + +promise_test(async t => { + const error = await get_error_message(t, 'cross-origin', 'large'); + assert_false(error.includes('Intentional error')); +}, 'Verify large cross-origin cache_storage scripts are opaque.'); + +</script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/opaque-script-frame.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/opaque-script-frame.html new file mode 100644 index 00000000000..a57aacec7c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/opaque-script-frame.html @@ -0,0 +1,21 @@ +<!doctype html> +<html> +<head> +<meta charset="utf-8"> +</head> +<body> +<script> +self.addEventListener('error', evt => { + self.parent.postMessage({ type: 'ErrorEvent', msg: evt.message }, '*'); +}); + +const el = document.createElement('script'); +const params = new URLSearchParams(self.location.search); +el.src = params.get('script'); +el.addEventListener('load', evt => { + runScript(); +}); +document.body.appendChild(el); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/opaque-script-large.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/opaque-script-large.js new file mode 100644 index 00000000000..7e1c598efc5 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/opaque-script-large.js @@ -0,0 +1,41 @@ +function runScript() { + throw new Error("Intentional error."); +} + +function unused() { + // The following string is intended to be relatively large since some + // browsers trigger different code paths based on script size. + return "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a " + + "tortor ut orci bibendum blandit non quis diam. Aenean sit amet " + + "urna sit amet neque malesuada ultricies at vel nisi. Nunc et lacus " + + "est. Nam posuere erat enim, ac fringilla purus pellentesque " + + "cursus. Proin sodales eleifend lorem, eu semper massa scelerisque " + + "ac. Maecenas pharetra leo malesuada vulputate vulputate. Sed at " + + "efficitur odio. In rhoncus neque varius nibh efficitur gravida. " + + "Curabitur vitae dolor enim. Mauris semper lobortis libero sed " + + "congue. Donec felis ante, fringilla eget urna ut, finibus " + + "hendrerit lacus. Donec at interdum diam. Proin a neque vitae diam " + + "egestas euismod. Mauris posuere elementum lorem, eget convallis " + + "nisl elementum et. In ut leo ac neque dapibus pharetra quis ac " + + "velit. Integer pretium lectus non urna vulputate, in interdum mi " + + "lobortis. Sed laoreet ex et metus pharetra blandit. Curabitur " + + "sollicitudin non neque eu varius. Phasellus posuere congue arcu, " + + "in aliquam nunc fringilla a. Morbi id facilisis libero. Phasellus " + + "metus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + + "tortor ut orci bibendum blandit non quis diam. Aenean sit amet " + + "urna sit amet neque malesuada ultricies at vel nisi. Nunc et lacus " + + "est. Nam posuere erat enim, ac fringilla purus pellentesque " + + "cursus. Proin sodales eleifend lorem, eu semper massa scelerisque " + + "ac. Maecenas pharetra leo malesuada vulputate vulputate. Sed at " + + "efficitur odio. In rhoncus neque varius nibh efficitur gravida. " + + "Curabitur vitae dolor enim. Mauris semper lobortis libero sed " + + "congue. Donec felis ante, fringilla eget urna ut, finibus " + + "hendrerit lacus. Donec at interdum diam. Proin a neque vitae diam " + + "egestas euismod. Mauris posuere elementum lorem, eget convallis " + + "nisl elementum et. In ut leo ac neque dapibus pharetra quis ac " + + "velit. Integer pretium lectus non urna vulputate, in interdum mi " + + "lobortis. Sed laoreet ex et metus pharetra blandit. Curabitur " + + "sollicitudin non neque eu varius. Phasellus posuere congue arcu, " + + "in aliquam nunc fringilla a. Morbi id facilisis libero. Phasellus " + + "metus."; +} diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/opaque-script-small.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/opaque-script-small.js new file mode 100644 index 00000000000..8b890985752 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/opaque-script-small.js @@ -0,0 +1,3 @@ +function runScript() { + throw new Error("Intentional error."); +} diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/opaque-script-sw.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/opaque-script-sw.js new file mode 100644 index 00000000000..4d882c617d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/opaque-script-sw.js @@ -0,0 +1,37 @@ +importScripts('test-helpers.sub.js'); +importScripts('/common/get-host-info.sub.js'); + +const NAME = 'foo'; +const SAME_ORIGIN_BASE = new URL('./', self.location.href).href; +const CROSS_ORIGIN_BASE = new URL('./', + get_host_info().HTTPS_REMOTE_ORIGIN + base_path()).href; + +const urls = [ + `${SAME_ORIGIN_BASE}opaque-script-small.js`, + `${SAME_ORIGIN_BASE}opaque-script-large.js`, + `${CROSS_ORIGIN_BASE}opaque-script-small.js`, + `${CROSS_ORIGIN_BASE}opaque-script-large.js`, +]; + +self.addEventListener('install', evt => { + evt.waitUntil(async function() { + const c = await caches.open(NAME); + const promises = urls.map(async function(u) { + const r = await fetch(u, { mode: 'no-cors' }); + await c.put(u, r); + }); + await Promise.all(promises); + }()); +}); + +self.addEventListener('fetch', evt => { + const url = new URL(evt.request.url); + if (!url.pathname.includes('opaque-script-small.js') && + !url.pathname.includes('opaque-script-large.js')) { + return; + } + evt.respondWith(async function() { + const c = await caches.open(NAME); + return c.match(evt.request); + }()); +}); diff --git a/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString-regression.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString-regression.tentative.https.html new file mode 100644 index 00000000000..30986e45d26 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString-regression.tentative.https.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<meta http-equiv="Content-Security-Policy" content="blabla"> +<body> +<div id="target"></div> +<div id="probe"></div> +<script> +test(t => { + // Regression test for crbug.com/1030830. (Should work in any browser, though.) + // + // The top-level doc has a CSP that doesn't do anything interesting. We'll + // parse a doc and create an iframe with an embedded CSP, and will ensure that + // the CSP applies to the frame, but not the top-level doc. + const target = document.getElementById("target"); + const probe = document.getElementById("probe"); + probe.innerHTML = "probe"; + + const doc = new DOMParser().parseFromString(` + <meta http-equiv="Content-Security-Policy" content="trusted-types *"> + <body><div id="probe"></div></body>"`, "text/html"); + probe.innerHTML = "probe"; + + const frame = document.createElement("iframe"); + frame.src = `data:text/html;${encodeURI(doc.documentElement.outerHTML)}`; + frame.id = "frame"; + target.appendChild(frame); + const frame_probe = document.getElementById("frame").contentDocument.getElementById("probe"); + probe.innerHTML = "probe"; + assert_throws(new TypeError(), _ => { frame_probe.innnerHTML = "probe" }); +}, "Regression test for TT changes to parseFromString."); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html index 8608bcc24fe..a78b3dbf0fd 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html @@ -224,4 +224,18 @@ p.createURL(INPUTS.URL); }); }, "createScriptURL defined - calling undefined callbacks throws"); + + test(t => { + let p = window.trustedTypes.createPolicy('TestPolicyScriptURL10', { + createHTML: createHTMLJSWithThreeArguments, + createScript: createScriptJSWithThreeArguments, + createScriptURL: createScriptURLJSWithThreeArguments + }); + assert_equals("abc", p.createHTML("a", "b", "c").toString()); + assert_equals("abc", p.createScript("a", "b", "c").toString()); + assert_equals("abc", p.createScriptURL("a", "b", "c").toString()); + assert_equals("abundefined", p.createHTML("a", "b").toString()); + assert_equals("a123null", p.createScript("a", 123, null).toString()); + assert_equals("a[object Object]3.14", p.createScriptURL("a", {}, 3.14).toString()); + }, "Arbitrary number of arguments"); </script> diff --git a/tests/wpt/web-platform-tests/trusted-types/support/helper.sub.js b/tests/wpt/web-platform-tests/trusted-types/support/helper.sub.js index d13ad567a72..20f56c3cbc7 100644 --- a/tests/wpt/web-platform-tests/trusted-types/support/helper.sub.js +++ b/tests/wpt/web-platform-tests/trusted-types/support/helper.sub.js @@ -24,6 +24,18 @@ function createScriptURLJS(scripturl) { return scripturl.replace("scripturl", "successful"); } +function createHTMLJSWithThreeArguments(html0, html1, html2) { + return html0 + html1 + html2; +} + +function createScriptJSWithThreeArguments(script0, script1, script2) { + return script0 + script1 + script2; +} + +function createScriptURLJSWithThreeArguments(scripturl0, scripturl1, scripturl2) { + return scripturl0 + scripturl1 + scripturl2; +} + function createHTML_policy(win, c) { return win.trustedTypes.createPolicy('SomeHTMLPolicyName' + c, { createHTML: createHTMLJS }); } diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html index 2da7ca91078..0e0f1a77139 100644 --- a/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html +++ b/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html @@ -265,8 +265,8 @@ test(() => { assert_throws(new TypeError, () => new NDEFRecord( - createRecord('foo.eXamPle.com:bAr*-', "A string is not a BufferSource or NDEFMessage")), - 'Only BufferSource and NDEFMessage are allowed to be the record data.'); + createRecord('foo.eXamPle.com:bAr*-', "A string is not a BufferSource or NDEFMessageInit")), + 'Only BufferSource and NDEFMessageInit are allowed to be the record data.'); let buffer = new ArrayBuffer(4); new Uint8Array(buffer).set([1, 2, 3, 4]); @@ -294,6 +294,24 @@ assert_equals(record.toRecords(), null, 'toRecords() returns null if the payload is not an NDEF message.'); } + // Feed NDEFMessageInit. + { + const payload_message = createMessage([createTextRecord(test_text_data)]); + const record = new NDEFRecord(createRecord( + 'foo.eXamPle.com:bAr*-', payload_message, "dummy_record_id")); + assert_equals(record.recordType, 'foo.eXamPle.com:bAr*-', 'recordType'); + assert_equals(record.mediaType, null, 'mediaType'); + assert_equals(record.id, "dummy_record_id", 'id'); + const embedded_records = record.toRecords(); + assert_equals(embedded_records.length, 1, 'Only one embedded record.'); + // The only one embedded record has correct content. + assert_equals(embedded_records[0].recordType, 'text', 'recordType'); + assert_equals(embedded_records[0].mediaType, null, 'mediaType'); + assert_equals(embedded_records[0].id, test_record_id, 'id'); + const decoder = new TextDecoder(); + assert_equals(decoder.decode(embedded_records[0].data), test_text_data, + 'data has the same content with the original dictionary'); + } }, 'NDEFRecord constructor with external record type'); test(() => { diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html index cb6b3941410..bf7c1f86ad0 100644 --- a/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html +++ b/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html @@ -290,6 +290,25 @@ nfc_test(async (t, mockNFC) => { and external records with default NDEFPushOptions."); nfc_test(async (t, mockNFC) => { + const payloadMessage = createMessage([createTextRecord(test_text_data)]); + // Prepare a message containing an external record that uses |payloadMessage| as its payload. + const message = createMessage([createRecord('example.com:payloadIsMessage', + payloadMessage)]); + + const writer = new NDEFWriter(); + await writer.push(message); + const pushed_message = mockNFC.pushedMessage(); + + // The mojom message received by mock nfc contains only the external type record. + assert_equals(pushed_message.data.length, 1); + assert_equals(pushed_message.data[0].recordType, 'example.com:payloadIsMessage', 'recordType'); + // The external type record's payload is from the original |payloadMessage|. + assert_array_equals(pushed_message.data[0].data, new Uint8Array(0), + 'payloadMessage is used instead'); + assertNDEFMessagesEqual(payloadMessage, pushed_message.data[0].payloadMessage); +}, "NDEFWriter.push NDEFMessage containing embedded records."); + +nfc_test(async (t, mockNFC) => { const writer = new NDEFWriter(); await writer.push(test_text_data); assertNDEFMessagesEqual(test_text_data, mockNFC.pushedMessage()); |