Auto merge of #23541 - servo-wpt-sync:wpt_update_08-06-2019, r=servo-wpt-sync

Sync WPT with upstream (08-06-2019)

Automated downstream sync of changes from upstream as of 08-06-2019.
[no-wpt-sync]

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23541)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2019-06-08 12:30:07 -04:00 committed by GitHub
commit 8f11b52d9a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
109 changed files with 2169 additions and 873 deletions

View file

@ -3,3 +3,6 @@
[Canvas test: 2d.text.measure.width.basic]
expected: FAIL
[The width of character is same as font used]
expected: FAIL

View file

@ -14,6 +14,9 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
[Revoke blob URL after calling fetch, fetch should succeed]
expected: FAIL
[url-with-fetch.any.html]
[Untitled]

View file

@ -122995,42 +122995,6 @@
{}
]
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-002.tentative.html": [
[
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-002.tentative.html",
[
[
"/css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-002.tentative-ref.html",
"=="
]
],
{}
]
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-003.tentative.html": [
[
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-003.tentative.html",
[
[
"/css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-003.tentative-ref.html",
"=="
]
],
{}
]
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-004.tentative.html": [
[
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-004.tentative.html",
[
[
"/css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-004.tentative-ref.html",
"=="
]
],
{}
]
],
"css/css-fonts/quoted-generic-ignored.html": [
[
"css/css-fonts/quoted-generic-ignored.html",
@ -242632,15 +242596,6 @@
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-001.tentative-ref.html": [
[]
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-002.tentative-ref.html": [
[]
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-003.tentative-ref.html": [
[]
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-004.tentative-ref.html": [
[]
],
"css/css-fonts/quoted-generic-ignored-ref.html": [
[]
],
@ -247471,9 +247426,6 @@
"css/css-grid/animation/grid-template-rows-001-ref.html": [
[]
],
"css/css-grid/animation/resources/interpolation-testcommon.js": [
[]
],
"css/css-grid/grid-definition/grid-template-columns-fit-content-001-ref.html": [
[]
],
@ -256936,9 +256888,6 @@
"css/motion/animation/reftests/offset-path-path-interpolation-ref.html": [
[]
],
"css/motion/animation/resources/interpolation-testcommon.js": [
[]
],
"css/motion/offset-anchor-transform-box-fill-box-ref.html": [
[]
],
@ -257224,6 +257173,9 @@
"css/support/inheritance-testcommon.js": [
[]
],
"css/support/interpolation-testcommon.js": [
[]
],
"css/support/parsing-testcommon.js": [
[]
],
@ -312399,6 +312351,12 @@
{}
]
],
"css/css-position/position-absolute-crash-chrome-008.html": [
[
"css/css-position/position-absolute-crash-chrome-008.html",
{}
]
],
"css/css-position/position-absolute-dynamic-containing-block.html": [
[
"css/css-position/position-absolute-dynamic-containing-block.html",
@ -321433,6 +321391,30 @@
{}
]
],
"css/filter-effects/animation/filter-interpolation-001.html": [
[
"css/filter-effects/animation/filter-interpolation-001.html",
{}
]
],
"css/filter-effects/animation/filter-interpolation-002.html": [
[
"css/filter-effects/animation/filter-interpolation-002.html",
{}
]
],
"css/filter-effects/animation/filter-interpolation-003.html": [
[
"css/filter-effects/animation/filter-interpolation-003.html",
{}
]
],
"css/filter-effects/animation/filter-interpolation-004.html": [
[
"css/filter-effects/animation/filter-interpolation-004.html",
{}
]
],
"css/filter-effects/inheritance.html": [
[
"css/filter-effects/inheritance.html",
@ -321729,6 +321711,12 @@
{}
]
],
"css/mediaqueries/forced-colors.html": [
[
"css/mediaqueries/forced-colors.html",
{}
]
],
"css/mediaqueries/prefers-color-scheme.html": [
[
"css/mediaqueries/prefers-color-scheme.html",
@ -368938,6 +368926,66 @@
{}
]
],
"offscreen-canvas/text/2d.text.measure.actualBoundingBox.html": [
[
"offscreen-canvas/text/2d.text.measure.actualBoundingBox.html",
{}
]
],
"offscreen-canvas/text/2d.text.measure.actualBoundingBox.worker.js": [
[
"offscreen-canvas/text/2d.text.measure.actualBoundingBox.worker.html",
{}
]
],
"offscreen-canvas/text/2d.text.measure.advances.html": [
[
"offscreen-canvas/text/2d.text.measure.advances.html",
{}
]
],
"offscreen-canvas/text/2d.text.measure.advances.worker.js": [
[
"offscreen-canvas/text/2d.text.measure.advances.worker.html",
{}
]
],
"offscreen-canvas/text/2d.text.measure.baselines.html": [
[
"offscreen-canvas/text/2d.text.measure.baselines.html",
{}
]
],
"offscreen-canvas/text/2d.text.measure.baselines.worker.js": [
[
"offscreen-canvas/text/2d.text.measure.baselines.worker.html",
{}
]
],
"offscreen-canvas/text/2d.text.measure.emHeights.html": [
[
"offscreen-canvas/text/2d.text.measure.emHeights.html",
{}
]
],
"offscreen-canvas/text/2d.text.measure.emHeights.worker.js": [
[
"offscreen-canvas/text/2d.text.measure.emHeights.worker.html",
{}
]
],
"offscreen-canvas/text/2d.text.measure.fontBoundingBox.html": [
[
"offscreen-canvas/text/2d.text.measure.fontBoundingBox.html",
{}
]
],
"offscreen-canvas/text/2d.text.measure.fontBoundingBox.worker.js": [
[
"offscreen-canvas/text/2d.text.measure.fontBoundingBox.worker.html",
{}
]
],
"offscreen-canvas/text/2d.text.measure.width.basic.html": [
[
"offscreen-canvas/text/2d.text.measure.width.basic.html",
@ -431485,7 +431533,7 @@
},
"paths": {
".azure-pipelines.yml": [
"72a509e6b19d2d1e3b1b47e134eac8c94eb3bb5f",
"1a8950b870fbad7bb343889c9cf5f091bb56a3fa",
"support"
],
".codecov.yml": [
@ -432689,31 +432737,31 @@
"testharness"
],
"2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html": [
"484af7c239935c073f29df8fe517000af183cc71",
"6ab0c387002f6ce9c6397c9f780b57e8df514819",
"testharness"
],
"2dcontext/drawing-text-to-the-canvas/2d.text.measure.advances.html": [
"ed8c04d0ab791b2aba4b58fdc42935fb936f0bc5",
"1830d1dee05e423b95faf2c52c1ddccf0e4fde8b",
"testharness"
],
"2dcontext/drawing-text-to-the-canvas/2d.text.measure.baselines.html": [
"2472889a607f5a39e10d18f9a53d9addb6ddb9c2",
"c3e5f6aa3d01b65696813a3676eddb6c3bdfed05",
"testharness"
],
"2dcontext/drawing-text-to-the-canvas/2d.text.measure.emHeights.html": [
"36087e7b035020c51504f9efddb130fda66f4ebd",
"6c7d5373f61dbcf00fec60e28210ed94583f04bf",
"testharness"
],
"2dcontext/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html": [
"1c9bfc492c1d1e57e857cf92ff3cf0172b8b464a",
"cbe98ba7628673cb4a649a6f4d2b37b97b0e4478",
"testharness"
],
"2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html": [
"1cfe16438f4910db4b03e40a00ca8a31e0d9fe85",
"5a5a57adda757c061b4f23850d79b50f21aee53e",
"testharness"
],
"2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html": [
"add8ce5ba5f1fcdee619c59f523ae5688166ec93",
"70f0f07a9cf9f0b4596868d397912e7590adc5e7",
"testharness"
],
"2dcontext/fill-and-stroke-styles/2d.fillStyle.default.html": [
@ -435361,7 +435409,7 @@
"testharness"
],
"2dcontext/text-styles/2d.text.measure.width.space.html": [
"d6e37a19cb631bc1669e868de92a825cd530d838",
"82a6118fee94967da02125a01bfd3611eb080eee",
"testharness"
],
"2dcontext/text-styles/canvas_text_font_001-ref.htm": [
@ -435521,7 +435569,7 @@
"support"
],
"2dcontext/tools/tests2dtext.yaml": [
"f89d6d48a4f0e364086414d5869565b9358967c4",
"0ee476d755dc7647e7b258974f3aad2cf6ea680e",
"support"
],
"2dcontext/transformations/2d.transformation.order.html": [
@ -539873,35 +539921,11 @@
"reftest"
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-001.tentative-ref.html": [
"26d76a1661bf73b6b4862f2d473acc648050fd85",
"f98f3ee3e869864b5d75d4bce4be823319b975d7",
"support"
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-001.tentative.html": [
"151e1552bf23f10fbc75a22542e34b2755287746",
"reftest"
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-002.tentative-ref.html": [
"4f695e05d1ca432db4d479e5260045e93178c732",
"support"
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-002.tentative.html": [
"3c5416a86d3ca072c4a5f3bf175f2b782be028ef",
"reftest"
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-003.tentative-ref.html": [
"d13d90c2b54452d24fbb0b77812e82e9c7a7b29d",
"support"
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-003.tentative.html": [
"abca2487f4a21b82738dc0845efeb29c61d1bb42",
"reftest"
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-004.tentative-ref.html": [
"de0dab2e1847894f630e834e7e3d5c536ab0dc05",
"support"
],
"css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-004.tentative.html": [
"350f086c466de27659ac5baa861311b96c87cdea",
"951bc84417be110cba83e885d7124dec274c5d49",
"reftest"
],
"css/css-fonts/math-script-level-and-math-style/math-style-001.tentative.html": [
@ -547929,7 +547953,7 @@
"reftest"
],
"css/css-grid/animation/grid-template-columns-interpolation.html": [
"4adba6de3feaa99357f88bb5df68d12103ab06e7",
"e42a4243543dc43a876724ce1f74a2c1d496c077",
"testharness"
],
"css/css-grid/animation/grid-template-rows-001-ref.html": [
@ -547941,13 +547965,9 @@
"reftest"
],
"css/css-grid/animation/grid-template-rows-interpolation.html": [
"42152bcdf203faf70e2941552b71c7689222df57",
"3c650395df082f0240b88f5868fc10ec04960d53",
"testharness"
],
"css/css-grid/animation/resources/interpolation-testcommon.js": [
"530b4fea5c3d9e231bee887394c75888fad47b8b",
"support"
],
"css/css-grid/grid-definition/fr-unit-with-percentage.html": [
"82c97abdd5740d466f049d8b45b67e241f204899",
"reftest"
@ -554652,6 +554672,10 @@
"9c24210c2570224f6a1812b84148c4ca468a4473",
"testharness"
],
"css/css-position/position-absolute-crash-chrome-008.html": [
"3d1c90930cf3f0b794ea34fcdbcb347cb6d3863c",
"testharness"
],
"css/css-position/position-absolute-dynamic-containing-block.html": [
"3968f685849663574ca213fcb90dc5fb3eaffaa3",
"testharness"
@ -587396,6 +587420,22 @@
"930b762b01a1a75e5b5ab4fb18dedd5939618fe1",
"support"
],
"css/filter-effects/animation/filter-interpolation-001.html": [
"b4a4b3f4bbad00fb76ee731dd9ed2ac7c2be41bc",
"testharness"
],
"css/filter-effects/animation/filter-interpolation-002.html": [
"1b66c2751d417438bee5c8349cf1359dd2042f4a",
"testharness"
],
"css/filter-effects/animation/filter-interpolation-003.html": [
"5ca1229e297fc65c3a9f4127913d8cc8813de66e",
"testharness"
],
"css/filter-effects/animation/filter-interpolation-004.html": [
"63dd17361a3e01b08435cff90ea7efdf4ebc64ca",
"testharness"
],
"css/filter-effects/backdrop-filter-basic-background-color-ref.html": [
"a3dbad0b497d0ab7eaab494178fa87be78cf0d3c",
"support"
@ -587937,7 +587977,7 @@
"testharness"
],
"css/filter-effects/parsing/backdrop-filter-computed.html": [
"96de7b941bafda4e87c185148f6f11169e1d80a7",
"d947e2c8711c65ed0589c8354ecc1d4d11a96134",
"testharness"
],
"css/filter-effects/parsing/backdrop-filter-parsing-invalid.html": [
@ -587961,7 +588001,7 @@
"testharness"
],
"css/filter-effects/parsing/filter-computed.html": [
"0c9bb9e19630bf8eb049e2ce2120e6dc87aa7634",
"2e7f3b478b576e8351fd5b63ceae37d08a33ae6f",
"testharness"
],
"css/filter-effects/parsing/filter-parsing-invalid.html": [
@ -588528,6 +588568,10 @@
"403829dfd2ad0dec10d17f9915df32a7749a35a8",
"reftest"
],
"css/mediaqueries/forced-colors.html": [
"005b5cf4a8bd01d9f360d808c1c8700c85de9364",
"testharness"
],
"css/mediaqueries/media-queries-001.xht": [
"ae8736e9d4b6242544f40fcd1919aa59e7d6264f",
"visual"
@ -588645,39 +588689,39 @@
"support"
],
"css/motion/animation/offset-anchor-interpolation.html": [
"414a0bd0d7013839cd43593d8216cf7d041d23ad",
"7ad9482a2b4b65eda290a9ed33f3db24acd7bce9",
"testharness"
],
"css/motion/animation/offset-distance-interpolation.html": [
"a56878a0a5ab7d68051bfaba108a697596ec3e5b",
"4912b9cf2510b45915756b320f5872dad2cae5d8",
"testharness"
],
"css/motion/animation/offset-path-interpolation-001.html": [
"279152e103380894a2f397eb98cc1118cfb25fd3",
"5b90813bb591d0aa7e17eeddcb1a9e3a908670f0",
"testharness"
],
"css/motion/animation/offset-path-interpolation-002.html": [
"742e9d0a9edde810f23f07db617a14a1350324f4",
"2841bd9562ebceb7aa294d0bdf8cff2c3b1c45d1",
"testharness"
],
"css/motion/animation/offset-path-interpolation-003.html": [
"a6d4e89efd0c4c869e2013b517a0258f728d8966",
"44c0285055ed41d8e3ed0cffb018b2342cbc6b15",
"testharness"
],
"css/motion/animation/offset-path-interpolation-004.html": [
"f3e07ab97b4c5a04a539541e2b1c9a72260b4fc1",
"860348649b101755ce2fc63de1789bf840c46b5a",
"testharness"
],
"css/motion/animation/offset-path-interpolation-005.html": [
"617fff0490d961ade48199e72dd63c33f7286415",
"afe4bf5774357f0387f1ab63642ab6d02a8e9c6a",
"testharness"
],
"css/motion/animation/offset-position-interpolation.html": [
"c31034d10f8bf62d48aac030b98ed54a60714ded",
"5ccca37dc304fbdabf73f0bc074b54d2682c6336",
"testharness"
],
"css/motion/animation/offset-rotate-interpolation.html": [
"3b3d755f4f1faec257abd1a75eba11f8d4616d05",
"a55a005747f6d0a45a950b8b2315c8a71970043c",
"testharness"
],
"css/motion/animation/reftests/offset-distance-interpolation-001.html": [
@ -588696,10 +588740,6 @@
"360caeea68242cc80cbdb131884c633a6f3f7b47",
"reftest"
],
"css/motion/animation/resources/interpolation-testcommon.js": [
"6933733e1970d06fd5473b74f7ba63a9a821624a",
"support"
],
"css/motion/inheritance.html": [
"4a82f32cd58694f43314b6f52fc5e828ddfd8f01",
"testharness"
@ -590916,6 +590956,10 @@
"8d1645f9b110137408837418423a2ed42a588072",
"support"
],
"css/support/interpolation-testcommon.js": [
"9bc71ff9d32e372551d5b75cfd329dd6ce114949",
"support"
],
"css/support/parsing-testcommon.js": [
"7ecd588aaf5160f121b9eb240f58d2739135c829",
"support"
@ -606173,7 +606217,7 @@
"support"
],
"feature-policy/experimental-features/layout-animations-disabled-tentative.html": [
"993aa0d5dc9407188725f305a3325acea5855971",
"0190eaa84f75e3097b95f70adde89296d47cc1f3",
"testharness"
],
"feature-policy/experimental-features/layout-animations-disabled-tentative.html.headers": [
@ -606197,7 +606241,7 @@
"support"
],
"feature-policy/experimental-features/layout-animations-enabled-tentative.html": [
"cf396e9022344f059223421808dd36c7e67b3a54",
"19e405496eef72d176d007c93f7262e6a12b3806",
"testharness"
],
"feature-policy/experimental-features/lazyload/lazyload-disabled-image-tentative.sub.html": [
@ -641684,28 +641728,68 @@
"11a96dcd745e3c282f352ad44b8485319846eb89",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.actualBoundingBox.html": [
"e747d30680318cb8c0a9214219b4eefe9e74cd6c",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.actualBoundingBox.worker.js": [
"da6eac509f13e7ce3e6e736b2f661b9c4b7e908f",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.advances.html": [
"ce03b2bc432499b5b5bc94ebf7bf0820c256ea4c",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.advances.worker.js": [
"ff696f896496e6e80ce9a5d413e5838e4996cca5",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.baselines.html": [
"7812c4e41ec40b0e67e4e51a7a992ffbfd80aedd",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.baselines.worker.js": [
"721eccfe7bbe8e9ca64c9689648f1403d4e61e89",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.emHeights.html": [
"be8be39a1043c72c806d3340e6ab6d2383464e70",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.emHeights.worker.js": [
"561bcb8dc2d7dd8f2a1faf66e15ded48527fdd8d",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.fontBoundingBox.html": [
"91e7f5fdc87a20bea258a983f2d95f027e9f72b7",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.fontBoundingBox.worker.js": [
"b9038bc31d0e9104808c3508ebabf37fc8cb1be5",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.width.basic.html": [
"a01c1099ebc6b56864e36a0ddbccfd5e4cd0a183",
"4712c1cdf3dad7d4353d2d3c675969f2c1f92157",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.width.basic.worker.js": [
"b4ca23b2a40a23e36192f43965675af6be6ea291",
"b646b789e3dc28912b4444076f4e0fa0fe4ae607",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.width.empty.html": [
"6173d183ca263f4008248a791ee24809dfddccc0",
"1f48f77f3c8b260733d7713367dcd9c6b07f24ec",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.width.empty.worker.js": [
"d9c71afafa6b16d18b0f0ca550818f2c4bf78e50",
"35dca25c658325784362f20dbdc4f1d3c84cc0c8",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.width.space.html": [
"b4cdc8b0c6bcfcaf3bfc0072f364e8e8caf17867",
"bfe895684f46e922bbb53bc4328f78d48fd0b5e3",
"testharness"
],
"offscreen-canvas/text/2d.text.measure.width.space.worker.js": [
"5fc91b8488233e91a0182af2d02e97e2140bba76",
"25b594a1cc662f292f912cee9ba84b5187025a97",
"testharness"
],
"offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.html": [
@ -642277,7 +642361,7 @@
"support"
],
"offscreen-canvas/tools/tests2d.yaml": [
"ed712922dd15526ef8cbbe784445be2326e299a8",
"0aaad783101b5695fe49a9c3869fdb4e6ee69a18",
"support"
],
"offscreen-canvas/transformations/2d.transformation.order.html": [
@ -643161,15 +643245,15 @@
"testharness"
],
"payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html": [
"090af39ed76bc2ef45ec608c3bc05f7c74ac0bd2",
"b0e0cbacbf2e611139cd30747acaaf1186ae21f6",
"testharness"
],
"payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html": [
"d77024eb7fcb48f02ab4bb7468d395f494cb82bd",
"45661de7e0dedd19cda4a7a2f0a76aaa72e91ccc",
"testharness"
],
"payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html": [
"4564d264c4e2c542b25740e92709c9e7c0a14a1d",
"06f0c8479da9450c748fe01c6d411f73355210da",
"testharness"
],
"payment-request/billing-address-changed-manual.https.html": [

View file

@ -1,2 +0,0 @@
[math-script-level-font-size-clamping-001.tentative.html]
expected: FAIL

View file

@ -0,0 +1,37 @@
[filter-interpolation-001.html]
[Animation between "hue-rotate(0deg) blur(6px)" and "hue-rotate(180deg) blur(10px)" at progress -0.5]
expected: FAIL
[Animation between "hue-rotate(0deg) blur(6px)" and "hue-rotate(180deg) blur(10px)" at progress 0.5]
expected: FAIL
[Animation between "hue-rotate(80deg) blur(6mm)" and "hue-rotate(100grad) blur(1cm)" at progress -0.5]
expected: FAIL
[Animation between "hue-rotate(0deg) blur(6px)" and "hue-rotate(180deg) blur(10px)" at progress 1.5]
expected: FAIL
[Animation between "hue-rotate(80deg) blur(6mm)" and "hue-rotate(100grad) blur(1cm)" at progress 1]
expected: FAIL
[Animation between "hue-rotate(0deg) blur(6px)" and "hue-rotate(180deg) blur(10px)" at progress 1]
expected: FAIL
[Animation between "hue-rotate(0deg) blur(6px)" and "hue-rotate(180deg) blur(10px)" at progress 0]
expected: FAIL
[Animation between "hue-rotate(80deg) blur(6mm)" and "hue-rotate(100grad) blur(1cm)" at progress 1.5]
expected: FAIL
[Animation between "hue-rotate(0deg) blur(6px)" and "hue-rotate(180deg) blur(10px)" at progress 0.25]
expected: FAIL
[Animation between "hue-rotate(80deg) blur(6mm)" and "hue-rotate(100grad) blur(1cm)" at progress 0.25]
expected: FAIL
[Animation between "hue-rotate(80deg) blur(6mm)" and "hue-rotate(100grad) blur(1cm)" at progress 0]
expected: FAIL
[Animation between "hue-rotate(80deg) blur(6mm)" and "hue-rotate(100grad) blur(1cm)" at progress 0.5]
expected: FAIL

View file

@ -0,0 +1,49 @@
[filter-interpolation-002.html]
[Animation between "grayscale(0) blur(0px)" and "blur(10px)" at progress -1]
expected: FAIL
[Animation between "grayscale(0) blur(0px)" and "blur(10px)" at progress 2]
expected: FAIL
[Animation between "grayscale(0) blur(0px)" and "blur(10px)" at progress 0.4]
expected: FAIL
[Animation between "blur(6px)" and "blur(10px) hue-rotate(180deg)" at progress 1.5]
expected: FAIL
[Animation between "grayscale(0) blur(0px)" and "blur(10px)" at progress 1]
expected: FAIL
[Animation between "blur(6px)" and "blur(10px) hue-rotate(180deg)" at progress 0.5]
expected: FAIL
[Animation between "grayscale(0) blur(0px)" and "blur(10px)" at progress 0.6]
expected: FAIL
[Animation between "blur(6px)" and "blur(10px) hue-rotate(180deg)" at progress 1]
expected: FAIL
[Animation between "none" and "opacity(0.5) hue-rotate(180deg)" at progress 0.25]
expected: FAIL
[Animation between "none" and "opacity(0.5) hue-rotate(180deg)" at progress 1.5]
expected: FAIL
[Animation between "none" and "opacity(0.5) hue-rotate(180deg)" at progress 1]
expected: FAIL
[Animation between "none" and "opacity(0.5) hue-rotate(180deg)" at progress 0.5]
expected: FAIL
[Animation between "grayscale(0) blur(0px)" and "blur(10px)" at progress 0]
expected: FAIL
[Animation between "blur(6px)" and "blur(10px) hue-rotate(180deg)" at progress 0.25]
expected: FAIL
[Animation between "blur(6px)" and "blur(10px) hue-rotate(180deg)" at progress -0.5]
expected: FAIL
[Animation between "none" and "opacity(0.5) hue-rotate(180deg)" at progress -0.5]
expected: FAIL

View file

@ -0,0 +1,145 @@
[filter-interpolation-003.html]
[Animation between "url("#svgfilter")" and "none" at progress 0.4]
expected: FAIL
[Animation between "none" and "blur(10px)" at progress 1]
expected: FAIL
[Animation between "none" and "sepia(1)" at progress -1]
expected: FAIL
[Animation between "brightness(0)" and "none" at progress -1]
expected: FAIL
[Animation between "none" and "grayscale(1)" at progress -1]
expected: FAIL
[Animation between "saturate(0)" and "none" at progress 0]
expected: FAIL
[Animation between "saturate(0)" and "none" at progress -1]
expected: FAIL
["url("#svgfilter")" and "none" are valid filter values]
expected: FAIL
[Animation between "opacity(0)" and "none" at progress 0.5]
expected: FAIL
[Animation between "url("#svgfilter")" and "none" at progress 0]
expected: FAIL
[Animation between "url("#svgfilter")" and "none" at progress 1]
expected: FAIL
[Animation between "url("#svgfilter")" and "none" at progress 2]
expected: FAIL
[Animation between "none" and "invert(1)" at progress 1.5]
expected: FAIL
[Animation between "none" and "sepia(1)" at progress 1]
expected: FAIL
[Animation between "none" and "invert(1)" at progress 0.5]
expected: FAIL
[Animation between "none" and "grayscale(1)" at progress 0.5]
expected: FAIL
["none" and "drop-shadow(20px 10px green)" are valid filter values]
expected: FAIL
[Animation between "none" and "grayscale(1)" at progress 1.5]
expected: FAIL
[Animation between "brightness(0)" and "none" at progress 0]
expected: FAIL
[Animation between "none" and "hue-rotate(360deg)" at progress 0.5]
expected: FAIL
[Animation between "none" and "hue-rotate(360deg)" at progress 1]
expected: FAIL
[Animation between "opacity(0)" and "none" at progress 0]
expected: FAIL
[Animation between "contrast(0)" and "none" at progress -1]
expected: FAIL
[Animation between "none" and "grayscale(1)" at progress 1]
expected: FAIL
[Animation between "none" and "blur(10px)" at progress 0.5]
expected: FAIL
[Animation between "saturate(0)" and "none" at progress 1.5]
expected: FAIL
[Animation between "none" and "blur(10px)" at progress 1.5]
expected: FAIL
[Animation between "none" and "hue-rotate(360deg)" at progress 1.5]
expected: FAIL
[Animation between "none" and "drop-shadow(20px 10px green)" at progress 0.5]
expected: FAIL
[Animation between "contrast(0)" and "none" at progress 0.5]
expected: FAIL
[Animation between "contrast(0)" and "none" at progress 0]
expected: FAIL
[Animation between "contrast(0)" and "none" at progress 1.5]
expected: FAIL
[Animation between "none" and "drop-shadow(20px 10px green)" at progress 1.5]
expected: FAIL
[Animation between "url("#svgfilter")" and "none" at progress 0.6]
expected: FAIL
[Animation between "none" and "blur(10px)" at progress -1]
expected: FAIL
[Animation between "brightness(0)" and "none" at progress 0.5]
expected: FAIL
[Animation between "none" and "drop-shadow(20px 10px green)" at progress -1]
expected: FAIL
[Animation between "brightness(0)" and "none" at progress 1.5]
expected: FAIL
[Animation between "opacity(0)" and "none" at progress 1.5]
expected: FAIL
[Animation between "opacity(0)" and "none" at progress -1]
expected: FAIL
[Animation between "none" and "invert(1)" at progress -1]
expected: FAIL
[Animation between "none" and "invert(1)" at progress 1]
expected: FAIL
[Animation between "none" and "hue-rotate(360deg)" at progress -1]
expected: FAIL
[Animation between "saturate(0)" and "none" at progress 0.5]
expected: FAIL
[Animation between "url("#svgfilter")" and "none" at progress -1]
expected: FAIL
[Animation between "none" and "drop-shadow(20px 10px green)" at progress 1]
expected: FAIL
[Animation between "none" and "sepia(1)" at progress 0.5]
expected: FAIL
[Animation between "none" and "sepia(1)" at progress 1.5]
expected: FAIL

View file

@ -0,0 +1,154 @@
[filter-interpolation-004.html]
[Animation between "saturate(0)" and "saturate()" at progress 1]
expected: FAIL
[Animation between "opacity(0)" and "opacity()" at progress 1.5]
expected: FAIL
[Animation between "sepia(0)" and "sepia()" at progress 1]
expected: FAIL
[Animation between "invert(0)" and "invert()" at progress -1]
expected: FAIL
[Animation between "invert(0)" and "invert()" at progress 1]
expected: FAIL
[Animation between "opacity(0)" and "opacity()" at progress 1]
expected: FAIL
[Animation between "sepia(0)" and "sepia()" at progress 1.5]
expected: FAIL
[Animation between "invert(0)" and "invert()" at progress 0]
expected: FAIL
[Animation between "blur()" and "blur(10px)" at progress 1]
expected: FAIL
[Animation between "blur()" and "blur(10px)" at progress 0]
expected: FAIL
[Animation between "grayscale(0)" and "grayscale()" at progress 1]
expected: FAIL
[Animation between "grayscale(0)" and "grayscale()" at progress 0]
expected: FAIL
[Animation between "saturate(0)" and "saturate()" at progress 1.5]
expected: FAIL
["drop-shadow(0px 0px)" and "drop-shadow(20px 10px 30px green)" are valid filter values]
expected: FAIL
[Animation between "opacity(0)" and "opacity()" at progress 0]
expected: FAIL
[Animation between "brightness(0)" and "brightness()" at progress 1]
expected: FAIL
[Animation between "brightness(0)" and "brightness()" at progress 0]
expected: FAIL
[Animation between "brightness(0)" and "brightness()" at progress -1]
expected: FAIL
[Animation between "drop-shadow(0px 0px)" and "drop-shadow(20px 10px 30px green)" at progress -1]
expected: FAIL
[Animation between "hue-rotate()" and "hue-rotate(360deg)" at progress 0.5]
expected: FAIL
[Animation between "brightness(0)" and "brightness()" at progress 1.5]
expected: FAIL
[Animation between "grayscale(0)" and "grayscale()" at progress -1]
expected: FAIL
[Animation between "contrast(0)" and "contrast()" at progress 1.5]
expected: FAIL
[Animation between "invert(0)" and "invert()" at progress 0.5]
expected: FAIL
[Animation between "saturate(0)" and "saturate()" at progress 0]
expected: FAIL
[Animation between "sepia(0)" and "sepia()" at progress 0]
expected: FAIL
[Animation between "invert(0)" and "invert()" at progress 1.5]
expected: FAIL
[Animation between "hue-rotate()" and "hue-rotate(360deg)" at progress 1]
expected: FAIL
[Animation between "hue-rotate()" and "hue-rotate(360deg)" at progress 0]
expected: FAIL
[Animation between "blur()" and "blur(10px)" at progress 0.5]
expected: FAIL
[Animation between "contrast(0)" and "contrast()" at progress 0.5]
expected: FAIL
[Animation between "blur()" and "blur(10px)" at progress 1.5]
expected: FAIL
[Animation between "brightness(0)" and "brightness()" at progress 0.5]
expected: FAIL
[Animation between "hue-rotate()" and "hue-rotate(360deg)" at progress 1.5]
expected: FAIL
[Animation between "contrast(0)" and "contrast()" at progress -1]
expected: FAIL
[Animation between "contrast(0)" and "contrast()" at progress 1]
expected: FAIL
[Animation between "contrast(0)" and "contrast()" at progress 0]
expected: FAIL
[Animation between "opacity(0)" and "opacity()" at progress -1]
expected: FAIL
[Animation between "blur()" and "blur(10px)" at progress -1]
expected: FAIL
[Animation between "sepia(0)" and "sepia()" at progress 0.5]
expected: FAIL
[Animation between "drop-shadow(0px 0px)" and "drop-shadow(20px 10px 30px green)" at progress 0]
expected: FAIL
[Animation between "drop-shadow(0px 0px)" and "drop-shadow(20px 10px 30px green)" at progress 1]
expected: FAIL
[Animation between "grayscale(0)" and "grayscale()" at progress 1.5]
expected: FAIL
[Animation between "saturate(0)" and "saturate()" at progress 0.5]
expected: FAIL
[Animation between "grayscale(0)" and "grayscale()" at progress 0.5]
expected: FAIL
[Animation between "sepia(0)" and "sepia()" at progress -1]
expected: FAIL
[Animation between "drop-shadow(0px 0px)" and "drop-shadow(20px 10px 30px green)" at progress 0.5]
expected: FAIL
[Animation between "drop-shadow(0px 0px)" and "drop-shadow(20px 10px 30px green)" at progress 1.5]
expected: FAIL
[Animation between "opacity(0)" and "opacity()" at progress 0.5]
expected: FAIL
[Animation between "saturate(0)" and "saturate()" at progress -1]
expected: FAIL
[Animation between "hue-rotate()" and "hue-rotate(360deg)" at progress -1]
expected: FAIL

View file

@ -83,3 +83,9 @@
[Property backdrop-filter value 'blur(100px)' computes to 'blur(100px)']
expected: FAIL
[Property backdrop-filter value 'invert()' computes to 'invert(1)']
expected: FAIL
[Property backdrop-filter value 'brightness()' computes to 'brightness(1)']
expected: FAIL

View file

@ -0,0 +1,22 @@
[forced-colors.html]
[Should be parseable in JS: '(forced-colors)']
expected: FAIL
[Should be parseable in JS: '(forced-colors: active)']
expected: FAIL
[Should be parseable in JS: '(forced-colors: none)']
expected: FAIL
[Should be parseable in a CSS stylesheet: '(forced-colors: none)']
expected: FAIL
[Should be parseable in a CSS stylesheet: '(forced-colors)']
expected: FAIL
[Check that none evaluates to false in the boolean context]
expected: FAIL
[Should be parseable in a CSS stylesheet: '(forced-colors: active)']
expected: FAIL

View file

@ -2,6 +2,7 @@
type: testharness
[single-byte-decoder.html?document]
expected: TIMEOUT
[ISO-8859-4: iso_8859-4:1988 (document.characterSet and document.inputEncoding)]
expected: FAIL

View file

@ -312,9 +312,6 @@
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
@ -324,9 +321,18 @@
[<iframe>: separate response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: separate response Content-Type: */* text/html]
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL

View file

@ -11,6 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
[X-Content-Type-Options%3A%20%2Cnosniff]
expected: FAIL

View file

@ -0,0 +1,4 @@
[navigation-unload-same-origin-fragment.html]
[Tests that a fragment navigation in the unload handler will not block the initial navigation]
expected: FAIL

View file

@ -0,0 +1,4 @@
[005.html]
[<body onpopstate="..."> should register a listener for the popstate event]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,24 +1,5 @@
[open-features-negative-innerwidth-innerheight.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
expected: FAIL
[features "innerheight=-404.5" should NOT set "height=404"]
expected: TIMEOUT
[features "innerwidth=-404.5" should NOT set "width=404"]
expected: TIMEOUT
[features "innerwidth=-404" should NOT set "width=404"]
expected: TIMEOUT
[features "innerheight=-404e1" should NOT set "height=404"]
expected: TIMEOUT
[features "innerheight=-404" should NOT set "height=404"]
expected: TIMEOUT
[features "innerwidth=-404e1" should NOT set "width=404"]
expected: TIMEOUT

View file

@ -1,24 +1,5 @@
[open-features-negative-screenx-screeny.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
expected: FAIL
[features "screenx=-204" should NOT set "left=204"]
expected: TIMEOUT
[features "screeny=-204" should NOT set "top=204"]
expected: TIMEOUT
[features "screeny=-204.5" should NOT set "top=204"]
expected: TIMEOUT
[features "screeny=-0" should NOT set "top=204"]
expected: TIMEOUT
[features "screenx=-0" should NOT set "left=204"]
expected: TIMEOUT
[features "screenx=-204.5" should NOT set "left=204"]
expected: TIMEOUT

View file

@ -1,24 +1,5 @@
[open-features-negative-top-left.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for `top`, `left`]
expected: FAIL
[features "top=-204" should NOT set "top=204"]
expected: TIMEOUT
[features "top=-204.5" should NOT set "top=204"]
expected: TIMEOUT
[features "left=-204" should NOT set "left=204"]
expected: TIMEOUT
[features "top=-0" should NOT set "top=204"]
expected: TIMEOUT
[features "left=-204.5" should NOT set "left=204"]
expected: TIMEOUT
[features "left=-0" should NOT set "left=204"]
expected: TIMEOUT

View file

@ -1,24 +1,5 @@
[open-features-negative-width-height.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for `width`, `height`]
expected: FAIL
[features "height=-404" should NOT set "height=404"]
expected: TIMEOUT
[features "height=-404e1" should NOT set "height=404"]
expected: TIMEOUT
[features "height=-404.5" should NOT set "height=404"]
expected: TIMEOUT
[features "width=-404" should NOT set "width=404"]
expected: TIMEOUT
[features "width=-404e1" should NOT set "width=404"]
expected: TIMEOUT
[features "width=-404.5" should NOT set "width=404"]
expected: TIMEOUT

View file

@ -1,48 +1,32 @@
[open-features-non-integer-height.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `height`]
expected: FAIL
[features "height=405*3" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "height=405.32" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "height=405e1" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "height=405/5" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "height=405^4" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "height=405.5" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "height=405e-1" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "height=405 " should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "height=405LLl" should set "height=405"]
expected: TIMEOUT
[features "height=/404" should NOT set "height=404"]
expected: TIMEOUT
[top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
expected: TIMEOUT
[top=0,left=0: absence of feature "height" should be treated same as "height=0"]
expected: TIMEOUT
[features "height=_404" should NOT set "height=404"]
expected: TIMEOUT
[features "height=L404" should NOT set "height=404"]
expected: TIMEOUT
expected: FAIL

View file

@ -1,42 +1,32 @@
[open-features-non-integer-innerheight.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
expected: FAIL
[features "innerheight=405e-1" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "innerheight=405LLl" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "innerheight=405^4" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "innerheight=405e1" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "innerheight=405 " should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "innerheight=405/5" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "innerheight=405.32" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "innerheight=405.5" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "innerheight=405*3" should set "height=405"]
expected: TIMEOUT
[features "innerheight=_404" should NOT set "height=404"]
expected: TIMEOUT
[features "innerheight=L404" should NOT set "height=404"]
expected: TIMEOUT
[features "innerheight=/404" should NOT set "height=404"]
expected: TIMEOUT
expected: FAIL

View file

@ -1,42 +1,32 @@
[open-features-non-integer-innerwidth.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
expected: FAIL
[features "innerwidth=405e-1" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "innerwidth=405*3" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "innerwidth=405.5" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "innerwidth=405e1" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "innerwidth=405.32" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "innerwidth=405 " should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "innerwidth=405LLl" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "innerwidth=405/5" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "innerwidth=405^4" should set "width=405"]
expected: TIMEOUT
[features "innerwidth=/404" should NOT set "width=404"]
expected: TIMEOUT
[features "innerwidth=_404" should NOT set "width=404"]
expected: TIMEOUT
[features "innerwidth=L404" should NOT set "width=404"]
expected: TIMEOUT
expected: FAIL

View file

@ -1,42 +1,32 @@
[open-features-non-integer-left.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `left`]
expected: FAIL
[features "left=105e1" should set "left=105"]
expected: TIMEOUT
expected: FAIL
[features "left=105 " should set "left=105"]
expected: TIMEOUT
expected: FAIL
[features "left=105/5" should set "left=105"]
expected: TIMEOUT
expected: FAIL
[features "left=105e-1" should set "left=105"]
expected: TIMEOUT
expected: FAIL
[features "left=105^4" should set "left=105"]
expected: TIMEOUT
expected: FAIL
[features "left=105LLl" should set "left=105"]
expected: TIMEOUT
expected: FAIL
[features "left=105.32" should set "left=105"]
expected: TIMEOUT
expected: FAIL
[features "left=105*3" should set "left=105"]
expected: TIMEOUT
expected: FAIL
[features "left=105.5" should set "left=105"]
expected: TIMEOUT
[features "left=L104" should NOT set "left=104"]
expected: TIMEOUT
[features "left=/104" should NOT set "left=104"]
expected: TIMEOUT
[features "left=_104" should NOT set "left=104"]
expected: TIMEOUT
expected: FAIL

View file

@ -1,42 +1,32 @@
[open-features-non-integer-screeny.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
expected: FAIL
[features "screeny=405^4" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "screeny=405e-1" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "screeny=405LLl" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "screeny=405e1" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "screeny=405 " should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "screeny=405/5" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "screeny=405*3" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "screeny=405.32" should set "height=405"]
expected: TIMEOUT
expected: FAIL
[features "screeny=405.5" should set "height=405"]
expected: TIMEOUT
[features "screeny=_404" should NOT set "height=404"]
expected: TIMEOUT
[features "screeny=L404" should NOT set "height=404"]
expected: TIMEOUT
[features "screeny=/404" should NOT set "height=404"]
expected: TIMEOUT
expected: FAIL

View file

@ -1,42 +1,32 @@
[open-features-non-integer-top.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `top`]
expected: FAIL
[features "top=105/5" should set "top=105"]
expected: TIMEOUT
expected: FAIL
[features "top=105*3" should set "top=105"]
expected: TIMEOUT
expected: FAIL
[features "top=105LLl" should set "top=105"]
expected: TIMEOUT
expected: FAIL
[features "top=105e-1" should set "top=105"]
expected: TIMEOUT
expected: FAIL
[features "top=105.32" should set "top=105"]
expected: TIMEOUT
expected: FAIL
[features "top=105e1" should set "top=105"]
expected: TIMEOUT
expected: FAIL
[features "top=105 " should set "top=105"]
expected: TIMEOUT
expected: FAIL
[features "top=105^4" should set "top=105"]
expected: TIMEOUT
expected: FAIL
[features "top=105.5" should set "top=105"]
expected: TIMEOUT
[features "top=/104" should NOT set "top=104"]
expected: TIMEOUT
[features "top=_104" should NOT set "top=104"]
expected: TIMEOUT
[features "top=L104" should NOT set "top=104"]
expected: TIMEOUT
expected: FAIL

View file

@ -1,48 +1,32 @@
[open-features-non-integer-width.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `width`]
expected: FAIL
[features "width=405^4" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "width=405.5" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "width=405e1" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "width=405 " should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "width=405.32" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "width=405LLl" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "width=405*3" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "width=405e-1" should set "width=405"]
expected: TIMEOUT
expected: FAIL
[features "width=405/5" should set "width=405"]
expected: TIMEOUT
[top=0,left=0: absence of feature "width" should be treated same as "width=0"]
expected: TIMEOUT
[features "width=_404" should NOT set "width=404"]
expected: TIMEOUT
[top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"]
expected: TIMEOUT
[features "width=/404" should NOT set "width=404"]
expected: TIMEOUT
[features "width=L404" should NOT set "width=404"]
expected: TIMEOUT
expected: FAIL

View file

@ -1,10 +0,0 @@
[non-active-document.html]
[DOMParser]
expected: FAIL
[createHTMLDocument]
expected: FAIL
[<template>]
expected: FAIL

View file

@ -1,7 +0,0 @@
[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

View file

@ -1,5 +1,4 @@
[promise-rejection-events.html]
expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
expected: FAIL
@ -9,6 +8,3 @@
[no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap]
expected: FAIL
[rejectionhandled is dispatched from a queued task, and not immediately]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[2d.text.measure.actualBoundingBox.html]
[Testing actualBoundingBox for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.actualBoundingBox.worker.html]
[Testing actualBoundingBox for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.advances.html]
[Testing width advances for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.advances.worker.html]
[Testing width advances for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.baselines.html]
[Testing baselines for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.baselines.worker.html]
[Testing baselines for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.emHeights.html]
[Testing emHeights for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.emHeights.worker.html]
[Testing emHeights for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.fontBoundingBox.html]
[Testing fontBoundingBox for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.fontBoundingBox.worker.html]
[Testing fontBoundingBox for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.width.basic.html]
[The width of character is same as font used for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.width.basic.worker.html]
[The width of character is same as font used for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.width.empty.html]
[The empty string has zero width for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.width.empty.worker.html]
[The empty string has zero width for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.width.space.html]
[Space characters are converted to U+0020 and collapsed (per CSS) for OffscreenCanvas]
expected: FAIL

View file

@ -0,0 +1,4 @@
[2d.text.measure.width.space.worker.html]
[Space characters are converted to U+0020 and collapsed (per CSS) for OffscreenCanvas]
expected: FAIL

View file

@ -1,5 +1,4 @@
[import-in-moduleworker.html]
expected: ERROR
[Base URL in module dedicated workers: import]
expected: FAIL

View file

@ -0,0 +1,2 @@
[transition_calc_implicit.html]
expected: TIMEOUT

View file

@ -256,7 +256,7 @@ jobs:
- template: tools/ci/azure/install_edge.yml
- template: tools/ci/azure/update_hosts.yml
- template: tools/ci/azure/update_manifest.yml
- script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-tbpl - --log-tbpl-level info --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt edgechromium
- script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-tbpl - --log-tbpl-level info --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --channel dev edgechromium
displayName: 'Run tests (Edge Dev)'
- task: PublishBuildArtifacts@1
displayName: 'Publish results'
@ -270,7 +270,9 @@ jobs:
- job: results_safari
displayName: 'all tests (Safari)'
condition: eq(variables['Build.Reason'], 'Schedule')
condition: |
or(eq(variables['Build.Reason'], 'Schedule'),
and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_safari']))
strategy:
parallel: 4 # chosen to make runtime ~2h
timeoutInMinutes: 360

View file

@ -27,23 +27,27 @@ var t = async_test("Testing actualBoundingBox");
_addTest(function(canvas, ctx) {
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
ctx.baseline = 'alphabetic'
// Some platforms may return '-0'.
_assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft)", "0");
// Different platforms may render text slightly different.
_assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
_assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
_assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxDescent), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent)", "0");
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
ctx.baseline = 'alphabetic'
// Some platforms may return '-0'.
_assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft)", "0");
// Different platforms may render text slightly different.
_assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
_assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
_assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxDescent), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent)", "0");
_assertSame(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft)", "0");
_assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
_assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
_assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
}), 500);
_assertSame(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft)", "0");
_assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
_assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
_assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
}), 500);
});
});

View file

@ -27,25 +27,29 @@ var t = async_test("Testing width advances");
_addTest(function(canvas, ctx) {
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
// Some platforms may return '-0'.
_assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
// Different platforms may render text slightly different.
_assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
_assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
_assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
_assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
// Some platforms may return '-0'.
_assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
// Different platforms may render text slightly different.
_assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
_assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
_assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
_assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
var tm = ctx.measureText('Hello');
_assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
_assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
_assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
_assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
_assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
}), 500);
var tm = ctx.measureText('Hello');
_assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
_assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
_assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
_assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
_assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
}), 500);
});
});

View file

@ -27,18 +27,22 @@ var t = async_test("Testing baselines");
_addTest(function(canvas, ctx) {
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
_assertSame(Math.abs(ctx.measureText('A').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('A').getBaselines().alphabetic)", "0");
_assertSame(ctx.measureText('A').getBaselines().ideographic, -39, "ctx.measureText('A').getBaselines().ideographic", "-39");
_assertSame(ctx.measureText('A').getBaselines().hanging, 68, "ctx.measureText('A').getBaselines().hanging", "68");
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
_assertSame(Math.abs(ctx.measureText('A').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('A').getBaselines().alphabetic)", "0");
_assertSame(ctx.measureText('A').getBaselines().ideographic, -39, "ctx.measureText('A').getBaselines().ideographic", "-39");
_assertSame(ctx.measureText('A').getBaselines().hanging, 68, "ctx.measureText('A').getBaselines().hanging", "68");
_assertSame(Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic)", "0");
_assertSame(ctx.measureText('ABCD').getBaselines().ideographic, -39, "ctx.measureText('ABCD').getBaselines().ideographic", "-39");
_assertSame(ctx.measureText('ABCD').getBaselines().hanging, 68, "ctx.measureText('ABCD').getBaselines().hanging", "68");
}), 500);
_assertSame(Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic)", "0");
_assertSame(ctx.measureText('ABCD').getBaselines().ideographic, -39, "ctx.measureText('ABCD').getBaselines().ideographic", "-39");
_assertSame(ctx.measureText('ABCD').getBaselines().hanging, 68, "ctx.measureText('ABCD').getBaselines().hanging", "68");
}), 500);
});
});

View file

@ -27,18 +27,22 @@ var t = async_test("Testing emHeights");
_addTest(function(canvas, ctx) {
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
_assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
_assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
_assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
_assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
_assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
_assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
_assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
_assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
_assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
}), 500);
_assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
_assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
_assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
}), 500);
});
});

View file

@ -27,16 +27,20 @@ var t = async_test("Testing fontBoundingBox");
_addTest(function(canvas, ctx) {
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
_assertSame(ctx.measureText('A').fontBoundingBoxAscent, 85, "ctx.measureText('A').fontBoundingBoxAscent", "85");
_assertSame(ctx.measureText('A').fontBoundingBoxDescent, 39, "ctx.measureText('A').fontBoundingBoxDescent", "39");
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
_assertSame(ctx.measureText('A').fontBoundingBoxAscent, 85, "ctx.measureText('A').fontBoundingBoxAscent", "85");
_assertSame(ctx.measureText('A').fontBoundingBoxDescent, 39, "ctx.measureText('A').fontBoundingBoxDescent", "39");
_assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 85, "ctx.measureText('ABCD').fontBoundingBoxAscent", "85");
_assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 39, "ctx.measureText('ABCD').fontBoundingBoxDescent", "39");
}), 500);
_assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 85, "ctx.measureText('ABCD').fontBoundingBoxAscent", "85");
_assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 39, "ctx.measureText('ABCD').fontBoundingBoxDescent", "39");
}), 500);
});
});

View file

@ -14,7 +14,7 @@
<body class="show_output">
<h1>2d.text.measure.width.basic</h1>
<p class="desc"></p>
<p class="desc">The width of character is same as font used</p>
<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
@ -23,19 +23,23 @@
<ul id="d"></ul>
<script>
var t = async_test("");
var t = async_test("The width of character is same as font used");
_addTest(function(canvas, ctx) {
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
_assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
_assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
_assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
_assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
_assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
_assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
ctx.font = '100px CanvasTest';
_assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
}), 500);
ctx.font = '100px CanvasTest';
_assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
}), 500);
});
});

View file

@ -27,10 +27,14 @@ var t = async_test("The empty string has zero width");
_addTest(function(canvas, ctx) {
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
_assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
}), 500);
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
_assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
}), 500);
});
});

View file

@ -27,16 +27,20 @@ var t = async_test("Space characters are converted to U+0020 and collapsed (per
_addTest(function(canvas, ctx) {
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
_assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
_assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
_assertSame(ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width, 150, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d \\x09\\x0a\\x0c\\x0dB').width", "150");
_assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
_assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
_assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
_assertSame(ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width, 150, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d \\x09\\x0a\\x0c\\x0dB').width", "150");
_assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
_assertSame(ctx.measureText(' AB').width, 100, "ctx.measureText(' AB').width", "100");
_assertSame(ctx.measureText('AB ').width, 100, "ctx.measureText('AB ').width", "100");
}), 500);
_assertSame(ctx.measureText(' AB').width, 100, "ctx.measureText(' AB').width", "100");
_assertSame(ctx.measureText('AB ').width, 100, "ctx.measureText('AB ').width", "100");
}), 500);
});
});

View file

@ -967,24 +967,27 @@
expected: green
- name: 2d.text.measure.width.basic
desc: The width of character is same as font used
testing:
- 2d.text.measure
fonts:
- CanvasTest
code: |
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
@assert ctx.measureText('A').width === 50;
@assert ctx.measureText('AA').width === 100;
@assert ctx.measureText('ABCD').width === 200;
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
@assert ctx.measureText('A').width === 50;
@assert ctx.measureText('AA').width === 100;
@assert ctx.measureText('ABCD').width === 200;
ctx.font = '100px CanvasTest';
@assert ctx.measureText('A').width === 100;
}), 500);
ctx.font = '100px CanvasTest';
@assert ctx.measureText('A').width === 100;
}), 500);
});
- name: 2d.text.measure.width.empty
desc: The empty string has zero width
@ -994,10 +997,14 @@
- CanvasTest
code: |
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
@assert ctx.measureText("").width === 0;
}), 500);
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
@assert ctx.measureText("").width === 0;
}), 500);
});
- name: 2d.text.measure.width.space
desc: Space characters are converted to U+0020 and collapsed (per CSS)
@ -1007,16 +1014,20 @@
- CanvasTest
code: |
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
@assert ctx.measureText('A B').width === 150;
@assert ctx.measureText('A B').width === 150; @moz-todo
@assert ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width === 150; @moz-todo
@assert ctx.measureText('A \x0b B').width >= 200;
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
@assert ctx.measureText('A B').width === 150;
@assert ctx.measureText('A B').width === 150; @moz-todo
@assert ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width === 150; @moz-todo
@assert ctx.measureText('A \x0b B').width >= 200;
@assert ctx.measureText(' AB').width === 100; @moz-todo
@assert ctx.measureText('AB ').width === 100; @moz-todo
}), 500);
@assert ctx.measureText(' AB').width === 100; @moz-todo
@assert ctx.measureText('AB ').width === 100; @moz-todo
}), 500);
});
- name: 2d.text.measure.advances
desc: Testing width advances
@ -1026,25 +1037,29 @@
- CanvasTest
code: |
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
// Some platforms may return '-0'.
@assert Math.abs(ctx.measureText('Hello').advances[0]) === 0;
// Different platforms may render text slightly different.
@assert ctx.measureText('Hello').advances[1] >= 36;
@assert ctx.measureText('Hello').advances[2] >= 58;
@assert ctx.measureText('Hello').advances[3] >= 70;
@assert ctx.measureText('Hello').advances[4] >= 80;
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
// Some platforms may return '-0'.
@assert Math.abs(ctx.measureText('Hello').advances[0]) === 0;
// Different platforms may render text slightly different.
@assert ctx.measureText('Hello').advances[1] >= 36;
@assert ctx.measureText('Hello').advances[2] >= 58;
@assert ctx.measureText('Hello').advances[3] >= 70;
@assert ctx.measureText('Hello').advances[4] >= 80;
var tm = ctx.measureText('Hello');
@assert ctx.measureText('Hello').advances[0] === tm.advances[0];
@assert ctx.measureText('Hello').advances[1] === tm.advances[1];
@assert ctx.measureText('Hello').advances[2] === tm.advances[2];
@assert ctx.measureText('Hello').advances[3] === tm.advances[3];
@assert ctx.measureText('Hello').advances[4] === tm.advances[4];
}), 500);
var tm = ctx.measureText('Hello');
@assert ctx.measureText('Hello').advances[0] === tm.advances[0];
@assert ctx.measureText('Hello').advances[1] === tm.advances[1];
@assert ctx.measureText('Hello').advances[2] === tm.advances[2];
@assert ctx.measureText('Hello').advances[3] === tm.advances[3];
@assert ctx.measureText('Hello').advances[4] === tm.advances[4];
}), 500);
});
- name: 2d.text.measure.actualBoundingBox
desc: Testing actualBoundingBox
@ -1054,23 +1069,27 @@
- CanvasTest
code: |
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
ctx.baseline = 'alphabetic'
// Some platforms may return '-0'.
@assert Math.abs(ctx.measureText('A').actualBoundingBoxLeft) === 0;
// Different platforms may render text slightly different.
@assert ctx.measureText('A').actualBoundingBoxRight >= 50;
@assert ctx.measureText('A').actualBoundingBoxAscent >= 35;
@assert Math.abs(ctx.measureText('A').actualBoundingBoxDescent) === 0;
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
ctx.baseline = 'alphabetic'
// Some platforms may return '-0'.
@assert Math.abs(ctx.measureText('A').actualBoundingBoxLeft) === 0;
// Different platforms may render text slightly different.
@assert ctx.measureText('A').actualBoundingBoxRight >= 50;
@assert ctx.measureText('A').actualBoundingBoxAscent >= 35;
@assert Math.abs(ctx.measureText('A').actualBoundingBoxDescent) === 0;
@assert Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) === 0;
@assert ctx.measureText('ABCD').actualBoundingBoxRight >= 200;
@assert ctx.measureText('ABCD').actualBoundingBoxAscent >= 85;
@assert ctx.measureText('ABCD').actualBoundingBoxDescent >= 37;
}), 500);
@assert Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) === 0;
@assert ctx.measureText('ABCD').actualBoundingBoxRight >= 200;
@assert ctx.measureText('ABCD').actualBoundingBoxAscent >= 85;
@assert ctx.measureText('ABCD').actualBoundingBoxDescent >= 37;
}), 500);
});
- name: 2d.text.measure.fontBoundingBox
desc: Testing fontBoundingBox
@ -1080,16 +1099,20 @@
- CanvasTest
code: |
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
@assert ctx.measureText('A').fontBoundingBoxAscent === 85;
@assert ctx.measureText('A').fontBoundingBoxDescent === 39;
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
@assert ctx.measureText('A').fontBoundingBoxAscent === 85;
@assert ctx.measureText('A').fontBoundingBoxDescent === 39;
@assert ctx.measureText('ABCD').fontBoundingBoxAscent === 85;
@assert ctx.measureText('ABCD').fontBoundingBoxDescent === 39;
}), 500);
@assert ctx.measureText('ABCD').fontBoundingBoxAscent === 85;
@assert ctx.measureText('ABCD').fontBoundingBoxDescent === 39;
}), 500);
});
- name: 2d.text.measure.emHeights
desc: Testing emHeights
@ -1099,18 +1122,22 @@
- CanvasTest
code: |
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
@assert ctx.measureText('A').emHeightAscent === 37.5;
@assert ctx.measureText('A').emHeightDescent === 12.5;
@assert ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent === 50;
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
@assert ctx.measureText('A').emHeightAscent === 37.5;
@assert ctx.measureText('A').emHeightDescent === 12.5;
@assert ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent === 50;
@assert ctx.measureText('ABCD').emHeightAscent === 37.5;
@assert ctx.measureText('ABCD').emHeightDescent === 12.5;
@assert ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent === 50;
}), 500);
@assert ctx.measureText('ABCD').emHeightAscent === 37.5;
@assert ctx.measureText('ABCD').emHeightDescent === 12.5;
@assert ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent === 50;
}), 500);
});
- name: 2d.text.measure.baselines
desc: Testing baselines
@ -1120,17 +1147,21 @@
- CanvasTest
code: |
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
@assert Math.abs(ctx.measureText('A').getBaselines().alphabetic) === 0;
@assert ctx.measureText('A').getBaselines().ideographic === -39;
@assert ctx.measureText('A').getBaselines().hanging === 68;
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
document.fonts.add(f);
document.fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
@assert Math.abs(ctx.measureText('A').getBaselines().alphabetic) === 0;
@assert ctx.measureText('A').getBaselines().ideographic === -39;
@assert ctx.measureText('A').getBaselines().hanging === 68;
@assert Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic) === 0;
@assert ctx.measureText('ABCD').getBaselines().ideographic === -39;
@assert ctx.measureText('ABCD').getBaselines().hanging === 68;
}), 500);
@assert Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic) === 0;
@assert ctx.measureText('ABCD').getBaselines().ideographic === -39;
@assert ctx.measureText('ABCD').getBaselines().hanging === 68;
}), 500);
});
# TODO: shadows, alpha, composite, clip

View file

@ -1,20 +1,22 @@
<!DOCTYPE html>
<html>
<head>
<title>math-script-level and font-max-size (reference)</title>
<title>math-script-level (reference)</title>
<meta charset="utf-8">
<style>
.container {
/* Ahem font does not have a MATH table so the font-size scale factor
is always 0.71^{computed - inherited math script level} */
font: 100px/1 Ahem;
font: 12px/1 Ahem;
}
</style>
</head>
<body>
<p>Test passes if you see a square of side 355px.</p>
<p>Test passes if you see a square of side 12px.</p>
<div class="container">
<div style="font-size: 355px">X</div>
<div>
<div>X</div>
</div>
</div>
</body>
</html>

View file

@ -1,23 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<title>math-script-level and font-max-size</title>
<title>math-script-level clamping</title>
<meta charset="utf-8">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3746">
<meta name="assert" content="The clamping of font-size implied by font-min-size and font-max-size must apply after the change due to math-script-level.">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3739">
<meta name="assert" content="Clamping due to browser's min font size only affects the used size.">
<link rel="match" href="math-script-level-font-size-clamping-001.tentative-ref.html">
<style>
.container {
/* Ahem font does not have a MATH table so the font-size scale factor
is always 0.71^{computed - inherited math script level} */
font: 100px/1 Ahem;
font: 12px/1 Ahem;
}
</style>
</head>
<body>
<p>Test passes if you see a square of side 355px.</p>
<div class="container" style="font-size: 500px">
<div style="math-script-level: add(1); font-max-size: 480px">X</div>
<p>Test passes if you see a square of side 12px.</p>
<div class="container"><!-- Initial size is 12px. -->
<div style="math-script-level: add(8);"><!-- Size is 12*.71^8 = 0.7749042374949131 < 1px. -->
<div style="math-script-level: add(-8);">X</div><!-- back to 12px. -->
</div>
</div>
</body>
</html>

View file

@ -1,20 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>math-script-level and font-min-size (reference)</title>
<meta charset="utf-8">
<style>
.container {
/* Ahem font does not have a MATH table so the font-size scale factor
is always 0.71^{computed - inherited math script level} */
font: 100px/1 Ahem;
}
</style>
</head>
<body>
<p>Test passes if you see a square of side 520px.</p>
<div class="container">
<div style="font-size: 520px">X</div>
</div>
</body>
</html>

View file

@ -1,23 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>math-script-level ; font-min-size</title>
<meta charset="utf-8">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3746">
<meta name="assert" content="The clamping of font-size implied by font-min-size and font-max-size must apply after the change due to math-script-level.">
<link rel="match" href="math-script-level-font-size-clamping-002.tentative-ref.html">
<style>
.container {
/* Ahem font does not have a MATH table so the font-size scale factor
is always 0.71^{computed - inherited math script level} */
font: 100px/1 Ahem;
}
</style>
</head>
<body>
<p>Test passes if you see a square of side 520px.</p>
<div class="container" style="font-size: 500px">
<div style="math-script-level: add(1); font-min-size: 520px;">X</div>
</div>
</body>
</html>

View file

@ -1,24 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>math-script-level and font-max-size (reference)</title>
<meta charset="utf-8">
<style>
.container {
/* Ahem font does not have a MATH table so the font-size scale factor
is always 0.71^{computed - inherited math script level} */
font: 71px/1 Ahem;
}
</style>
</head>
<body>
<p>Test passes if you see a square of side 71px.</p>
<div class="container">
<div>
<div>
<div>X</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -1,27 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>math-script-level and font-max-size</title>
<meta charset="utf-8">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3739">
<meta name="assert" content="font-max-size only affects the used size.">
<link rel="match" href="math-script-level-font-size-clamping-003.tentative-ref.html">
<style>
.container {
/* Ahem font does not have a MATH table so the font-size scale factor
is always 0.71^{computed - inherited math script level} */
font: 71px/1 Ahem;
}
</style>
</head>
<body>
<p>Test passes if you see a square of side 71px.</p>
<div class="container"><!-- Initial size is 71px. -->
<div style="math-script-level: add(-1);"><!-- Size is 71/.71 = 100px. -->
<div style="font-max-size: 90px"><!-- This only affects used size. -->
<div style="math-script-level: add(1);">X</div><!-- back to 71px. -->
</div>
</div>
</div>
</body>
</html>

View file

@ -1,24 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>math-script-level and font-min-size (reference)</title>
<meta charset="utf-8">
<style>
.container {
/* Ahem font does not have a MATH table so the font-size scale factor
is always 0.71^{computed - inherited math script level} */
font: 100px/1 Ahem;
}
</style>
</head>
<body>
<p>Test passes if you see a square of side 100px.</p>
<div class="container">
<div>
<div>
<div>X</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -1,27 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>math-script-level and font-min-size</title>
<meta charset="utf-8">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3739">
<meta name="assert" content="font-min-size only affects the used size.">
<link rel="match" href="math-script-level-font-size-clamping-004.tentative-ref.html">
<style>
.container {
/* Ahem font does not have a MATH table so the font-size scale factor
is always 0.71^{computed - inherited math script level} */
font: 100px/1 Ahem;
}
</style>
</head>
<body>
<p>Test passes if you see a square of side 100px.</p>
<div class="container"><!-- Initial size is 100px. -->
<div style="math-script-level: add(1);"><!-- Size is 100*.71 = 71px. -->
<div style="font-min-size: 90px"><!-- This only affects used size. -->
<div style="math-script-level: add(-1);">X</div><!-- back to 100px. -->
</div>
</div>
</div>
</body>
</html>

View file

@ -7,7 +7,7 @@
<meta name="assert" content="grid-template-columns supports animation.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
</head>
<body>
<script>

View file

@ -7,7 +7,7 @@
<meta name="assert" content="grid-template-rows supports animation.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
</head>
<body>
<script>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<link rel="author" href="mailto:atotic@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="help" href="https://crbug.com/967977">
<meta name="assert" content="zero width inline abspos container with borders does not cause a crash">
<style>
</style>
<span style="border-bottom:1px solid; filter:blur(2px);">
<div style="position:absolute"></div>
</span>
<script>
document.body.offsetTop;
test(() => {
}, 'test passes if it does not crash');
</script>

View file

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>filter interpolation</title>
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty">
<meta name="assert" content="Matching lists interpolate.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<style>
body {
color: blue;
}
</style>
</head>
<body>
<script>
'use strict';
test_interpolation({
property: 'filter',
from: 'hue-rotate(0deg) blur(6px)',
to: 'hue-rotate(180deg) blur(10px)'
}, [
{at: -0.5, expect: 'hue-rotate(-90deg) blur(4px)'},
{at: 0, expect: 'hue-rotate(0deg) blur(6px)'},
{at: 0.25, expect: 'hue-rotate(45deg) blur(7px)'},
{at: 0.5, expect: 'hue-rotate(90deg) blur(8px)'},
{at: 1, expect: 'hue-rotate(180deg) blur(10px)'},
{at: 1.5, expect: 'hue-rotate(270deg) blur(12px)'}
]);
// Matching lists with differing units:
test_interpolation({
property: 'filter',
from: 'hue-rotate(80deg) blur(6mm)',
to: 'hue-rotate(100grad) blur(1cm)'
}, [
{at: -0.5, expect: 'hue-rotate(75deg) blur(4mm)'},
{at: 0, expect: 'hue-rotate(80deg) blur(6mm)'},
{at: 0.25, expect: 'hue-rotate(82.5deg) blur(7mm)'},
{at: 0.5, expect: 'hue-rotate(85deg) blur(8mm)'},
{at: 1, expect: 'hue-rotate(90deg) blur(10mm)'},
{at: 1.5, expect: 'hue-rotate(95deg) blur(12mm)'}
]);
</script>
</body>
</html>

View file

@ -0,0 +1,53 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>filter interpolation</title>
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty">
<meta name="assert" content="Partially matching lists interpolate.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<style>
body {
color: blue;
}
</style>
</head>
<body>
<script>
'use strict';
test_interpolation({
property: 'filter',
from: 'none',
to: 'opacity(0.5) hue-rotate(180deg)',
}, [
{at: -0.5, expect: 'opacity(1) hue-rotate(-90deg)'},
{at: 0.25, expect: 'opacity(0.875) hue-rotate(45deg)'},
{at: 0.5, expect: 'opacity(0.75) hue-rotate(90deg)'},
{at: 1, expect: 'opacity(0.5) hue-rotate(180deg)'},
{at: 1.5, expect: 'opacity(0.25) hue-rotate(270deg)'},
]);
test_interpolation({
property: 'filter',
from: 'blur(6px)',
to: 'blur(10px) hue-rotate(180deg)'
}, [
{at: -0.5, expect: 'blur(4px) hue-rotate(-90deg)'},
{at: 0.25, expect: 'blur(7px) hue-rotate(45deg)'},
{at: 0.5, expect: 'blur(8px) hue-rotate(90deg)'},
{at: 1, expect: 'blur(10px) hue-rotate(180deg)'},
{at: 1.5, expect: 'blur(12px) hue-rotate(270deg)'},
]);
// Mismatched lists:
test_no_interpolation({
property: 'filter',
from: 'grayscale(0) blur(0px)',
to: 'blur(10px)'
});
</script>
</body>
</html>

View file

@ -0,0 +1,138 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>filter interpolation</title>
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty">
<meta name="assert" content="lacuna matches spec.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<style>
body {
color: blue;
}
</style>
</head>
<body>
<script>
'use strict';
test_interpolation({
property: 'filter',
from: 'none', // lacuna is 0px
to: 'blur(10px)'
}, [
{at: -1, expect: 'blur(0px)'}, // Negative values are not allowed.
{at: 0.5, expect: 'blur(5px)'},
{at: 1, expect: 'blur(10px)'},
{at: 1.5, expect: 'blur(15px)'}
]);
test_interpolation({
property: 'filter',
from: 'brightness(0)',
to: 'none' // lacuna is 1
}, [
{at: -1, expect: 'brightness(0)'}, // Negative values are not allowed.
{at: 0, expect: 'brightness(0)'},
{at: 0.5, expect: 'brightness(0.5)'},
{at: 1.5, expect: 'brightness(1.5)'}
]);
test_interpolation({
property: 'filter',
from: 'contrast(0)',
to: 'none' // lacuna is 1
}, [
{at: -1, expect: 'contrast(0)'}, // Negative values are not allowed.
{at: 0, expect: 'contrast(0)'},
{at: 0.5, expect: 'contrast(0.5)'},
{at: 1.5, expect: 'contrast(1.5)'}
]);
test_interpolation({
property: 'filter',
from: 'none', // lacuna is drop-shadow(0px 0px 0px transparent)
to: 'drop-shadow(20px 10px green)'
}, [
{at: -1, expect: 'drop-shadow(-20px -10px transparent)'},
{at: 0.5, expect: 'drop-shadow(10px 5px rgba(0, 128, 0, 0.5))'},
{at: 1, expect: 'drop-shadow(20px 10px green)'},
{at: 1.5, expect: 'drop-shadow(30px 15px #00C000)'}
]);
test_interpolation({
property: 'filter',
from: 'none', // lacuna is 0
to: 'grayscale(1)'
}, [
{at: -1, expect: 'grayscale(0)'}, // Negative values are not allowed.
{at: 0.5, expect: 'grayscale(0.5)'},
{at: 1, expect: 'grayscale(1)'},
{at: 1.5, expect: 'grayscale(1)'} // Should clamp values to 1.
]);
test_interpolation({
property: 'filter',
from: 'none', // lacuna is 0deg
to: 'hue-rotate(360deg)'
}, [
{at: -1, expect: 'hue-rotate(-360deg)'},
{at: 0.5, expect: 'hue-rotate(180deg)'},
{at: 1, expect: 'hue-rotate(360deg)'},
{at: 1.5, expect: 'hue-rotate(540deg)'}
]);
test_interpolation({
property: 'filter',
from: 'none', // lacuna is 0
to: 'invert(1)'
}, [
{at: -1, expect: 'invert(0)'}, // Negative values are not allowed.
{at: 0.5, expect: 'invert(0.5)'},
{at: 1, expect: 'invert(1)'},
{at: 1.5, expect: 'invert(1)'} // Should clamp values to 1.
]);
test_interpolation({
property: 'filter',
from: 'opacity(0)',
to: 'none' // lacuna is 1
}, [
{at: -1, expect: 'opacity(0)'}, // Negative values are not allowed.
{at: 0, expect: 'opacity(0)'},
{at: 0.5, expect: 'opacity(0.5)'},
{at: 1.5, expect: 'opacity(1)'} // Should clamp values to 1.
]);
test_interpolation({
property: 'filter',
from: 'saturate(0)',
to: 'none' // lacuna is 1
}, [
{at: -1, expect: 'saturate(0)'}, // Negative values are not allowed.
{at: 0, expect: 'saturate(0)'},
{at: 0.5, expect: 'saturate(0.5)'},
{at: 1.5, expect: 'saturate(1.5)'}
]);
test_interpolation({
property: 'filter',
from: 'none', // lacuna is 0
to: 'sepia(1)'
}, [
{at: -1, expect: 'sepia(0)'}, // Negative values are not allowed.
{at: 0.5, expect: 'sepia(0.5)'},
{at: 1, expect: 'sepia(1)'},
{at: 1.5, expect: 'sepia(1)'} // Should clamp values to 1.
]);
test_no_interpolation({
property: 'filter',
from: 'url("#svgfilter")',
to: 'none', // lacuna is not defined
});
</script>
</body>
</html>

View file

@ -0,0 +1,142 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>filter interpolation</title>
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty">
<meta name="assert" content="Default value when omitted matches spec.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<style>
body {
color: blue;
}
</style>
</head>
<body>
<script>
'use strict';
test_interpolation({
property: 'filter',
from: 'blur()', // Default value when omitted is 0px.
to: 'blur(10px)'
}, [
{at: -1, expect: 'blur(0px)'}, // Negative values are not allowed.
{at: 0, expect: 'blur()'},
{at: 0.5, expect: 'blur(5px)'},
{at: 1, expect: 'blur(10px)'},
{at: 1.5, expect: 'blur(15px)'}
]);
test_interpolation({
property: 'filter',
from: 'brightness(0)',
to: 'brightness()' // Default value when omitted is 1.
}, [
{at: -1, expect: 'brightness(0)'}, // Negative values are not allowed.
{at: 0, expect: 'brightness(0)'},
{at: 0.5, expect: 'brightness(0.5)'},
{at: 1, expect: 'brightness()'},
{at: 1.5, expect: 'brightness(1.5)'}
]);
test_interpolation({
property: 'filter',
from: 'contrast(0)',
to: 'contrast()' // Default value when omitted is 1.
}, [
{at: -1, expect: 'contrast(0)'}, // Negative values are not allowed.
{at: 0, expect: 'contrast(0)'},
{at: 0.5, expect: 'contrast(0.5)'},
{at: 1, expect: 'contrast()'},
{at: 1.5, expect: 'contrast(1.5)'}
]);
test_interpolation({
property: 'filter',
from: 'drop-shadow(0px 0px)', // The default value for omitted values is missing length values set to 0 and the missing used color is taken from the color property.
to: 'drop-shadow(20px 10px 30px green)'
}, [
{at: -1, expect: 'drop-shadow(-20px -10px blue)'},
{at: 0, expect: 'drop-shadow(0px 0px blue)'},
{at: 0.5, expect: 'drop-shadow(10px 5px 15px rgb(0, 64, 128))'},
{at: 1, expect: 'drop-shadow(20px 10px 30px green)'},
{at: 1.5, expect: 'drop-shadow(30px 15px 45px rgb(0, 192, 0))'}
]);
test_interpolation({
property: 'filter',
from: 'grayscale(0)',
to: 'grayscale()' // Default value when omitted is 1.
}, [
{at: -1, expect: 'grayscale(0)'}, // Negative values are not allowed.
{at: 0, expect: 'grayscale(0)'},
{at: 0.5, expect: 'grayscale(0.5)'},
{at: 1, expect: 'grayscale()'},
{at: 1.5, expect: 'grayscale(1)'} // Should clamp values to 1.
]);
test_interpolation({
property: 'filter',
from: 'hue-rotate()', // Default value when omitted is 0deg.
to: 'hue-rotate(360deg)'
}, [
{at: -1, expect: 'hue-rotate(-360deg)'},
{at: 0, expect: 'hue-rotate()'},
{at: 0.5, expect: 'hue-rotate(180deg)'},
{at: 1, expect: 'hue-rotate(360deg)'},
{at: 1.5, expect: 'hue-rotate(540deg)'}
]);
test_interpolation({
property: 'filter',
from: 'invert(0)',
to: 'invert()' // Default value when omitted is 1.
}, [
{at: -1, expect: 'invert(0)'}, // Negative values are not allowed.
{at: 0, expect: 'invert(0)'},
{at: 0.5, expect: 'invert(0.5)'},
{at: 1, expect: 'invert()'},
{at: 1.5, expect: 'invert(1)'} // Should clamp values to 1.
]);
test_interpolation({
property: 'filter',
from: 'opacity(0)',
to: 'opacity()' // Default value when omitted is 1.
}, [
{at: -1, expect: 'opacity(0)'}, // Negative values are not allowed.
{at: 0, expect: 'opacity(0)'},
{at: 0.5, expect: 'opacity(0.5)'},
{at: 1, expect: 'opacity()'},
{at: 1.5, expect: 'opacity(1)'} // Should clamp values to 1.
]);
test_interpolation({
property: 'filter',
from: 'saturate(0)',
to: 'saturate()' // Default value when omitted is 1.
}, [
{at: -1, expect: 'saturate(0)'}, // Negative values are not allowed.
{at: 0, expect: 'saturate(0)'},
{at: 0.5, expect: 'saturate(0.5)'},
{at: 1, expect: 'saturate()'},
{at: 1.5, expect: 'saturate(1.5)'}
]);
test_interpolation({
property: 'filter',
from: 'sepia(0)',
to: 'sepia()' // Default value when omitted is 1.
}, [
{at: -1, expect: 'sepia(0)'}, // Negative values are not allowed.
{at: 0, expect: 'sepia(0)'},
{at: 0.5, expect: 'sepia(0.5)'},
{at: 1, expect: 'sepia()'},
{at: 1.5, expect: 'sepia(1)'} // Should clamp values to 1.
]);
</script>
</body>
</html>

View file

@ -25,7 +25,7 @@ test_computed_value("backdrop-filter", "blur()", "blur(0px)");
test_computed_value("backdrop-filter", "brightness(0)");
test_computed_value("backdrop-filter", "brightness(300%)", "brightness(3)");
test_computed_value("backdrop-filter", "brightness()", "brightness(0)");
test_computed_value("backdrop-filter", "brightness()", "brightness(1)");
test_computed_value("backdrop-filter", "contrast(0)");
test_computed_value("backdrop-filter", "contrast(300%)", "contrast(3)");
@ -42,7 +42,7 @@ test_computed_value("backdrop-filter", "hue-rotate()", "hue-rotate(0deg)");
test_computed_value("backdrop-filter", "invert(0)");
test_computed_value("backdrop-filter", "invert(100%)", "invert(1)");
test_computed_value("backdrop-filter", "invert()", "invert(0)");
test_computed_value("backdrop-filter", "invert()", "invert(1)");
test_computed_value("backdrop-filter", "opacity(0)");
test_computed_value("backdrop-filter", "opacity(100%)", "opacity(1)");

View file

@ -35,6 +35,7 @@ test_computed_value("filter", "drop-shadow(1px 2px)", "drop-shadow(rgb(0, 255, 0
test_computed_value("filter", "drop-shadow(rgb(4, 5, 6) 1px 2px 0px)");
test_computed_value("filter", "grayscale(50%)", "grayscale(0.5)");
test_computed_value("filter", "grayscale(2)", "grayscale(1)");
test_computed_value("filter", "grayscale()", "grayscale(1)");
test_computed_value("filter", "hue-rotate(90deg)");
@ -42,10 +43,12 @@ test_computed_value("filter", "hue-rotate()", "hue-rotate(0deg)");
test_computed_value("filter", "invert(0)");
test_computed_value("filter", "invert(100%)", "invert(1)");
test_computed_value("filter", "invert(2)", "invert(1)");
test_computed_value("filter", "invert()", "invert(1)");
test_computed_value("filter", "opacity(0)");
test_computed_value("filter", "opacity(100%)", "opacity(1)");
test_computed_value("filter", "opacity(2)", "opacity(1)");
test_computed_value("filter", "opacity()", "opacity(1)");
test_computed_value("filter", "saturate(0)");
@ -54,6 +57,7 @@ test_computed_value("filter", "saturate()", "saturate(1)");
test_computed_value("filter", "sepia(0)");
test_computed_value("filter", "sepia(100%)", "sepia(1)");
test_computed_value("filter", "sepia(2)", "sepia(1)");
test_computed_value("filter", "sepia()", "sepia(1)");
test_computed_value("filter", 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)');

View file

@ -0,0 +1,35 @@
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/mediaqueries-5/#forced-colors" />
<script type="text/javascript" src="/resources/testharness.js"></script>
<script type="text/javascript" src="/resources/testharnessreport.js"></script>
<script type="text/javascript" src="resources/matchmedia-utils.js"></script>
<script>
query_should_be_css_parseable("(forced-colors)");
query_should_be_css_parseable("(forced-colors: none)");
query_should_be_css_parseable("(forced-colors: active)");
query_should_not_be_css_parseable("(forced-colors: 0)");
query_should_not_be_css_parseable("(forced-colors: no-preference)");
query_should_not_be_css_parseable("(forced-colors: 10px)");
query_should_not_be_css_parseable("(forced-colors: active 0)");
query_should_not_be_css_parseable("(forced-colors: none active)");
query_should_not_be_css_parseable("(forced-colors: active/none)");
query_should_be_js_parseable("(forced-colors)");
query_should_be_js_parseable("(forced-colors: none)");
query_should_be_js_parseable("(forced-colors: active)");
query_should_not_be_js_parseable("(forced-colors: 0)");
query_should_not_be_js_parseable("(forced-colors: no-preference)");
query_should_not_be_js_parseable("(forced-colors: 10px)");
query_should_not_be_js_parseable("(forced-colors: active 0)");
query_should_not_be_js_parseable("(forced-colors: none active)");
query_should_not_be_js_parseable("(forced-colors: active/none)");
test(() => {
let booleanContext = window.matchMedia("(forced-colors)");
let none = window.matchMedia("(forced-colors: none)");
assert_equals(booleanContext.matches, !none.matches);
}, "Check that none evaluates to false in the boolean context");
</script>

View file

@ -8,7 +8,7 @@
<meta name="assert" content="offset-anchor supports <position> animation.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<style>
body {
width: 500px;

View file

@ -8,7 +8,7 @@
<meta name="assert" content="offset-distance supports animation.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
</head>
<body>
<script>

View file

@ -8,7 +8,7 @@
<meta name="assert" content="offset-distance supports animation.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
</head>
<body>
<script>

View file

@ -8,7 +8,7 @@
<meta name="assert" content="offset-distance supports animation.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
</head>
<body>
<script>

View file

@ -8,7 +8,7 @@
<meta name="assert" content="offset-distance supports animation.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
</head>
<body>
<script>

View file

@ -8,7 +8,7 @@
<meta name="assert" content="offset-distance supports animation.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
</head>
<body>
<script>

View file

@ -8,7 +8,7 @@
<meta name="assert" content="offset-distance supports animation.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
</head>
<body>
<script>

View file

@ -8,7 +8,7 @@
<meta name="assert" content="offset-position supports <position> animation.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<style>
body {
width: 500px;

View file

@ -8,7 +8,7 @@
<meta name="assert" content="offset-rotate supports animation.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
</head>
<body>
<script>

View file

@ -1,66 +0,0 @@
'use strict';
function test_interpolation(settings, expectations) {
// Returns a timing function that at 0.5 evaluates to progress.
function timingFunction(progress) {
if (progress === 0)
return 'steps(1, end)';
if (progress === 1)
return 'steps(1, start)';
var y = (8 * progress - 1) / 6;
return 'cubic-bezier(0, ' + y + ', 1, ' + y + ')';
}
test(function(){
assert_true(CSS.supports(settings.property, settings.from), 'Value "' + settings.from + '" is supported by ' + settings.property);
assert_true(CSS.supports(settings.property, settings.to), 'Value "' + settings.to + '" is supported by ' + settings.property);
}, '"' + settings.from + '" and "' + settings.to + '" are valid ' + settings.property + ' values');
for (var i = 0; i < expectations.length; ++i) {
var progress = expectations[i].at;
var expectation = expectations[i].expect;
var animationId = 'anim' + i;
var targetId = 'target' + i;
var referenceId = 'reference' + i;
test(function(){
assert_true(CSS.supports(settings.property, expectation), 'Value "' + expectation + '" is supported by ' + settings.property);
var stylesheet = document.createElement('style');
stylesheet.textContent =
'#' + targetId + ' {\n' +
' animation: 2s ' + timingFunction(progress) + ' -1s paused ' + animationId + ';\n' +
'}\n' +
'@keyframes ' + animationId + ' {\n' +
' 0% { ' + settings.property + ': ' + settings.from + '; }\n' +
' 100% { ' + settings.property + ': ' + settings.to + '; }\n' +
'}\n' +
'#' + referenceId + ' {\n' +
' ' + settings.property + ': ' + expectation + ';\n' +
'}\n';
document.head.appendChild(stylesheet);
var target = document.createElement('div');
target.id = targetId;
document.body.appendChild(target);
var reference = document.createElement('div');
reference.id = referenceId;
document.body.appendChild(reference);
reference.style = '';
assert_equals(getComputedStyle(target)[settings.property], getComputedStyle(reference)[settings.property]);
}, (settings.test_prefix ? settings.test_prefix : "") +
'Animation between "' + settings.from + '" and "' + settings.to +
'" at progress ' + progress);
}
}
function test_no_interpolation(settings) {
var expectatFrom = [-1, 0, 0.125].map(function (progress) {
return {at: progress, expect: settings.from};
});
var expectatTo = [0.875, 1, 2].map(function (progress) {
return {at: progress, expect: settings.to};
});
test_interpolation(settings, expectatFrom.concat(expectatTo));
}

View file

@ -11,8 +11,8 @@ function test_interpolation(settings, expectations) {
}
test(function(){
assert_true(CSS.supports(settings.property, settings.from), 'Value "' + settings.from + '" is supported by ' + settings.property);
assert_true(CSS.supports(settings.property, settings.to), 'Value "' + settings.to + '" is supported by ' + settings.property);
assert_true(CSS.supports(settings.property, settings.from), 'From value "' + settings.from + '" is supported by ' + settings.property);
assert_true(CSS.supports(settings.property, settings.to), 'To value "' + settings.to + '" is supported by ' + settings.property);
}, '"' + settings.from + '" and "' + settings.to + '" are valid ' + settings.property + ' values');
for (var i = 0; i < expectations.length; ++i) {
@ -22,7 +22,7 @@ function test_interpolation(settings, expectations) {
var targetId = 'target' + i;
var referenceId = 'reference' + i;
test(function(){
assert_true(CSS.supports(settings.property, expectation), 'Value "' + expectation + '" is supported by ' + settings.property);
assert_true(CSS.supports(settings.property, expectation), 'Expectation value "' + expectation + '" is supported by ' + settings.property);
var stylesheet = document.createElement('style');
stylesheet.textContent =

View file

@ -1,7 +1,7 @@
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/motion/animation/resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<title> 'layout-animations' Policy : Correct behavior for affected and unaffected properties when
feature is disabled.
</title>

View file

@ -1,7 +1,7 @@
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/motion/animation/resources/interpolation-testcommon.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<title> 'layout-animations' Policy : Correct behavior for affected and unaffected properties when
feature is enabled.
</title>

View file

@ -0,0 +1,46 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by tools/gentest.py. -->
<title>OffscreenCanvas test: 2d.text.measure.actualBoundingBox</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/canvas-tests.js"></script>
<h1>2d.text.measure.actualBoundingBox</h1>
<p class="desc">Testing actualBoundingBox for OffscreenCanvas</p>
<script>
var t = async_test("Testing actualBoundingBox for OffscreenCanvas");
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
deferTest();
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
let fonts = (self.fonts ? self.fonts : document.fonts);
fonts.add(f);
fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
ctx.baseline = 'alphabetic'
// Some platforms may return '-0'.
_assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft)", "0");
// Different platforms may render text slightly different.
_assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
_assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
_assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxDescent), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent)", "0");
_assertSame(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft)", "0");
_assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
_assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
_assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
}), 500);
});
t.done();
});
</script>

View file

@ -0,0 +1,42 @@
// DO NOT EDIT! This test has been generated by tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.measure.actualBoundingBox
// Description:Testing actualBoundingBox for OffscreenCanvas
// Note:
importScripts("/resources/testharness.js");
importScripts("/common/canvas-tests.js");
var t = async_test("Testing actualBoundingBox for OffscreenCanvas");
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
deferTest();
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
let fonts = (self.fonts ? self.fonts : document.fonts);
fonts.add(f);
fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
ctx.baseline = 'alphabetic'
// Some platforms may return '-0'.
_assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft)", "0");
// Different platforms may render text slightly different.
_assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
_assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
_assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxDescent), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent)", "0");
_assertSame(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft)", "0");
_assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
_assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
_assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
}), 500);
});
t.done();
});
done();

View file

@ -0,0 +1,48 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by tools/gentest.py. -->
<title>OffscreenCanvas test: 2d.text.measure.advances</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/canvas-tests.js"></script>
<h1>2d.text.measure.advances</h1>
<p class="desc">Testing width advances for OffscreenCanvas</p>
<script>
var t = async_test("Testing width advances for OffscreenCanvas");
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
deferTest();
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
let fonts = (self.fonts ? self.fonts : document.fonts);
fonts.add(f);
fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
// Some platforms may return '-0'.
_assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
// Different platforms may render text slightly different.
_assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
_assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
_assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
_assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
var tm = ctx.measureText('Hello');
_assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
_assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
_assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
_assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
_assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
}), 500);
});
t.done();
});
</script>

View file

@ -0,0 +1,44 @@
// DO NOT EDIT! This test has been generated by tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.measure.advances
// Description:Testing width advances for OffscreenCanvas
// Note:
importScripts("/resources/testharness.js");
importScripts("/common/canvas-tests.js");
var t = async_test("Testing width advances for OffscreenCanvas");
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
deferTest();
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
let fonts = (self.fonts ? self.fonts : document.fonts);
fonts.add(f);
fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
// Some platforms may return '-0'.
_assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
// Different platforms may render text slightly different.
_assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
_assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
_assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
_assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
var tm = ctx.measureText('Hello');
_assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
_assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
_assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
_assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
_assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
}), 500);
});
t.done();
});
done();

View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by tools/gentest.py. -->
<title>OffscreenCanvas test: 2d.text.measure.baselines</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/canvas-tests.js"></script>
<h1>2d.text.measure.baselines</h1>
<p class="desc">Testing baselines for OffscreenCanvas</p>
<script>
var t = async_test("Testing baselines for OffscreenCanvas");
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
deferTest();
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
let fonts = (self.fonts ? self.fonts : document.fonts);
fonts.add(f);
fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
_assertSame(Math.abs(ctx.measureText('A').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('A').getBaselines().alphabetic)", "0");
_assertSame(ctx.measureText('A').getBaselines().ideographic, -39, "ctx.measureText('A').getBaselines().ideographic", "-39");
_assertSame(ctx.measureText('A').getBaselines().hanging, 68, "ctx.measureText('A').getBaselines().hanging", "68");
_assertSame(Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic)", "0");
_assertSame(ctx.measureText('ABCD').getBaselines().ideographic, -39, "ctx.measureText('ABCD').getBaselines().ideographic", "-39");
_assertSame(ctx.measureText('ABCD').getBaselines().hanging, 68, "ctx.measureText('ABCD').getBaselines().hanging", "68");
}), 500);
});
t.done();
});
</script>

View file

@ -0,0 +1,37 @@
// DO NOT EDIT! This test has been generated by tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.measure.baselines
// Description:Testing baselines for OffscreenCanvas
// Note:
importScripts("/resources/testharness.js");
importScripts("/common/canvas-tests.js");
var t = async_test("Testing baselines for OffscreenCanvas");
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
deferTest();
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
let fonts = (self.fonts ? self.fonts : document.fonts);
fonts.add(f);
fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
_assertSame(Math.abs(ctx.measureText('A').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('A').getBaselines().alphabetic)", "0");
_assertSame(ctx.measureText('A').getBaselines().ideographic, -39, "ctx.measureText('A').getBaselines().ideographic", "-39");
_assertSame(ctx.measureText('A').getBaselines().hanging, 68, "ctx.measureText('A').getBaselines().hanging", "68");
_assertSame(Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic)", "0");
_assertSame(ctx.measureText('ABCD').getBaselines().ideographic, -39, "ctx.measureText('ABCD').getBaselines().ideographic", "-39");
_assertSame(ctx.measureText('ABCD').getBaselines().hanging, 68, "ctx.measureText('ABCD').getBaselines().hanging", "68");
}), 500);
});
t.done();
});
done();

View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by tools/gentest.py. -->
<title>OffscreenCanvas test: 2d.text.measure.emHeights</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/canvas-tests.js"></script>
<h1>2d.text.measure.emHeights</h1>
<p class="desc">Testing emHeights for OffscreenCanvas</p>
<script>
var t = async_test("Testing emHeights for OffscreenCanvas");
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
deferTest();
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
let fonts = (self.fonts ? self.fonts : document.fonts);
fonts.add(f);
fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
_assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
_assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
_assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
_assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
_assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
_assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
}), 500);
});
t.done();
});
</script>

View file

@ -0,0 +1,37 @@
// DO NOT EDIT! This test has been generated by tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.measure.emHeights
// Description:Testing emHeights for OffscreenCanvas
// Note:
importScripts("/resources/testharness.js");
importScripts("/common/canvas-tests.js");
var t = async_test("Testing emHeights for OffscreenCanvas");
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
deferTest();
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
let fonts = (self.fonts ? self.fonts : document.fonts);
fonts.add(f);
fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
_assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
_assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
_assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
_assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
_assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
_assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
}), 500);
});
t.done();
});
done();

View file

@ -0,0 +1,39 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by tools/gentest.py. -->
<title>OffscreenCanvas test: 2d.text.measure.fontBoundingBox</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/canvas-tests.js"></script>
<h1>2d.text.measure.fontBoundingBox</h1>
<p class="desc">Testing fontBoundingBox for OffscreenCanvas</p>
<script>
var t = async_test("Testing fontBoundingBox for OffscreenCanvas");
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
deferTest();
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
let fonts = (self.fonts ? self.fonts : document.fonts);
fonts.add(f);
fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
_assertSame(ctx.measureText('A').fontBoundingBoxAscent, 85, "ctx.measureText('A').fontBoundingBoxAscent", "85");
_assertSame(ctx.measureText('A').fontBoundingBoxDescent, 39, "ctx.measureText('A').fontBoundingBoxDescent", "39");
_assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 85, "ctx.measureText('ABCD').fontBoundingBoxAscent", "85");
_assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 39, "ctx.measureText('ABCD').fontBoundingBoxDescent", "39");
}), 500);
});
t.done();
});
</script>

View file

@ -0,0 +1,35 @@
// DO NOT EDIT! This test has been generated by tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.measure.fontBoundingBox
// Description:Testing fontBoundingBox for OffscreenCanvas
// Note:
importScripts("/resources/testharness.js");
importScripts("/common/canvas-tests.js");
var t = async_test("Testing fontBoundingBox for OffscreenCanvas");
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
deferTest();
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
let fonts = (self.fonts ? self.fonts : document.fonts);
fonts.add(f);
fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
ctx.direction = 'ltr';
ctx.align = 'left'
_assertSame(ctx.measureText('A').fontBoundingBoxAscent, 85, "ctx.measureText('A').fontBoundingBoxAscent", "85");
_assertSame(ctx.measureText('A').fontBoundingBoxDescent, 39, "ctx.measureText('A').fontBoundingBoxDescent", "39");
_assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 85, "ctx.measureText('ABCD').fontBoundingBoxAscent", "85");
_assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 39, "ctx.measureText('ABCD').fontBoundingBoxDescent", "39");
}), 500);
});
t.done();
});
done();

View file

@ -6,26 +6,31 @@
<script src="/common/canvas-tests.js"></script>
<h1>2d.text.measure.width.basic</h1>
<p class="desc"></p>
<p class="desc">The width of character is same as font used for OffscreenCanvas</p>
<script>
var t = async_test("");
var t = async_test("The width of character is same as font used for OffscreenCanvas");
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
deferTest();
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
_assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
_assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
_assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
let fonts = (self.fonts ? self.fonts : document.fonts);
fonts.add(f);
fonts.ready.then(() => {
step_timeout(t.step_func_done(function () {
ctx.font = '50px CanvasTest';
_assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
_assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
_assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
ctx.font = '100px CanvasTest';
_assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
}), 500);
ctx.font = '100px CanvasTest';
_assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
}), 500);
});
t.done();

Some files were not shown because too many files have changed in this diff Show more