diff options
132 files changed, 3013 insertions, 690 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index c82dae2db5e..5b8ebce0eb8 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -122901,6 +122901,258 @@ {} ] ], + "css/css-layout-api/child-constraints/available-block-size-htb-vrl.https.html": [ + [ + "/css/css-layout-api/child-constraints/available-block-size-htb-vrl.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/available-block-size-invalid.https.html": [ + [ + "/css/css-layout-api/child-constraints/available-block-size-invalid.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/available-block-size-vrl-htb.https.html": [ + [ + "/css/css-layout-api/child-constraints/available-block-size-vrl-htb.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/available-inline-size-htb-htb.https.html": [ + [ + "/css/css-layout-api/child-constraints/available-inline-size-htb-htb.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/available-inline-size-invalid.https.html": [ + [ + "/css/css-layout-api/child-constraints/available-inline-size-invalid.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/available-inline-size-vrl-vrl.https.html": [ + [ + "/css/css-layout-api/child-constraints/available-inline-size-vrl-vrl.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/available-size-for-percentages-htb-htb.https.html": [ + [ + "/css/css-layout-api/child-constraints/available-size-for-percentages-htb-htb.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/available-size-for-percentages-htb-vrl.https.html": [ + [ + "/css/css-layout-api/child-constraints/available-size-for-percentages-htb-vrl.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/available-size-for-percentages-invalid.https.html": [ + [ + "/css/css-layout-api/child-constraints/available-size-for-percentages-invalid.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/available-size-for-percentages-vrl-htb.https.html": [ + [ + "/css/css-layout-api/child-constraints/available-size-for-percentages-vrl-htb.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/available-size-for-percentages-vrl-vrl.https.html": [ + [ + "/css/css-layout-api/child-constraints/available-size-for-percentages-vrl-vrl.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/fixed-block-size-vrl.https.html": [ + [ + "/css/css-layout-api/child-constraints/fixed-block-size-vrl.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/fixed-block-size.https.html": [ + [ + "/css/css-layout-api/child-constraints/fixed-block-size.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/fixed-inline-size-vrl.https.html": [ + [ + "/css/css-layout-api/child-constraints/fixed-inline-size-vrl.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/fixed-inline-size.https.html": [ + [ + "/css/css-layout-api/child-constraints/fixed-inline-size.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/percentage-size-htb-htb.https.html": [ + [ + "/css/css-layout-api/child-constraints/percentage-size-htb-htb.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/percentage-size-htb-vrl.https.html": [ + [ + "/css/css-layout-api/child-constraints/percentage-size-htb-vrl.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/percentage-size-invalid.https.html": [ + [ + "/css/css-layout-api/child-constraints/percentage-size-invalid.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/percentage-size-quirks-mode.https.html": [ + [ + "/css/css-layout-api/child-constraints/percentage-size-quirks-mode.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/percentage-size-vrl-htb.https.html": [ + [ + "/css/css-layout-api/child-constraints/percentage-size-vrl-htb.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/child-constraints/percentage-size-vrl-vrl.https.html": [ + [ + "/css/css-layout-api/child-constraints/percentage-size-vrl-vrl.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-layout-api/constraints-data-function-failure.https.html": [ [ "/css/css-layout-api/constraints-data-function-failure.https.html", @@ -123633,102 +123885,6 @@ {} ] ], - "css/css-layout-api/perform-child-layout-available-inline-size-htb-htb.https.html": [ - [ - "/css/css-layout-api/perform-child-layout-available-inline-size-htb-htb.https.html", - [ - [ - "/css/css-layout-api/green-square-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-layout-api/perform-child-layout-available-inline-size-htb-vrl.https.html": [ - [ - "/css/css-layout-api/perform-child-layout-available-inline-size-htb-vrl.https.html", - [ - [ - "/css/css-layout-api/green-square-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-layout-api/perform-child-layout-available-inline-size-vrl-htb.https.html": [ - [ - "/css/css-layout-api/perform-child-layout-available-inline-size-vrl-htb.https.html", - [ - [ - "/css/css-layout-api/green-square-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-layout-api/perform-child-layout-available-inline-size-vrl-vrl.https.html": [ - [ - "/css/css-layout-api/perform-child-layout-available-inline-size-vrl-vrl.https.html", - [ - [ - "/css/css-layout-api/green-square-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-layout-api/perform-child-layout-fixed-block-size-vrl.https.html": [ - [ - "/css/css-layout-api/perform-child-layout-fixed-block-size-vrl.https.html", - [ - [ - "/css/css-layout-api/green-square-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-layout-api/perform-child-layout-fixed-block-size.https.html": [ - [ - "/css/css-layout-api/perform-child-layout-fixed-block-size.https.html", - [ - [ - "/css/css-layout-api/green-square-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-layout-api/perform-child-layout-fixed-inline-size-vrl.https.html": [ - [ - "/css/css-layout-api/perform-child-layout-fixed-inline-size-vrl.https.html", - [ - [ - "/css/css-layout-api/green-square-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-layout-api/perform-child-layout-fixed-inline-size.https.html": [ - [ - "/css/css-layout-api/perform-child-layout-fixed-inline-size.https.html", - [ - [ - "/css/css-layout-api/green-square-ref.html", - "==" - ] - ], - {} - ] - ], "css/css-layout-api/position-fragment-htb-ltr.https.html": [ [ "/css/css-layout-api/position-fragment-htb-ltr.https.html", @@ -143269,6 +143425,18 @@ {} ] ], + "css/css-transforms/preserve3d-button.html": [ + [ + "/css/css-transforms/preserve3d-button.html", + [ + [ + "/css/css-transforms/preserve3d-button-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-transforms/rotate/svg-rotate-3args-001.html": [ [ "/css/css-transforms/rotate/svg-rotate-3args-001.html", @@ -165745,6 +165913,30 @@ {} ] ], + "css/filter-effects/svg-unknown-input-001.html": [ + [ + "/css/filter-effects/svg-unknown-input-001.html", + [ + [ + "/css/filter-effects/svg-unknown-input-ref.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/svg-unknown-input-002.html": [ + [ + "/css/filter-effects/svg-unknown-input-002.html", + [ + [ + "/css/filter-effects/svg-unknown-input-ref.html", + "==" + ] + ], + {} + ] + ], "css/mediaqueries/aspect-ratio-001.html": [ [ "/css/mediaqueries/aspect-ratio-001.html", @@ -265436,6 +265628,11 @@ {} ] ], + "css/css-transforms/preserve3d-button-ref.html": [ + [ + {} + ] + ], "css/css-transforms/reference/backface-visibility-hidden-ref.html": [ [ {} @@ -272336,6 +272533,11 @@ {} ] ], + "css/filter-effects/svg-unknown-input-ref.html": [ + [ + {} + ] + ], "css/geometry/META.yml": [ [ {} @@ -299021,6 +299223,11 @@ {} ] ], + "resource-timing/resources/iframe_TAO_multi_wildcard.html": [ + [ + {} + ] + ], "resource-timing/resources/iframe_TAO_null.html": [ [ {} @@ -312676,6 +312883,11 @@ {} ] ], + "wasm/jsapi/instanceTestFactory.js": [ + [ + {} + ] + ], "wasm/jsapi/table/assertions.js": [ [ {} @@ -341638,6 +341850,12 @@ {} ] ], + "css/cssom-view/scrollIntoView-svg-shape.html": [ + [ + "/css/cssom-view/scrollIntoView-svg-shape.html", + {} + ] + ], "css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html": [ [ "/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html", @@ -394688,6 +394906,12 @@ {} ] ], + "resource-timing/resource_TAO_multi_wildcard.html": [ + [ + "/resource-timing/resource_TAO_multi_wildcard.html", + {} + ] + ], "resource-timing/resource_TAO_null.htm": [ [ "/resource-timing/resource_TAO_null.htm", @@ -396914,6 +397138,12 @@ {} ] ], + "shadow-dom/input-type-radio.html": [ + [ + "/shadow-dom/input-type-radio.html", + {} + ] + ], "shadow-dom/leaktests/get-elements.html": [ [ "/shadow-dom/leaktests/get-elements.html", @@ -430618,12 +430848,6 @@ {} ] ], - "webdriver/tests/actions/bounds.py": [ - [ - "/webdriver/tests/actions/bounds.py", - {} - ] - ], "webdriver/tests/actions/control_click.py": [ [ "/webdriver/tests/actions/control_click.py", @@ -430666,6 +430890,12 @@ {} ] ], + "webdriver/tests/actions/none.py": [ + [ + "/webdriver/tests/actions/none.py", + {} + ] + ], "webdriver/tests/actions/pointer_origin.py": [ [ "/webdriver/tests/actions/pointer_origin.py", @@ -430688,6 +430918,12 @@ } ] ], + "webdriver/tests/actions/validity.py": [ + [ + "/webdriver/tests/actions/validity.py", + {} + ] + ], "webdriver/tests/add_cookie/add.py": [ [ "/webdriver/tests/add_cookie/add.py", @@ -431378,7 +431614,7 @@ "support" ], ".taskcluster.yml": [ - "755fc2eca36d683a8f95d017142cffe7025f51d8", + "f36523ed301c505bc3f9b1fa5979f866008cde36", "support" ], ".travis.yml": [ @@ -546677,6 +546913,90 @@ "25fe602d1c449ad1c983b049208a6a23dc746f41", "reftest" ], + "css/css-layout-api/child-constraints/available-block-size-htb-vrl.https.html": [ + "0da20ee837155760bda86679355053bae821ac37", + "reftest" + ], + "css/css-layout-api/child-constraints/available-block-size-invalid.https.html": [ + "dfbc812556fbf606734755781fb8d25600964d25", + "reftest" + ], + "css/css-layout-api/child-constraints/available-block-size-vrl-htb.https.html": [ + "c8e84ae51703800e1d2031fc1b4efbe61330a528", + "reftest" + ], + "css/css-layout-api/child-constraints/available-inline-size-htb-htb.https.html": [ + "94cf75fc93fc84c0954917ac2784f1216d84ff19", + "reftest" + ], + "css/css-layout-api/child-constraints/available-inline-size-invalid.https.html": [ + "136d13fa703a55a0432e3ab6d50556073175b8e9", + "reftest" + ], + "css/css-layout-api/child-constraints/available-inline-size-vrl-vrl.https.html": [ + "392a6b514228a03c04c19e83d163e76fc43036fb", + "reftest" + ], + "css/css-layout-api/child-constraints/available-size-for-percentages-htb-htb.https.html": [ + "960fb7d7dcfb1da96b1a925090e5c58d1c4a7b4a", + "reftest" + ], + "css/css-layout-api/child-constraints/available-size-for-percentages-htb-vrl.https.html": [ + "0e9b5570abeb52ff833e0549d8e8464a02482c07", + "reftest" + ], + "css/css-layout-api/child-constraints/available-size-for-percentages-invalid.https.html": [ + "62efe992fb3ed4029d63da14d6525e9d0964919d", + "reftest" + ], + "css/css-layout-api/child-constraints/available-size-for-percentages-vrl-htb.https.html": [ + "1352ea917835c37fca3e9740349262c2f2139c59", + "reftest" + ], + "css/css-layout-api/child-constraints/available-size-for-percentages-vrl-vrl.https.html": [ + "9c30c212fae3a7add6dc3c56f7acae26b969e231", + "reftest" + ], + "css/css-layout-api/child-constraints/fixed-block-size-vrl.https.html": [ + "dedcaa0ee83c3cbc7be138024290a3281a76b9ed", + "reftest" + ], + "css/css-layout-api/child-constraints/fixed-block-size.https.html": [ + "eea540ca59f2d7dd312b0ff723d4c3b6cee9e954", + "reftest" + ], + "css/css-layout-api/child-constraints/fixed-inline-size-vrl.https.html": [ + "22bd3e7c1258d729d901c64ab6d854ee42e309a8", + "reftest" + ], + "css/css-layout-api/child-constraints/fixed-inline-size.https.html": [ + "0a05a46fe69f85836c1a125e63b9dc579a343a0b", + "reftest" + ], + "css/css-layout-api/child-constraints/percentage-size-htb-htb.https.html": [ + "99224c73f5b5fc676fd16146c6f1b5877cb555fa", + "reftest" + ], + "css/css-layout-api/child-constraints/percentage-size-htb-vrl.https.html": [ + "8116d5a9b0881364246156962d9ec2e4df65114b", + "reftest" + ], + "css/css-layout-api/child-constraints/percentage-size-invalid.https.html": [ + "932380a6163ed71c825675424563c3b0180c4eaa", + "reftest" + ], + "css/css-layout-api/child-constraints/percentage-size-quirks-mode.https.html": [ + "39a360d079d3deab244305a26a5ab4ca905ff796", + "reftest" + ], + "css/css-layout-api/child-constraints/percentage-size-vrl-htb.https.html": [ + "70640ef0b29da555f70585eb5b6042ede9a47b0c", + "reftest" + ], + "css/css-layout-api/child-constraints/percentage-size-vrl-vrl.https.html": [ + "07132579621deb3c10650ab5172fdd5e24ec6076", + "reftest" + ], "css/css-layout-api/computed-style-layout-function.https.html": [ "d115009c6ca43dc5b2d72934cfe3cf3dbe5af626", "testharness" @@ -546945,38 +547265,6 @@ "40513f0acf39d25c759330b6c0e3bfc8648741cf", "reftest" ], - "css/css-layout-api/perform-child-layout-available-inline-size-htb-htb.https.html": [ - "bfe8a99e7fee7f270bc8e9f2cbed6f06924c4bea", - "reftest" - ], - "css/css-layout-api/perform-child-layout-available-inline-size-htb-vrl.https.html": [ - "602536c581450f1cb9a96465f424c3065e59760c", - "reftest" - ], - "css/css-layout-api/perform-child-layout-available-inline-size-vrl-htb.https.html": [ - "4759c1b69d0f259f06a335c04d6ee028ad94097c", - "reftest" - ], - "css/css-layout-api/perform-child-layout-available-inline-size-vrl-vrl.https.html": [ - "7bfa44db67b819307f0dff4d9f86e2350068161a", - "reftest" - ], - "css/css-layout-api/perform-child-layout-fixed-block-size-vrl.https.html": [ - "43dd483b3f9f9938a8ecbb62d9a02918f5ada3ec", - "reftest" - ], - "css/css-layout-api/perform-child-layout-fixed-block-size.https.html": [ - "c714e1ff9754dd48ece9ea17aeece8349cab19c8", - "reftest" - ], - "css/css-layout-api/perform-child-layout-fixed-inline-size-vrl.https.html": [ - "ba86d2c184d3300d1a39cfd419b113bcbd188f1a", - "reftest" - ], - "css/css-layout-api/perform-child-layout-fixed-inline-size.https.html": [ - "a2a422bd6110ba8d4dc300882117e220ba5b8599", - "reftest" - ], "css/css-layout-api/position-fragment-htb-ltr.https.html": [ "b09cb7067d5630d7398cdf9e583b01581df1b910", "reftest" @@ -547034,7 +547322,7 @@ "support" ], "css/css-layout-api/support/layout-child-sizes-worklet.js": [ - "7531f69b1b6224047f26a93af09cd22f9190b4bf", + "28546d6e422d42c134f32d78282b5cd20597a85f", "support" ], "css/css-layout-api/support/layout-child-worklet.js": [ @@ -550506,7 +550794,7 @@ "testharness" ], "css/css-properties-values-api/registered-properties-inheritance.html": [ - "057cd8ca7e1290513f77cc9b80856bf4c4faa773", + "8f9eafee19e5c2500811f05723902808a27760df", "testharness" ], "css/css-properties-values-api/registered-property-computation.html": [ @@ -557002,75 +557290,75 @@ "reftest" ], "css/css-text/i18n/ja/css-text-line-break-ja-cj-loose.html": [ - "6d8fbf9ca067502f3c13cbfeb0005ae8ebae1ba5", + "cf7c5a44415f3514598bbf386ac6fadebd63a2c5", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-cj-normal.html": [ - "38f8e733957fa80282b387c9f9ae587bc52d77e9", + "7c701c8546d3d057d9fdf65c12bd4a43ac68dc64", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-cj-strict.html": [ - "37df9b50cd2d26e4a0d8d2e8b3a077cdb95da9bd", + "9fe18046fcd897eb3c7acd66785e9d8afea7075c", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-cpm-loose.html": [ - "fb933ab51bca39bc73e156e77e77f626efc0c250", + "6120e62cc9b39b0197b171b51b6e45937f5a1684", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html": [ - "4fb208b7a343c5bb49c458a829e2f65720d2e337", + "1e1d4bb683b5c87d609418640d6bd000f2545d9c", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-cpm-strict.html": [ - "6a84bdd48b085fa21cc67e312a231edc37b426d7", + "ddf3c2cc9609e650a5f3816a61a5eb6acd71633d", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-hyphens-loose.html": [ - "a8b73b5e0a770e9c3ff958135c181dbaf229c971", + "647bfc8a675942d299647c32e3730fe61d2afa33", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-hyphens-normal.html": [ - "fd69a1ba2be6add6958193e95f3929d5f097c159", + "5e22458f9351669b38d90632f475ca25682db2bb", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-hyphens-strict.html": [ - "cd30e0e61451696a1304e7868454d8c48f9f172e", + "3db8bb8804daade32849334e21cea38e758671fa", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-in-loose.html": [ - "580862e0ad99610c0afc303c2a646820bd0ce0f4", + "09c5758d79aa386817ac2e7e6c7a162399f8790d", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-in-normal.html": [ - "49f401a27415d5761d905ca2f876b4abf1ac5644", + "8bf3aa9016d1f213f340a5c4a7fa0a09a8b6ea7d", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-in-strict.html": [ - "499609c846c86aca09191788095c57bb2b3899b3", + "3c14e183d84bc048954a9474b07aae01e87f12b9", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-iteration-loose.html": [ - "94012593a4b57702d0312800ad8d1aa0250dd959", + "dbf77a0f806410c8d6fb95c3ce260a57c5716a21", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-iteration-normal.html": [ - "b65c7da78a84a60708c3081a5e0075aa095c53d6", + "ecdcdc31733b3b765fbb087a5c22c1dfde98531a", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-iteration-strict.html": [ - "1c022f71e288c07be3d24a137bfa86719cb80e58", + "3b2a2ee9eb19b49c17c3ead23cdae9d84ef36961", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-po-loose.html": [ - "0ffed1f18dd9fbcb3b0b5a8b7e39494fd912fa18", + "795cb0230b6eaed306a621a7b9ef7c2cb626a04f", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-po-normal.html": [ - "ce3a30f1cb6a39e1fe868c0916e308cab409a94d", + "7c591eb936a13a8a4de8a83ec5d40fe07de183b2", "testharness" ], "css/css-text/i18n/ja/css-text-line-break-ja-po-strict.html": [ - "95ffcf794127f77dcc5a68782fdbc2b3c758197d", + "c41ea732a8919954ebd77fe76c883f9e6379f08e", "testharness" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-001-ref.html": [ @@ -557790,63 +558078,63 @@ "support" ], "css/css-text/i18n/zh/css-text-line-break-zh-cpm-loose.html": [ - "f3eb0442e9d7e6c5734934c7f95c03aec7c564aa", + "b9f81eeecf5b0341da049f6f1b0eabec29b4f601", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html": [ - "9511727e9818e5f8fb29416c44ec25add0260d8a", + "7d2af701422cad0e054aead632ae24c2dae9ffe9", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-cpm-strict.html": [ - "d1cd8bf9017ebafaaac29ec625010b1def1aa178", + "069212e628e376276159795c1da4335c76e6f141", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-hyphens-loose.html": [ - "b897e9b671e2deb456934b7610309a67bd44e1d6", + "70ebdc0898b19e8af303f2a7c3769f8305946ca6", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-hyphens-normal.html": [ - "30be2668fea55a538fa4decf418f4dd67209d748", + "8fd631efb3f2dcad9a44fbef8fb722a27dc1cd25", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-hyphens-strict.html": [ - "f3278c3f26f72518c1771ea2275e7a85a3be10dc", + "91f261018b174d352a50829cc9e830201893d660", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-in-loose.html": [ - "b137a7344e35a0da6b1094e07d9ec52ffe28dd5a", + "4f163719ae7ef7d95d360c68db9e84da660bef5b", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-in-normal.html": [ - "d5fb7c99ffd57ea4457a74444a4a3b7ae91b2ea0", + "bb0df2e8fc1dea46c97f7c76bcaab59631374b5c", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-in-strict.html": [ - "fa47a89381700fa0d3fba38f5336cdc608bb170f", + "965d5133fab10083f6772502f7e4b7855dedfa07", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-iteration-loose.html": [ - "4c802ca8cd677dddd1853d9bfb883633ccfe95f9", + "72c476cdce7db0d2e97cdb4a6c38ccf53590bf64", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-iteration-normal.html": [ - "d45c7849468350cef5c07609d2619ba372f31328", + "92ac2e020911c3d6dc2b9a9df6c7816e07d46521", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-iteration-strict.html": [ - "0c29ec0705c237d55b7a6c5c897e4b86fe2f6f25", + "22ac4baf03bf59f9f0a4623bcd83a004a33f1db9", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-po-loose.html": [ - "ab3c66a4194db1973b75f57eb79588d8af9bbad5", + "0e0280505fa2219b6c0ac7a1e0ef0838e72cc228", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-po-normal.html": [ - "7144f4f810c891826832149b6e5a27ed7619216f", + "490e4067a4042b81304d8b6c4925da7371142762", "testharness" ], "css/css-text/i18n/zh/css-text-line-break-zh-po-strict.html": [ - "d1cf5151391222130a7e9781bb172c5ddca12127", + "ec44c093a32decdc7bd39b77d7409fff36b62f4b", "testharness" ], "css/css-text/letter-spacing/letter-spacing-control-chars-001.html": [ @@ -561441,6 +561729,14 @@ "752888eaf76630ae9835dd444c4941793ecf53cc", "reftest" ], + "css/css-transforms/preserve3d-button-ref.html": [ + "e5e3c1ebfcdd7c832a211d17ac2f1ed6f4116252", + "support" + ], + "css/css-transforms/preserve3d-button.html": [ + "544bb2496638a52915f7c97a238ccb053b4e884e", + "reftest" + ], "css/css-transforms/reference/backface-visibility-hidden-ref.html": [ "6a3e305e5c0c7fca6c8d53574b7a09eb21afb6cc", "support" @@ -577469,6 +577765,10 @@ "70343cb42530147fe08575c7cd69912be8944213", "testharness" ], + "css/cssom-view/scrollIntoView-svg-shape.html": [ + "7af5de5ff8aceb96867815354571314afd4cb07c", + "testharness" + ], "css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html": [ "4d67b4de3d4c754259213976aa8401bf13408a68", "testharness" @@ -578805,6 +579105,18 @@ "3d8118b387d938b588e8e88ad5ec87a5343e4f72", "reftest" ], + "css/filter-effects/svg-unknown-input-001.html": [ + "7789f2a9af4f1492fa6db36b53a72ada151f61d5", + "reftest" + ], + "css/filter-effects/svg-unknown-input-002.html": [ + "cb07b654045836b12d22d97e6ffc6c0ae2250138", + "reftest" + ], + "css/filter-effects/svg-unknown-input-ref.html": [ + "1fff2a6175cfe1956ff2c451aece45ec73345d81", + "support" + ], "css/geometry/DOMMatrix-001.html": [ "a8a357bff606925aaa95dce6c4642b81bd8c88ea", "testharness" @@ -590934,7 +591246,7 @@ "support" ], "docs/_writing-tests/testdriver-tutorial.md": [ - "7bf9e9aa9e6c6c7a8c057c9dbe4151194ca3edd0", + "33c4fe31a40da2464b934e09ca711089d1f917aa", "support" ], "docs/_writing-tests/testdriver.md": [ @@ -602486,7 +602798,7 @@ "testharness" ], "html/dom/interfaces.https.html": [ - "6b7e37bf1fe25e21919c89e700d2c4078b7c9880", + "15cee69f64ecef6d17bf2a92580e20462beff952", "testharness" ], "html/dom/interfaces.worker.js": [ @@ -617786,7 +618098,7 @@ "support" ], "interfaces/CSP.idl": [ - "64cba00e956ea1774b0d0342d23ee79b0890430e", + "46fae543cb2d96dfdc0ee03d0470c53464564a80", "support" ], "interfaces/CSS-Parser-API.idl": [ @@ -617826,7 +618138,7 @@ "support" ], "interfaces/SVG.idl": [ - "01d87b862b4167f79c43ed1b91ef772f5a78f5fe", + "4c1c4855f27af4a330565703277f7081c2860c86", "support" ], "interfaces/WebCryptoAPI.idl": [ @@ -618134,11 +618446,11 @@ "support" ], "interfaces/payment-method-basic-card.idl": [ - "00d6ad1f0a28decdc867023d13f72c45b7d1778f", + "2019aa1166935b9bf8f1ad3a5d62183d18b0a682", "support" ], "interfaces/payment-request.idl": [ - "e3afbd47db3b4d2c85a1e53599862b2cb273f828", + "d930b57291e5301e4056d30192726023e9306512", "support" ], "interfaces/performance-timeline.idl": [ @@ -618150,7 +618462,7 @@ "support" ], "interfaces/picture-in-picture.idl": [ - "dd379c8c0a07b8120895b0be917b246892b6e87b", + "c7bc249dffceac3b3c8eebe332a0940a547dec31", "support" ], "interfaces/pointerevents-extension.idl": [ @@ -618290,7 +618602,7 @@ "support" ], "interfaces/webaudio.idl": [ - "14bb62b8aaaf97b65515c0101711e3d4a249170b", + "4f1914dbae23a5619b72b92b761bd146d1aaacf9", "support" ], "interfaces/webauthn.idl": [ @@ -618318,7 +618630,7 @@ "support" ], "interfaces/webrtc-stats.idl": [ - "4df720a0fc183389be33d4c3fa7089e70e9e1543", + "b2bf38e9fd45f81598bbdef1daef789cbdd75977", "support" ], "interfaces/webrtc.idl": [ @@ -629970,7 +630282,7 @@ "support" ], "payment-handler/basic-card.js": [ - "86fcea711c5cea4a726aded727b40fda7cacb770", + "c78f24b017f739eb202cc235aa37ae4a4f805472", "support" ], "payment-handler/basic-card.json": [ @@ -630030,7 +630342,7 @@ "testharness" ], "payment-handler/payment-request-event.https.html": [ - "4e9cc21a1e52159e3446097b47f3dde730d373e4", + "fb51c2eeb54ae695272598e03e78a66bde7d41b2", "testharness" ], "payment-handler/register-and-activate-service-worker.js": [ @@ -630054,7 +630366,7 @@ "support" ], "payment-method-basic-card/empty-data-manual.https.html": [ - "898da6a2d41bb43c3b75f34eabcf69020fb6936b", + "4b517159df49d97f459cabd0dc6599fbb4860e0d", "manual" ], "payment-method-basic-card/idlharness.window.js": [ @@ -630090,7 +630402,7 @@ "testharness" ], "payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html": [ - "65d56e7490111f6fc9e91f4470379fc89ae42972", + "edde533be6b2e49415b81ae4df167139117a0d7c", "manual" ], "payment-request/PaymentItem/type_member.https.html": [ @@ -630146,7 +630458,7 @@ "manual" ], "payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html": [ - "cdc8d353a9b458b123dd2598ed34553a30dc4f23", + "356f30da6b54bef4136a2b3a806313bf4bb1f766", "manual" ], "payment-request/algorithms-manual.https.html": [ @@ -630210,7 +630522,7 @@ "manual" ], "payment-request/historical.https.html": [ - "b7880a2dee880d5274fe9c8f0162d093e4051857", + "cbd29d4cff8698365c05acfe75504de5ec7e1aec", "testharness" ], "payment-request/idlharness.https.window.js": [ @@ -630478,7 +630790,7 @@ "testharness" ], "picture-in-picture/enter-picture-in-picture.html": [ - "fc109e4f5a49634062c913a6226dfb963fcd23a5", + "9df2bfabcf272a25a6f5177c128e095f8b970427", "testharness" ], "picture-in-picture/exit-picture-in-picture.html": [ @@ -639610,19 +639922,23 @@ "testharness" ], "resource-timing/resource_TAO_match_origin.htm": [ - "3ab239e90bbf56aa1f4288e880c42466deef47c2", + "4793dbf91d65f823885cdf38fcab90f83da0cf7a", "testharness" ], "resource-timing/resource_TAO_match_wildcard.htm": [ - "8b07b46672e6077f6d4d0c045c4f09be70c8c15f", + "fe812f86774443cc40fc0abf40418fa95fda4763", "testharness" ], "resource-timing/resource_TAO_multi.htm": [ - "3b6c2e6b267b7114f7f90e32f396b5b69a0f64af", + "bb774abc6021a4abd041076afeee3e9d38acc7e0", + "testharness" + ], + "resource-timing/resource_TAO_multi_wildcard.html": [ + "844896087d45a45369243ce80987876970f40620", "testharness" ], "resource-timing/resource_TAO_null.htm": [ - "419de693e1f99370da4cae6ff826ae3807fe3e7a", + "1a86e09c56753f0bb4319637a601b0acb09ac62e", "testharness" ], "resource-timing/resource_TAO_origin.htm": [ @@ -639630,15 +639946,15 @@ "testharness" ], "resource-timing/resource_TAO_origin_uppercase.htm": [ - "0b42166c0ee844da6fa3d52e803c59dfa4d6f464", + "1a03c71410643866b9073db5d7b4c3402ea47fec", "testharness" ], "resource-timing/resource_TAO_space.htm": [ - "f3cbdc62c016fc48a770e1b71a644e176dfdd374", + "9efefe15a4f1d43d2b0f16e9636759338a4c2afc", "testharness" ], "resource-timing/resource_TAO_wildcard.htm": [ - "407c642d9d461d5a039cc722368a3e328c2387aa", + "df278534cc49d46bad7967084b011cf6e93e3876", "testharness" ], "resource-timing/resource_TAO_zero.htm": [ @@ -639730,7 +640046,7 @@ "testharness" ], "resource-timing/resources/TAOResponse.py": [ - "dcd75a415457333cf6188330115d021f0d7c31c9", + "060f9b0c9a7dcd12473a10561de9c80a63694328", "support" ], "resource-timing/resources/all_resource_types.htm": [ @@ -639789,6 +640105,10 @@ "0696dbe3e502def905cece7cdd5599decb3ad9dc", "support" ], + "resource-timing/resources/iframe_TAO_multi_wildcard.html": [ + "977df01007d56d85d4c4726c4c501d7e2c21387c", + "support" + ], "resource-timing/resources/iframe_TAO_null.html": [ "7d47a2076f87dfa5e787e3d4072b3a513330e524", "support" @@ -640034,7 +640354,7 @@ "support" ], "resources/idlharness.js": [ - "746f3e65503fe8587e6f7d01e593cbdccd7ab425", + "00c59eda8adfeb8a1b5b8ab1ef60186517161ea4", "support" ], "resources/idlharness.js.headers": [ @@ -642922,7 +643242,7 @@ "testharness" ], "service-workers/service-worker/fetch-request-xhr-sync.https.html": [ - "f1e4fecc1b35ba18b89c5710de5efd9f6c1183c0", + "ec27fb898343e70ab24486983212ef6b5744cf16", "testharness" ], "service-workers/service-worker/fetch-request-xhr.https.html": [ @@ -642986,7 +643306,7 @@ "testharness" ], "service-workers/service-worker/interfaces-window.https.html": [ - "85d7f6467ee98905b127a075d4e2a2d331395e79", + "2c131b3c93a600c65abd5d6193343262126e808f", "testharness" ], "service-workers/service-worker/invalid-blobtype.https.html": [ @@ -643170,7 +643490,7 @@ "testharness" ], "service-workers/service-worker/onactivate-script-error.https.html": [ - "6c16357f3cc5aba181ee0798ac9fadc2388c3f3a", + "f5e80bb9a456bc57f2a821e1fd69114e6ae8638a", "testharness" ], "service-workers/service-worker/oninstall-script-error.https.html": [ @@ -643202,7 +643522,7 @@ "testharness" ], "service-workers/service-worker/postmessage.https.html": [ - "3d73afe9796114f42e614292ef4b180dd78cdee5", + "b1f3342a8c14e707097bf6c90e5f4fee5fd19a4a", "testharness" ], "service-workers/service-worker/ready.https.html": [ @@ -643274,7 +643594,7 @@ "testharness" ], "service-workers/service-worker/registration-service-worker-attributes.https.html": [ - "8fd566dadc62a78ef0836bbc63000473f884d7c7", + "f7b52d5ddced18613ca225386bb57f28b9bacd62", "testharness" ], "service-workers/service-worker/registration-updateviacache.https.html": [ @@ -644398,7 +644718,7 @@ "support" ], "service-workers/service-worker/resources/worker-testharness.js": [ - "fdf5868e33e2fe35344818ec3f1a2e068b90996d", + "73e97be1eaa44bbe96f8801e0c76c37772ac7d1f", "support" ], "service-workers/service-worker/resources/worker_interception_redirect_webworker.py": [ @@ -644450,7 +644770,7 @@ "testharness" ], "service-workers/service-worker/skip-waiting-using-registration.https.html": [ - "a9c398a260676d976f0aac0ca495aa1a6c94e631", + "67838acff46698576936fb33b22c594cb3cd10d0", "testharness" ], "service-workers/service-worker/skip-waiting-without-client.https.html": [ @@ -644458,7 +644778,7 @@ "testharness" ], "service-workers/service-worker/skip-waiting-without-using-registration.https.html": [ - "dbe2bde78d3c0b4bd68967188d668c455714121f", + "705fe8355e125c99c04abd7dfb899d8536ed6851", "testharness" ], "service-workers/service-worker/skip-waiting.https.html": [ @@ -644474,7 +644794,7 @@ "reftest" ], "service-workers/service-worker/synced-state.https.html": [ - "c4a9b6655cb0660a78a27c523591c4953d3b77a9", + "0e9f63a9a2e528e7ffb8f9913edffc8e0294ad98", "testharness" ], "service-workers/service-worker/uncontrolled-page.https.html": [ @@ -644889,6 +645209,10 @@ "b571534eb0d6f3f57cfbec3e706648b19848b6d6", "testharness" ], + "shadow-dom/input-type-radio.html": [ + "9c90fcf0603222785aa81990fb2b09511ff6ba86", + "testharness" + ], "shadow-dom/layout-slot-no-longer-assigned.html": [ "dfcac99da023ec2bbd94835f71efaef952a62341", "reftest" @@ -655186,7 +655510,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executormarionette.py": [ - "70054b57294f8ae50ceda10f95efebbebec34538", + "8aea59cc8f6ceb9adc57ca42a91cefea6f321b5c", "support" ], "tools/wptrunner/wptrunner/executors/executoropera.py": [ @@ -655222,7 +655546,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/protocol.py": [ - "71fc3c9a8f651913e53266f181ef2161ac91c97e", + "f8292ff5ec118b8f3d80da96bcd07586bedba45a", "support" ], "tools/wptrunner/wptrunner/executors/pytestrunner/__init__.py": [ @@ -655322,7 +655646,7 @@ "support" ], "tools/wptrunner/wptrunner/testrunner.py": [ - "90f7e4615e078840f9804f791422f9f2f3464a72", + "7e386b881d4c83a93d2543b7e5b9afd01623a5bc", "support" ], "tools/wptrunner/wptrunner/tests/__init__.py": [ @@ -655406,7 +655730,7 @@ "support" ], "tools/wptrunner/wptrunner/wptcommandline.py": [ - "0075ad9096201a04c5342ad92aab59ab8dcf434e", + "d25e561ad195ef3de91a42871820ad372269f016", "support" ], "tools/wptrunner/wptrunner/wptlogging.py": [ @@ -657986,7 +658310,7 @@ "testharness" ], "wasm/jsapi/constructor/instantiate.any.js": [ - "e90f21e28ebf478c7af7d40c8744fba9e5f48720", + "5da6bd58dfc3463bdead679143566cfaeb8bf281", "testharness" ], "wasm/jsapi/constructor/validate.any.js": [ @@ -658014,7 +658338,7 @@ "testharness" ], "wasm/jsapi/instance/constructor.any.js": [ - "f9bd06ac8e95e0f4dc2ce96560529fad9bf2095b", + "e6a0450202e94baa82eb4797fed6a7c248ed00a7", "testharness" ], "wasm/jsapi/instance/exports.any.js": [ @@ -658025,8 +658349,12 @@ "08dcb14a50d04f6db196626ddb93f2b50da8f055", "testharness" ], + "wasm/jsapi/instanceTestFactory.js": [ + "1663ffb34699b7b9ebed6bb6aced99b84da0b4d4", + "support" + ], "wasm/jsapi/interface.any.js": [ - "5d76ac56ec5fafde8dde3924df863a2694bd6691", + "98c4a1d781b7d77709a7f1df5adb3c756648fbd3", "testharness" ], "wasm/jsapi/memory/buffer.any.js": [ @@ -658034,7 +658362,7 @@ "testharness" ], "wasm/jsapi/memory/constructor.any.js": [ - "f9907ca6104d8ec76861e43b6b981042d86fb865", + "5caf7cc8bb98eb4f47766011d31e7bde5c126edd", "testharness" ], "wasm/jsapi/memory/grow.any.js": [ @@ -658066,7 +658394,7 @@ "testharness" ], "wasm/jsapi/table/assertions.js": [ - "dde2fd770904207a1f9f287fa48d82954a418f2e", + "c88972b4ebdcd760b2a441835c2c9eb31dabfea8", "support" ], "wasm/jsapi/table/constructor.any.js": [ @@ -658074,7 +658402,7 @@ "testharness" ], "wasm/jsapi/table/get-set.any.js": [ - "2bb43a9308d732b5b6fa689c181ac411880c3733", + "66c41340c2096602c81c1ef3ae8acbfb9f75d98f", "testharness" ], "wasm/jsapi/table/grow.any.js": [ @@ -659861,12 +660189,8 @@ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", "support" ], - "webdriver/tests/actions/bounds.py": [ - "e218c851e75220cea0c296461dad1d8427619afb", - "wdspec" - ], "webdriver/tests/actions/conftest.py": [ - "47aad72ba05d4e0c7afe989030c91c7824cb0b07", + "55cecd117828e525ac5712176f6f31787b301226", "support" ], "webdriver/tests/actions/control_click.py": [ @@ -659897,6 +660221,10 @@ "ad179673176b9d8ae90837c7cf09d33c75780a75", "wdspec" ], + "webdriver/tests/actions/none.py": [ + "07944a68ffeedfdbd5adac44244f6435b5c5c6cb", + "wdspec" + ], "webdriver/tests/actions/pointer_origin.py": [ "cad59f0a13b1f584ea45226f061be0038b9de220", "wdspec" @@ -659929,6 +660257,10 @@ "6f844cd255a075d31caf1c19957af3d6ac833778", "support" ], + "webdriver/tests/actions/validity.py": [ + "ce8a0d60f7df192e21c6abbad1871bb0ac8f5f78", + "wdspec" + ], "webdriver/tests/add_cookie/__init__.py": [ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", "support" diff --git a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini index b07393a05bc..decfd130b16 100644 --- a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini +++ b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini @@ -71,3 +71,6 @@ [bottom intermediate] expected: FAIL + [outline-width end] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-svg-shape.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-svg-shape.html.ini new file mode 100644 index 00000000000..d4a6f6b40d1 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-svg-shape.html.ini @@ -0,0 +1,10 @@ +[scrollIntoView-svg-shape.html] + [scrollIntoView on an SVG shape element, rotated] + expected: FAIL + + [scrollIntoView on an SVG shape element, geometry] + expected: FAIL + + [scrollIntoView on an SVG shape element, translated] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini index 3951cd266d5..0d630fb814a 100644 --- a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini +++ b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini @@ -1,4 +1,5 @@ [fetch-in-iframe.html] + expected: CRASH [Untitled] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini deleted file mode 100644 index 87b07c3e670..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_1.html] - [Multiple history traversals from the same task] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini index 51f8272a6de..dc2e45516de 100644 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini @@ -1,4 +1,4 @@ -[traverse_the_history_3.html] +[traverse_the_history_5.html] [Multiple history traversals, last would be aborted] expected: FAIL diff --git a/tests/wpt/metadata/html/dom/interfaces.https.html.ini b/tests/wpt/metadata/html/dom/interfaces.https.html.ini index b0badc65a3a..0074b8bf854 100644 --- a/tests/wpt/metadata/html/dom/interfaces.https.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.https.html.ini @@ -6004,12 +6004,6 @@ [Window interface: operation blur()] expected: FAIL - [Window interface: attribute opener] - expected: FAIL - - [Window interface: operation open(USVString, DOMString, DOMString)] - expected: FAIL - [Window interface: attribute applicationCache] expected: FAIL @@ -6079,18 +6073,9 @@ [Window interface: window must inherit property "frames" with the proper type] expected: FAIL - [Window interface: window must inherit property "opener" with the proper type] - expected: FAIL - [Window interface: window must inherit property "parent" with the proper type] expected: FAIL - [Window interface: window must inherit property "open(USVString, DOMString, DOMString)" with the proper type] - expected: FAIL - - [Window interface: calling open(USVString, DOMString, DOMString) on window with too few arguments must throw TypeError] - expected: FAIL - [Window interface: window must inherit property "applicationCache" with the proper type] expected: FAIL @@ -6139,15 +6124,6 @@ [html interfaces] expected: FAIL - [Partial interface Document[2\]: original interface defined] - expected: FAIL - - [Partial interface Document: original interface defined] - expected: FAIL - - [idl_test setup] - expected: FAIL - [interfaces.https.html?include=HTML.*] [HTML IDL tests] @@ -6531,9 +6507,6 @@ [HTMLModElement interface: document.createElement("del") must inherit property "dateTime" with the proper type] expected: FAIL - [HTMLImageElement interface: attribute srcset] - expected: FAIL - [HTMLImageElement interface: attribute sizes] expected: FAIL @@ -6546,9 +6519,6 @@ [HTMLImageElement interface: attribute lowsrc] expected: FAIL - [HTMLImageElement interface: document.createElement("img") must inherit property "srcset" with the proper type] - expected: FAIL - [HTMLImageElement interface: document.createElement("img") must inherit property "sizes" with the proper type] expected: FAIL @@ -6561,9 +6531,6 @@ [HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type] expected: FAIL - [HTMLImageElement interface: new Image() must inherit property "srcset" with the proper type] - expected: FAIL - [HTMLImageElement interface: new Image() must inherit property "sizes" with the proper type] expected: FAIL @@ -9774,15 +9741,6 @@ [html interfaces] expected: FAIL - [Partial interface Document[2\]: original interface defined] - expected: FAIL - - [Partial interface Document: original interface defined] - expected: FAIL - - [idl_test setup] - expected: FAIL - [interfaces.https.html?exclude=(Document|Window|HTML.*)] [HTML IDL tests] @@ -11417,12 +11375,216 @@ [html interfaces] expected: FAIL - [Partial interface Document[2\]: original interface defined] + [TextMetrics interface: operation getBaselines()] + expected: FAIL + + [SVGElement interface: attribute onmouseout] + expected: FAIL + + [SVGElement interface: attribute ondrop] + expected: FAIL + + [SVGElement interface: attribute onreset] + expected: FAIL + + [SVGElement interface: attribute oncontextmenu] + expected: FAIL + + [SVGElement interface: attribute ondragend] + expected: FAIL + + [SVGElement interface: attribute onauxclick] + expected: FAIL + + [SVGElement interface: attribute ondragleave] + expected: FAIL + + [SVGElement interface: attribute onblur] + expected: FAIL + + [SVGElement interface: attribute onmousemove] + expected: FAIL + + [SVGElement interface: attribute onended] + expected: FAIL + + [SVGElement interface: operation blur()] + expected: FAIL + + [SVGElement interface: attribute onchange] + expected: FAIL + + [SVGElement interface: attribute tabIndex] + expected: FAIL + + [SVGElement interface: attribute onclose] + expected: FAIL + + [SVGElement interface: attribute oncancel] + expected: FAIL + + [SVGElement interface: attribute onabort] + expected: FAIL + + [SVGElement interface: attribute oncopy] + expected: FAIL + + [SVGElement interface: attribute oncanplaythrough] + expected: FAIL + + [SVGElement interface: attribute onplaying] + expected: FAIL + + [SVGElement interface: attribute onclick] + expected: FAIL + + [SVGElement interface: attribute onloadstart] + expected: FAIL + + [SVGElement interface: attribute onsecuritypolicyviolation] + expected: FAIL + + [SVGElement interface: attribute ontoggle] + expected: FAIL + + [SVGElement interface: attribute onload] + expected: FAIL + + [SVGElement interface: attribute onprogress] + expected: FAIL + + [SVGElement interface: attribute onplay] + expected: FAIL + + [SVGElement interface: attribute onsuspend] + expected: FAIL + + [SVGElement interface: attribute onwheel] + expected: FAIL + + [SVGElement interface: attribute onmouseup] + expected: FAIL + + [SVGElement interface: attribute oncanplay] + expected: FAIL + + [SVGElement interface: attribute onmouseleave] + expected: FAIL + + [SVGElement interface: attribute onwaiting] + expected: FAIL + + [SVGElement interface: attribute onseeked] + expected: FAIL + + [SVGElement interface: attribute onmouseenter] + expected: FAIL + + [SVGElement interface: attribute onstalled] + expected: FAIL + + [SVGElement interface: attribute onscroll] + expected: FAIL + + [SVGElement interface: attribute onloadedmetadata] + expected: FAIL + + [SVGElement interface: attribute onsubmit] + expected: FAIL + + [SVGElement interface: attribute ondragenter] + expected: FAIL + + [SVGElement interface: attribute oncut] + expected: FAIL + + [SVGElement interface: attribute onratechange] + expected: FAIL + + [SVGElement interface: attribute oninput] + expected: FAIL + + [SVGElement interface: attribute onpaste] + expected: FAIL + + [SVGElement interface: attribute onselect] + expected: FAIL + + [SVGElement interface: attribute ondragexit] + expected: FAIL + + [SVGElement interface: attribute onkeydown] + expected: FAIL + + [SVGElement interface: attribute ondurationchange] + expected: FAIL + + [SVGElement interface: attribute ondragstart] + expected: FAIL + + [SVGElement interface: attribute onloadend] + expected: FAIL + + [SVGElement interface: operation focus(FocusOptions)] + expected: FAIL + + [SVGElement interface: attribute onfocus] + expected: FAIL + + [SVGElement interface: attribute onresize] + expected: FAIL + + [SVGElement interface: attribute onerror] + expected: FAIL + + [SVGElement interface: attribute dataset] + expected: FAIL + + [SVGElement interface: attribute onpause] + expected: FAIL + + [SVGElement interface: attribute ontimeupdate] + expected: FAIL + + [SVGElement interface: attribute onemptied] + expected: FAIL + + [SVGElement interface: attribute onvolumechange] + expected: FAIL + + [SVGElement interface: attribute oninvalid] + expected: FAIL + + [SVGElement interface: attribute oncuechange] + expected: FAIL + + [SVGElement interface: attribute onseeking] + expected: FAIL + + [SVGElement interface: attribute onmouseover] + expected: FAIL + + [SVGElement interface: attribute onloadeddata] + expected: FAIL + + [SVGElement interface: attribute onkeypress] + expected: FAIL + + [SVGElement interface: attribute onmousedown] + expected: FAIL + + [SVGElement interface: attribute ondragover] + expected: FAIL + + [SVGElement interface: attribute ondblclick] + expected: FAIL + + [SVGElement interface: attribute nonce] expected: FAIL - [Partial interface Document: original interface defined] + [SVGElement interface: attribute onkeyup] expected: FAIL - [idl_test setup] + [SVGElement interface: attribute ondrag] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini new file mode 100644 index 00000000000..9e522297c94 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini @@ -0,0 +1,7 @@ +[toggleEvent.html] + [Calling open twice on 'details' fires only one toggle event] + expected: FAIL + + [Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element] + expected: FAIL + diff --git a/tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini new file mode 100644 index 00000000000..818a429ed39 --- /dev/null +++ b/tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini @@ -0,0 +1,283 @@ +[no-quirks.html] + [top: -\\31 .5] + expected: FAIL + + [bottom: -1A] + expected: FAIL + + [bottom: -1a] + expected: FAIL + + [top: @1] + expected: FAIL + + [top: "1a"] + expected: FAIL + + [top: @a] + expected: FAIL + + [bottom: "1"] + expected: FAIL + + [bottom: -/**/1] + expected: FAIL + + [top: +/**/1] + expected: FAIL + + [bottom: @1a] + expected: FAIL + + [top: 1\\31 ] + expected: FAIL + + [top: url('1')] + expected: FAIL + + [bottom: -\\31 ] + expected: FAIL + + [top: calc(1)] + expected: FAIL + + [top: \\31 ] + expected: FAIL + + [bottom: +1\\31 ] + expected: FAIL + + [bottom: 1\\31 .5] + expected: FAIL + + [bottom: #0001] + expected: FAIL + + [top: calc(2 * 2px)] + expected: FAIL + + [bottom: 1a] + expected: FAIL + + [bottom: A] + expected: FAIL + + [bottom: #01] + expected: FAIL + + [top: +\\31 .5] + expected: FAIL + + [bottom: #1] + expected: FAIL + + [top: -/**/1] + expected: FAIL + + [bottom: +\\31 .5] + expected: FAIL + + [bottom: \\31 ] + expected: FAIL + + [bottom: calc(1)] + expected: FAIL + + [top: #001] + expected: FAIL + + [top: +\\31 ] + expected: FAIL + + [bottom: +\\31 ] + expected: FAIL + + [top: +1.5] + expected: FAIL + + [top: +1\\31 ] + expected: FAIL + + [bottom: @a] + expected: FAIL + + [bottom: @1] + expected: FAIL + + [top: #1] + expected: FAIL + + [top: 1a] + expected: FAIL + + [bottom: +1a] + expected: FAIL + + [bottom: +1A] + expected: FAIL + + [bottom: "a"] + expected: FAIL + + [top: #00001] + expected: FAIL + + [bottom: -1\\31 .5] + expected: FAIL + + [top: "1"] + expected: FAIL + + [bottom: 1.5] + expected: FAIL + + [bottom: -\\31 .5] + expected: FAIL + + [bottom: url('1')] + expected: FAIL + + [bottom: -1.5] + expected: FAIL + + [top: \\31 .5] + expected: FAIL + + [bottom: "1a"] + expected: FAIL + + [bottom: calc(2 * 2px)] + expected: FAIL + + [bottom: +1\\31 .5] + expected: FAIL + + [bottom: 1\\31 ] + expected: FAIL + + [bottom: +/**/1] + expected: FAIL + + [bottom: #00001] + expected: FAIL + + [top: url(1)] + expected: FAIL + + [bottom: #001] + expected: FAIL + + [top: +1\\31 .5] + expected: FAIL + + [top: -1a] + expected: FAIL + + [top: -1A] + expected: FAIL + + [bottom: url(1)] + expected: FAIL + + [top: a] + expected: FAIL + + [top: A] + expected: FAIL + + [top: #000001] + expected: FAIL + + [top: 1] + expected: FAIL + + [top: 1\\31 .5] + expected: FAIL + + [bottom: a] + expected: FAIL + + [bottom: 1] + expected: FAIL + + [bottom: +1] + expected: FAIL + + [bottom: #000001] + expected: FAIL + + [bottom: +a] + expected: FAIL + + [bottom: +A] + expected: FAIL + + [top: 1.5] + expected: FAIL + + [top: +A] + expected: FAIL + + [top: +a] + expected: FAIL + + [top: +1] + expected: FAIL + + [top: -1.5] + expected: FAIL + + [top: -1\\31 .5] + expected: FAIL + + [top: +1a] + expected: FAIL + + [top: +1A] + expected: FAIL + + [top: @1a] + expected: FAIL + + [bottom: \\31 .5] + expected: FAIL + + [top: "a"] + expected: FAIL + + [top: #01] + expected: FAIL + + [bottom: +1.5] + expected: FAIL + + [bottom: -A] + expected: FAIL + + [bottom: -a] + expected: FAIL + + [bottom: -1\\31 ] + expected: FAIL + + [top: #0001] + expected: FAIL + + [bottom: -1] + expected: FAIL + + [top: -\\31 ] + expected: FAIL + + [top: -A] + expected: FAIL + + [top: -a] + expected: FAIL + + [top: -1] + expected: FAIL + + [top: -1\\31 ] + expected: FAIL + diff --git a/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini new file mode 100644 index 00000000000..2ed601c6ff4 --- /dev/null +++ b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini @@ -0,0 +1,283 @@ +[quirks.html] + [top: -\\31 .5] + expected: FAIL + + [bottom: -1A] + expected: FAIL + + [bottom: -1a] + expected: FAIL + + [top: @1] + expected: FAIL + + [top: "1a"] + expected: FAIL + + [top: @a] + expected: FAIL + + [bottom: "1"] + expected: FAIL + + [bottom: -/**/1] + expected: FAIL + + [top: +/**/1] + expected: FAIL + + [bottom: @1a] + expected: FAIL + + [top: 1\\31 ] + expected: FAIL + + [top: url('1')] + expected: FAIL + + [bottom: -\\31 ] + expected: FAIL + + [top: calc(1)] + expected: FAIL + + [top: \\31 ] + expected: FAIL + + [bottom: +1\\31 ] + expected: FAIL + + [bottom: 1\\31 .5] + expected: FAIL + + [bottom: #0001] + expected: FAIL + + [top: calc(2 * 2px)] + expected: FAIL + + [bottom: 1a] + expected: FAIL + + [bottom: A] + expected: FAIL + + [bottom: #01] + expected: FAIL + + [top: +\\31 .5] + expected: FAIL + + [bottom: #1] + expected: FAIL + + [top: -/**/1] + expected: FAIL + + [bottom: +\\31 .5] + expected: FAIL + + [bottom: \\31 ] + expected: FAIL + + [bottom: calc(1)] + expected: FAIL + + [top: #001] + expected: FAIL + + [top: +\\31 ] + expected: FAIL + + [bottom: +\\31 ] + expected: FAIL + + [top: +1.5] + expected: FAIL + + [top: +1\\31 ] + expected: FAIL + + [bottom: @a] + expected: FAIL + + [bottom: @1] + expected: FAIL + + [top: #1] + expected: FAIL + + [top: 1a] + expected: FAIL + + [bottom: +1a] + expected: FAIL + + [bottom: +1A] + expected: FAIL + + [bottom: "a"] + expected: FAIL + + [top: #00001] + expected: FAIL + + [bottom: -1\\31 .5] + expected: FAIL + + [top: "1"] + expected: FAIL + + [bottom: 1.5] + expected: FAIL + + [bottom: -\\31 .5] + expected: FAIL + + [bottom: url('1')] + expected: FAIL + + [bottom: -1.5] + expected: FAIL + + [top: \\31 .5] + expected: FAIL + + [bottom: "1a"] + expected: FAIL + + [bottom: calc(2 * 2px)] + expected: FAIL + + [bottom: +1\\31 .5] + expected: FAIL + + [bottom: 1\\31 ] + expected: FAIL + + [bottom: +/**/1] + expected: FAIL + + [bottom: #00001] + expected: FAIL + + [top: url(1)] + expected: FAIL + + [bottom: #001] + expected: FAIL + + [top: +1\\31 .5] + expected: FAIL + + [top: -1a] + expected: FAIL + + [top: -1A] + expected: FAIL + + [bottom: url(1)] + expected: FAIL + + [top: a] + expected: FAIL + + [top: A] + expected: FAIL + + [top: #000001] + expected: FAIL + + [top: 1] + expected: FAIL + + [top: 1\\31 .5] + expected: FAIL + + [bottom: a] + expected: FAIL + + [bottom: 1] + expected: FAIL + + [bottom: +1] + expected: FAIL + + [bottom: #000001] + expected: FAIL + + [bottom: +a] + expected: FAIL + + [bottom: +A] + expected: FAIL + + [top: 1.5] + expected: FAIL + + [top: +A] + expected: FAIL + + [top: +a] + expected: FAIL + + [top: +1] + expected: FAIL + + [top: -1.5] + expected: FAIL + + [top: -1\\31 .5] + expected: FAIL + + [top: +1a] + expected: FAIL + + [top: +1A] + expected: FAIL + + [top: @1a] + expected: FAIL + + [bottom: \\31 .5] + expected: FAIL + + [top: "a"] + expected: FAIL + + [top: #01] + expected: FAIL + + [bottom: +1.5] + expected: FAIL + + [bottom: -A] + expected: FAIL + + [bottom: -a] + expected: FAIL + + [bottom: -1\\31 ] + expected: FAIL + + [top: #0001] + expected: FAIL + + [bottom: -1] + expected: FAIL + + [top: -\\31 ] + expected: FAIL + + [top: -A] + expected: FAIL + + [top: -a] + expected: FAIL + + [top: -1] + expected: FAIL + + [top: -1\\31 ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini index 2e55f728d0a..207710f757c 100644 --- a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini +++ b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini @@ -5,10 +5,10 @@ [request.formData() with input: _charset_=windows-1252&test=%C2x] expected: FAIL - [response.formData() with input: a=b&c=d&] + [request.formData() with input: a&b&c] expected: FAIL - [response.formData() with input: a=b&c=d] + [request.formData() with input: a=b&c=d] expected: FAIL @@ -19,12 +19,9 @@ [request.formData() with input: _charset_=windows-1252&test=%C2x] expected: FAIL - [request.formData() with input: a=b&c=d] - expected: FAIL - [response.formData() with input: a&b&c] expected: FAIL - [response.formData() with input: a=b&c=d&] + [response.formData() with input: &&&a=b&&&&c=d&] expected: FAIL diff --git a/tests/wpt/metadata/wasm/jsapi/constructor/instantiate.any.js.ini b/tests/wpt/metadata/wasm/jsapi/constructor/instantiate.any.js.ini index 945f1e8cc37..f4791115004 100644 --- a/tests/wpt/metadata/wasm/jsapi/constructor/instantiate.any.js.ini +++ b/tests/wpt/metadata/wasm/jsapi/constructor/instantiate.any.js.ini @@ -29,6 +29,45 @@ [Promise type] expected: FAIL + [Empty module with undefined imports argument: BufferSource argument] + expected: FAIL + + [getter order for imports object: BufferSource argument] + expected: FAIL + + [Empty module without imports argument: BufferSource argument] + expected: FAIL + + [Empty module with empty imports argument: BufferSource argument] + expected: FAIL + + [No imports: Module argument] + expected: FAIL + + [Empty module with undefined imports argument: Module argument] + expected: FAIL + + [exports and imports: BufferSource argument] + expected: FAIL + + [imports: Module argument] + expected: FAIL + + [Empty module without imports argument: Module argument] + expected: FAIL + + [No imports: BufferSource argument] + expected: FAIL + + [Empty module with empty imports argument: Module argument] + expected: FAIL + + [imports: BufferSource argument] + expected: FAIL + + [getter order for imports object: Module argument] + expected: FAIL + [instantiate.any.worker.html] [Invalid arguments] @@ -61,3 +100,42 @@ [Promise type] expected: FAIL + [Empty module with undefined imports argument: BufferSource argument] + expected: FAIL + + [getter order for imports object: BufferSource argument] + expected: FAIL + + [Empty module without imports argument: BufferSource argument] + expected: FAIL + + [Empty module with empty imports argument: BufferSource argument] + expected: FAIL + + [No imports: Module argument] + expected: FAIL + + [Empty module with undefined imports argument: Module argument] + expected: FAIL + + [exports and imports: BufferSource argument] + expected: FAIL + + [imports: Module argument] + expected: FAIL + + [Empty module without imports argument: Module argument] + expected: FAIL + + [No imports: BufferSource argument] + expected: FAIL + + [Empty module with empty imports argument: Module argument] + expected: FAIL + + [imports: BufferSource argument] + expected: FAIL + + [getter order for imports object: Module argument] + expected: FAIL + diff --git a/tests/wpt/metadata/wasm/jsapi/instance/constructor.any.js.ini b/tests/wpt/metadata/wasm/jsapi/instance/constructor.any.js.ini index 1f493551629..de08dc969b3 100644 --- a/tests/wpt/metadata/wasm/jsapi/instance/constructor.any.js.ini +++ b/tests/wpt/metadata/wasm/jsapi/instance/constructor.any.js.ini @@ -2,8 +2,14 @@ [exports] expected: FAIL + [No imports] + expected: FAIL + [constructor.any.worker.html] [exports] expected: FAIL + [No imports] + expected: FAIL + diff --git a/tests/wpt/metadata/wasm/jsapi/table/get-set.any.js.ini b/tests/wpt/metadata/wasm/jsapi/table/get-set.any.js.ini index bce5b3e6e88..9ebd919ad1c 100644 --- a/tests/wpt/metadata/wasm/jsapi/table/get-set.any.js.ini +++ b/tests/wpt/metadata/wasm/jsapi/table/get-set.any.js.ini @@ -56,6 +56,24 @@ [Getting out-of-range argument: -Infinity] expected: FAIL + [Setting non-wasm arrow function] + expected: FAIL + + [Basic] + expected: FAIL + + [Setting non-wasm function] + expected: FAIL + + [Setting out-of-bounds] + expected: FAIL + + [Growing] + expected: FAIL + + [Setting non-function] + expected: FAIL + [get-set.any.html] [Setting out-of-range argument: NaN] @@ -115,3 +133,21 @@ [Getting out-of-range argument: -Infinity] expected: FAIL + [Setting non-wasm arrow function] + expected: FAIL + + [Basic] + expected: FAIL + + [Setting non-wasm function] + expected: FAIL + + [Setting out-of-bounds] + expected: FAIL + + [Growing] + expected: FAIL + + [Setting non-function] + expected: FAIL + diff --git a/tests/wpt/metadata/wasm/jsapi/table/grow.any.js.ini b/tests/wpt/metadata/wasm/jsapi/table/grow.any.js.ini index 11b89d68fa9..bb6308b8b5b 100644 --- a/tests/wpt/metadata/wasm/jsapi/table/grow.any.js.ini +++ b/tests/wpt/metadata/wasm/jsapi/table/grow.any.js.ini @@ -29,6 +29,15 @@ [Out-of-range argument: "0x100000000"] expected: FAIL + [Reached maximum] + expected: FAIL + + [Exceeded maximum] + expected: FAIL + + [Basic] + expected: FAIL + [grow.any.worker.html] [Out-of-range argument: 68719476736] @@ -61,3 +70,12 @@ [Out-of-range argument: "0x100000000"] expected: FAIL + [Reached maximum] + expected: FAIL + + [Exceeded maximum] + expected: FAIL + + [Basic] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/idlharness.https.window.js.ini b/tests/wpt/metadata/webaudio/idlharness.https.window.js.ini index 224dbbac2b4..29f07ac9baa 100644 --- a/tests/wpt/metadata/webaudio/idlharness.https.window.js.ini +++ b/tests/wpt/metadata/webaudio/idlharness.https.window.js.ini @@ -1664,3 +1664,9 @@ [idl_test setup] expected: FAIL + [OfflineAudioContext interface: operation resume()] + expected: FAIL + + [AudioContext interface: operation resume()] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini index 66bd350083b..a56bad443a2 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini @@ -1,4 +1,5 @@ [realtimeanalyser-fft-scaling.html] + expected: TIMEOUT [X 2048-point FFT peak position is not equal to 64. Got 0.] expected: FAIL diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml index 755fc2eca36..f36523ed301 100644 --- a/tests/wpt/web-platform-tests/.taskcluster.yml +++ b/tests/wpt/web-platform-tests/.taskcluster.yml @@ -9,8 +9,8 @@ tasks: $flatten: $match: { event.ref == "refs/heads/master": [{name: firefox, channel: nightly}, {name: chrome, channel: dev}], - event.ref == "refs/heads/epochs/daily": [{name: firefox, channel: beta}, {name: chrome, channel: beta}], - event.ref == "refs/heads/epochs/weekly": [{name: firefox, channel: stable}, {name: chrome, channel: stable}] + event.ref == "refs/heads/epochs/daily": [{name: firefox, channel: stable}, {name: chrome, channel: stable}], + event.ref == "refs/heads/epochs/weekly": [{name: firefox, channel: beta}, {name: chrome, channel: beta}] } each(browser): $map: diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-available-inline-size-htb-vrl.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-block-size-htb-vrl.https.html index 602536c5814..0da20ee8371 100644 --- a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-available-inline-size-htb-vrl.https.html +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-block-size-htb-vrl.https.html @@ -1,8 +1,8 @@ <!DOCTYPE html> <html class=reftest-wait> -<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableinlinesize"> -<link rel="match" href="green-square-ref.html"> -<meta name="assert" content="This test checks that setting the available inline size of children works as expected." /> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableblocksize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that setting the available block-size of children works as expected." /> <style> .test { @@ -61,5 +61,5 @@ </div> <script> -importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-child-sizes-worklet.js'}); +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); </script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-block-size-invalid.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-block-size-invalid.https.html new file mode 100644 index 00000000000..dfbc812556f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-block-size-invalid.https.html @@ -0,0 +1,49 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableblocksize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that setting an invalid available block-size works as expected." /> + +<style> +.test { + writing-mode: horizontal-tb; + background: red; + width: 100px; +} + +.child { + writing-mode: vertical-rl; + visibility: hidden; + line-height: 0; + + --available-block-size: -20; +} + +.inline { + display: inline-block; + width: 8px; +} + +.inline-size-10 { height: 10px; } + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <!-- The invalid available block-size should be clamped to zero. --> + <div class="child" style="--block-size-expected: 10; --inline-size-expected: 16;"> + <span class="inline inline-size-10"></span> + <span class="inline inline-size-10"></span> + </div> +</div> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-available-inline-size-vrl-htb.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-block-size-vrl-htb.https.html index 4759c1b69d0..c8e84ae5170 100644 --- a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-available-inline-size-vrl-htb.https.html +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-block-size-vrl-htb.https.html @@ -1,8 +1,8 @@ <!DOCTYPE html> <html class=reftest-wait> -<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableinlinesize"> -<link rel="match" href="green-square-ref.html"> -<meta name="assert" content="This test checks that setting the available inline size of children works as expected." /> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableblocksize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that setting the available block-size of children works as expected." /> <style> .test { @@ -61,5 +61,5 @@ </div> <script> -importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-child-sizes-worklet.js'}); +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); </script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-available-inline-size-htb-htb.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-inline-size-htb-htb.https.html index bfe8a99e7fe..94cf75fc93f 100644 --- a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-available-inline-size-htb-htb.https.html +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-inline-size-htb-htb.https.html @@ -1,8 +1,8 @@ <!DOCTYPE html> <html class=reftest-wait> <link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableinlinesize"> -<link rel="match" href="green-square-ref.html"> -<meta name="assert" content="This test checks that setting the available inline size of children works as expected." /> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that setting the available inline-size of children works as expected." /> <style> .test { @@ -61,5 +61,5 @@ </div> <script> -importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-child-sizes-worklet.js'}); +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); </script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-inline-size-invalid.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-inline-size-invalid.https.html new file mode 100644 index 00000000000..136d13fa703 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-inline-size-invalid.https.html @@ -0,0 +1,49 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableinlinesize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that setting an invalid available inline-size works as expected." /> + +<style> +.test { + writing-mode: horizontal-tb; + background: red; + width: 100px; +} + +.child { + writing-mode: horizontal-tb; + visibility: hidden; + line-height: 0; + + --available-inline-size: -20; +} + +.inline { + display: inline-block; + height: 8px; +} + +.inline-size-10 { width: 10px; } + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <!-- The invalid available inline-size should be clamped to zero. --> + <div class="child" style="--inline-size-expected: 10; --block-size-expected: 16;"> + <span class="inline inline-size-10"></span> + <span class="inline inline-size-10"></span> + </div> +</div> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-available-inline-size-vrl-vrl.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-inline-size-vrl-vrl.https.html index 7bfa44db67b..392a6b51422 100644 --- a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-available-inline-size-vrl-vrl.https.html +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-inline-size-vrl-vrl.https.html @@ -1,8 +1,8 @@ <!DOCTYPE html> <html class=reftest-wait> <link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableinlinesize"> -<link rel="match" href="green-square-ref.html"> -<meta name="assert" content="This test checks that setting the available inline size of children works as expected." /> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that setting the available inline-size of children works as expected." /> <style> .test { @@ -61,5 +61,5 @@ </div> <script> -importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-child-sizes-worklet.js'}); +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); </script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-htb-htb.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-htb-htb.https.html new file mode 100644 index 00000000000..960fb7d7dcf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-htb-htb.https.html @@ -0,0 +1,59 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableinlinesize"> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableblocksize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that resolving percentages against the available size works as expected." /> + +<style> +.test { + writing-mode: horizontal-tb; + background: red; + width: 100px; +} + +.child { + writing-mode: horizontal-tb; + visibility: hidden; + + --available-inline-size: 50; + --available-block-size: 20; + + --inline-size-expected: 10px; + --block-size-expected: 10px; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <!-- A fixed width/height shouldn't be affected by the available size. --> + <div class="child" style="width: 10px; height: 10px;"></div> + + <!-- A percentage width/height should resolve itself against the available size. --> + <div class="child" style="width: 20%; height: 50%;"></div> + + <!-- A percentage max-width/max-height should resolve itself against the available size. --> + <div class="child" style="width: 15px; max-width: 20%; height: 15px; max-height: 50%;"></div> + + <!-- A percentage min-width/min-height should resolve itself against the available size. --> + <div class="child" style="width: 5px; min-width: 20%; height: 5px; min-height: 50%;"></div> + + <!-- A replaced percentage width/height should resolve itself against the available size. --> + <img class="child" style="width: 20%; height: 50%;" /> + + <!-- A replaced percentage max-width/max-height should resolve itself against the available size. --> + <img class="child" style="width: 15px; max-width: 20%; height: 15px; max-height: 50%;" /> + + <!-- A replaced percentage min-width/min-height should resolve itself against the available size. --> + <img class="child" style="width: 5px; min-width: 20%; height: 5px; min-height: 50%;" /> +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-htb-vrl.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-htb-vrl.https.html new file mode 100644 index 00000000000..0e9b5570abe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-htb-vrl.https.html @@ -0,0 +1,59 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableinlinesize"> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableblocksize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that resolving percentages against the available size works as expected." /> + +<style> +.test { + writing-mode: horizontal-tb; + background: red; + width: 100px; +} + +.child { + writing-mode: vertical-rl; + visibility: hidden; + + --available-inline-size: 50; + --available-block-size: 20; + + --inline-size-expected: 10px; + --block-size-expected: 10px; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <!-- A fixed width/height shouldn't be affected by the available size. --> + <div class="child" style="width: 10px; height: 10px;"></div> + + <!-- A percentage width/height should resolve itself against the available size. --> + <div class="child" style="width: 20%; height: 50%;"></div> + + <!-- A percentage max-width/max-height should resolve itself against the available size. --> + <div class="child" style="width: 15px; max-width: 20%; height: 15px; max-height: 50%;"></div> + + <!-- A percentage min-width/min-height should resolve itself against the available size. --> + <div class="child" style="width: 5px; min-width: 20%; height: 5px; min-height: 50%;"></div> + + <!-- A replaced percentage width/height should resolve itself against the available size. --> + <img class="child" style="width: 20%; height: 50%;" /> + + <!-- A replaced percentage max-width/max-height should resolve itself against the available size. --> + <img class="child" style="width: 15px; max-width: 20%; height: 15px; max-height: 50%;" /> + + <!-- A replaced percentage min-width/min-height should resolve itself against the available size. --> + <img class="child" style="width: 5px; min-width: 20%; height: 5px; min-height: 50%;" /> +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-invalid.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-invalid.https.html new file mode 100644 index 00000000000..62efe992fb3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-invalid.https.html @@ -0,0 +1,49 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableinlinesize"> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableblocksize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that resolving percentages against an invalid available size works as expected." /> + +<style> +.test { + background: red; + width: 100px; +} + +.child { + visibility: hidden; + width: 10px; + line-height: 0; + + --available-inline-size: -20; + --available-block-size: -10; +} + +.inline { + display: inline-block; + width: 10px; + height: 10px; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <!-- The available inline-size gets clamped to zero, and the available block-size gets treated as indefinite. --> + <div class="child" style="--inline-size-expected: 0px; --block-size-expected: 10px; width: 100%; height: 100%;"> + <div class="inline"></div> + </div> + + <!-- For replaced elements, both axis should be resolved to 0px. --> + <img class="child" style="--inline-size-expected: 0px; --block-size-expected: 0px; width: 100%; height: 100%;" /> +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-vrl-htb.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-vrl-htb.https.html new file mode 100644 index 00000000000..1352ea91783 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-vrl-htb.https.html @@ -0,0 +1,59 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableinlinesize"> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableblocksize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that resolving percentages against the available size works as expected." /> + +<style> +.test { + writing-mode: vertical-rl; + background: red; + height: 100px; +} + +.child { + writing-mode: horizontal-tb; + visibility: hidden; + + --available-inline-size: 20; + --available-block-size: 50; + + --inline-size-expected: 10px; + --block-size-expected: 10px; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <!-- A fixed width/height shouldn't be affected by the available size. --> + <div class="child" style="width: 10px; height: 10px;"></div> + + <!-- A percentage width/height should resolve itself against the available size. --> + <div class="child" style="width: 20%; height: 50%;"></div> + + <!-- A percentage max-width/max-height should resolve itself against the available size. --> + <div class="child" style="width: 15px; max-width: 20%; height: 15px; max-height: 50%;"></div> + + <!-- A percentage min-width/min-height should resolve itself against the available size. --> + <div class="child" style="width: 5px; min-width: 20%; height: 5px; min-height: 50%;"></div> + + <!-- A replaced percentage width/height should resolve itself against the available size. --> + <img class="child" style="width: 20%; height: 50%;" /> + + <!-- A replaced percentage max-width/max-height should resolve itself against the available size. --> + <img class="child" style="width: 15px; max-width: 20%; height: 15px; max-height: 50%;" /> + + <!-- A replaced percentage min-width/min-height should resolve itself against the available size. --> + <img class="child" style="width: 5px; min-width: 20%; height: 5px; min-height: 50%;" /> +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-vrl-vrl.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-vrl-vrl.https.html new file mode 100644 index 00000000000..9c30c212fae --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/available-size-for-percentages-vrl-vrl.https.html @@ -0,0 +1,59 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableinlinesize"> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-availableblocksize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that resolving percentages against the available size works as expected." /> + +<style> +.test { + writing-mode: vertical-rl; + background: red; + height: 100px; +} + +.child { + writing-mode: vertical-rl; + visibility: hidden; + + --available-inline-size: 20; + --available-block-size: 50; + + --inline-size-expected: 10px; + --block-size-expected: 10px; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <!-- A fixed width/height shouldn't be affected by the available size. --> + <div class="child" style="width: 10px; height: 10px;"></div> + + <!-- A percentage width/height should resolve itself against the available size. --> + <div class="child" style="width: 20%; height: 50%;"></div> + + <!-- A percentage max-width/max-height should resolve itself against the available size. --> + <div class="child" style="width: 15px; max-width: 20%; height: 15px; max-height: 50%;"></div> + + <!-- A percentage min-width/min-height should resolve itself against the available size. --> + <div class="child" style="width: 5px; min-width: 20%; height: 5px; min-height: 50%;"></div> + + <!-- A replaced percentage width/height should resolve itself against the available size. --> + <img class="child" style="width: 20%; height: 50%;" /> + + <!-- A replaced percentage max-width/max-height should resolve itself against the available size. --> + <img class="child" style="width: 15px; max-width: 20%; height: 15px; max-height: 50%;" /> + + <!-- A replaced percentage min-width/min-height should resolve itself against the available size. --> + <img class="child" style="width: 5px; min-width: 20%; height: 5px; min-height: 50%;" /> +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-fixed-block-size-vrl.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/fixed-block-size-vrl.https.html index 43dd483b3f9..dedcaa0ee83 100644 --- a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-fixed-block-size-vrl.https.html +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/fixed-block-size-vrl.https.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html class=reftest-wait> -<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-fixedinlinesize"> -<link rel="match" href="green-square-ref.html"> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-fixedblocksize"> +<link rel="match" href="../green-square-ref.html"> <meta name="assert" content="This test checks that fixing the block size of children works as expected." /> <style> @@ -56,5 +56,5 @@ </div> <script> -importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-child-sizes-worklet.js'}); +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); </script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-fixed-block-size.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/fixed-block-size.https.html index c714e1ff975..eea540ca59f 100644 --- a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-fixed-block-size.https.html +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/fixed-block-size.https.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html class=reftest-wait> <link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-fixedblocksize"> -<link rel="match" href="green-square-ref.html"> +<link rel="match" href="../green-square-ref.html"> <meta name="assert" content="This test checks that fixing the block size of children works as expected." /> <style> @@ -55,5 +55,5 @@ </div> <script> -importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-child-sizes-worklet.js'}); +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); </script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-fixed-inline-size-vrl.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/fixed-inline-size-vrl.https.html index ba86d2c184d..22bd3e7c125 100644 --- a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-fixed-inline-size-vrl.https.html +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/fixed-inline-size-vrl.https.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html class=reftest-wait> <link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-fixedinlinesize"> -<link rel="match" href="green-square-ref.html"> +<link rel="match" href="../green-square-ref.html"> <meta name="assert" content="This test checks that fixing the inline size of children works as expected." /> <style> @@ -56,5 +56,5 @@ </div> <script> -importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-child-sizes-worklet.js'}); +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); </script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-fixed-inline-size.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/fixed-inline-size.https.html index a2a422bd611..0a05a46fe69 100644 --- a/tests/wpt/web-platform-tests/css/css-layout-api/perform-child-layout-fixed-inline-size.https.html +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/fixed-inline-size.https.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html class=reftest-wait> <link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-fixedinlinesize"> -<link rel="match" href="green-square-ref.html"> +<link rel="match" href="../green-square-ref.html"> <meta name="assert" content="This test checks that fixing the inline size of children works as expected." /> <style> @@ -55,5 +55,5 @@ </div> <script> -importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: 'support/layout-child-sizes-worklet.js'}); +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); </script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-htb-htb.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-htb-htb.https.html new file mode 100644 index 00000000000..99224c73f5b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-htb-htb.https.html @@ -0,0 +1,58 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-percentageblocksize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that setting the percentage block-size of children works as expected." /> + +<style> +.test { + writing-mode: horizontal-tb; + background: red; + width: 100px; +} + +.child { + writing-mode: horizontal-tb; + visibility: hidden; + width: 10px; + + --percentage-block-size: 20; + + --inline-size-expected: 10px; + --block-size-expected: 10px; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <!-- A fixed height shouldn't be affected by the percentage size. --> + <div class="child" style="height: 10px;"></div> + + <!-- A percentage height should resolve itself against the percentageBlockSize. --> + <div class="child" style="height: 50%;"></div> + + <!-- A percentage max-height should resolve itself against the percentageBlockSize. --> + <div class="child" style="height: 15px; max-height: 50%;"></div> + + <!-- A percentage min-height should resolve itself against the percentageBlockSize. --> + <div class="child" style="height: 5px; min-height: 50%;"></div> + + <!-- A replaced percentage height should resolve itself against the percentageBlockSize. --> + <img class="child" style="height: 50%;" /> + + <!-- A replaced percentage max-height should resolve itself against the percentageBlockSize. --> + <img class="child" style="height: 15px; max-height: 50%;" /> + + <!-- A replaced percentage min-height should resolve itself against the percentageBlockSize. --> + <img class="child" style="height: 5px; min-height: 50%;" /> +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-htb-vrl.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-htb-vrl.https.html new file mode 100644 index 00000000000..8116d5a9b08 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-htb-vrl.https.html @@ -0,0 +1,58 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-percentageinlinesize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that setting the percentage inline-size of children works as expected." /> + +<style> +.test { + writing-mode: horizontal-tb; + background: red; + width: 100px; +} + +.child { + writing-mode: vertical-rl; + visibility: hidden; + height: 10px; + + --percentage-inline-size: 20; + + --inline-size-expected: 10px; + --block-size-expected: 10px; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <!-- A fixed width shouldn't be affected by the percentage size. --> + <div class="child" style="width: 10px;"></div> + + <!-- A percentage width should resolve itself against the percentageInlineSize. --> + <div class="child" style="width: 50%;"></div> + + <!-- A percentage max-width should resolve itself against the percentageInlineSize. --> + <div class="child" style="width: 15px; max-width: 50%;"></div> + + <!-- A percentage min-width should resolve itself against the percentageInlineSize. --> + <div class="child" style="width: 5px; min-width: 50%;"></div> + + <!-- A replaced percentage width should resolve itself against the percentageInlineSize. --> + <img class="child" style="width: 50%;" /> + + <!-- A replaced percentage max-width should resolve itself against the percentageInlineSize. --> + <img class="child" style="width: 15px; max-width: 50%;" /> + + <!-- A replaced percentage min-width should resolve itself against the percentageInlineSize. --> + <img class="child" style="width: 5px; min-width: 50%;" /> +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-invalid.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-invalid.https.html new file mode 100644 index 00000000000..932380a6163 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-invalid.https.html @@ -0,0 +1,47 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-percentageblocksize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that setting an invalid percentage block-size of children works as expected." /> + +<style> +.test { + background: red; + width: 100px; +} + +.child { + visibility: hidden; + width: 10px; + line-height: 0; + + --percentage-block-size: -10; +} + +.inline { + display: inline-block; + width: 10px; + height: 10px; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <!-- A percentage shouldn't be resolved against an invalid percentageBlockSize. --> + <div class="child" style="--inline-size-expected: 10px; --block-size-expected: 10px; height: 100%;"> + <div class="inline"></div> + </div> + + <!-- A percentage shouldn't be resolved against an invalid percentageBlockSize. --> + <img class="child" style="--inline-size-expected: 10px; --block-size-expected: 0px; height: 100%;" /> +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-quirks-mode.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-quirks-mode.https.html new file mode 100644 index 00000000000..39a360d079d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-quirks-mode.https.html @@ -0,0 +1,55 @@ +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-percentageblocksize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that setting a percentage block-size works correctly in quirks mode." /> + +<style> +.container { + height: 200px; +} + +.test { + background: red; + width: 100px; +} + +.child { + visibility: hidden; + width: 10px; + line-height: 0; +} + +.inline { + display: inline-block; + width: 10px; + height: 10px; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="container"> + <div class="test"> + <!-- TODO explain. --> + <div class="child" style="--percentage-block-size: 50px; --inline-size-expected: 10px; --block-size-expected: 10px;"> + <div style="height: 20%"></div> + </div> + + <!-- TODO explain. --> + <div class="child" style="--inline-size-expected: 10px; --block-size-expected: 10px;"> + <div style="height: 100%"> + <div class="inline"></div> + </div> + </div> + </div> +</div> +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-vrl-htb.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-vrl-htb.https.html new file mode 100644 index 00000000000..70640ef0b29 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-vrl-htb.https.html @@ -0,0 +1,58 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-percentageinlinesize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that setting the percentage inline-size of children works as expected." /> + +<style> +.test { + writing-mode: vertical-rl; + background: red; + height: 100px; +} + +.child { + writing-mode: horizontal-tb; + visibility: hidden; + width: 10px; + + --percentage-inline-size: 20; + + --inline-size-expected: 10px; + --block-size-expected: 10px; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <!-- A fixed height shouldn't be affected by the percentage size. --> + <div class="child" style="height: 10px;"></div> + + <!-- A percentage height should resolve itself against the percentageInlineSize. --> + <div class="child" style="height: 50%;"></div> + + <!-- A percentage max-height should resolve itself against the percentageInlineSize. --> + <div class="child" style="height: 15px; max-height: 50%;"></div> + + <!-- A percentage min-height should resolve itself against the percentageInlineSize. --> + <div class="child" style="height: 5px; min-height: 50%;"></div> + + <!-- A replaced percentage height should resolve itself against the percentageInlineSize. --> + <img class="child" style="height: 50%;" /> + + <!-- A replaced percentage max-height should resolve itself against the percentageInlineSize. --> + <img class="child" style="height: 15px; max-height: 50%;" /> + + <!-- A replaced percentage min-height should resolve itself against the percentageInlineSize. --> + <img class="child" style="height: 5px; min-height: 50%;" /> +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-vrl-vrl.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-vrl-vrl.https.html new file mode 100644 index 00000000000..07132579621 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/child-constraints/percentage-size-vrl-vrl.https.html @@ -0,0 +1,58 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutconstraintsoptions-percentageblocksize"> +<link rel="match" href="../green-square-ref.html"> +<meta name="assert" content="This test checks that setting the percentage block-size of children works as expected." /> + +<style> +.test { + writing-mode: vertical-rl; + background: red; + height: 100px; +} + +.child { + writing-mode: vertical-rl; + visibility: hidden; + height: 10px; + + --percentage-block-size: 20; + + --inline-size-expected: 10px; + --block-size-expected: 10px; +} + +@supports (display: layout(test)) { + .test { + background: green; + display: layout(test); + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test"> + <!-- A fixed width shouldn't be affected by the percentage size. --> + <div class="child" style="width: 10px;"></div> + + <!-- A percentage width should resolve itself against the percentageBlockSize. --> + <div class="child" style="width: 50%;"></div> + + <!-- A percentage max-width should resolve itself against the percentageBlockSize. --> + <div class="child" style="width: 15px; max-width: 50%;"></div> + + <!-- A percentage min-width should resolve itself against the percentageBlockSize. --> + <div class="child" style="width: 5px; min-width: 50%;"></div> + + <!-- A replaced percentage width should resolve itself against the percentageBlockSize. --> + <img class="child" style="width: 50%;" /> + + <!-- A replaced percentage max-width should resolve itself against the percentageBlockSize. --> + <img class="child" style="width: 15px; max-width: 50%;" /> + + <!-- A replaced percentage min-width should resolve itself against the percentageBlockSize. --> + <img class="child" style="width: 5px; min-width: 50%;" /> +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, {url: '../support/layout-child-sizes-worklet.js'}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/support/layout-child-sizes-worklet.js b/tests/wpt/web-platform-tests/css/css-layout-api/support/layout-child-sizes-worklet.js index 7531f69b1b6..28546d6e422 100644 --- a/tests/wpt/web-platform-tests/css/css-layout-api/support/layout-child-sizes-worklet.js +++ b/tests/wpt/web-platform-tests/css/css-layout-api/support/layout-child-sizes-worklet.js @@ -13,6 +13,8 @@ registerLayout('test', class { '--available-block-size', '--fixed-inline-size', '--fixed-block-size', + '--percentage-inline-size', + '--percentage-block-size', '--inline-size-expected', '--block-size-expected' ]; @@ -26,11 +28,15 @@ registerLayout('test', class { const availableBlockSize = parseNumber(child.styleMap.get('--available-block-size')); const fixedInlineSize = parseNumber(child.styleMap.get('--fixed-inline-size')); const fixedBlockSize = parseNumber(child.styleMap.get('--fixed-block-size')); + const percentageInlineSize = parseNumber(child.styleMap.get('--percentage-inline-size')); + const percentageBlockSize = parseNumber(child.styleMap.get('--percentage-block-size')); return child.layoutNextFragment({ availableInlineSize, availableBlockSize, fixedInlineSize, - fixedBlockSize + fixedBlockSize, + percentageInlineSize, + percentageBlockSize, }); }); diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-properties-inheritance.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-properties-inheritance.html index 057cd8ca7e1..8f9eafee19e 100644 --- a/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-properties-inheritance.html +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-properties-inheritance.html @@ -57,4 +57,19 @@ test(function(){ inner.style = '--initial-length-2: inherit'; assert_equals(getComputedStyle(inner).getPropertyValue('--initial-length-2'), '0px'); }, "Explicitly inheriting from a parent with no value results in initial value."); + +test(function(){ + CSS.registerProperty({name: '--inherited-length-4', syntax: '<length>', initialValue: '0px', inherits: true}); + outer.style = '--inherited-length-4: 42px'; + inner.style = '--inherited-length-4: var(--undefined)'; + assert_equals(getComputedStyle(inner).getPropertyValue('--inherited-length-4'), '42px'); +}, "Reference to undefined variable results in inherited value"); + +test(function(){ + CSS.registerProperty({name: '--inherited-length-5', syntax: '<length>', initialValue: '0px', inherits: true}); + outer.style = '--inherited-length-5: 42px'; + inner.style = '--incompatible: nolength; --inherited-length-5: var(--incompatible)'; + assert_equals(getComputedStyle(inner).getPropertyValue('--inherited-length-5'), '42px'); +}, "Reference to syntax-incompatible variable results in inherited value"); + </script> diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cj-loose.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cj-loose.html index 6d8fbf9ca06..cf7c5a44415 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cj-loose.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cj-loose.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cj-normal.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cj-normal.html index 38f8e733957..7c701c8546d 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cj-normal.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cj-normal.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cj-strict.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cj-strict.html index 37df9b50cd2..9fe18046fcd 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cj-strict.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cj-strict.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cpm-loose.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cpm-loose.html index fb933ab51bc..6120e62cc9b 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cpm-loose.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cpm-loose.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html index 4fb208b7a34..1e1d4bb683b 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cpm-strict.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cpm-strict.html index 6a84bdd48b0..ddf3c2cc960 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cpm-strict.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-cpm-strict.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-hyphens-loose.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-hyphens-loose.html index a8b73b5e0a7..647bfc8a675 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-hyphens-loose.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-hyphens-loose.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-hyphens-normal.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-hyphens-normal.html index fd69a1ba2be..5e22458f935 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-hyphens-normal.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-hyphens-normal.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-hyphens-strict.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-hyphens-strict.html index cd30e0e6145..3db8bb8804d 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-hyphens-strict.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-hyphens-strict.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-in-loose.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-in-loose.html index 580862e0ad9..09c5758d79a 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-in-loose.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-in-loose.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-in-normal.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-in-normal.html index 49f401a2741..8bf3aa9016d 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-in-normal.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-in-normal.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-in-strict.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-in-strict.html index 499609c846c..3c14e183d84 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-in-strict.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-in-strict.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-iteration-loose.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-iteration-loose.html index 94012593a4b..dbf77a0f806 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-iteration-loose.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-iteration-loose.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-iteration-normal.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-iteration-normal.html index b65c7da78a8..ecdcdc31733 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-iteration-normal.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-iteration-normal.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-iteration-strict.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-iteration-strict.html index 1c022f71e28..3b2a2ee9eb1 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-iteration-strict.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-iteration-strict.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-po-loose.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-po-loose.html index 0ffed1f18dd..795cb0230b6 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-po-loose.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-po-loose.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-po-normal.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-po-normal.html index ce3a30f1cb6..7c591eb936a 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-po-normal.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-po-normal.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-po-strict.html b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-po-strict.html index 95ffcf79412..c41ea732a89 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-po-strict.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/ja/css-text-line-break-ja-po-strict.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cpm-loose.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cpm-loose.html index f3eb0442e9d..b9f81eeecf5 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cpm-loose.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cpm-loose.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html index 9511727e981..7d2af701422 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cpm-strict.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cpm-strict.html index d1cd8bf9017..069212e628e 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cpm-strict.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-cpm-strict.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-hyphens-loose.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-hyphens-loose.html index b897e9b671e..70ebdc0898b 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-hyphens-loose.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-hyphens-loose.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-hyphens-normal.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-hyphens-normal.html index 30be2668fea..8fd631efb3f 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-hyphens-normal.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-hyphens-normal.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-hyphens-strict.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-hyphens-strict.html index f3278c3f26f..91f261018b1 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-hyphens-strict.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-hyphens-strict.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-loose.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-loose.html index b137a7344e3..4f163719ae7 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-loose.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-loose.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-normal.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-normal.html index d5fb7c99ffd..bb0df2e8fc1 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-normal.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-normal.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-strict.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-strict.html index fa47a893817..965d5133fab 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-strict.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-in-strict.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-iteration-loose.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-iteration-loose.html index 4c802ca8cd6..72c476cdce7 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-iteration-loose.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-iteration-loose.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-iteration-normal.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-iteration-normal.html index d45c7849468..92ac2e02091 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-iteration-normal.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-iteration-normal.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-iteration-strict.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-iteration-strict.html index 0c29ec0705c..22ac4baf03b 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-iteration-strict.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-iteration-strict.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-po-loose.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-po-loose.html index ab3c66a4194..0e0280505fa 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-po-loose.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-po-loose.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-po-normal.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-po-normal.html index 7144f4f810c..490e4067a40 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-po-normal.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-po-normal.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-po-strict.html b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-po-strict.html index d1cf5151391..ec44c093a32 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-po-strict.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/zh/css-text-line-break-zh-po-strict.html @@ -11,7 +11,7 @@ <style type="text/css"> @font-face { font-family: 'mplus-1p-regular'; - src: url('/fonts/CSSTest/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); } #wrapper { position: relative; } .test { color: red; } diff --git a/tests/wpt/web-platform-tests/css/css-transforms/preserve3d-button-ref.html b/tests/wpt/web-platform-tests/css/css-transforms/preserve3d-button-ref.html new file mode 100644 index 00000000000..e5e3c1ebfcd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/preserve3d-button-ref.html @@ -0,0 +1,42 @@ +<!doctype html> +<title>CSS Test Reference</title> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<style> +.scene { + width: 200px; + height: 200px; + perspective: 5000px; +} + +.card { + width: 100%; + height: 100%; + transform-style: preserve-3d; + position: relative; + background: none; + border: 0; + padding: 0; + transform: rotateY(180deg); +} + +.face { + position: absolute; + top: 0; + width: 100%; + height: 100%; + backface-visibility: hidden; + background: red; +} + +.backface { + background: green; + transform: rotateY(180deg); +} +</style> +<div class="scene"> + <div class="card"> + <div class="face"></div> + <div class="face backface"></div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/preserve3d-button.html b/tests/wpt/web-platform-tests/css/css-transforms/preserve3d-button.html new file mode 100644 index 00000000000..544bb249663 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/preserve3d-button.html @@ -0,0 +1,44 @@ +<!doctype html> +<title>CSS Test: preserve-3d on buttons</title> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="match" href="preserve3d-button-ref.html"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1491864"> +<style> +.scene { + width: 200px; + height: 200px; + perspective: 5000px; +} + +.card { + width: 100%; + height: 100%; + transform-style: preserve-3d; + position: relative; + background: none; + border: 0; + padding: 0; + transform: rotateY(180deg); +} + +.face { + position: absolute; + top: 0; + width: 100%; + height: 100%; + backface-visibility: hidden; + background: red; +} + +.backface { + background: green; + transform: rotateY(180deg); +} +</style> +<div class="scene"> + <button class="card"> + <div class="face"></div> + <div class="face backface"></div> + </button> +</div> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-svg-shape.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-svg-shape.html new file mode 100644 index 00000000000..7af5de5ff8a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-svg-shape.html @@ -0,0 +1,32 @@ +<!DOCTYPE HTML> +<title>scrollIntoView on an SVG shape element</title> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<svg width="8000" height="8000"> + <rect width="100" height="100" fill="blue" y="1950" id="geometry"/> + <rect width="100" height="100" fill="blue" transform="translate(0, 2950)" + id="translated"/> + <rect width="100" height="100" fill="blue" transform="rotate(45, 50, 3950)" + id="rotated"/> +</svg> +<script> +add_completion_callback(() => { + document.querySelector("svg").remove(); + window.scrollTo(0, 0); +}); + +for (let id of [ "geometry", "translated", "rotated" ]) { + test(t => { + let target = document.getElementById(id); + window.scrollTo(0, 0); + let bounds = target.getBoundingClientRect(); + let expected = { x: bounds.left, y: bounds.top }; + assert_not_equals(window.scrollX, expected.x, "x before scroll"); + assert_not_equals(window.scrollY, expected.y, "y before scroll"); + target.scrollIntoView({ block: "start", inline: "start" }); + assert_approx_equals(window.scrollX, expected.x, 1, "x after scroll"); + assert_approx_equals(window.scrollY, expected.y, 1, "y after scroll"); + }, document.title + ", " + id); +} +</script> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/svg-unknown-input-001.html b/tests/wpt/web-platform-tests/css/filter-effects/svg-unknown-input-001.html new file mode 100644 index 00000000000..7789f2a9af4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/svg-unknown-input-001.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<title>Filter Effects: The in attribute</title> +<link rel="author" title="Cameron McCormack" href="mailto:cam@mcc.id.au"> +<link rel="help" href="https://www.w3.org/TR/filter-effects-1/#CommonAttributes"> +<link rel="match" href="svg-unknown-input-ref.html"> +<meta name="flags" content="svg"> +<meta name="assert" content="References to non-existent results on a first primitive must be treated like SourceGraphic."> +<p>The test passes if you see a green square and no red.</p> +<svg width="100" height="100"> + <defs> + <filter id="f" x="0" y="0" width="100" height="100" filterUnits="userSpaceOnUse"> + <feComposite in="unknown" in2="SourceGraphic" result="a"/> + <feFlood flood-color="green" result="b"/> + <feComposite in="b" in2="a"/> + </filter> + </defs> + <rect width="100" height="100" fill="red"/> + <rect x="25" y="25" width="50" height="50" fill="green" filter="url(#f)"/> +</svg> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/svg-unknown-input-002.html b/tests/wpt/web-platform-tests/css/filter-effects/svg-unknown-input-002.html new file mode 100644 index 00000000000..cb07b654045 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/svg-unknown-input-002.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<title>Filter Effects: The in attribute</title> +<link rel="author" title="Cameron McCormack" href="mailto:cam@mcc.id.au"> +<link rel="help" href="https://www.w3.org/TR/filter-effects-1/#CommonAttributes"> +<link rel="match" href="svg-unknown-input-ref.html"> +<meta name="flags" content="svg"> +<meta name="assert" content="References to non-existent results on a subsequent primitive must be treated like the previous primitive result."> +<p>The test passes if you see a green square and no red.</p> +<svg width="100" height="100"> + <defs> + <filter id="f" x="0" y="0" width="100" height="100" filterUnits="userSpaceOnUse"> + <feFlood flood-color="green"/> + <feComposite in="unknown" in2="SourceGraphic"/> + </filter> + </defs> + <rect width="100" height="100" fill="red"/> + <rect x="25" y="25" width="50" height="50" fill="blue" filter="url(#f)"/> +</svg> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/svg-unknown-input-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/svg-unknown-input-ref.html new file mode 100644 index 00000000000..1fff2a6175c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/svg-unknown-input-ref.html @@ -0,0 +1,8 @@ +<!DOCTYPE html> +<title>Filter Effects: Reference</title> +<link rel="author" title="Cameron McCormack" href="mailto:cam@mcc.id.au"> +<meta name="flags" content="svg"> +<p>The test passes if you see a green square and no red.</p> +<svg width="100" height="100"> + <rect width="100" height="100" fill="green"/> +</svg> diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/testdriver-tutorial.md b/tests/wpt/web-platform-tests/docs/_writing-tests/testdriver-tutorial.md index 7bf9e9aa9e6..33c4fe31a40 100644 --- a/tests/wpt/web-platform-tests/docs/_writing-tests/testdriver-tutorial.md +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/testdriver-tutorial.md @@ -39,7 +39,7 @@ window.test_driver = { * Set Window Rect command}. * * @param {Integer} x - The x coordinate of the top left of the window - * @param {Integer} y - The x coordinate of the top left of the window + * @param {Integer} y - The y coordinate of the top left of the window * @param {Integer} width - The width of the window * @param {Integer} height - The width of the window * @returns {Promise} fulfilled after window rect is set occurs, or rejected in @@ -67,7 +67,7 @@ window.test_driver_internal = { * @param {Integer} x - The x coordinate of the top left of the window * @param {Integer} y - The x coordinate of the top left of the window * @param {Integer} width - The width of the window - * @param {Integer} height - The width of the window + * @param {Integer} height - The height of the window * @returns {Promise} fulfilled after window rect is set occurs, or rejected in * the cases the WebDriver command errors */ @@ -314,7 +314,7 @@ promise_test(async t => { ``` ### What about testdriver-vendor.js? -The file [testdriver-vendor.js](resources/testdriver-vendor.js) is the equivalent to testdriver-extra.js above, except is +The file [testdriver-vendor.js](resources/testdriver-vendor.js) is the equivalent to testdriver-extra.js above, except it is run instead of testdriver-extra.js in browser specific test environments. For example, in [Chromium LayoutTests](https://cs.chromium.org/chromium/src/third_party/WebKit/LayoutTests/?q=LayoutTests&sq=package:chromium&dr). ### What if I need to return a value from my testdriver API? diff --git a/tests/wpt/web-platform-tests/html/dom/interfaces.https.html b/tests/wpt/web-platform-tests/html/dom/interfaces.https.html index 6b7e37bf1fe..15cee69f64e 100644 --- a/tests/wpt/web-platform-tests/html/dom/interfaces.https.html +++ b/tests/wpt/web-platform-tests/html/dom/interfaces.https.html @@ -37,7 +37,7 @@ const waitForLoad = new Promise(resolve => { addEventListener('load', resolve); idl_test( ['html'], - ['SVG', 'cssom', 'touchevents', 'uievents', 'dom'], + ['SVG', 'cssom', 'touch-events', 'uievents', 'dom'], async idlArray => { idlArray.add_objects({ NodeList: ['document.getElementsByName("name")'], diff --git a/tests/wpt/web-platform-tests/interfaces/CSP.idl b/tests/wpt/web-platform-tests/interfaces/CSP.idl index 64cba00e956..46fae543cb2 100644 --- a/tests/wpt/web-platform-tests/interfaces/CSP.idl +++ b/tests/wpt/web-platform-tests/interfaces/CSP.idl @@ -7,7 +7,8 @@ enum SecurityPolicyViolationEventDisposition { "enforce", "report" }; -[Constructor(DOMString type, optional SecurityPolicyViolationEventInit eventInitDict)] +[Constructor(DOMString type, optional SecurityPolicyViolationEventInit eventInitDict), + Exposed=(Window,Worker)] interface SecurityPolicyViolationEvent : Event { readonly attribute USVString documentURI; readonly attribute USVString referrer; diff --git a/tests/wpt/web-platform-tests/interfaces/SVG.idl b/tests/wpt/web-platform-tests/interfaces/SVG.idl index 01d87b862b4..4c1c4855f27 100644 --- a/tests/wpt/web-platform-tests/interfaces/SVG.idl +++ b/tests/wpt/web-platform-tests/interfaces/SVG.idl @@ -126,6 +126,22 @@ interface SVGLengthList { }; [Exposed=Window] +interface SVGStringList { + + readonly attribute unsigned long length; + readonly attribute unsigned long numberOfItems; + + void clear(); + DOMString initialize(DOMString newItem); + getter DOMString getItem(unsigned long index); + DOMString insertItemBefore(DOMString newItem, unsigned long index); + DOMString replaceItem(DOMString newItem, unsigned long index); + DOMString removeItem(unsigned long index); + DOMString appendItem(DOMString newItem); + setter void (unsigned long index, DOMString newItem); +}; + +[Exposed=Window] interface SVGAnimatedBoolean { attribute boolean baseVal; readonly attribute boolean animVal; @@ -186,22 +202,6 @@ interface SVGAnimatedLengthList { }; [Exposed=Window] -interface SVGStringList { - - readonly attribute unsigned long length; - readonly attribute unsigned long numberOfItems; - - void clear(); - DOMString initialize(DOMString newItem); - getter DOMString getItem(unsigned long index); - DOMString insertItemBefore(DOMString newItem, unsigned long index); - DOMString replaceItem(DOMString newItem, unsigned long index); - DOMString removeItem(unsigned long index); - DOMString appendItem(DOMString newItem); - setter void (unsigned long index, DOMString newItem); -}; - -[Exposed=Window] interface SVGUnitTypes { // Unit Types const unsigned short SVG_UNIT_TYPE_UNKNOWN = 0; diff --git a/tests/wpt/web-platform-tests/interfaces/payment-method-basic-card.idl b/tests/wpt/web-platform-tests/interfaces/payment-method-basic-card.idl index 00d6ad1f0a2..2019aa11669 100644 --- a/tests/wpt/web-platform-tests/interfaces/payment-method-basic-card.idl +++ b/tests/wpt/web-platform-tests/interfaces/payment-method-basic-card.idl @@ -4,17 +4,30 @@ // Source: Payment Method: Basic Card (https://w3c.github.io/payment-method-basic-card/) dictionary BasicCardRequest { - sequence<DOMString> supportedNetworks; - sequence<BasicCardType> supportedTypes; - }; + sequence<DOMString> supportedNetworks; + sequence<BasicCardType> supportedTypes; +}; + +dictionary BasicCardChangeDetails { + PaymentAddress? billingAddress; +}; enum BasicCardType { "credit", "debit", "prepaid" }; dictionary BasicCardResponse { - required DOMString cardNumber; - DOMString cardholderName; - DOMString cardSecurityCode; - DOMString expiryMonth; - DOMString expiryYear; - PaymentAddress? billingAddress; - }; + required DOMString cardNumber; + DOMString cardholderName; + DOMString cardSecurityCode; + DOMString expiryMonth; + DOMString expiryYear; + PaymentAddress? billingAddress; +}; + +dictionary BasicCardErrors { + DOMString cardNumber; + DOMString cardholderName; + DOMString cardSecurityCode; + DOMString expiryMonth; + DOMString expiryYear; + AddressErrors billingAddress; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/payment-request.idl b/tests/wpt/web-platform-tests/interfaces/payment-request.idl index e3afbd47db3..d930b57291e 100644 --- a/tests/wpt/web-platform-tests/interfaces/payment-request.idl +++ b/tests/wpt/web-platform-tests/interfaces/payment-request.idl @@ -49,6 +49,8 @@ dictionary PaymentDetailsUpdate : PaymentDetailsBase { DOMString error; PaymentItem total; AddressErrors shippingAddressErrors; + PayerErrorFields payerErrors; + object paymentMethodErrors; }; dictionary PaymentDetailsModifier { diff --git a/tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl b/tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl index dd379c8c0a0..c7bc249dffc 100644 --- a/tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl +++ b/tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl @@ -28,3 +28,15 @@ interface PictureInPictureWindow : EventTarget { attribute EventHandler onresize; }; + +[ + Constructor(DOMString type, EnterPictureInPictureEventInit eventInitDict), + Exposed=Window +] +interface EnterPictureInPictureEvent : Event { + [SameObject] readonly attribute PictureInPictureWindow pictureInPictureWindow; +}; + +dictionary EnterPictureInPictureEventInit : EventInit { + required PictureInPictureWindow pictureInPictureWindow; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/webaudio.idl b/tests/wpt/web-platform-tests/interfaces/webaudio.idl index 14bb62b8aaa..4f1914dbae2 100644 --- a/tests/wpt/web-platform-tests/interfaces/webaudio.idl +++ b/tests/wpt/web-platform-tests/interfaces/webaudio.idl @@ -48,7 +48,6 @@ interface BaseAudioContext : EventTarget { Promise<AudioBuffer> decodeAudioData (ArrayBuffer audioData, optional DecodeSuccessCallback? successCallback, optional DecodeErrorCallback? errorCallback); - Promise<void> resume (); }; enum AudioContextLatencyCategory { @@ -63,6 +62,7 @@ interface AudioContext : BaseAudioContext { readonly attribute double baseLatency; readonly attribute double outputLatency; AudioTimestamp getOutputTimestamp (); + Promise<void> resume (); Promise<void> suspend (); Promise<void> close (); MediaElementAudioSourceNode createMediaElementSource (HTMLMediaElement mediaElement); @@ -86,6 +86,7 @@ dictionary AudioTimestamp { Constructor (unsigned long numberOfChannels, unsigned long length, float sampleRate)] interface OfflineAudioContext : BaseAudioContext { Promise<AudioBuffer> startRendering(); + Promise<void> resume(); Promise<void> suspend(double suspendTime); readonly attribute unsigned long length; attribute EventHandler oncomplete; diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl b/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl index 4df720a0fc1..b2bf38e9fd4 100644 --- a/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl +++ b/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl @@ -230,8 +230,10 @@ dictionary RTCTransportStats : RTCStats { DOMString selectedCandidatePairId; DOMString localCertificateId; DOMString remoteCertificateId; + DOMString tlsVersion; DOMString dtlsCipher; DOMString srtpCipher; + DOMString tlsGroup; }; dictionary RTCIceCandidateStats : RTCStats { diff --git a/tests/wpt/web-platform-tests/payment-handler/basic-card.js b/tests/wpt/web-platform-tests/payment-handler/basic-card.js index 86fcea711c5..c78f24b017f 100644 --- a/tests/wpt/web-platform-tests/payment-handler/basic-card.js +++ b/tests/wpt/web-platform-tests/payment-handler/basic-card.js @@ -99,7 +99,6 @@ self.addEventListener('paymentrequest', event => { city: 'Reston', country: 'US', dependentLocality: '', - languageCode: '', organization: 'Google', phone: '+15555555555', postalCode: '20190', diff --git a/tests/wpt/web-platform-tests/payment-handler/payment-request-event.https.html b/tests/wpt/web-platform-tests/payment-handler/payment-request-event.https.html index 4e9cc21a1e5..fb51c2eeb54 100644 --- a/tests/wpt/web-platform-tests/payment-handler/payment-request-event.https.html +++ b/tests/wpt/web-platform-tests/payment-handler/payment-request-event.https.html @@ -81,7 +81,6 @@ function runTests() { assert_equals(response.details.billingAddress.city, 'Reston'); assert_equals(response.details.billingAddress.country, 'US'); assert_equals(response.details.billingAddress.dependentLocality, ''); - assert_equals(response.details.billingAddress.languageCode, ''); assert_equals(response.details.billingAddress.organization, 'Google'); assert_equals(response.details.billingAddress.phone, '+15555555555'); assert_equals(response.details.billingAddress.postalCode, '20190'); diff --git a/tests/wpt/web-platform-tests/payment-method-basic-card/empty-data-manual.https.html b/tests/wpt/web-platform-tests/payment-method-basic-card/empty-data-manual.https.html index 898da6a2d41..4b517159df4 100644 --- a/tests/wpt/web-platform-tests/payment-method-basic-card/empty-data-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-method-basic-card/empty-data-manual.https.html @@ -25,7 +25,6 @@ const defaultBillingAddress = { dependentLocality: '', postalCode: '1001', sortingCode: '', - languageCode: 'fa', organization: 'w3c', recipient: 'web platform test', phone: '+93555555555', diff --git a/tests/wpt/web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html b/tests/wpt/web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html index 65d56e74901..edde533be6b 100644 --- a/tests/wpt/web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html @@ -74,7 +74,6 @@ function runManualTest(button, expected = {}) { dependentLocality: '', postalCode: '6095', sortingCode: '', - languageCode: 'en', organization: 'w3c', recipient: 'web platform test', phone: '+61733780000', diff --git a/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html b/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html index cdc8d353a9b..356f30da6b5 100644 --- a/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html @@ -57,11 +57,6 @@ function retryShowsShippingAddressMember(button, error) { </button> </li> <li> - <button onclick="retryShowsShippingAddressMember(this, { languageCode: 'LANGUAGECODE ERROR' });"> - The payment sheet shows "LANGUAGECODE ERROR" for the shipping address' languageCode. - </button> - </li> - <li> <button onclick="retryShowsShippingAddressMember(this, { organization: 'ORGANIZATION ERROR' });"> The payment sheet shows "ORGANIZATION ERROR" for the shipping address' organization. </button> diff --git a/tests/wpt/web-platform-tests/payment-request/historical.https.html b/tests/wpt/web-platform-tests/payment-request/historical.https.html index b7880a2dee8..cbd29d4cff8 100644 --- a/tests/wpt/web-platform-tests/payment-request/historical.https.html +++ b/tests/wpt/web-platform-tests/payment-request/historical.https.html @@ -19,6 +19,8 @@ ["paymentRequestId", "PaymentRequest"], ["paymentRequestId", "PaymentResponse"], + // https://github.com/w3c/payment-request/pull/765 + ["languageCode", "PaymentAddress"], ].forEach(([member, interf]) => { test(() => { assert_false(member in window[interf].prototype); diff --git a/tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html b/tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html index fc109e4f5a4..9df2bfabcf2 100644 --- a/tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html +++ b/tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html @@ -8,9 +8,12 @@ <body></body> <script> promise_test(async t => { + let pictureInPictureWindow; const video = await loadVideo(); video.addEventListener('enterpictureinpicture', t.step_func_done(event => { + pictureInPictureWindow = event.pictureInPictureWindow; + assert_equals(event.target, video); assert_equals(event.bubbles, true); assert_equals(event.cancelable, false); @@ -18,6 +21,9 @@ promise_test(async t => { assert_equals(document.pictureInPictureElement, video); })); - return requestPictureInPictureWithTrustedClick(video); + return requestPictureInPictureWithTrustedClick(video) + .then(pipWindow => { + assert_equals(pipWindow, pictureInPictureWindow); + }) }); </script> diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_match_origin.htm b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_match_origin.htm index 3ab239e90bb..4793dbf91d6 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_match_origin.htm +++ b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_match_origin.htm @@ -35,6 +35,7 @@ function onload_test() { var context = new PerformanceContext(iframe.contentWindow.performance); var entries = context.getEntriesByType('resource'); + assert_greater_than(entries.length, 0, "The iframe should have at least one resource timing entry."); if(entries.length > 0) { entry = entries[0]; diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_match_wildcard.htm b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_match_wildcard.htm index 8b07b46672e..fe812f86774 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_match_wildcard.htm +++ b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_match_wildcard.htm @@ -35,6 +35,7 @@ function onload_test() { var context = new PerformanceContext(iframe.contentWindow.performance); var entries = context.getEntriesByType('resource'); + assert_greater_than(entries.length, 0, "The iframe should have at least one resource timing entry."); if(entries.length > 0) { entry = entries[0]; diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_multi.htm b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_multi.htm index 3b6c2e6b267..bb774abc602 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_multi.htm +++ b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_multi.htm @@ -35,6 +35,7 @@ function onload_test() { var context = new PerformanceContext(iframe.contentWindow.performance); var entries = context.getEntriesByType('resource'); + assert_greater_than(entries.length, 0, "The iframe should have at least one resource timing entry."); if(entries.length > 0) { entry = entries[0]; diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_multi_wildcard.html b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_multi_wildcard.html new file mode 100644 index 00000000000..844896087d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_multi_wildcard.html @@ -0,0 +1,56 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<title>Resource Timing TAO tests</title> +<link rel="author" title="Google" href="http://www.google.com/" /> +<link rel="help" href="https://www.w3.org/TR/resource-timing-2/#timing-allow-origin"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webperftestharness.js"></script> +<script src="resources/webperftestharnessextension.js"></script> +<script> +setup({explicit_done: true}); + +// explicitly test the namespace before we start testing +test_namespace("getEntriesByType"); + +var d; +var iframe; +var iframeBody; +var image; +var random = Math.random(); + +function setup_iframe() { + iframe = document.getElementById('frameContext'); + d = iframe.contentWindow.document; + iframeBody = d.body; + iframe.addEventListener('load', onload_test, false); +} +function onload_test() { + if (window.performance.getEntriesByType === undefined) { + done(); + return; + } + var context = new PerformanceContext(iframe.contentWindow.performance); + var entries = context.getEntriesByType('resource'); + + assert_greater_than(entries.length, 0, "The iframe should have at least one resource timing entry."); + if(entries.length > 0) { + entry = entries[0]; + + test_not_equals((entry.redirectStart + entry.redirectEnd + entry.domainLookupStart + entry.domainLookupEnd + entry.connectStart + entry.connectEnd + entry.secureConnectionStart + entry.requestStart + entry.responseStart), 0, 'redirectStart, redirectEnd, domainLookupStart, domainLookupEnd, connectStart, connectEnd, secureConnectionStart, requestStart, and responseStart -- should not be all returned as 0 when the HTTP response has multiple Timing-Allow-Origin header fields and the subsequent field value is separated by a comma, i.e. TAO algorithm passes'); + } + + done(); +} +window.setup_iframe = setup_iframe; +</script> +</head> +<body> +<h1>Description</h1> +<p>This test validates that for a cross origin resource, the timing allow check algorithm will pass when the HTTP response has multiple Timing-Allow-Origin header fields and the subsequent field value is separated by a comma.</p> +<div id="log"></div> +<iframe id="frameContext" src="resources/iframe_TAO_multi_wildcard.html"></iframe> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_null.htm b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_null.htm index 419de693e1f..1a86e09c567 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_null.htm +++ b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_null.htm @@ -35,6 +35,7 @@ function onload_test() { var context = new PerformanceContext(iframe.contentWindow.performance); var entries = context.getEntriesByType('resource'); + assert_greater_than(entries.length, 0, "The iframe should have at least one resource timing entry."); if(entries.length > 0) { entry = entries[0]; diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_origin_uppercase.htm b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_origin_uppercase.htm index 0b42166c0ee..1a03c714106 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_origin_uppercase.htm +++ b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_origin_uppercase.htm @@ -35,6 +35,7 @@ function onload_test() { var context = new PerformanceContext(iframe.contentWindow.performance); var entries = context.getEntriesByType('resource'); + assert_greater_than(entries.length, 0, "The iframe should have at least one resource timing entry."); if(entries.length > 0) { entry = entries[0]; diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_space.htm b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_space.htm index f3cbdc62c01..9efefe15a4f 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_space.htm +++ b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_space.htm @@ -35,6 +35,7 @@ function onload_test() { var context = new PerformanceContext(iframe.contentWindow.performance); var entries = context.getEntriesByType('resource'); + assert_greater_than(entries.length, 0, "The iframe should have at least one resource timing entry."); if(entries.length > 0) { entry = entries[0]; diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_wildcard.htm b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_wildcard.htm index 407c642d9d4..df278534cc4 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_TAO_wildcard.htm +++ b/tests/wpt/web-platform-tests/resource-timing/resource_TAO_wildcard.htm @@ -35,6 +35,7 @@ function onload_test() { var context = new PerformanceContext(iframe.contentWindow.performance); var entries = context.getEntriesByType('resource'); + assert_greater_than(entries.length, 0, "The iframe should have at least one resource timing entry."); if(entries.length > 0) { entry = entries[0]; diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/TAOResponse.py b/tests/wpt/web-platform-tests/resource-timing/resources/TAOResponse.py index dcd75a41545..060f9b0c9a7 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resources/TAOResponse.py +++ b/tests/wpt/web-platform-tests/resource-timing/resources/TAOResponse.py @@ -23,6 +23,10 @@ def main(request, response): # more than one TAO values, seperated by comma, pass response.headers.set('Timing-Allow-Origin', origin) response.headers.append('Timing-Allow-Origin', '*') + elif tao == 'multi_wildcard': + # multiple wildcards, seperated by comma, pass + response.headers.set('Timing-Allow-Origin', '*') + response.headers.append('Timing-Allow-Origin', '*') elif tao == 'match_origin': # contains a match of origin, seperated by comma, pass response.headers.set('Timing-Allow-Origin', origin) diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/iframe_TAO_multi_wildcard.html b/tests/wpt/web-platform-tests/resource-timing/resources/iframe_TAO_multi_wildcard.html new file mode 100644 index 00000000000..977df01007d --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/iframe_TAO_multi_wildcard.html @@ -0,0 +1,21 @@ +<body> +<script> +function dirname(path) { + return path.replace(/\/[^\/]*$/, '/'); +} + +function request() { + var dirName = dirname(location.href); + // create a cross-origin request + var url = dirName.replace('://', '://www.') + 'TAOResponse.py?tao=multi_wildcard'; + var img = new Image(); + img.crossOrigin = "anonymous"; + img.src = url; +} + +if(window.parent.setup_iframe) { + window.parent.setup_iframe(); + request(); +} +</script> +</body> diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js index 746f3e65503..00c59eda8ad 100644 --- a/tests/wpt/web-platform-tests/resources/idlharness.js +++ b/tests/wpt/web-platform-tests/resources/idlharness.js @@ -3251,7 +3251,11 @@ function idl_test(srcs, deps, idl_setup_func) { * fetch_spec is a shorthand for a Promise that fetches the spec's content. */ function fetch_spec(spec) { - return fetch('/interfaces/' + spec + '.idl').then(function (r) { + var url = '/interfaces/' + spec + '.idl'; + return fetch(url).then(function (r) { + if (!r.ok) { + throw new IdlHarnessError("Error fetching " + url + "."); + } return r.text(); }); } diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-xhr-sync.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-xhr-sync.https.html index f1e4fecc1b3..ec27fb89834 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-xhr-sync.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-xhr-sync.https.html @@ -14,7 +14,7 @@ promise_test(function(t) { return service_worker_unregister_and_register(t, url, scope) .then(function(registration) { t.add_cleanup(function() { - registration.unregister(); + return registration.unregister(); }); return wait_for_state(t, registration.installing, 'activated'); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-window.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-window.https.html index 85d7f6467ee..2c131b3c93a 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-window.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-window.https.html @@ -40,7 +40,7 @@ promise_test(async (t) => { t, 'resources/empty-worker.js', scope) .then(function(registration) { t.add_cleanup(function() { - registration.unregister(); + return registration.unregister(); }); window.registrationInstance = registration; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/onactivate-script-error.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/onactivate-script-error.https.html index 6c16357f3cc..f5e80bb9a45 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/onactivate-script-error.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/onactivate-script-error.https.html @@ -35,7 +35,7 @@ function make_test(name, script) { registration = r; t.add_cleanup(function() { - r.unregister(); + return r.unregister(); }); return wait_for_install(registration.installing); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/postmessage.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/postmessage.https.html index 3d73afe9796..b1f3342a8c1 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/postmessage.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/postmessage.https.html @@ -13,11 +13,7 @@ promise_test(t => { return service_worker_unregister_and_register(t, script, scope) .then(r => { - // TODO: return the Promise created by `r.unregister`once - // `testharness.js` has been updated to honor thenables returned by - // cleanup functions. - // See https://github.com/web-platform-tests/wpt/pull/8748 - t.add_cleanup(() => { r.unregister(); }); + t.add_cleanup(() => r.unregister()); registration = r; worker = registration.installing; @@ -66,11 +62,7 @@ promise_test(t => { return service_worker_unregister_and_register(t, script, scope) .then(r => { - // TODO: return the Promise created by `r.unregister`once - // `testharness.js` has been updated to honor thenables returned by - // cleanup functions. - // See https://github.com/web-platform-tests/wpt/pull/8748 - t.add_cleanup(() => { r.unregister(); }); + t.add_cleanup(() => r.unregister()); var ab = text_encoder.encode(message); assert_equals(ab.byteLength, message.length); @@ -110,11 +102,7 @@ promise_test(t => { return service_worker_unregister_and_register(t, script, scope) .then(r => { - // TODO: return the Promise created by `r.unregister`once - // `testharness.js` has been updated to honor thenables returned by - // cleanup functions. - // See https://github.com/web-platform-tests/wpt/pull/8748 - t.add_cleanup(() => { r.unregister(); }); + t.add_cleanup(() => r.unregister()); var channel = new MessageChannel; port = channel.port1; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/registration-service-worker-attributes.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/registration-service-worker-attributes.https.html index 8fd566dadc6..f7b52d5ddce 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/registration-service-worker-attributes.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/registration-service-worker-attributes.https.html @@ -14,7 +14,7 @@ promise_test(function(t) { return service_worker_unregister_and_register(t, worker_url, scope) .then(function(r) { t.add_cleanup(function() { - r.unregister(); + return r.unregister(); }); registration = r; newest_worker = registration.installing; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-testharness.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-testharness.js index fdf5868e33e..73e97be1eaa 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-testharness.js +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-testharness.js @@ -20,7 +20,7 @@ importScripts('/resources/testharness.js'); var cache_name = self.location.pathname + '/' + uniquifier; test.add_cleanup(function() { - self.caches.delete(cache_name); + return self.caches.delete(cache_name); }); return self.caches.delete(cache_name) diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https.html index a9c398a2606..67838acff46 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https.html @@ -51,7 +51,7 @@ promise_test(function(t) { .then(function(registration) { sw_registration = registration; t.add_cleanup(function() { - registration.unregister(); + return registration.unregister(); }); return saw_controllerchanged; }) diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/skip-waiting-without-using-registration.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/skip-waiting-without-using-registration.https.html index dbe2bde78d3..705fe8355e1 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/skip-waiting-without-using-registration.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/skip-waiting-without-using-registration.https.html @@ -27,7 +27,7 @@ promise_test(function(t) { .then(function(registration) { sw_registration = registration; t.add_cleanup(function() { - registration.unregister(); + return registration.unregister(); }); return wait_for_state(t, registration.installing, 'activated'); }) diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/synced-state.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/synced-state.https.html index c4a9b6655cb..0e9f63a9a2e 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/synced-state.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/synced-state.https.html @@ -33,7 +33,7 @@ promise_test(function(t) { worker = registration.installing; t.add_cleanup(function() { - r.unregister(); + return r.unregister(); }); return nextChange(worker); diff --git a/tests/wpt/web-platform-tests/shadow-dom/input-type-radio.html b/tests/wpt/web-platform-tests/shadow-dom/input-type-radio.html new file mode 100644 index 00000000000..9c90fcf0603 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/input-type-radio.html @@ -0,0 +1,73 @@ +<!doctype html> +<meta charset=utf-8> +<title></title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<input type="radio" name="group" id="lightRadio1"> +<input type="radio" name="group" id="lightRadio2"> +<div id="host"></div> +<script> + +test(() => { + var lightRadio1 = document.getElementById("lightRadio1"); + var lightRadio2 = document.getElementById("lightRadio2"); + + var host = document.getElementById("host"); + var sr = host.attachShadow({mode: "closed"}); + var shadowRadio1 = document.createElement("input"); + shadowRadio1.name = "group"; + shadowRadio1.id = "shadowRadio1"; + shadowRadio1.type = "radio"; + sr.appendChild(shadowRadio1); + var shadowRadio2 = document.createElement("input"); + shadowRadio2.name = "group"; + shadowRadio2.id = "shadowRadio2"; + shadowRadio2.type = "radio"; + sr.appendChild(shadowRadio2); + + assert_false(lightRadio1.checked); + assert_false(lightRadio2.checked); + assert_false(shadowRadio1.checked); + assert_false(shadowRadio2.checked); + + lightRadio1.click(); + assert_true(lightRadio1.checked); + assert_false(lightRadio2.checked); + assert_false(shadowRadio1.checked); + assert_false(shadowRadio2.checked); + + lightRadio2.click(); + assert_false(lightRadio1.checked); + assert_true(lightRadio2.checked); + assert_false(shadowRadio1.checked); + assert_false(shadowRadio2.checked); + + shadowRadio1.click(); + assert_false(lightRadio1.checked); + assert_true(lightRadio2.checked); + assert_true(shadowRadio1.checked); + assert_false(shadowRadio2.checked); + + shadowRadio2.click(); + assert_false(lightRadio1.checked); + assert_true(lightRadio2.checked); + assert_false(shadowRadio1.checked); + assert_true(shadowRadio2.checked); + + // Ensure radio groups work even when modifying shadow DOM. + shadowRadio2.remove(); + sr.appendChild(shadowRadio2); + shadowRadio2.click(); + assert_false(lightRadio1.checked); + assert_true(lightRadio2.checked); + assert_false(shadowRadio1.checked); + assert_true(shadowRadio2.checked); + + shadowRadio1.click(); + assert_false(lightRadio1.checked); + assert_true(lightRadio2.checked); + assert_true(shadowRadio1.checked); + assert_false(shadowRadio2.checked); +}, "input type=radio elements should form a group inside shadow DOM."); + +</script> diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py index 70054b57294..8aea59cc8f6 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py @@ -1,6 +1,5 @@ import json import os -import socket import threading import traceback import urlparse @@ -85,7 +84,7 @@ class MarionetteBaseProtocolPart(BaseProtocolPart): if socket_timeout: try: self.marionette.timeout.script = socket_timeout / 2 - except (socket.error, IOError): + except IOError: self.logger.debug("Socket closed") return @@ -98,7 +97,7 @@ class MarionetteBaseProtocolPart(BaseProtocolPart): except errors.ScriptTimeoutException: self.logger.debug("Script timed out") pass - except (socket.timeout, IOError): + except IOError: self.logger.debug("Socket closed") break except Exception as e: @@ -316,7 +315,7 @@ class MarionetteAssertsProtocolPart(AssertsProtocolPart): except errors.NoSuchWindowException: # If the window was already closed self.parent.logger.warning("Failed to get assertion count; window was closed") - except (errors.MarionetteException, socket.error): + except (errors.MarionetteException, IOError): # This usually happens if the process crashed pass @@ -399,7 +398,7 @@ class MarionetteCoverageProtocolPart(CoverageProtocolPart): error = self.marionette.execute_async_script(script) if error is not None: raise Exception('Failure while resetting counters: %s' % json.dumps(error)) - except (errors.MarionetteException, socket.error): + except (errors.MarionetteException, IOError): # This usually happens if the process crashed pass @@ -419,7 +418,7 @@ class MarionetteCoverageProtocolPart(CoverageProtocolPart): error = self.marionette.execute_async_script(script) if error is not None: raise Exception('Failure while dumping counters: %s' % json.dumps(error)) - except (errors.MarionetteException, socket.error): + except (errors.MarionetteException, IOError): # This usually happens if the process crashed pass @@ -567,7 +566,7 @@ class ExecuteAsyncScriptRun(object): except errors.ScriptTimeoutException: self.logger.debug("Got a marionette timeout") self.result = False, ("EXTERNAL-TIMEOUT", None) - except (socket.timeout, IOError): + except IOError: # This can happen on a crash # Also, should check after the test if the firefox process is still running # and otherwise ignore any other result and set it to crash diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py index 71fc3c9a8f6..f8292ff5ec1 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py @@ -1,4 +1,5 @@ import traceback + from abc import ABCMeta, abstractmethod @@ -53,6 +54,10 @@ class Protocol(object): msg = "Post-connection steps failed" self.after_connect() + except IOError: + self.logger.warning("Timed out waiting for browser to start") + self.executor.runner.send_message("init_failed") + return except Exception: if msg is not None: self.logger.warning(msg) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py index 90f7e4615e0..7e386b881d4 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py @@ -496,6 +496,8 @@ class TestRunnerManager(threading.Thread): def init_failed(self): assert isinstance(self.state, RunnerManagerState.initializing) + if self.browser.check_for_crashes(): + self.browser.log_crash(None) self.browser.after_init() self.stop_runner(force=True) return RunnerManagerState.initializing(self.state.test, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py index 0075ad90962..d25e561ad19 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py @@ -47,7 +47,7 @@ def create_parser(product_choices=None): TEST is either the full path to a test file to run, or the URL of a test excluding scheme host and port.""") - parser.add_argument("--manifest-update", action="store_true", default=None, + parser.add_argument("--manifest-update", action="store_true", default=True, help="Regenerate the test manifest.") parser.add_argument("--no-manifest-update", action="store_false", dest="manifest_update", help="Prevent regeneration of the test manifest.") diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/constructor/instantiate.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/constructor/instantiate.any.js index e90f21e28eb..5da6bd58dfc 100644 --- a/tests/wpt/web-platform-tests/wasm/jsapi/constructor/instantiate.any.js +++ b/tests/wpt/web-platform-tests/wasm/jsapi/constructor/instantiate.any.js @@ -2,6 +2,7 @@ // META: script=/wasm/jsapi/wasm-constants.js // META: script=/wasm/jsapi/wasm-module-builder.js // META: script=/wasm/jsapi/assertions.js +// META: script=/wasm/jsapi/instanceTestFactory.js function assert_WebAssemblyInstantiatedSource(actual, expected_exports={}) { assert_equals(Object.getPrototypeOf(actual), Object.prototype, @@ -77,111 +78,25 @@ test(() => { assert_true(Object.isExtensible(promise), "extensibility"); }, "Promise type"); -const createModule = () => { - const builder = new WasmModuleBuilder(); - - builder - .addFunction("fn", kSig_v_d) - .addBody([ - kExprEnd - ]) - .exportFunc(); - builder - .addFunction("fn2", kSig_v_v) - .addBody([ - kExprEnd - ]) - .exportFunc(); - - builder.setFunctionTableLength(1); - builder.addExportOfKind("table", kExternalTable, 0); - - builder.addGlobal(kWasmI32, true) - .exportAs("global") - .init = 7; - builder.addGlobal(kWasmF64, true) - .exportAs("global2") - .init = 1.2; - - builder.addMemory(4, 8, true); - - const buffer = builder.toBuffer(); - - const exports = { - "fn": { "kind": "function", "name": "0", "length": 1 }, - "fn2": { "kind": "function", "name": "1", "length": 0 }, - "table": { "kind": "table", "length": 1 }, - "global": { "kind": "global", "value": 7 }, - "global2": { "kind": "global", "value": 1.2 }, - "memory": { "kind": "memory", "size": 4 }, - }; - - return [buffer, exports]; +for (const [name, fn] of instanceTestFactory) { + promise_test(() => { + const { buffer, args, exports, verify } = fn(); + return WebAssembly.instantiate(buffer, ...args).then(result => { + assert_WebAssemblyInstantiatedSource(result, exports); + verify(result.instance); + }); + }, `${name}: BufferSource argument`); + + promise_test(() => { + const { buffer, args, exports, verify } = fn(); + const module = new WebAssembly.Module(buffer); + return WebAssembly.instantiate(module, ...args).then(instance => { + assert_Instance(instance, exports); + verify(instance); + }); + }, `${name}: Module argument`); } -promise_test(() => { - const [buffer, expected] = createModule(); - return WebAssembly.instantiate(buffer).then(result => assert_WebAssemblyInstantiatedSource(result, expected)); -}, "BufferSource argument"); - -promise_test(() => { - const [buffer, expected] = createModule(); - const module = new WebAssembly.Module(buffer); - return WebAssembly.instantiate(module).then(instance => assert_Instance(instance, expected)); -}, "Module argument"); - -const createModuleWithImports = () => { - const builder = new WasmModuleBuilder(); - - const index = builder.addImportedGlobal("module", "global", kWasmI32); - builder - .addFunction("fn", kSig_i_v) - .addBody([ - kExprGetGlobal, - index, - kExprReturn, - kExprEnd, - ]) - .exportFunc(); - - const buffer = builder.toBuffer(); - - const expected = { - "fn": { "kind": "function", "name": "0", "length": 0 }, - }; - - return [buffer, expected]; -}; - -promise_test(() => { - const [buffer, expected] = createModuleWithImports(); - - const value = 102; - return WebAssembly.instantiate(buffer, { - "module": { - "global": value, - }, - }).then(result => { - assert_WebAssemblyInstantiatedSource(result, expected) - assert_equals(result.instance.exports.fn(), value); - }); -}, "exports and imports: buffer argument"); - -promise_test(() => { - const [buffer, expected] = createModuleWithImports(); - const module = new WebAssembly.Module(buffer); - - const value = 102; - return WebAssembly.instantiate(module, { - "module": { - "global": value, - }, - }).then(instance => { - assert_Instance(instance, expected) - assert_equals(instance.exports.fn(), value); - }); -}, "exports and imports: Module argument"); - promise_test(t => { const buffer = new Uint8Array(); return promise_rejects(t, new WebAssembly.CompileError(), WebAssembly.instantiate(buffer)); diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/instance/constructor.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/instance/constructor.any.js index f9bd06ac8e9..e6a0450202e 100644 --- a/tests/wpt/web-platform-tests/wasm/jsapi/instance/constructor.any.js +++ b/tests/wpt/web-platform-tests/wasm/jsapi/instance/constructor.any.js @@ -2,6 +2,7 @@ // META: script=/wasm/jsapi/wasm-constants.js // META: script=/wasm/jsapi/wasm-module-builder.js // META: script=/wasm/jsapi/assertions.js +// META: script=/wasm/jsapi/instanceTestFactory.js let emptyModuleBinary; setup(() => { @@ -40,182 +41,15 @@ test(() => { test(() => { const module = new WebAssembly.Module(emptyModuleBinary); - const invalidArguments = [ - null, - true, - "", - Symbol(), - 1, - ]; - for (const argument of invalidArguments) { - assert_throws(new TypeError(), () => new WebAssembly.Instance(module, argument), - `new Instance(module, ${format_value(argument)})`); - } -}, "Non-object imports"); - -test(() => { - const module = new WebAssembly.Module(emptyModuleBinary); assert_throws(new TypeError(), () => WebAssembly.Instance(module)); }, "Calling"); -test(() => { - const module = new WebAssembly.Module(emptyModuleBinary); - const arguments = [ - [], - [undefined], - [{}], - ]; - for (const value of arguments) { - const instance = new WebAssembly.Instance(module, ...arguments); - assert_Instance(instance, {}); - } -}, "Empty module"); - -test(() => { - const builder = new WasmModuleBuilder(); - builder.addImportedGlobal("module", "global1", kWasmI32); - builder.addImportedGlobal("module2", "global3", kWasmI32); - builder.addImportedMemory("module", "memory", 0, 128); - builder.addImportedGlobal("module", "global2", kWasmI32); - const buffer = builder.toBuffer(); - const module = new WebAssembly.Module(buffer); - const order = []; - const imports = { - get module() { - order.push("module getter"); - return { - get global1() { - order.push("global1 getter"); - return 0; - }, - get global2() { - order.push("global2 getter"); - return 0; - }, - get memory() { - order.push("memory getter"); - return new WebAssembly.Memory({ "initial": 64, maximum: 128 }); - }, - } - }, - get module2() { - order.push("module2 getter"); - return { - get global3() { - order.push("global3 getter"); - return 0; - }, - } - }, - }; - new WebAssembly.Instance(module, imports); - const expected = [ - "module getter", - "global1 getter", - "module2 getter", - "global3 getter", - "module getter", - "memory getter", - "module getter", - "global2 getter", - ]; - assert_array_equals(order, expected); -}, "getter order for imports object"); - -test(() => { - const builder = new WasmModuleBuilder(); - - builder.addImport("module", "fn", kSig_v_v); - builder.addImportedGlobal("module", "global", kWasmI32); - builder.addImportedMemory("module", "memory", 0, 128); - builder.addImportedTable("module", "table", 0, 128); - - const buffer = builder.toBuffer(); - const module = new WebAssembly.Module(buffer); - const instance = new WebAssembly.Instance(module, { - "module": { - "fn": function() {}, - "global": 0, - "memory": new WebAssembly.Memory({ "initial": 64, maximum: 128 }), - "table": new WebAssembly.Table({ "element": "anyfunc", "initial": 64, maximum: 128 }), - }, - get "module2"() { - assert_unreached("Should not get modules that are not imported"); - }, - }); - assert_Instance(instance, {}); -}, "imports"); - -test(() => { - const builder = new WasmModuleBuilder(); - - builder - .addFunction("fn", kSig_v_d) - .addBody([ - kExprEnd - ]) - .exportFunc(); - builder - .addFunction("fn2", kSig_v_v) - .addBody([ - kExprEnd - ]) - .exportFunc(); - - builder.setFunctionTableLength(1); - builder.addExportOfKind("table", kExternalTable, 0); - - builder.addGlobal(kWasmI32, true) - .exportAs("global") - .init = 7; - builder.addGlobal(kWasmF64, true) - .exportAs("global2") - .init = 1.2; - - builder.addMemory(4, 8, true); - - const buffer = builder.toBuffer() - const module = new WebAssembly.Module(buffer); - - const instance = new WebAssembly.Instance(module, {}); - const expected = { - "fn": { "kind": "function", "name": "0", "length": 1 }, - "fn2": { "kind": "function", "name": "1", "length": 0 }, - "table": { "kind": "table", "length": 1 }, - "global": { "kind": "global", "value": 7 }, - "global2": { "kind": "global", "value": 1.2 }, - "memory": { "kind": "memory", "size": 4 }, - }; - assert_Instance(instance, expected); -}, "exports"); - -test(() => { - const value = 102; - - const builder = new WasmModuleBuilder(); - - builder.addImportedGlobal("module", "global", kWasmI32); - builder - .addFunction("fn", kSig_i_v) - .addBody([ - kExprGetGlobal, - 0, - kExprReturn, - kExprEnd, - ]) - .exportFunc(); - - const buffer = builder.toBuffer(); - const module = new WebAssembly.Module(buffer); - const instance = new WebAssembly.Instance(module, { - "module": { - "global": value, - }, - }); - const expected = { - "fn": { "kind": "function", "name": "0", "length": 0 }, - }; - assert_Instance(instance, expected); - - assert_equals(instance.exports.fn(), value); -}, "exports and imports"); +for (const [name, fn] of instanceTestFactory) { + test(() => { + const { buffer, args, exports, verify } = fn(); + const module = new WebAssembly.Module(buffer); + const instance = new WebAssembly.Instance(module, ...args); + assert_Instance(instance, exports); + verify(instance); + }, name); +} diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/instanceTestFactory.js b/tests/wpt/web-platform-tests/wasm/jsapi/instanceTestFactory.js new file mode 100644 index 00000000000..1663ffb3469 --- /dev/null +++ b/tests/wpt/web-platform-tests/wasm/jsapi/instanceTestFactory.js @@ -0,0 +1,217 @@ +const instanceTestFactory = [ + [ + "Empty module without imports argument", + function() { + return { + buffer: emptyModuleBinary, + args: [], + exports: {}, + verify: () => {}, + }; + } + ], + + [ + "Empty module with undefined imports argument", + function() { + return { + buffer: emptyModuleBinary, + args: [undefined], + exports: {}, + verify: () => {}, + }; + } + ], + + [ + "Empty module with empty imports argument", + function() { + return { + buffer: emptyModuleBinary, + args: [{}], + exports: {}, + verify: () => {}, + }; + } + ], + + [ + "getter order for imports object", + function() { + const builder = new WasmModuleBuilder(); + builder.addImportedGlobal("module", "global1", kWasmI32); + builder.addImportedGlobal("module2", "global3", kWasmI32); + builder.addImportedMemory("module", "memory", 0, 128); + builder.addImportedGlobal("module", "global2", kWasmI32); + const buffer = builder.toBuffer(); + const order = []; + + const imports = { + get module() { + order.push("module getter"); + return { + get global1() { + order.push("global1 getter"); + return 0; + }, + get global2() { + order.push("global2 getter"); + return 0; + }, + get memory() { + order.push("memory getter"); + return new WebAssembly.Memory({ "initial": 64, maximum: 128 }); + }, + } + }, + get module2() { + order.push("module2 getter"); + return { + get global3() { + order.push("global3 getter"); + return 0; + }, + } + }, + }; + + const expected = [ + "module getter", + "global1 getter", + "module2 getter", + "global3 getter", + "module getter", + "memory getter", + "module getter", + "global2 getter", + ]; + return { + buffer, + args: [imports], + exports: {}, + verify: () => assert_array_equals(order, expected), + }; + } + ], + + [ + "imports", + function() { + const builder = new WasmModuleBuilder(); + + builder.addImport("module", "fn", kSig_v_v); + builder.addImportedGlobal("module", "global", kWasmI32); + builder.addImportedMemory("module", "memory", 0, 128); + builder.addImportedTable("module", "table", 0, 128); + + const buffer = builder.toBuffer(); + const imports = { + "module": { + "fn": function() {}, + "global": 0, + "memory": new WebAssembly.Memory({ "initial": 64, maximum: 128 }), + "table": new WebAssembly.Table({ "element": "anyfunc", "initial": 64, maximum: 128 }), + }, + get "module2"() { + assert_unreached("Should not get modules that are not imported"); + }, + }; + + return { + buffer, + args: [imports], + exports: {}, + verify: () => {}, + }; + } + ], + + [ + "No imports", + function() { + const builder = new WasmModuleBuilder(); + + builder + .addFunction("fn", kSig_v_d) + .addBody([ + kExprEnd + ]) + .exportFunc(); + builder + .addFunction("fn2", kSig_v_v) + .addBody([ + kExprEnd + ]) + .exportFunc(); + + builder.setFunctionTableLength(1); + builder.addExportOfKind("table", kExternalTable, 0); + + builder.addGlobal(kWasmI32, true) + .exportAs("global") + .init = 7; + builder.addGlobal(kWasmF64, true) + .exportAs("global2") + .init = 1.2; + + builder.addMemory(4, 8, true); + + const buffer = builder.toBuffer(); + + const exports = { + "fn": { "kind": "function", "name": "0", "length": 1 }, + "fn2": { "kind": "function", "name": "1", "length": 0 }, + "table": { "kind": "table", "length": 1 }, + "global": { "kind": "global", "value": 7 }, + "global2": { "kind": "global", "value": 1.2 }, + "memory": { "kind": "memory", "size": 4 }, + }; + + return { + buffer, + args: [], + exports, + verify: () => {}, + }; + } + ], + + [ + "exports and imports", + function() { + const value = 102; + + const builder = new WasmModuleBuilder(); + + const index = builder.addImportedGlobal("module", "global", kWasmI32); + builder + .addFunction("fn", kSig_i_v) + .addBody([ + kExprGetGlobal, + index, + kExprReturn, + kExprEnd, + ]) + .exportFunc(); + + const buffer = builder.toBuffer(); + + const imports = { + "module": { + "global": value, + }, + }; + + const exports = { + "fn": { "kind": "function", "name": "0", "length": 0 }, + }; + + return { + buffer, + args: [imports], + exports, + verify: instance => assert_equals(instance.exports.fn(), value) + }; + } + ], +]; diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/interface.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/interface.any.js index 5d76ac56ec5..98c4a1d781b 100644 --- a/tests/wpt/web-platform-tests/wasm/jsapi/interface.any.js +++ b/tests/wpt/web-platform-tests/wasm/jsapi/interface.any.js @@ -9,7 +9,7 @@ function test_operations(object, object_name, operations) { assert_true(propdesc.writable, "writable"); assert_true(propdesc.enumerable, "enumerable"); assert_true(propdesc.configurable, "configurable"); - assert_equals(propdesc.value, WebAssembly[name]); + assert_equals(propdesc.value, object[name]); }, `${object_name}.${name}`); test(() => { diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor.any.js index f9907ca6104..5caf7cc8bb9 100644 --- a/tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor.any.js +++ b/tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor.any.js @@ -80,6 +80,10 @@ for (const value of outOfRangeValues) { } test(() => { + assert_throws(new RangeError(), () => new WebAssembly.Memory({ "element": "anyfunc", "initial": 10, "maximum": 9 })); +}, "Initial value exceeds maximum"); + +test(() => { const proxy = new Proxy({}, { has(o, x) { assert_unreached(`Should not call [[HasProperty]] with ${x}`); diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/table/assertions.js b/tests/wpt/web-platform-tests/wasm/jsapi/table/assertions.js index dde2fd77090..c88972b4ebd 100644 --- a/tests/wpt/web-platform-tests/wasm/jsapi/table/assertions.js +++ b/tests/wpt/web-platform-tests/wasm/jsapi/table/assertions.js @@ -1,6 +1,8 @@ function assert_equal_to_array(table, expected, message) { assert_equals(table.length, expected.length, `${message}: length`); - assert_throws(new RangeError(), () => table.get(-1), `${message}: table.get(-1)`); + // The argument check in get() happens before the range check, and negative numbers + // are illegal, hence will throw TypeError per spec. + assert_throws(new TypeError(), () => table.get(-1), `${message}: table.get(-1)`); for (let i = 0; i < expected.length; ++i) { assert_equals(table.get(i), expected[i], `${message}: table.get(${i} of ${expected.length})`); } diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/table/get-set.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/table/get-set.any.js index 2bb43a9308d..66c41340c20 100644 --- a/tests/wpt/web-platform-tests/wasm/jsapi/table/get-set.any.js +++ b/tests/wpt/web-platform-tests/wasm/jsapi/table/get-set.any.js @@ -131,7 +131,9 @@ test(() => { const {fn} = functions; - assert_throws(new RangeError(), () => table.set(-1, fn)); + // -1 is the wrong type hence the type check on entry gets this + // before the range check does. + assert_throws(new TypeError(), () => table.set(-1, fn)); assert_throws(new RangeError(), () => table.set(5, fn)); assert_equal_to_array(table, [null, null, null, null, null]); }, "Setting out-of-bounds"); diff --git a/tests/wpt/web-platform-tests/webdriver/tests/actions/conftest.py b/tests/wpt/web-platform-tests/webdriver/tests/actions/conftest.py index 47aad72ba05..55cecd11782 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/actions/conftest.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/actions/conftest.py @@ -14,6 +14,11 @@ def mouse_chain(session): {"pointerType": "mouse"}) +@pytest.fixture +def none_chain(session): + return session.actions.sequence("none", "none_id") + + @pytest.fixture(autouse=True) def release_actions(session, request): # release all actions after each test diff --git a/tests/wpt/web-platform-tests/webdriver/tests/actions/none.py b/tests/wpt/web-platform-tests/webdriver/tests/actions/none.py new file mode 100644 index 00000000000..07944a68ffe --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/actions/none.py @@ -0,0 +1,19 @@ +from tests.support.asserts import assert_error, assert_success + + +def perform_actions(session, actions): + return session.transport.send( + "POST", + "/session/{session_id}/actions".format(**vars(session)), + {"actions": actions}, + ) + + +def test_null_response_value(session, none_chain): + response = perform_actions(session, [none_chain.pause(0).dict]) + assert_success(response, None) + + +def test_no_browsing_context(session, closed_window, none_chain): + response = perform_actions(session, [none_chain.pause(0).dict]) + assert_error(response, "no such window") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/actions/bounds.py b/tests/wpt/web-platform-tests/webdriver/tests/actions/validity.py index e218c851e75..ce8a0d60f7d 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/actions/bounds.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/actions/validity.py @@ -49,3 +49,16 @@ def test_pause_invalid_types(session, action_type): }] response = perform_actions(session, actions) assert_error(response, "invalid argument") + + +@pytest.mark.parametrize("action_type", ["none", "key", "pointer"]) +def test_pause_without_duration(session, action_type): + actions = [{ + "type": action_type, + "id": "foobar", + "actions": [{ + "type": "pause", + }] + }] + response = perform_actions(session, actions) + assert_success(response) diff --git a/tests/wpt/webgl/meta/conformance/textures/misc/texture-upload-size.html.ini b/tests/wpt/webgl/meta/conformance/textures/misc/texture-upload-size.html.ini index ca35ba9e620..c67d2455356 100644 --- a/tests/wpt/webgl/meta/conformance/textures/misc/texture-upload-size.html.ini +++ b/tests/wpt/webgl/meta/conformance/textures/misc/texture-upload-size.html.ini @@ -8,3 +8,6 @@ [WebGL test #52: could not create image (SVG)] expected: FAIL + [WebGL test #60: could not create image (SVG)] + expected: FAIL + |